From bb995fcad1aa79b4e58301431e9f1f23db1aa2d6 Mon Sep 17 00:00:00 2001 From: ille Date: Fri, 11 Jan 2013 13:11:08 +0100 Subject: Core/maps: separate mutex for grid --- src/server/game/Maps/Map.cpp | 2 +- src/server/game/Maps/Map.h | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index 286604c10ac..0eeb824103c 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -311,7 +311,7 @@ void Map::DeleteFromWorld(Player* player) void Map::EnsureGridCreated(const GridCoord &p) { - TRINITY_GUARD(ACE_Thread_Mutex, Lock); + TRINITY_GUARD(ACE_Thread_Mutex, GridLock); EnsureGridCreated_i(p); } diff --git a/src/server/game/Maps/Map.h b/src/server/game/Maps/Map.h index 47a26fa49e7..26974e4f120 100644 --- a/src/server/game/Maps/Map.h +++ b/src/server/game/Maps/Map.h @@ -526,6 +526,7 @@ class Map : public GridRefManager void SetUnloadReferenceLock(const GridCoord &p, bool on) { getNGrid(p.x_coord, p.y_coord)->setUnloadReferenceLock(on); } ACE_Thread_Mutex Lock; + ACE_Thread_Mutex GridLock; MapEntry const* i_mapEntry; uint8 i_spawnMode; -- cgit v1.2.3 From cf5058c4e3ef5a5b736d22a7faa5ee1e8bf8035d Mon Sep 17 00:00:00 2001 From: kaelima Date: Fri, 11 Jan 2013 18:57:46 +0100 Subject: Core/BG: Corrected data sent in SMSG_BATTLEFIELD_STATUS packet. *should* close #7994 --- src/server/game/Battlegrounds/Battleground.cpp | 10 +++++----- src/server/game/Battlegrounds/BattlegroundMgr.cpp | 10 +++++----- src/server/game/Battlegrounds/BattlegroundMgr.h | 2 +- src/server/game/Battlegrounds/BattlegroundQueue.cpp | 8 ++++---- src/server/game/Handlers/BattleGroundHandler.cpp | 18 +++++++++--------- 5 files changed, 24 insertions(+), 24 deletions(-) (limited to 'src') diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp index 52183b9509d..1fe7e4c1035 100644 --- a/src/server/game/Battlegrounds/Battleground.cpp +++ b/src/server/game/Battlegrounds/Battleground.cpp @@ -523,7 +523,7 @@ inline void Battleground::_ProcessJoin(uint32 diff) WorldPacket status; BattlegroundQueueTypeId bgQueueTypeId = sBattlegroundMgr->BGQueueTypeId(m_TypeID, GetArenaType()); uint32 queueSlot = player->GetBattlegroundQueueIndex(bgQueueTypeId); - sBattlegroundMgr->BuildBattlegroundStatusPacket(&status, this, queueSlot, STATUS_IN_PROGRESS, 0, GetStartTime(), GetArenaType()); + sBattlegroundMgr->BuildBattlegroundStatusPacket(&status, this, queueSlot, STATUS_IN_PROGRESS, 0, GetStartTime(), GetArenaType(), player->GetBGTeam()); player->GetSession()->SendPacket(&status); player->RemoveAurasDueToSpell(SPELL_ARENA_PREPARATION); @@ -919,7 +919,7 @@ void Battleground::EndBattleground(uint32 winner) player->GetSession()->SendPacket(&pvpLogData); WorldPacket data; - sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, this, player->GetBattlegroundQueueIndex(bgQueueTypeId), STATUS_IN_PROGRESS, TIME_TO_AUTOREMOVE, GetStartTime(), GetArenaType()); + sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, this, player->GetBattlegroundQueueIndex(bgQueueTypeId), STATUS_IN_PROGRESS, TIME_TO_AUTOREMOVE, GetStartTime(), GetArenaType(), player->GetBGTeam()); player->GetSession()->SendPacket(&data); player->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_BATTLEGROUND, 1); } @@ -1022,7 +1022,7 @@ void Battleground::RemovePlayerAtLeave(uint64 guid, bool Transport, bool SendPac if (SendPacket) { WorldPacket data; - sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, this, player->GetBattlegroundQueueIndex(bgQueueTypeId), STATUS_NONE, 0, 0, 0); + sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, this, player->GetBattlegroundQueueIndex(bgQueueTypeId), STATUS_NONE, 0, 0, 0, 0); player->GetSession()->SendPacket(&data); } @@ -1151,7 +1151,7 @@ void Battleground::AddPlayer(Player* player) WorldPacket status; BattlegroundQueueTypeId bgQueueTypeId = sBattlegroundMgr->BGQueueTypeId(m_TypeID, GetArenaType()); uint32 queueSlot = player->GetBattlegroundQueueIndex(bgQueueTypeId); - sBattlegroundMgr->BuildBattlegroundStatusPacket(&status, this, queueSlot, STATUS_IN_PROGRESS, 0, GetStartTime(), GetArenaType(), isArena() ? 0 : 1); + sBattlegroundMgr->BuildBattlegroundStatusPacket(&status, this, queueSlot, STATUS_IN_PROGRESS, 0, GetStartTime(), GetArenaType(), team); player->GetSession()->SendPacket(&status); player->RemoveAurasByType(SPELL_AURA_MOUNTED); @@ -1846,7 +1846,7 @@ void Battleground::PlayerAddedToBGCheckIfBGIsRunning(Player* player) sBattlegroundMgr->BuildPvpLogDataPacket(&data, this); player->GetSession()->SendPacket(&data); - sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, this, player->GetBattlegroundQueueIndex(bgQueueTypeId), STATUS_IN_PROGRESS, GetEndTime(), GetStartTime(), GetArenaType()); + sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, this, player->GetBattlegroundQueueIndex(bgQueueTypeId), STATUS_IN_PROGRESS, GetEndTime(), GetStartTime(), GetArenaType(), player->GetBGTeam()); player->GetSession()->SendPacket(&data); } diff --git a/src/server/game/Battlegrounds/BattlegroundMgr.cpp b/src/server/game/Battlegrounds/BattlegroundMgr.cpp index 71ac8cf8180..451fa70a8c9 100644 --- a/src/server/game/Battlegrounds/BattlegroundMgr.cpp +++ b/src/server/game/Battlegrounds/BattlegroundMgr.cpp @@ -162,7 +162,7 @@ void BattlegroundMgr::Update(uint32 diff) } } -void BattlegroundMgr::BuildBattlegroundStatusPacket(WorldPacket* data, Battleground* bg, uint8 QueueSlot, uint8 StatusID, uint32 Time1, uint32 Time2, uint8 arenatype, uint8 uiFrame) +void BattlegroundMgr::BuildBattlegroundStatusPacket(WorldPacket* data, Battleground* bg, uint8 QueueSlot, uint8 StatusID, uint32 Time1, uint32 Time2, uint8 arenatype, uint8 arenaFaction) { // we can be in 2 queues in same time... @@ -179,12 +179,12 @@ void BattlegroundMgr::BuildBattlegroundStatusPacket(WorldPacket* data, Battlegro // The following segment is read as uint64 in client but can be appended as their original type. *data << uint8(arenatype); sLog->outDebug(LOG_FILTER_NETWORKIO, "BattlegroundMgr::BuildBattlegroundStatusPacket: arenatype = %u for bg instanceID %u, TypeID %u.", arenatype, bg->GetClientInstanceID(), bg->GetTypeID()); - *data << uint8(bg->isArena() ? 0xC : 0x2); + *data << uint8(bg->isArena() ? 0xE : 0x0); *data << uint32(bg->GetTypeID()); *data << uint16(0x1F90); // End of uint64 segment, decomposed this way for simplicity - *data << uint8(0); // 3.3.0, some level, only saw 80... - *data << uint8(0); // 3.3.0, some level, only saw 80... + *data << uint8(bg->GetMinLevel()); + *data << uint8(bg->GetMaxLevel()); *data << uint32(bg->GetClientInstanceID()); // alliance/horde for BG and skirmish/rated for Arenas // following displays the minimap-icon 0 = faction icon 1 = arenaicon @@ -207,7 +207,7 @@ void BattlegroundMgr::BuildBattlegroundStatusPacket(WorldPacket* data, Battlegro *data << uint64(0); // 3.3.5, unknown *data << uint32(Time1); // time to bg auto leave, 0 at bg start, 120000 after bg end, milliseconds *data << uint32(Time2); // time from bg start, milliseconds - *data << uint8(uiFrame); + *data << uint8(arenaFaction); // arenafaction (0 for horde, 1 for alliance) break; default: sLog->outError(LOG_FILTER_BATTLEGROUND, "Unknown BG status!"); diff --git a/src/server/game/Battlegrounds/BattlegroundMgr.h b/src/server/game/Battlegrounds/BattlegroundMgr.h index 236494792d4..ee96414c5f2 100644 --- a/src/server/game/Battlegrounds/BattlegroundMgr.h +++ b/src/server/game/Battlegrounds/BattlegroundMgr.h @@ -80,7 +80,7 @@ class BattlegroundMgr void BuildGroupJoinedBattlegroundPacket(WorldPacket* data, GroupJoinBattlegroundResult result); void BuildUpdateWorldStatePacket(WorldPacket* data, uint32 field, uint32 value); void BuildPvpLogDataPacket(WorldPacket* data, Battleground* bg); - void BuildBattlegroundStatusPacket(WorldPacket* data, Battleground* bg, uint8 queueSlot, uint8 statusId, uint32 time1, uint32 time2, uint8 arenaType, uint8 uiFrame = 1); + void BuildBattlegroundStatusPacket(WorldPacket* data, Battleground* bg, uint8 queueSlot, uint8 statusId, uint32 time1, uint32 time2, uint8 arenaType, uint8 arenaFaction); void BuildPlaySoundPacket(WorldPacket* data, uint32 soundId); void SendAreaSpiritHealerQueryOpcode(Player* player, Battleground* bg, uint64 guid); diff --git a/src/server/game/Battlegrounds/BattlegroundQueue.cpp b/src/server/game/Battlegrounds/BattlegroundQueue.cpp index 150cec08e3c..6d5f3d07bae 100644 --- a/src/server/game/Battlegrounds/BattlegroundQueue.cpp +++ b/src/server/game/Battlegrounds/BattlegroundQueue.cpp @@ -396,7 +396,7 @@ void BattlegroundQueue::RemovePlayer(uint64 guid, bool decreaseInvitedCount) plr2->RemoveBattlegroundQueueId(bgQueueTypeId); // must be called this way, because if you move this call to // queue->removeplayer, it causes bugs WorldPacket data; - sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_NONE, 0, 0, 0); + sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_NONE, 0, 0, 0, 0); plr2->GetSession()->SendPacket(&data); } // then actually delete, this may delete the group as well! @@ -481,7 +481,7 @@ bool BattlegroundQueue::InviteGroupToBG(GroupQueueInfo* ginfo, Battleground* bg, player->GetName().c_str(), player->GetGUIDLow(), bg->GetInstanceID(), queueSlot, bg->GetTypeID()); // send status packet - sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_WAIT_JOIN, INVITE_ACCEPT_WAIT_TIME, 0, ginfo->ArenaType); + sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_WAIT_JOIN, INVITE_ACCEPT_WAIT_TIME, 0, ginfo->ArenaType, 0); player->GetSession()->SendPacket(&data); } return true; @@ -1003,7 +1003,7 @@ bool BGQueueInviteEvent::Execute(uint64 /*e_time*/, uint32 /*p_time*/) { WorldPacket data; //we must send remaining time in queue - sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_WAIT_JOIN, INVITE_ACCEPT_WAIT_TIME - INVITATION_REMIND_TIME, 0, m_ArenaType); + sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_WAIT_JOIN, INVITE_ACCEPT_WAIT_TIME - INVITATION_REMIND_TIME, 0, m_ArenaType, 0); player->GetSession()->SendPacket(&data); } } @@ -1051,7 +1051,7 @@ bool BGQueueRemoveEvent::Execute(uint64 /*e_time*/, uint32 /*p_time*/) sBattlegroundMgr->ScheduleQueueUpdate(0, 0, m_BgQueueTypeId, m_BgTypeId, bg->GetBracketId()); WorldPacket data; - sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_NONE, 0, 0, 0); + sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_NONE, 0, 0, 0, 0); player->GetSession()->SendPacket(&data); } } diff --git a/src/server/game/Handlers/BattleGroundHandler.cpp b/src/server/game/Handlers/BattleGroundHandler.cpp index a7df171b1c5..5fb97a031f1 100644 --- a/src/server/game/Handlers/BattleGroundHandler.cpp +++ b/src/server/game/Handlers/BattleGroundHandler.cpp @@ -187,7 +187,7 @@ void WorldSession::HandleBattlemasterJoinOpcode(WorldPacket& recvData) WorldPacket data; // send status packet (in queue) - sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_WAIT_QUEUE, avgTime, 0, ginfo->ArenaType); + sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_WAIT_QUEUE, avgTime, 0, ginfo->ArenaType, 0); SendPacket(&data); sLog->outDebug(LOG_FILTER_BATTLEGROUND, "Battleground: player joined queue for bg queue type %u bg type %u: GUID %u, NAME %s", bgQueueTypeId, bgTypeId, _player->GetGUIDLow(), _player->GetName().c_str()); @@ -233,7 +233,7 @@ void WorldSession::HandleBattlemasterJoinOpcode(WorldPacket& recvData) uint32 queueSlot = member->AddBattlegroundQueueId(bgQueueTypeId); // send status packet (in queue) - sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_WAIT_QUEUE, avgTime, 0, ginfo->ArenaType); + sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_WAIT_QUEUE, avgTime, 0, ginfo->ArenaType, 0); member->GetSession()->SendPacket(&data); sBattlegroundMgr->BuildGroupJoinedBattlegroundPacket(&data, err); member->GetSession()->SendPacket(&data); @@ -453,7 +453,7 @@ void WorldSession::HandleBattleFieldPortOpcode(WorldPacket &recvData) _player->CleanupAfterTaxiFlight(); } - sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_IN_PROGRESS, 0, bg->GetStartTime(), bg->GetArenaType()); + sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_IN_PROGRESS, 0, bg->GetStartTime(), bg->GetArenaType(), _player->GetBGTeam()); _player->GetSession()->SendPacket(&data); // remove battleground queue status from BGmgr bgQueue.RemovePlayer(_player->GetGUID(), false); @@ -489,7 +489,7 @@ void WorldSession::HandleBattleFieldPortOpcode(WorldPacket &recvData) } } _player->RemoveBattlegroundQueueId(bgQueueTypeId); // must be called this way, because if you move this call to queue->removeplayer, it causes bugs - sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_NONE, 0, 0, 0); + sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_NONE, 0, 0, 0, 0); bgQueue.RemovePlayer(_player->GetGUID(), true); // player left queue, we should update it - do not update Arena Queue if (!ginfo.ArenaType) @@ -541,7 +541,7 @@ void WorldSession::HandleBattlefieldStatusOpcode(WorldPacket & /*recvData*/) { // this line is checked, i only don't know if GetStartTime is changing itself after bg end! // send status in Battleground - sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, i, STATUS_IN_PROGRESS, bg->GetEndTime(), bg->GetStartTime(), arenaType); + sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, i, STATUS_IN_PROGRESS, bg->GetEndTime(), bg->GetStartTime(), arenaType, _player->GetBGTeam()); SendPacket(&data); continue; } @@ -559,7 +559,7 @@ void WorldSession::HandleBattlefieldStatusOpcode(WorldPacket & /*recvData*/) continue; uint32 remainingTime = getMSTimeDiff(getMSTime(), ginfo.RemoveInviteTime); // send status invited to Battleground - sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, i, STATUS_WAIT_JOIN, remainingTime, 0, arenaType); + sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, i, STATUS_WAIT_JOIN, remainingTime, 0, arenaType, 0); SendPacket(&data); } else @@ -575,7 +575,7 @@ void WorldSession::HandleBattlefieldStatusOpcode(WorldPacket & /*recvData*/) uint32 avgTime = bgQueue.GetAverageQueueWaitTime(&ginfo, bracketEntry->GetBracketId()); // send status in Battleground Queue - sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, i, STATUS_WAIT_QUEUE, avgTime, getMSTimeDiff(ginfo.JoinTime, getMSTime()), arenaType); + sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, i, STATUS_WAIT_QUEUE, avgTime, getMSTimeDiff(ginfo.JoinTime, getMSTime()), arenaType, 0); SendPacket(&data); } } @@ -727,7 +727,7 @@ void WorldSession::HandleBattlemasterJoinArena(WorldPacket& recvData) uint32 queueSlot = member->AddBattlegroundQueueId(bgQueueTypeId); // send status packet (in queue) - sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_WAIT_QUEUE, avgTime, 0, arenatype); + sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_WAIT_QUEUE, avgTime, 0, arenatype, 0); member->GetSession()->SendPacket(&data); sBattlegroundMgr->BuildGroupJoinedBattlegroundPacket(&data, err); member->GetSession()->SendPacket(&data); @@ -742,7 +742,7 @@ void WorldSession::HandleBattlemasterJoinArena(WorldPacket& recvData) WorldPacket data; // send status packet (in queue) - sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_WAIT_QUEUE, avgTime, 0, arenatype); + sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_WAIT_QUEUE, avgTime, 0, arenatype, 0); SendPacket(&data); sLog->outDebug(LOG_FILTER_BATTLEGROUND, "Battleground: player joined queue for arena, skirmish, bg queue type %u bg type %u: GUID %u, NAME %s", bgQueueTypeId, bgTypeId, _player->GetGUIDLow(), _player->GetName().c_str()); } -- cgit v1.2.3 From 84553f168c0d046e1205ba73bc8d9b604fcbe77e Mon Sep 17 00:00:00 2001 From: Shauren Date: Fri, 11 Jan 2013 20:50:05 +0100 Subject: Core/DataStores: Changed index on CharStartOutfit.dbc to allow lookups directly using race/class/gender combo instead having to iterate entire store to find the proper entry --- src/server/game/DataStores/DBCfmt.h | 2 +- src/server/game/Entities/Player/Player.cpp | 15 +-------------- src/server/game/Globals/ObjectMgr.cpp | 31 +++++++++++------------------- 3 files changed, 13 insertions(+), 35 deletions(-) (limited to 'src') diff --git a/src/server/game/DataStores/DBCfmt.h b/src/server/game/DataStores/DBCfmt.h index 1395440fb6d..d0784f05c4d 100644 --- a/src/server/game/DataStores/DBCfmt.h +++ b/src/server/game/DataStores/DBCfmt.h @@ -31,7 +31,7 @@ char const AuctionHouseEntryfmt[]="niiixxxxxxxxxxxxxxxxx"; char const BankBagSlotPricesEntryfmt[]="ni"; char const BarberShopStyleEntryfmt[]="nixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxiii"; char const BattlemasterListEntryfmt[]="niiiiiiiiixssssssssssssssssxiixx"; -char const CharStartOutfitEntryfmt[]="diiiiiiiiiiiiiiiiiiiiiiiiixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; +char const CharStartOutfitEntryfmt[]="xniiiiiiiiiiiiiiiiiiiiiiiixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; char const CharTitlesEntryfmt[]="nxssssssssssssssssxxxxxxxxxxxxxxxxxxi"; char const ChatChannelsEntryfmt[]="nixssssssssssssssssxxxxxxxxxxxxxxxxxx"; // ChatChannelsEntryfmt, index not used (more compact store) diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index e501471b688..14878b078bd 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -1120,20 +1120,7 @@ bool Player::Create(uint32 guidlow, CharacterCreateInfo* createInfo) addActionButton(action_itr->button, action_itr->action, action_itr->type); // original items - CharStartOutfitEntry const* oEntry = NULL; - for (uint32 i = 1; i < sCharStartOutfitStore.GetNumRows(); ++i) - { - if (CharStartOutfitEntry const* entry = sCharStartOutfitStore.LookupEntry(i)) - { - if (entry->RaceClassGender == RaceClassGender) - { - oEntry = entry; - break; - } - } - } - - if (oEntry) + if (CharStartOutfitEntry const* oEntry = sCharStartOutfitStore.LookupEntry(RaceClassGender)) { for (int j = 0; j < MAX_OUTFIT_ITEMS; ++j) { diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index b41b61904e6..2ba456b5b3c 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -2957,32 +2957,23 @@ void ObjectMgr::PlayerCreateInfoAddItemHelper(uint32 race_, uint32 class_, uint3 sLog->outError(LOG_FILTER_SQL, "Invalid count %i specified on item %u be removed from original player create info (use -1)!", count, itemId); uint32 RaceClass = (race_) | (class_ << 8); - bool doneOne = false; - for (uint32 i = 1; i < sCharStartOutfitStore.GetNumRows(); ++i) + for (uint32 gender = 0; gender < GENDER_NONE; ++gender) { - if (CharStartOutfitEntry const* entry = sCharStartOutfitStore.LookupEntry(i)) + if (CharStartOutfitEntry const* entry = sCharStartOutfitStore.LookupEntry(RaceClass | (gender << 16))) { - if (entry->RaceClassGender == RaceClass || entry->RaceClassGender == (RaceClass | (1 << 16))) + bool found = false; + for (uint8 x = 0; x < MAX_OUTFIT_ITEMS; ++x) { - bool found = false; - for (uint8 x = 0; x < MAX_OUTFIT_ITEMS; ++x) + if (entry->ItemId[x] > 0 && uint32(entry->ItemId[x]) == itemId) { - if (entry->ItemId[x] > 0 && uint32(entry->ItemId[x]) == itemId) - { - found = true; - const_cast(entry)->ItemId[x] = 0; - break; - } - } - - if (!found) - sLog->outError(LOG_FILTER_SQL, "Item %u specified to be removed from original create info not found in dbc!", itemId); - - if (!doneOne) - doneOne = true; - else + found = true; + const_cast(entry)->ItemId[x] = 0; break; + } } + + if (!found) + sLog->outError(LOG_FILTER_SQL, "Item %u specified to be removed from original create info not found in dbc!", itemId); } } } -- cgit v1.2.3 From b13e5694b6972ea523b44382788bff267f0f5dfa Mon Sep 17 00:00:00 2001 From: Vincent_Michael Date: Fri, 11 Jan 2013 23:34:08 +0100 Subject: Core/Conditions: Implement CONDITION_UNIT_STATE = 21 --- src/server/game/Conditions/ConditionMgr.cpp | 21 ++++++++++++++++++--- src/server/game/Conditions/ConditionMgr.h | 2 +- 2 files changed, 19 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp index 0526c9276f9..d476113edc4 100644 --- a/src/server/game/Conditions/ConditionMgr.cpp +++ b/src/server/game/Conditions/ConditionMgr.cpp @@ -311,6 +311,12 @@ bool Condition::Meets(ConditionSourceInfo& sourceInfo) condMeets = ((1 << object->GetMap()->GetSpawnMode()) & ConditionValue1); break; } + case CONDITION_UNIT_STATE: + { + if (Unit* unit = object->ToUnit()) + condMeets = unit->HasUnitState(ConditionValue1); + break; + } default: condMeets = false; break; @@ -468,6 +474,9 @@ uint32 Condition::GetSearcherTypeMaskForCondition() case CONDITION_GENDER: mask |= GRID_MAP_TYPE_MASK_PLAYER; break; + case CONDITION_UNIT_STATE: + mask |= GRID_MAP_TYPE_MASK_CREATURE | GRID_MAP_TYPE_MASK_PLAYER; + break; default: ASSERT(false && "Condition::GetSearcherTypeMaskForCondition - missing condition handling!"); break; @@ -1957,9 +1966,15 @@ bool ConditionMgr::isConditionTypeValid(Condition* cond) } break; } - case CONDITION_UNUSED_21: - sLog->outError(LOG_FILTER_SQL, "Found ConditionTypeOrReference = CONDITION_UNUSED_21 in `conditions` table - ignoring"); - return false; + case CONDITION_UNIT_STATE: + { + if (cond->ConditionValue1 > uint32(UNIT_STATE_ALL_STATE)) + { + sLog->outError(LOG_FILTER_SQL, "UnitState condition has non existing UnitState in value1 (%u), skipped", cond->ConditionValue1); + return false; + } + break; + } case CONDITION_UNUSED_24: sLog->outError(LOG_FILTER_SQL, "Found ConditionTypeOrReference = CONDITION_UNUSED_24 in `conditions` table - ignoring"); return false; diff --git a/src/server/game/Conditions/ConditionMgr.h b/src/server/game/Conditions/ConditionMgr.h index fec5cd6fc95..b49626747a6 100644 --- a/src/server/game/Conditions/ConditionMgr.h +++ b/src/server/game/Conditions/ConditionMgr.h @@ -54,7 +54,7 @@ enum ConditionTypes CONDITION_TITLE = 18, // title id 0 0 true if player has title CONDITION_SPAWNMASK = 19, // spawnMask 0 0 true if in spawnMask CONDITION_GENDER = 20, // gender 0 0 true if player's gender is equal to gender - CONDITION_UNUSED_21 = 21, // + CONDITION_UNIT_STATE = 21, // unitState 0 0 true if unit has unitState CONDITION_MAPID = 22, // map_id 0 0 true if in map_id CONDITION_AREAID = 23, // area_id 0 0 true if in area_id CONDITION_UNUSED_24 = 24, // -- cgit v1.2.3 From 2fcd4c381c4b44082fd24afb6e6d11fc242636dc Mon Sep 17 00:00:00 2001 From: Vincent_Michael Date: Fri, 11 Jan 2013 23:36:23 +0100 Subject: DB/Conditions: Convert shadowstep spell script in conditions --- .../world/2013_01_11_01_world_conditions.sql | 5 ++++ src/server/scripts/Spells/spell_rogue.cpp | 30 ---------------------- 2 files changed, 5 insertions(+), 30 deletions(-) create mode 100644 sql/updates/world/2013_01_11_01_world_conditions.sql (limited to 'src') diff --git a/sql/updates/world/2013_01_11_01_world_conditions.sql b/sql/updates/world/2013_01_11_01_world_conditions.sql new file mode 100644 index 00000000000..352efb792b4 --- /dev/null +++ b/sql/updates/world/2013_01_11_01_world_conditions.sql @@ -0,0 +1,5 @@ +DELETE FROM `spell_script_names` WHERE `spell_id`=36554; + +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=17 AND `SourceEntry`=36554; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(17, 0, 36554, 0, 0, 21, 0, 1024, 0, 0, 1, 103, 0, '', 'Shadowstep - not using Shadowstep while rooted'); diff --git a/src/server/scripts/Spells/spell_rogue.cpp b/src/server/scripts/Spells/spell_rogue.cpp index 01a4225cc00..1a2738afdbb 100644 --- a/src/server/scripts/Spells/spell_rogue.cpp +++ b/src/server/scripts/Spells/spell_rogue.cpp @@ -348,35 +348,6 @@ class spell_rog_prey_on_the_weak : public SpellScriptLoader } }; -// 36554 - Shadowstep -class spell_rog_shadowstep : public SpellScriptLoader -{ - public: - spell_rog_shadowstep() : SpellScriptLoader("spell_rog_shadowstep") { } - - class spell_rog_shadowstep_SpellScript : public SpellScript - { - PrepareSpellScript(spell_rog_shadowstep_SpellScript); - - SpellCastResult CheckCast() - { - if (GetCaster()->HasUnitState(UNIT_STATE_ROOT)) - return SPELL_FAILED_ROOTED; - return SPELL_CAST_OK; - } - - void Register() - { - OnCheckCast += SpellCheckCastFn(spell_rog_shadowstep_SpellScript::CheckCast); - } - }; - - SpellScript* GetSpellScript() const - { - return new spell_rog_shadowstep_SpellScript(); - } -}; - // 5938 - Shiv class spell_rog_shiv : public SpellScriptLoader { @@ -425,6 +396,5 @@ void AddSC_rogue_spell_scripts() new spell_rog_nerves_of_steel(); new spell_rog_preparation(); new spell_rog_prey_on_the_weak(); - new spell_rog_shadowstep(); new spell_rog_shiv(); } -- cgit v1.2.3 From 95f8068a6f18a64b69e746da4b351d3e1bdac08e Mon Sep 17 00:00:00 2001 From: joschiwald Date: Sat, 12 Jan 2013 02:16:30 +0100 Subject: Misc: Reorder more scripts in some script files and some cosmetic stuff --- src/server/scripts/Spells/spell_druid.cpp | 76 ++-- src/server/scripts/Spells/spell_mage.cpp | 276 +++++++------- src/server/scripts/Spells/spell_paladin.cpp | 539 ++++++++++++++-------------- src/server/scripts/Spells/spell_priest.cpp | 2 - src/server/scripts/Spells/spell_warrior.cpp | 502 +++++++++++++------------- 5 files changed, 700 insertions(+), 695 deletions(-) (limited to 'src') diff --git a/src/server/scripts/Spells/spell_druid.cpp b/src/server/scripts/Spells/spell_druid.cpp index a0307f994c9..6dd453597de 100644 --- a/src/server/scripts/Spells/spell_druid.cpp +++ b/src/server/scripts/Spells/spell_druid.cpp @@ -29,18 +29,19 @@ enum DruidSpells { - DRUID_INCREASED_MOONFIRE_DURATION = 38414, - DRUID_NATURES_SPLENDOR = 57865, - DRUID_LIFEBLOOM_FINAL_HEAL = 33778, - DRUID_LIFEBLOOM_ENERGIZE = 64372, - DRUID_SURVIVAL_INSTINCTS = 50322, - DRUID_SAVAGE_ROAR = 62071, - SPELL_DRUID_ITEM_T8_BALANCE_RELIC = 64950, - SPELL_KING_OF_THE_JUNGLE = 48492, - SPELL_TIGER_S_FURY_ENERGIZE = 51178, - SPELL_ENRAGE_MOD_DAMAGE = 51185, + SPELL_DRUID_ENRAGE_MOD_DAMAGE = 51185, + SPELL_DRUID_INCREASED_MOONFIRE_DURATION = 38414, + SPELL_DRUID_KING_OF_THE_JUNGLE = 48492, + SPELL_DRUID_LIFEBLOOM_ENERGIZE = 64372, + SPELL_DRUID_LIFEBLOOM_FINAL_HEAL = 33778, + SPELL_DRUID_NATURES_SPLENDOR = 57865, + SPELL_DRUID_SURVIVAL_INSTINCTS = 50322, + SPELL_DRUID_SAVAGE_ROAR = 62071, + SPELL_DRUID_TIGER_S_FURY_ENERGIZE = 51178, + SPELL_DRUID_ITEM_T8_BALANCE_RELIC = 64950, }; +// -5229 - Enrage class spell_dru_enrage : public SpellScriptLoader { public: @@ -52,8 +53,8 @@ class spell_dru_enrage : public SpellScriptLoader void OnHit() { - if (AuraEffect const* aurEff = GetHitUnit()->GetAuraEffectOfRankedSpell(SPELL_KING_OF_THE_JUNGLE, EFFECT_0)) - GetHitUnit()->CastCustomSpell(SPELL_ENRAGE_MOD_DAMAGE, SPELLVALUE_BASE_POINT0, aurEff->GetAmount(), GetHitUnit(), true); + if (AuraEffect const* aurEff = GetHitUnit()->GetAuraEffectOfRankedSpell(SPELL_DRUID_KING_OF_THE_JUNGLE, EFFECT_0)) + GetHitUnit()->CastCustomSpell(SPELL_DRUID_ENRAGE_MOD_DAMAGE, SPELLVALUE_BASE_POINT0, aurEff->GetAmount(), GetHitUnit(), true); } void Register() @@ -68,7 +69,7 @@ class spell_dru_enrage : public SpellScriptLoader } }; -// 54846 Glyph of Starfire +// 54846 - Glyph of Starfire class spell_dru_glyph_of_starfire : public SpellScriptLoader { public: @@ -78,9 +79,9 @@ class spell_dru_glyph_of_starfire : public SpellScriptLoader { PrepareSpellScript(spell_dru_glyph_of_starfire_SpellScript); - bool Validate(SpellInfo const* /*spellEntry*/) + bool Validate(SpellInfo const* /*spellInfo*/) { - if (!sSpellMgr->GetSpellInfo(DRUID_INCREASED_MOONFIRE_DURATION) || !sSpellMgr->GetSpellInfo(DRUID_NATURES_SPLENDOR)) + if (!sSpellMgr->GetSpellInfo(SPELL_DRUID_INCREASED_MOONFIRE_DURATION) || !sSpellMgr->GetSpellInfo(SPELL_DRUID_NATURES_SPLENDOR)) return false; return true; } @@ -95,9 +96,9 @@ class spell_dru_glyph_of_starfire : public SpellScriptLoader uint32 countMin = aura->GetMaxDuration(); uint32 countMax = aura->GetSpellInfo()->GetMaxDuration() + 9000; - if (caster->HasAura(DRUID_INCREASED_MOONFIRE_DURATION)) + if (caster->HasAura(SPELL_DRUID_INCREASED_MOONFIRE_DURATION)) countMax += 3000; - if (caster->HasAura(DRUID_NATURES_SPLENDOR)) + if (caster->HasAura(SPELL_DRUID_NATURES_SPLENDOR)) countMax += 3000; if (countMin < countMax) @@ -120,6 +121,7 @@ class spell_dru_glyph_of_starfire : public SpellScriptLoader } }; +// -5570 - Insect Swarm class spell_dru_insect_swarm : public SpellScriptLoader { public: @@ -148,6 +150,7 @@ class spell_dru_insect_swarm : public SpellScriptLoader } }; +// -33763 - Lifebloom class spell_dru_lifebloom : public SpellScriptLoader { public: @@ -159,9 +162,9 @@ class spell_dru_lifebloom : public SpellScriptLoader bool Validate(SpellInfo const* /*spell*/) { - if (!sSpellMgr->GetSpellInfo(DRUID_LIFEBLOOM_FINAL_HEAL)) + if (!sSpellMgr->GetSpellInfo(SPELL_DRUID_LIFEBLOOM_FINAL_HEAL)) return false; - if (!sSpellMgr->GetSpellInfo(DRUID_LIFEBLOOM_ENERGIZE)) + if (!sSpellMgr->GetSpellInfo(SPELL_DRUID_LIFEBLOOM_ENERGIZE)) return false; return true; } @@ -180,15 +183,15 @@ class spell_dru_lifebloom : public SpellScriptLoader healAmount = caster->SpellHealingBonusDone(GetTarget(), GetSpellInfo(), healAmount, HEAL, stack); healAmount = GetTarget()->SpellHealingBonusTaken(caster, GetSpellInfo(), healAmount, HEAL, stack); - GetTarget()->CastCustomSpell(GetTarget(), DRUID_LIFEBLOOM_FINAL_HEAL, &healAmount, NULL, NULL, true, NULL, aurEff, GetCasterGUID()); + GetTarget()->CastCustomSpell(GetTarget(), SPELL_DRUID_LIFEBLOOM_FINAL_HEAL, &healAmount, NULL, NULL, true, NULL, aurEff, GetCasterGUID()); // restore mana int32 returnMana = CalculatePct(caster->GetCreateMana(), GetSpellInfo()->ManaCostPercentage) * stack / 2; - caster->CastCustomSpell(caster, DRUID_LIFEBLOOM_ENERGIZE, &returnMana, NULL, NULL, true, NULL, aurEff, GetCasterGUID()); + caster->CastCustomSpell(caster, SPELL_DRUID_LIFEBLOOM_ENERGIZE, &returnMana, NULL, NULL, true, NULL, aurEff, GetCasterGUID()); return; } - GetTarget()->CastCustomSpell(GetTarget(), DRUID_LIFEBLOOM_FINAL_HEAL, &healAmount, NULL, NULL, true, NULL, aurEff, GetCasterGUID()); + GetTarget()->CastCustomSpell(GetTarget(), SPELL_DRUID_LIFEBLOOM_FINAL_HEAL, &healAmount, NULL, NULL, true, NULL, aurEff, GetCasterGUID()); } void HandleDispel(DispelInfo* dispelInfo) @@ -203,15 +206,15 @@ class spell_dru_lifebloom : public SpellScriptLoader { healAmount = caster->SpellHealingBonusDone(target, GetSpellInfo(), healAmount, HEAL, dispelInfo->GetRemovedCharges()); healAmount = target->SpellHealingBonusTaken(caster, GetSpellInfo(), healAmount, HEAL, dispelInfo->GetRemovedCharges()); - target->CastCustomSpell(target, DRUID_LIFEBLOOM_FINAL_HEAL, &healAmount, NULL, NULL, true, NULL, NULL, GetCasterGUID()); + target->CastCustomSpell(target, SPELL_DRUID_LIFEBLOOM_FINAL_HEAL, &healAmount, NULL, NULL, true, NULL, NULL, GetCasterGUID()); // restore mana int32 returnMana = CalculatePct(caster->GetCreateMana(), GetSpellInfo()->ManaCostPercentage) * dispelInfo->GetRemovedCharges() / 2; - caster->CastCustomSpell(caster, DRUID_LIFEBLOOM_ENERGIZE, &returnMana, NULL, NULL, true, NULL, NULL, GetCasterGUID()); + caster->CastCustomSpell(caster, SPELL_DRUID_LIFEBLOOM_ENERGIZE, &returnMana, NULL, NULL, true, NULL, NULL, GetCasterGUID()); return; } - target->CastCustomSpell(target, DRUID_LIFEBLOOM_FINAL_HEAL, &healAmount, NULL, NULL, true, NULL, NULL, GetCasterGUID()); + target->CastCustomSpell(target, SPELL_DRUID_LIFEBLOOM_FINAL_HEAL, &healAmount, NULL, NULL, true, NULL, NULL, GetCasterGUID()); } } } @@ -273,6 +276,7 @@ class spell_dru_moonkin_form_passive : public SpellScriptLoader } }; +// -16972 - Predatory Strikes class spell_dru_predatory_strikes : public SpellScriptLoader { public: @@ -388,6 +392,7 @@ class spell_dru_savage_defense : public SpellScriptLoader } }; +// 52610 - Savage Roar class spell_dru_savage_roar : public SpellScriptLoader { public: @@ -418,7 +423,7 @@ class spell_dru_savage_roar : public SpellScriptLoader bool Validate(SpellInfo const* /*spell*/) { - if (!sSpellMgr->GetSpellInfo(DRUID_SAVAGE_ROAR)) + if (!sSpellMgr->GetSpellInfo(SPELL_DRUID_SAVAGE_ROAR)) return false; return true; } @@ -426,12 +431,12 @@ class spell_dru_savage_roar : public SpellScriptLoader void AfterApply(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/) { Unit* target = GetTarget(); - target->CastSpell(target, DRUID_SAVAGE_ROAR, true, NULL, aurEff, GetCasterGUID()); + target->CastSpell(target, SPELL_DRUID_SAVAGE_ROAR, true, NULL, aurEff, GetCasterGUID()); } void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) { - GetTarget()->RemoveAurasDueToSpell(DRUID_SAVAGE_ROAR); + GetTarget()->RemoveAurasDueToSpell(SPELL_DRUID_SAVAGE_ROAR); } void Register() @@ -452,6 +457,7 @@ class spell_dru_savage_roar : public SpellScriptLoader } }; +// -50294 - Starfall (AOE) class spell_dru_starfall_aoe : public SpellScriptLoader { public: @@ -478,6 +484,7 @@ class spell_dru_starfall_aoe : public SpellScriptLoader } }; +// -50286 - Starfall (Dummy) class spell_dru_starfall_dummy : public SpellScriptLoader { public: @@ -523,6 +530,7 @@ class spell_dru_starfall_dummy : public SpellScriptLoader } }; +// 61336 - Survival Instincts class spell_dru_survival_instincts : public SpellScriptLoader { public: @@ -553,7 +561,7 @@ class spell_dru_survival_instincts : public SpellScriptLoader bool Validate(SpellInfo const* /*spell*/) { - if (!sSpellMgr->GetSpellInfo(DRUID_SURVIVAL_INSTINCTS)) + if (!sSpellMgr->GetSpellInfo(SPELL_DRUID_SURVIVAL_INSTINCTS)) return false; return true; } @@ -562,12 +570,12 @@ class spell_dru_survival_instincts : public SpellScriptLoader { Unit* target = GetTarget(); int32 bp0 = target->CountPctFromMaxHealth(aurEff->GetAmount()); - target->CastCustomSpell(target, DRUID_SURVIVAL_INSTINCTS, &bp0, NULL, NULL, true); + target->CastCustomSpell(target, SPELL_DRUID_SURVIVAL_INSTINCTS, &bp0, NULL, NULL, true); } void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) { - GetTarget()->RemoveAurasDueToSpell(DRUID_SURVIVAL_INSTINCTS); + GetTarget()->RemoveAurasDueToSpell(SPELL_DRUID_SURVIVAL_INSTINCTS); } void Register() @@ -622,6 +630,7 @@ class spell_dru_swift_flight_passive : public SpellScriptLoader } }; +// -5217 - Tiger's Fury class spell_dru_tiger_s_fury : public SpellScriptLoader { public: @@ -633,8 +642,8 @@ class spell_dru_tiger_s_fury : public SpellScriptLoader void OnHit() { - if (AuraEffect const* aurEff = GetHitUnit()->GetAuraEffectOfRankedSpell(SPELL_KING_OF_THE_JUNGLE, EFFECT_1)) - GetHitUnit()->CastCustomSpell(SPELL_TIGER_S_FURY_ENERGIZE, SPELLVALUE_BASE_POINT0, aurEff->GetAmount(), GetHitUnit(), true); + if (AuraEffect const* aurEff = GetHitUnit()->GetAuraEffectOfRankedSpell(SPELL_DRUID_KING_OF_THE_JUNGLE, EFFECT_1)) + GetHitUnit()->CastCustomSpell(SPELL_DRUID_TIGER_S_FURY_ENERGIZE, SPELLVALUE_BASE_POINT0, aurEff->GetAmount(), GetHitUnit(), true); } void Register() @@ -649,6 +658,7 @@ class spell_dru_tiger_s_fury : public SpellScriptLoader } }; +// 70691 - Item T10 Restoration 4P Bonus class spell_dru_t10_restoration_4p_bonus : public SpellScriptLoader { public: diff --git a/src/server/scripts/Spells/spell_mage.cpp b/src/server/scripts/Spells/spell_mage.cpp index cf10cfdab5c..61f0579190f 100644 --- a/src/server/scripts/Spells/spell_mage.cpp +++ b/src/server/scripts/Spells/spell_mage.cpp @@ -29,6 +29,10 @@ enum MageSpells { SPELL_MAGE_COLD_SNAP = 11958, + SPELL_MAGE_FROST_WARDING_R1 = 28332, + SPELL_MAGE_FROST_WARDING_TRIGGERED = 57776, + SPELL_MAGE_INCANTERS_ABSORBTION_R1 = 44394, + SPELL_MAGE_INCANTERS_ABSORBTION_TRIGGERED = 44413, SPELL_MAGE_SQUIRREL_FORM = 32813, SPELL_MAGE_GIRAFFE_FORM = 32816, SPELL_MAGE_SERPENT_FORM = 32817, @@ -41,6 +45,7 @@ enum MageSpells SPELL_MAGE_GLYPH_OF_BLAST_WAVE = 62126, }; +// -11113 - Blast Wave class spell_mage_blast_wave : public SpellScriptLoader { public: @@ -50,7 +55,7 @@ class spell_mage_blast_wave : public SpellScriptLoader { PrepareSpellScript(spell_mage_blast_wave_SpellScript); - bool Validate(SpellInfo const* /*spellEntry*/) + bool Validate(SpellInfo const* /*spellInfo*/) { if (!sSpellMgr->GetSpellInfo(SPELL_MAGE_GLYPH_OF_BLAST_WAVE)) return false; @@ -75,6 +80,7 @@ class spell_mage_blast_wave : public SpellScriptLoader } }; +// 11958 - Cold Snap class spell_mage_cold_snap : public SpellScriptLoader { public: @@ -91,7 +97,6 @@ class spell_mage_cold_snap : public SpellScriptLoader void HandleDummy(SpellEffIndex /*effIndex*/) { - Player* caster = GetCaster()->ToPlayer(); // immediately finishes the cooldown on Frost spells const SpellCooldowns& cm = caster->GetSpellCooldownMap(); @@ -112,7 +117,6 @@ class spell_mage_cold_snap : public SpellScriptLoader void Register() { - // add dummy effect spell handler to Cold Snap OnEffectHit += SpellEffectFn(spell_mage_cold_snap_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; @@ -123,102 +127,7 @@ class spell_mage_cold_snap : public SpellScriptLoader } }; -enum SilvermoonPolymorph -{ - NPC_AUROSALIA = 18744, -}; - -// TODO: move out of here and rename - not a mage spell -class spell_mage_polymorph_cast_visual : public SpellScriptLoader -{ - public: - spell_mage_polymorph_cast_visual() : SpellScriptLoader("spell_mage_polymorph_visual") { } - - class spell_mage_polymorph_cast_visual_SpellScript : public SpellScript - { - PrepareSpellScript(spell_mage_polymorph_cast_visual_SpellScript); - - static const uint32 PolymorhForms[6]; - - bool Validate(SpellInfo const* /*spellEntry*/) - { - // check if spell ids exist in dbc - for (uint32 i = 0; i < 6; i++) - if (!sSpellMgr->GetSpellInfo(PolymorhForms[i])) - return false; - return true; - } - - void HandleDummy(SpellEffIndex /*effIndex*/) - { - if (Unit* target = GetCaster()->FindNearestCreature(NPC_AUROSALIA, 30.0f)) - if (target->GetTypeId() == TYPEID_UNIT) - target->CastSpell(target, PolymorhForms[urand(0, 5)], true); - } - - void Register() - { - // add dummy effect spell handler to Polymorph visual - OnEffectHitTarget += SpellEffectFn(spell_mage_polymorph_cast_visual_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); - } - }; - - SpellScript* GetSpellScript() const - { - return new spell_mage_polymorph_cast_visual_SpellScript(); - } -}; - -const uint32 spell_mage_polymorph_cast_visual::spell_mage_polymorph_cast_visual_SpellScript::PolymorhForms[6] = -{ - SPELL_MAGE_SQUIRREL_FORM, - SPELL_MAGE_GIRAFFE_FORM, - SPELL_MAGE_SERPENT_FORM, - SPELL_MAGE_DRAGONHAWK_FORM, - SPELL_MAGE_WORGEN_FORM, - SPELL_MAGE_SHEEP_FORM -}; - -class spell_mage_summon_water_elemental : public SpellScriptLoader -{ - public: - spell_mage_summon_water_elemental() : SpellScriptLoader("spell_mage_summon_water_elemental") { } - - class spell_mage_summon_water_elemental_SpellScript : public SpellScript - { - PrepareSpellScript(spell_mage_summon_water_elemental_SpellScript); - - bool Validate(SpellInfo const* /*spellEntry*/) - { - if (!sSpellMgr->GetSpellInfo(SPELL_MAGE_GLYPH_OF_ETERNAL_WATER) || !sSpellMgr->GetSpellInfo(SPELL_MAGE_SUMMON_WATER_ELEMENTAL_TEMPORARY) || !sSpellMgr->GetSpellInfo(SPELL_MAGE_SUMMON_WATER_ELEMENTAL_PERMANENT)) - return false; - return true; - } - - void HandleDummy(SpellEffIndex /*effIndex*/) - { - Unit* caster = GetCaster(); - // Glyph of Eternal Water - if (caster->HasAura(SPELL_MAGE_GLYPH_OF_ETERNAL_WATER)) - caster->CastSpell(caster, SPELL_MAGE_SUMMON_WATER_ELEMENTAL_PERMANENT, true); - else - caster->CastSpell(caster, SPELL_MAGE_SUMMON_WATER_ELEMENTAL_TEMPORARY, true); - } - - void Register() - { - // add dummy effect spell handler to Summon Water Elemental - OnEffectHit += SpellEffectFn(spell_mage_summon_water_elemental_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); - } - }; - - SpellScript* GetSpellScript() const - { - return new spell_mage_summon_water_elemental_SpellScript(); - } -}; - -// Frost Warding +// -543, -6143 - Frost Warding class spell_mage_frost_warding_trigger : public SpellScriptLoader { public: @@ -228,13 +137,7 @@ class spell_mage_frost_warding_trigger : public SpellScriptLoader { PrepareAuraScript(spell_mage_frost_warding_trigger_AuraScript); - enum Spells - { - SPELL_MAGE_FROST_WARDING_TRIGGERED = 57776, - SPELL_MAGE_FROST_WARDING_R1 = 28332, - }; - - bool Validate(SpellInfo const* /*spellEntry*/) + bool Validate(SpellInfo const* /*spellInfo*/) { if (!sSpellMgr->GetSpellInfo(SPELL_MAGE_FROST_WARDING_TRIGGERED) || !sSpellMgr->GetSpellInfo(SPELL_MAGE_FROST_WARDING_R1)) return false; @@ -274,13 +177,8 @@ class spell_mage_frost_warding_trigger : public SpellScriptLoader class spell_mage_incanters_absorbtion_base_AuraScript : public AuraScript { public: - enum Spells - { - SPELL_MAGE_INCANTERS_ABSORBTION_TRIGGERED = 44413, - SPELL_MAGE_INCANTERS_ABSORBTION_R1 = 44394, - }; - bool Validate(SpellInfo const* /*spellEntry*/) + bool Validate(SpellInfo const* /*spellInfo*/) { return sSpellMgr->GetSpellInfo(SPELL_MAGE_INCANTERS_ABSORBTION_TRIGGERED) && sSpellMgr->GetSpellInfo(SPELL_MAGE_INCANTERS_ABSORBTION_R1); @@ -298,50 +196,51 @@ class spell_mage_incanters_absorbtion_base_AuraScript : public AuraScript } }; -// Incanter's Absorption +// -543, -6143, -11426 - Incanter's Absorption class spell_mage_incanters_absorbtion_absorb : public SpellScriptLoader { -public: - spell_mage_incanters_absorbtion_absorb() : SpellScriptLoader("spell_mage_incanters_absorbtion_absorb") { } + public: + spell_mage_incanters_absorbtion_absorb() : SpellScriptLoader("spell_mage_incanters_absorbtion_absorb") { } + + class spell_mage_incanters_absorbtion_absorb_AuraScript : public spell_mage_incanters_absorbtion_base_AuraScript + { + PrepareAuraScript(spell_mage_incanters_absorbtion_absorb_AuraScript); - class spell_mage_incanters_absorbtion_absorb_AuraScript : public spell_mage_incanters_absorbtion_base_AuraScript - { - PrepareAuraScript(spell_mage_incanters_absorbtion_absorb_AuraScript); + void Register() + { + AfterEffectAbsorb += AuraEffectAbsorbFn(spell_mage_incanters_absorbtion_absorb_AuraScript::Trigger, EFFECT_0); + } + }; - void Register() + AuraScript* GetAuraScript() const { - AfterEffectAbsorb += AuraEffectAbsorbFn(spell_mage_incanters_absorbtion_absorb_AuraScript::Trigger, EFFECT_0); + return new spell_mage_incanters_absorbtion_absorb_AuraScript(); } - }; - - AuraScript* GetAuraScript() const - { - return new spell_mage_incanters_absorbtion_absorb_AuraScript(); - } }; -// Incanter's Absorption +// -1463 - Incanter's Absorption class spell_mage_incanters_absorbtion_manashield : public SpellScriptLoader { -public: - spell_mage_incanters_absorbtion_manashield() : SpellScriptLoader("spell_mage_incanters_absorbtion_manashield") { } + public: + spell_mage_incanters_absorbtion_manashield() : SpellScriptLoader("spell_mage_incanters_absorbtion_manashield") { } - class spell_mage_incanters_absorbtion_manashield_AuraScript : public spell_mage_incanters_absorbtion_base_AuraScript - { - PrepareAuraScript(spell_mage_incanters_absorbtion_manashield_AuraScript); + class spell_mage_incanters_absorbtion_manashield_AuraScript : public spell_mage_incanters_absorbtion_base_AuraScript + { + PrepareAuraScript(spell_mage_incanters_absorbtion_manashield_AuraScript); - void Register() + void Register() + { + AfterEffectManaShield += AuraEffectManaShieldFn(spell_mage_incanters_absorbtion_manashield_AuraScript::Trigger, EFFECT_0); + } + }; + + AuraScript* GetAuraScript() const { - AfterEffectManaShield += AuraEffectManaShieldFn(spell_mage_incanters_absorbtion_manashield_AuraScript::Trigger, EFFECT_0); + return new spell_mage_incanters_absorbtion_manashield_AuraScript(); } - }; - - AuraScript* GetAuraScript() const - { - return new spell_mage_incanters_absorbtion_manashield_AuraScript(); - } }; +// -44457 - Living Bomb class spell_mage_living_bomb : public SpellScriptLoader { public: @@ -380,6 +279,101 @@ class spell_mage_living_bomb : public SpellScriptLoader } }; +enum SilvermoonPolymorph +{ + NPC_AUROSALIA = 18744, +}; + +// TODO: move out of here and rename - not a mage spell +// 32826 - Polymorph (Visual) +class spell_mage_polymorph_cast_visual : public SpellScriptLoader +{ + public: + spell_mage_polymorph_cast_visual() : SpellScriptLoader("spell_mage_polymorph_visual") { } + + class spell_mage_polymorph_cast_visual_SpellScript : public SpellScript + { + PrepareSpellScript(spell_mage_polymorph_cast_visual_SpellScript); + + static const uint32 PolymorhForms[6]; + + bool Validate(SpellInfo const* /*spellInfo*/) + { + // check if spell ids exist in dbc + for (uint32 i = 0; i < 6; ++i) + if (!sSpellMgr->GetSpellInfo(PolymorhForms[i])) + return false; + return true; + } + + void HandleDummy(SpellEffIndex /*effIndex*/) + { + if (Unit* target = GetCaster()->FindNearestCreature(NPC_AUROSALIA, 30.0f)) + if (target->GetTypeId() == TYPEID_UNIT) + target->CastSpell(target, PolymorhForms[urand(0, 5)], true); + } + + void Register() + { + OnEffectHitTarget += SpellEffectFn(spell_mage_polymorph_cast_visual_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + } + }; + + SpellScript* GetSpellScript() const + { + return new spell_mage_polymorph_cast_visual_SpellScript(); + } +}; + +const uint32 spell_mage_polymorph_cast_visual::spell_mage_polymorph_cast_visual_SpellScript::PolymorhForms[6] = +{ + SPELL_MAGE_SQUIRREL_FORM, + SPELL_MAGE_GIRAFFE_FORM, + SPELL_MAGE_SERPENT_FORM, + SPELL_MAGE_DRAGONHAWK_FORM, + SPELL_MAGE_WORGEN_FORM, + SPELL_MAGE_SHEEP_FORM +}; + +// 31687 - Summon Water Elemental +class spell_mage_summon_water_elemental : public SpellScriptLoader +{ + public: + spell_mage_summon_water_elemental() : SpellScriptLoader("spell_mage_summon_water_elemental") { } + + class spell_mage_summon_water_elemental_SpellScript : public SpellScript + { + PrepareSpellScript(spell_mage_summon_water_elemental_SpellScript); + + bool Validate(SpellInfo const* /*spellInfo*/) + { + if (!sSpellMgr->GetSpellInfo(SPELL_MAGE_GLYPH_OF_ETERNAL_WATER) || !sSpellMgr->GetSpellInfo(SPELL_MAGE_SUMMON_WATER_ELEMENTAL_TEMPORARY) || !sSpellMgr->GetSpellInfo(SPELL_MAGE_SUMMON_WATER_ELEMENTAL_PERMANENT)) + return false; + return true; + } + + void HandleDummy(SpellEffIndex /*effIndex*/) + { + Unit* caster = GetCaster(); + // Glyph of Eternal Water + if (caster->HasAura(SPELL_MAGE_GLYPH_OF_ETERNAL_WATER)) + caster->CastSpell(caster, SPELL_MAGE_SUMMON_WATER_ELEMENTAL_PERMANENT, true); + else + caster->CastSpell(caster, SPELL_MAGE_SUMMON_WATER_ELEMENTAL_TEMPORARY, true); + } + + void Register() + { + OnEffectHit += SpellEffectFn(spell_mage_summon_water_elemental_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + } + }; + + SpellScript* GetSpellScript() const + { + return new spell_mage_summon_water_elemental_SpellScript(); + } +}; + void AddSC_mage_spell_scripts() { new spell_mage_blast_wave(); @@ -387,7 +381,7 @@ void AddSC_mage_spell_scripts() new spell_mage_frost_warding_trigger(); new spell_mage_incanters_absorbtion_absorb(); new spell_mage_incanters_absorbtion_manashield(); + new spell_mage_living_bomb(); new spell_mage_polymorph_cast_visual(); new spell_mage_summon_water_elemental(); - new spell_mage_living_bomb(); } diff --git a/src/server/scripts/Spells/spell_paladin.cpp b/src/server/scripts/Spells/spell_paladin.cpp index 07d903c9587..d3fc86302e1 100644 --- a/src/server/scripts/Spells/spell_paladin.cpp +++ b/src/server/scripts/Spells/spell_paladin.cpp @@ -29,28 +29,28 @@ enum PaladinSpells { - PALADIN_SPELL_DIVINE_PLEA = 54428, - PALADIN_SPELL_BLESSING_OF_SANCTUARY_BUFF = 67480, + SPELL_PALADIN_DIVINE_PLEA = 54428, + SPELL_PALADIN_BLESSING_OF_SANCTUARY_BUFF = 67480, - PALADIN_SPELL_HOLY_SHOCK_R1 = 20473, - PALADIN_SPELL_HOLY_SHOCK_R1_DAMAGE = 25912, - PALADIN_SPELL_HOLY_SHOCK_R1_HEALING = 25914, + SPELL_PALADIN_HOLY_SHOCK_R1 = 20473, + SPELL_PALADIN_HOLY_SHOCK_R1_DAMAGE = 25912, + SPELL_PALADIN_HOLY_SHOCK_R1_HEALING = 25914, - SPELL_BLESSING_OF_LOWER_CITY_DRUID = 37878, - SPELL_BLESSING_OF_LOWER_CITY_PALADIN = 37879, - SPELL_BLESSING_OF_LOWER_CITY_PRIEST = 37880, - SPELL_BLESSING_OF_LOWER_CITY_SHAMAN = 37881, + SPELL_PALADIN_BLESSING_OF_LOWER_CITY_DRUID = 37878, + SPELL_PALADIN_BLESSING_OF_LOWER_CITY_PALADIN = 37879, + SPELL_PALADIN_BLESSING_OF_LOWER_CITY_PRIEST = 37880, + SPELL_PALADIN_BLESSING_OF_LOWER_CITY_SHAMAN = 37881, - SPELL_DIVINE_STORM = 53385, - SPELL_DIVINE_STORM_DUMMY = 54171, - SPELL_DIVINE_STORM_HEAL = 54172, + SPELL_PALADIN_DIVINE_STORM = 53385, + SPELL_PALADIN_DIVINE_STORM_DUMMY = 54171, + SPELL_PALADIN_DIVINE_STORM_HEAL = 54172, - SPELL_FORBEARANCE = 25771, - SPELL_AVENGING_WRATH_MARKER = 61987, - SPELL_IMMUNE_SHIELD_MARKER = 61988, + SPELL_PALADIN_FORBEARANCE = 25771, + SPELL_PALADIN_AVENGING_WRATH_MARKER = 61987, + SPELL_PALADIN_IMMUNE_SHIELD_MARKER = 61988, - SPELL_HAND_OF_SACRIFICE = 6940, - SPELL_DIVINE_SACRIFICE = 64205, + SPELL_PALADIN_HAND_OF_SACRIFICE = 6940, + SPELL_PALADIN_DIVINE_SACRIFICE = 64205, }; // 31850 - Ardent Defender @@ -129,6 +129,7 @@ class spell_pal_ardent_defender : public SpellScriptLoader } }; +// 37877 - Blessing of Faith class spell_pal_blessing_of_faith : public SpellScriptLoader { public: @@ -138,9 +139,9 @@ class spell_pal_blessing_of_faith : public SpellScriptLoader { PrepareSpellScript(spell_pal_blessing_of_faith_SpellScript); - bool Validate(SpellInfo const* /*spellEntry*/) + bool Validate(SpellInfo const* /*spellInfo*/) { - if (!sSpellMgr->GetSpellInfo(SPELL_BLESSING_OF_LOWER_CITY_DRUID) || !sSpellMgr->GetSpellInfo(SPELL_BLESSING_OF_LOWER_CITY_PALADIN) || !sSpellMgr->GetSpellInfo(SPELL_BLESSING_OF_LOWER_CITY_PRIEST) || !sSpellMgr->GetSpellInfo(SPELL_BLESSING_OF_LOWER_CITY_SHAMAN)) + if (!sSpellMgr->GetSpellInfo(SPELL_PALADIN_BLESSING_OF_LOWER_CITY_DRUID) || !sSpellMgr->GetSpellInfo(SPELL_PALADIN_BLESSING_OF_LOWER_CITY_PALADIN) || !sSpellMgr->GetSpellInfo(SPELL_PALADIN_BLESSING_OF_LOWER_CITY_PRIEST) || !sSpellMgr->GetSpellInfo(SPELL_PALADIN_BLESSING_OF_LOWER_CITY_SHAMAN)) return false; return true; } @@ -152,11 +153,20 @@ class spell_pal_blessing_of_faith : public SpellScriptLoader uint32 spell_id = 0; switch (unitTarget->getClass()) { - case CLASS_DRUID: spell_id = SPELL_BLESSING_OF_LOWER_CITY_DRUID; break; - case CLASS_PALADIN: spell_id = SPELL_BLESSING_OF_LOWER_CITY_PALADIN; break; - case CLASS_PRIEST: spell_id = SPELL_BLESSING_OF_LOWER_CITY_PRIEST; break; - case CLASS_SHAMAN: spell_id = SPELL_BLESSING_OF_LOWER_CITY_SHAMAN; break; - default: return; // ignore for non-healing classes + case CLASS_DRUID: + spell_id = SPELL_PALADIN_BLESSING_OF_LOWER_CITY_DRUID; + break; + case CLASS_PALADIN: + spell_id = SPELL_PALADIN_BLESSING_OF_LOWER_CITY_PALADIN; + break; + case CLASS_PRIEST: + spell_id = SPELL_PALADIN_BLESSING_OF_LOWER_CITY_PRIEST; + break; + case CLASS_SHAMAN: + spell_id = SPELL_PALADIN_BLESSING_OF_LOWER_CITY_SHAMAN; + break; + default: + return; // ignore for non-healing classes } Unit* caster = GetCaster(); caster->CastSpell(caster, spell_id, true); @@ -165,7 +175,6 @@ class spell_pal_blessing_of_faith : public SpellScriptLoader void Register() { - // add dummy effect spell handler to Blessing of Faith OnEffectHitTarget += SpellEffectFn(spell_pal_blessing_of_faith_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; @@ -187,9 +196,9 @@ class spell_pal_blessing_of_sanctuary : public SpellScriptLoader { PrepareAuraScript(spell_pal_blessing_of_sanctuary_AuraScript); - bool Validate(SpellInfo const* /*entry*/) + bool Validate(SpellInfo const* /*spellInfo*/) { - if (!sSpellMgr->GetSpellInfo(PALADIN_SPELL_BLESSING_OF_SANCTUARY_BUFF)) + if (!sSpellMgr->GetSpellInfo(SPELL_PALADIN_BLESSING_OF_SANCTUARY_BUFF)) return false; return true; } @@ -198,13 +207,13 @@ class spell_pal_blessing_of_sanctuary : public SpellScriptLoader { Unit* target = GetTarget(); if (Unit* caster = GetCaster()) - caster->CastSpell(target, PALADIN_SPELL_BLESSING_OF_SANCTUARY_BUFF, true); + caster->CastSpell(target, SPELL_PALADIN_BLESSING_OF_SANCTUARY_BUFF, true); } void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) { Unit* target = GetTarget(); - target->RemoveAura(PALADIN_SPELL_BLESSING_OF_SANCTUARY_BUFF, GetCasterGUID()); + target->RemoveAura(SPELL_PALADIN_BLESSING_OF_SANCTUARY_BUFF, GetCasterGUID()); } void Register() @@ -220,141 +229,63 @@ class spell_pal_blessing_of_sanctuary : public SpellScriptLoader } }; -// 63521 Guarded by The Light -class spell_pal_guarded_by_the_light : public SpellScriptLoader -{ - public: - spell_pal_guarded_by_the_light() : SpellScriptLoader("spell_pal_guarded_by_the_light") { } - - class spell_pal_guarded_by_the_light_SpellScript : public SpellScript - { - PrepareSpellScript(spell_pal_guarded_by_the_light_SpellScript); - - bool Validate(SpellInfo const* /*spellEntry*/) - { - if (!sSpellMgr->GetSpellInfo(PALADIN_SPELL_DIVINE_PLEA)) - return false; - return true; - } - - void HandleScriptEffect(SpellEffIndex /*effIndex*/) - { - // Divine Plea - if (Aura* aura = GetCaster()->GetAura(PALADIN_SPELL_DIVINE_PLEA)) - aura->RefreshDuration(); - } - - void Register() - { - OnEffectHitTarget += SpellEffectFn(spell_pal_guarded_by_the_light_SpellScript::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); - } - }; - - SpellScript* GetSpellScript() const - { - return new spell_pal_guarded_by_the_light_SpellScript(); - } -}; - -class spell_pal_holy_shock : public SpellScriptLoader +// 64205 - Divine Sacrifice +class spell_pal_divine_sacrifice : public SpellScriptLoader { public: - spell_pal_holy_shock() : SpellScriptLoader("spell_pal_holy_shock") { } + spell_pal_divine_sacrifice() : SpellScriptLoader("spell_pal_divine_sacrifice") { } - class spell_pal_holy_shock_SpellScript : public SpellScript + class spell_pal_divine_sacrifice_AuraScript : public AuraScript { - PrepareSpellScript(spell_pal_holy_shock_SpellScript); - - bool Validate(SpellInfo const* spell) - { - if (!sSpellMgr->GetSpellInfo(PALADIN_SPELL_HOLY_SHOCK_R1)) - return false; - - // can't use other spell than holy shock due to spell_ranks dependency - if (sSpellMgr->GetFirstSpellInChain(PALADIN_SPELL_HOLY_SHOCK_R1) != sSpellMgr->GetFirstSpellInChain(spell->Id)) - return false; - - uint8 rank = sSpellMgr->GetSpellRank(spell->Id); - if (!sSpellMgr->GetSpellWithRank(PALADIN_SPELL_HOLY_SHOCK_R1_DAMAGE, rank, true) || !sSpellMgr->GetSpellWithRank(PALADIN_SPELL_HOLY_SHOCK_R1_HEALING, rank, true)) - return false; + PrepareAuraScript(spell_pal_divine_sacrifice_AuraScript); - return true; - } + uint32 groupSize, minHpPct; + int32 remainingAmount; - void HandleDummy(SpellEffIndex /*effIndex*/) + bool Load() { - Unit* caster = GetCaster(); - if (Unit* unitTarget = GetHitUnit()) - { - uint8 rank = sSpellMgr->GetSpellRank(GetSpellInfo()->Id); - if (caster->IsFriendlyTo(unitTarget)) - caster->CastSpell(unitTarget, sSpellMgr->GetSpellWithRank(PALADIN_SPELL_HOLY_SHOCK_R1_HEALING, rank), true, 0); - else - caster->CastSpell(unitTarget, sSpellMgr->GetSpellWithRank(PALADIN_SPELL_HOLY_SHOCK_R1_DAMAGE, rank), true, 0); - } - } - SpellCastResult CheckCast() - { - Unit* caster = GetCaster(); - if (Unit* target = GetExplTargetUnit()) + if (Unit* caster = GetCaster()) { - if (!caster->IsFriendlyTo(target)) + if (caster->GetTypeId() == TYPEID_PLAYER) { - if (!caster->IsValidAttackTarget(target)) - return SPELL_FAILED_BAD_TARGETS; - - if (!caster->isInFront(target)) - return SPELL_FAILED_UNIT_NOT_INFRONT; + if (caster->ToPlayer()->GetGroup()) + groupSize = caster->ToPlayer()->GetGroup()->GetMembersCount(); + else + groupSize = 1; } - } - else - return SPELL_FAILED_BAD_TARGETS; - return SPELL_CAST_OK; - } + else + return false; - void Register() - { - // add dummy effect spell handler to Holy Shock - OnCheckCast += SpellCheckCastFn(spell_pal_holy_shock_SpellScript::CheckCast); - OnEffectHitTarget += SpellEffectFn(spell_pal_holy_shock_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + remainingAmount = (caster->CountPctFromMaxHealth(GetSpellInfo()->Effects[EFFECT_2].CalcValue(caster)) * groupSize); + minHpPct = GetSpellInfo()->Effects[EFFECT_1].CalcValue(caster); + return true; + } + return false; } - }; - - SpellScript* GetSpellScript() const - { - return new spell_pal_holy_shock_SpellScript(); - } -}; -class spell_pal_judgement_of_command : public SpellScriptLoader -{ - public: - spell_pal_judgement_of_command() : SpellScriptLoader("spell_pal_judgement_of_command") { } - - class spell_pal_judgement_of_command_SpellScript : public SpellScript - { - PrepareSpellScript(spell_pal_judgement_of_command_SpellScript) - void HandleDummy(SpellEffIndex /*effIndex*/) + void Split(AuraEffect* /*aurEff*/, DamageInfo & /*dmgInfo*/, uint32 & splitAmount) { - if (Unit* unitTarget = GetHitUnit()) - if (SpellInfo const* spell_proto = sSpellMgr->GetSpellInfo(GetEffectValue())) - GetCaster()->CastSpell(unitTarget, spell_proto, true, NULL); + remainingAmount -= splitAmount; + // break when absorbed everything it could, or if the casters hp drops below 20% + if (Unit* caster = GetCaster()) + if (remainingAmount <= 0 || (caster->GetHealthPct() < minHpPct)) + caster->RemoveAura(SPELL_PALADIN_DIVINE_SACRIFICE); } void Register() { - // add dummy effect spell handler to Judgement of Command - OnEffectHitTarget += SpellEffectFn(spell_pal_judgement_of_command_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + OnEffectSplit += AuraEffectSplitFn(spell_pal_divine_sacrifice_AuraScript::Split, EFFECT_0); } }; - SpellScript* GetSpellScript() const + AuraScript* GetAuraScript() const { - return new spell_pal_judgement_of_command_SpellScript(); + return new spell_pal_divine_sacrifice_AuraScript(); } }; +// 53385 - Divine Storm class spell_pal_divine_storm : public SpellScriptLoader { public: @@ -366,9 +297,9 @@ class spell_pal_divine_storm : public SpellScriptLoader uint32 healPct; - bool Validate(SpellInfo const* /* spell */) + bool Validate(SpellInfo const* /*spellInfo*/) { - if (!sSpellMgr->GetSpellInfo(SPELL_DIVINE_STORM_DUMMY)) + if (!sSpellMgr->GetSpellInfo(SPELL_PALADIN_DIVINE_STORM_DUMMY)) return false; return true; } @@ -382,7 +313,7 @@ class spell_pal_divine_storm : public SpellScriptLoader void TriggerHeal() { Unit* caster = GetCaster(); - caster->CastCustomSpell(SPELL_DIVINE_STORM_DUMMY, SPELLVALUE_BASE_POINT0, (GetHitDamage() * healPct) / 100, caster, true); + caster->CastCustomSpell(SPELL_PALADIN_DIVINE_STORM_DUMMY, SPELLVALUE_BASE_POINT0, (GetHitDamage() * healPct) / 100, caster, true); } void Register() @@ -397,6 +328,7 @@ class spell_pal_divine_storm : public SpellScriptLoader } }; +// 54171 - Divine Storm (Dummy) class spell_pal_divine_storm_dummy : public SpellScriptLoader { public: @@ -406,9 +338,9 @@ class spell_pal_divine_storm_dummy : public SpellScriptLoader { PrepareSpellScript(spell_pal_divine_storm_dummy_SpellScript); - bool Validate(SpellInfo const* /* spell */) + bool Validate(SpellInfo const* /*spellInfo*/) { - if (!sSpellMgr->GetSpellInfo(SPELL_DIVINE_STORM_HEAL)) + if (!sSpellMgr->GetSpellInfo(SPELL_PALADIN_DIVINE_STORM_HEAL)) return false; return true; } @@ -418,13 +350,13 @@ class spell_pal_divine_storm_dummy : public SpellScriptLoader _targetCount = targetList.size(); } - void HandleDummy(SpellEffIndex /* effIndex */) + void HandleDummy(SpellEffIndex /*effIndex*/) { if (!_targetCount || ! GetHitUnit()) return; int32 heal = GetEffectValue() / _targetCount; - GetCaster()->CastCustomSpell(GetHitUnit(), SPELL_DIVINE_STORM_HEAL, &heal, NULL, NULL, true); + GetCaster()->CastCustomSpell(GetHitUnit(), SPELL_PALADIN_DIVINE_STORM_HEAL, &heal, NULL, NULL, true); } private: uint32 _targetCount; @@ -442,229 +374,314 @@ class spell_pal_divine_storm_dummy : public SpellScriptLoader } }; -class spell_pal_lay_on_hands : public SpellScriptLoader +// 33695 - Exorcism and Holy Wrath Damage +class spell_pal_exorcism_and_holy_wrath_damage : public SpellScriptLoader { public: - spell_pal_lay_on_hands() : SpellScriptLoader("spell_pal_lay_on_hands") { } + spell_pal_exorcism_and_holy_wrath_damage() : SpellScriptLoader("spell_pal_exorcism_and_holy_wrath_damage") { } - class spell_pal_lay_on_hands_SpellScript : public SpellScript + class spell_pal_exorcism_and_holy_wrath_damage_AuraScript : public AuraScript { - PrepareSpellScript(spell_pal_lay_on_hands_SpellScript); + PrepareAuraScript(spell_pal_exorcism_and_holy_wrath_damage_AuraScript); - bool Validate(SpellInfo const* /*spell*/) + void HandleEffectCalcSpellMod(AuraEffect const* aurEff, SpellModifier*& spellMod) { - if (!sSpellMgr->GetSpellInfo(SPELL_FORBEARANCE)) - return false; - if (!sSpellMgr->GetSpellInfo(SPELL_AVENGING_WRATH_MARKER)) - return false; - if (!sSpellMgr->GetSpellInfo(SPELL_IMMUNE_SHIELD_MARKER)) + if (!spellMod) + { + spellMod = new SpellModifier(aurEff->GetBase()); + spellMod->op = SPELLMOD_DAMAGE; + spellMod->type = SPELLMOD_FLAT; + spellMod->spellId = GetId(); + spellMod->mask[1] = 0x200002; + } + + spellMod->value = aurEff->GetAmount(); + } + + void Register() + { + DoEffectCalcSpellMod += AuraEffectCalcSpellModFn(spell_pal_exorcism_and_holy_wrath_damage_AuraScript::HandleEffectCalcSpellMod, EFFECT_0, SPELL_AURA_DUMMY); + } + }; + + AuraScript* GetAuraScript() const + { + return new spell_pal_exorcism_and_holy_wrath_damage_AuraScript(); + } +}; + +// 63521 - Guarded by The Light +class spell_pal_guarded_by_the_light : public SpellScriptLoader +{ + public: + spell_pal_guarded_by_the_light() : SpellScriptLoader("spell_pal_guarded_by_the_light") { } + + class spell_pal_guarded_by_the_light_SpellScript : public SpellScript + { + PrepareSpellScript(spell_pal_guarded_by_the_light_SpellScript); + + bool Validate(SpellInfo const* /*spellInfo*/) + { + if (!sSpellMgr->GetSpellInfo(SPELL_PALADIN_DIVINE_PLEA)) return false; return true; } - SpellCastResult CheckCast() + void HandleScriptEffect(SpellEffIndex /*effIndex*/) { - Unit* caster = GetCaster(); - if (Unit* target = GetExplTargetUnit()) - if (caster == target) - if (target->HasAura(SPELL_FORBEARANCE) || target->HasAura(SPELL_AVENGING_WRATH_MARKER) || target->HasAura(SPELL_IMMUNE_SHIELD_MARKER)) - return SPELL_FAILED_TARGET_AURASTATE; + // Divine Plea + if (Aura* aura = GetCaster()->GetAura(SPELL_PALADIN_DIVINE_PLEA)) + aura->RefreshDuration(); + } - return SPELL_CAST_OK; + void Register() + { + OnEffectHitTarget += SpellEffectFn(spell_pal_guarded_by_the_light_SpellScript::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); } + }; - void HandleScript() + SpellScript* GetSpellScript() const + { + return new spell_pal_guarded_by_the_light_SpellScript(); + } +}; + +// 6940 - Hand of Sacrifice +class spell_pal_hand_of_sacrifice : public SpellScriptLoader +{ + public: + spell_pal_hand_of_sacrifice() : SpellScriptLoader("spell_pal_hand_of_sacrifice") { } + + class spell_pal_hand_of_sacrifice_AuraScript : public AuraScript + { + PrepareAuraScript(spell_pal_hand_of_sacrifice_AuraScript); + + int32 remainingAmount; + + bool Load() { - Unit* caster = GetCaster(); - if (caster == GetHitUnit()) + if (Unit* caster = GetCaster()) + { + remainingAmount = caster->GetMaxHealth(); + return true; + } + return false; + } + + void Split(AuraEffect* /*aurEff*/, DamageInfo & /*dmgInfo*/, uint32 & splitAmount) + { + remainingAmount -= splitAmount; + + if (remainingAmount <= 0) { - caster->CastSpell(caster, SPELL_FORBEARANCE, true); - caster->CastSpell(caster, SPELL_AVENGING_WRATH_MARKER, true); - caster->CastSpell(caster, SPELL_IMMUNE_SHIELD_MARKER, true); + GetTarget()->RemoveAura(SPELL_PALADIN_HAND_OF_SACRIFICE); } } void Register() { - OnCheckCast += SpellCheckCastFn(spell_pal_lay_on_hands_SpellScript::CheckCast); - AfterHit += SpellHitFn(spell_pal_lay_on_hands_SpellScript::HandleScript); + OnEffectSplit += AuraEffectSplitFn(spell_pal_hand_of_sacrifice_AuraScript::Split, EFFECT_0); } }; - SpellScript* GetSpellScript() const + AuraScript* GetAuraScript() const { - return new spell_pal_lay_on_hands_SpellScript(); + return new spell_pal_hand_of_sacrifice_AuraScript(); } }; -class spell_pal_righteous_defense : public SpellScriptLoader +// -20473 - Holy Shock +class spell_pal_holy_shock : public SpellScriptLoader { public: - spell_pal_righteous_defense() : SpellScriptLoader("spell_pal_righteous_defense") { } + spell_pal_holy_shock() : SpellScriptLoader("spell_pal_holy_shock") { } - class spell_pal_righteous_defense_SpellScript : public SpellScript + class spell_pal_holy_shock_SpellScript : public SpellScript { - PrepareSpellScript(spell_pal_righteous_defense_SpellScript); + PrepareSpellScript(spell_pal_holy_shock_SpellScript); - SpellCastResult CheckCast() + bool Validate(SpellInfo const* spell) + { + if (!sSpellMgr->GetSpellInfo(SPELL_PALADIN_HOLY_SHOCK_R1)) + return false; + + // can't use other spell than holy shock due to spell_ranks dependency + if (sSpellMgr->GetFirstSpellInChain(SPELL_PALADIN_HOLY_SHOCK_R1) != sSpellMgr->GetFirstSpellInChain(spell->Id)) + return false; + + uint8 rank = sSpellMgr->GetSpellRank(spell->Id); + if (!sSpellMgr->GetSpellWithRank(SPELL_PALADIN_HOLY_SHOCK_R1_DAMAGE, rank, true) || !sSpellMgr->GetSpellWithRank(SPELL_PALADIN_HOLY_SHOCK_R1_HEALING, rank, true)) + return false; + + return true; + } + + void HandleDummy(SpellEffIndex /*effIndex*/) { Unit* caster = GetCaster(); - if (caster->GetTypeId() != TYPEID_PLAYER) - return SPELL_FAILED_DONT_REPORT; + if (Unit* unitTarget = GetHitUnit()) + { + uint8 rank = sSpellMgr->GetSpellRank(GetSpellInfo()->Id); + if (caster->IsFriendlyTo(unitTarget)) + caster->CastSpell(unitTarget, sSpellMgr->GetSpellWithRank(SPELL_PALADIN_HOLY_SHOCK_R1_HEALING, rank), true, 0); + else + caster->CastSpell(unitTarget, sSpellMgr->GetSpellWithRank(SPELL_PALADIN_HOLY_SHOCK_R1_DAMAGE, rank), true, 0); + } + } + SpellCastResult CheckCast() + { + Unit* caster = GetCaster(); if (Unit* target = GetExplTargetUnit()) { - if (!target->IsFriendlyTo(caster) || target->getAttackers().empty()) - return SPELL_FAILED_BAD_TARGETS; + if (!caster->IsFriendlyTo(target)) + { + if (!caster->IsValidAttackTarget(target)) + return SPELL_FAILED_BAD_TARGETS; + + if (!caster->isInFront(target)) + return SPELL_FAILED_UNIT_NOT_INFRONT; + } } else return SPELL_FAILED_BAD_TARGETS; - return SPELL_CAST_OK; } void Register() { - OnCheckCast += SpellCheckCastFn(spell_pal_righteous_defense_SpellScript::CheckCast); + OnCheckCast += SpellCheckCastFn(spell_pal_holy_shock_SpellScript::CheckCast); + OnEffectHitTarget += SpellEffectFn(spell_pal_holy_shock_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; SpellScript* GetSpellScript() const { - return new spell_pal_righteous_defense_SpellScript(); + return new spell_pal_holy_shock_SpellScript(); } }; -class spell_pal_exorcism_and_holy_wrath_damage : public SpellScriptLoader +// 20425 - Judgement of Command +class spell_pal_judgement_of_command : public SpellScriptLoader { public: - spell_pal_exorcism_and_holy_wrath_damage() : SpellScriptLoader("spell_pal_exorcism_and_holy_wrath_damage") { } + spell_pal_judgement_of_command() : SpellScriptLoader("spell_pal_judgement_of_command") { } - class spell_pal_exorcism_and_holy_wrath_damage_AuraScript : public AuraScript + class spell_pal_judgement_of_command_SpellScript : public SpellScript { - PrepareAuraScript(spell_pal_exorcism_and_holy_wrath_damage_AuraScript); + PrepareSpellScript(spell_pal_judgement_of_command_SpellScript); - void HandleEffectCalcSpellMod(AuraEffect const* aurEff, SpellModifier*& spellMod) + void HandleDummy(SpellEffIndex /*effIndex*/) { - if (!spellMod) - { - spellMod = new SpellModifier(aurEff->GetBase()); - spellMod->op = SPELLMOD_DAMAGE; - spellMod->type = SPELLMOD_FLAT; - spellMod->spellId = GetId(); - spellMod->mask[1] = 0x200002; - } - - spellMod->value = aurEff->GetAmount(); + if (Unit* unitTarget = GetHitUnit()) + if (SpellInfo const* spell_proto = sSpellMgr->GetSpellInfo(GetEffectValue())) + GetCaster()->CastSpell(unitTarget, spell_proto, true, NULL); } void Register() { - DoEffectCalcSpellMod += AuraEffectCalcSpellModFn(spell_pal_exorcism_and_holy_wrath_damage_AuraScript::HandleEffectCalcSpellMod, EFFECT_0, SPELL_AURA_DUMMY); + OnEffectHitTarget += SpellEffectFn(spell_pal_judgement_of_command_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; - AuraScript* GetAuraScript() const + SpellScript* GetSpellScript() const { - return new spell_pal_exorcism_and_holy_wrath_damage_AuraScript(); + return new spell_pal_judgement_of_command_SpellScript(); } }; -class spell_pal_hand_of_sacrifice : public SpellScriptLoader +// -633 - Lay on Hands +class spell_pal_lay_on_hands : public SpellScriptLoader { public: - spell_pal_hand_of_sacrifice() : SpellScriptLoader("spell_pal_hand_of_sacrifice") { } + spell_pal_lay_on_hands() : SpellScriptLoader("spell_pal_lay_on_hands") { } - class spell_pal_hand_of_sacrifice_AuraScript : public AuraScript + class spell_pal_lay_on_hands_SpellScript : public SpellScript { - PrepareAuraScript(spell_pal_hand_of_sacrifice_AuraScript); - - int32 remainingAmount; + PrepareSpellScript(spell_pal_lay_on_hands_SpellScript); - bool Load() + bool Validate(SpellInfo const* /*spell*/) { - if (Unit* caster = GetCaster()) - { - remainingAmount = caster->GetMaxHealth(); - return true; - } - return false; + if (!sSpellMgr->GetSpellInfo(SPELL_PALADIN_FORBEARANCE)) + return false; + if (!sSpellMgr->GetSpellInfo(SPELL_PALADIN_AVENGING_WRATH_MARKER)) + return false; + if (!sSpellMgr->GetSpellInfo(SPELL_PALADIN_IMMUNE_SHIELD_MARKER)) + return false; + return true; } - void Split(AuraEffect* /*aurEff*/, DamageInfo & /*dmgInfo*/, uint32 & splitAmount) + SpellCastResult CheckCast() { - remainingAmount -= splitAmount; + Unit* caster = GetCaster(); + if (Unit* target = GetExplTargetUnit()) + if (caster == target) + if (target->HasAura(SPELL_PALADIN_FORBEARANCE) || target->HasAura(SPELL_PALADIN_AVENGING_WRATH_MARKER) || target->HasAura(SPELL_PALADIN_IMMUNE_SHIELD_MARKER)) + return SPELL_FAILED_TARGET_AURASTATE; - if (remainingAmount <= 0) + return SPELL_CAST_OK; + } + + void HandleScript() + { + Unit* caster = GetCaster(); + if (caster == GetHitUnit()) { - GetTarget()->RemoveAura(SPELL_HAND_OF_SACRIFICE); + caster->CastSpell(caster, SPELL_PALADIN_FORBEARANCE, true); + caster->CastSpell(caster, SPELL_PALADIN_AVENGING_WRATH_MARKER, true); + caster->CastSpell(caster, SPELL_PALADIN_IMMUNE_SHIELD_MARKER, true); } } void Register() { - OnEffectSplit += AuraEffectSplitFn(spell_pal_hand_of_sacrifice_AuraScript::Split, EFFECT_0); + OnCheckCast += SpellCheckCastFn(spell_pal_lay_on_hands_SpellScript::CheckCast); + AfterHit += SpellHitFn(spell_pal_lay_on_hands_SpellScript::HandleScript); } }; - AuraScript* GetAuraScript() const + SpellScript* GetSpellScript() const { - return new spell_pal_hand_of_sacrifice_AuraScript(); + return new spell_pal_lay_on_hands_SpellScript(); } }; -class spell_pal_divine_sacrifice : public SpellScriptLoader +// 31789 - Righteous Defense +class spell_pal_righteous_defense : public SpellScriptLoader { public: - spell_pal_divine_sacrifice() : SpellScriptLoader("spell_pal_divine_sacrifice") { } + spell_pal_righteous_defense() : SpellScriptLoader("spell_pal_righteous_defense") { } - class spell_pal_divine_sacrifice_AuraScript : public AuraScript + class spell_pal_righteous_defense_SpellScript : public SpellScript { - PrepareAuraScript(spell_pal_divine_sacrifice_AuraScript); - - uint32 groupSize, minHpPct; - int32 remainingAmount; + PrepareSpellScript(spell_pal_righteous_defense_SpellScript); - bool Load() + SpellCastResult CheckCast() { + Unit* caster = GetCaster(); + if (caster->GetTypeId() != TYPEID_PLAYER) + return SPELL_FAILED_DONT_REPORT; - if (Unit* caster = GetCaster()) + if (Unit* target = GetExplTargetUnit()) { - if (caster->GetTypeId() == TYPEID_PLAYER) - { - if (caster->ToPlayer()->GetGroup()) - groupSize = caster->ToPlayer()->GetGroup()->GetMembersCount(); - else - groupSize = 1; - } - else - return false; - - remainingAmount = (caster->CountPctFromMaxHealth(GetSpellInfo()->Effects[EFFECT_2].CalcValue(caster)) * groupSize); - minHpPct = GetSpellInfo()->Effects[EFFECT_1].CalcValue(caster); - return true; + if (!target->IsFriendlyTo(caster) || target->getAttackers().empty()) + return SPELL_FAILED_BAD_TARGETS; } - return false; - } + else + return SPELL_FAILED_BAD_TARGETS; - void Split(AuraEffect* /*aurEff*/, DamageInfo & /*dmgInfo*/, uint32 & splitAmount) - { - remainingAmount -= splitAmount; - // break when absorbed everything it could, or if the casters hp drops below 20% - if (Unit* caster = GetCaster()) - if (remainingAmount <= 0 || (caster->GetHealthPct() < minHpPct)) - caster->RemoveAura(SPELL_DIVINE_SACRIFICE); + return SPELL_CAST_OK; } void Register() { - OnEffectSplit += AuraEffectSplitFn(spell_pal_divine_sacrifice_AuraScript::Split, EFFECT_0); + OnCheckCast += SpellCheckCastFn(spell_pal_righteous_defense_SpellScript::CheckCast); } }; - AuraScript* GetAuraScript() const + SpellScript* GetSpellScript() const { - return new spell_pal_divine_sacrifice_AuraScript(); + return new spell_pal_righteous_defense_SpellScript(); } }; @@ -673,14 +690,14 @@ void AddSC_paladin_spell_scripts() new spell_pal_ardent_defender(); new spell_pal_blessing_of_faith(); new spell_pal_blessing_of_sanctuary(); + new spell_pal_divine_sacrifice(); + new spell_pal_divine_storm(); + new spell_pal_divine_storm_dummy(); + new spell_pal_exorcism_and_holy_wrath_damage(); new spell_pal_guarded_by_the_light(); + new spell_pal_hand_of_sacrifice(); new spell_pal_holy_shock(); new spell_pal_judgement_of_command(); - new spell_pal_divine_storm(); - new spell_pal_divine_storm_dummy(); new spell_pal_lay_on_hands(); new spell_pal_righteous_defense(); - new spell_pal_exorcism_and_holy_wrath_damage(); - new spell_pal_hand_of_sacrifice(); - new spell_pal_divine_sacrifice(); } diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp index 68a9337f8ea..1c416a0d28a 100644 --- a/src/server/scripts/Spells/spell_priest.cpp +++ b/src/server/scripts/Spells/spell_priest.cpp @@ -249,7 +249,6 @@ class spell_pri_penance : public SpellScriptLoader void Register() { - // add dummy effect spell handler to Penance OnEffectHitTarget += SpellEffectFn(spell_pri_penance_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); OnCheckCast += SpellCheckCastFn(spell_pri_penance_SpellScript::CheckCast); } @@ -282,7 +281,6 @@ class spell_pri_prayer_of_mending_heal : public SpellScriptLoader SetHitHeal(heal); } } - } void Register() diff --git a/src/server/scripts/Spells/spell_warrior.cpp b/src/server/scripts/Spells/spell_warrior.cpp index 7b6ac8fed12..f84265b89de 100644 --- a/src/server/scripts/Spells/spell_warrior.cpp +++ b/src/server/scripts/Spells/spell_warrior.cpp @@ -28,137 +28,173 @@ enum WarriorSpells { - WARRIOR_SPELL_LAST_STAND_TRIGGERED = 12976, + SPELL_WARRIOR_BLOODTHIRST = 23885, + SPELL_WARRIOR_BLOODTHIRST_DAMAGE = 23881, + SPELL_WARRIOR_CHARGE = 34846, + SPELL_WARRIOR_DEEP_WOUNDS_RANK_1 = 12162, + SPELL_WARRIOR_DEEP_WOUNDS_RANK_2 = 12850, + SPELL_WARRIOR_DEEP_WOUNDS_RANK_3 = 12868, + SPELL_WARRIOR_DEEP_WOUNDS_RANK_PERIODIC = 12721, + SPELL_WARRIOR_EXECUTE = 20647, + SPELL_WARRIOR_GLYPH_OF_EXECUTION = 58367, + SPELL_WARRIOR_JUGGERNAUT_CRIT_BONUS_BUFF = 65156, + SPELL_WARRIOR_JUGGERNAUT_CRIT_BONUS_TALENT = 64976, + SPELL_WARRIOR_LAST_STAND_TRIGGERED = 12976, + SPELL_WARRIOR_SLAM = 50783, + SPELL_WARRIOR_UNRELENTING_ASSAULT_RANK_1 = 46859, + SPELL_WARRIOR_UNRELENTING_ASSAULT_RANK_2 = 46860, + SPELL_WARRIOR_UNRELENTING_ASSAULT_TRIGGER_1 = 64849, + SPELL_WARRIOR_UNRELENTING_ASSAULT_TRIGGER_2 = 64850, + + SPELL_PALADIN_BLESSING_OF_SANCTUARY = 20911, + SPELL_PALADIN_GREATER_BLESSING_OF_SANCTUARY = 25899, + SPELL_PRIEST_RENEWED_HOPE = 63944, + SPELL_GEN_DAMAGE_REDUCTION_AURA = 68066, }; -class spell_warr_last_stand : public SpellScriptLoader +enum WarriorSpellIcons +{ + WARRIOR_ICON_ID_SUDDEN_DEATH = 1989, +}; + +// 23881 - Bloodthirst +class spell_warr_bloodthirst : public SpellScriptLoader { public: - spell_warr_last_stand() : SpellScriptLoader("spell_warr_last_stand") { } + spell_warr_bloodthirst() : SpellScriptLoader("spell_warr_bloodthirst") { } - class spell_warr_last_stand_SpellScript : public SpellScript + class spell_warr_bloodthirst_SpellScript : public SpellScript { - PrepareSpellScript(spell_warr_last_stand_SpellScript); + PrepareSpellScript(spell_warr_bloodthirst_SpellScript); - bool Validate(SpellInfo const* /*spellEntry*/) + void HandleDamage(SpellEffIndex /*effIndex*/) { - if (!sSpellMgr->GetSpellInfo(WARRIOR_SPELL_LAST_STAND_TRIGGERED)) - return false; - return true; + int32 damage = GetEffectValue(); + ApplyPct(damage, GetCaster()->GetTotalAttackPowerValue(BASE_ATTACK)); + + if (Unit* target = GetHitUnit()) + { + damage = GetCaster()->SpellDamageBonusDone(target, GetSpellInfo(), uint32(damage), SPELL_DIRECT_DAMAGE); + damage = target->SpellDamageBonusTaken(GetCaster(), GetSpellInfo(), uint32(damage), SPELL_DIRECT_DAMAGE); + } + SetHitDamage(damage); } void HandleDummy(SpellEffIndex /*effIndex*/) { - if (Unit* caster = GetCaster()) - { - int32 healthModSpellBasePoints0 = int32(caster->CountPctFromMaxHealth(30)); - caster->CastCustomSpell(caster, WARRIOR_SPELL_LAST_STAND_TRIGGERED, &healthModSpellBasePoints0, NULL, NULL, true, NULL); - } + int32 damage = GetEffectValue(); + GetCaster()->CastCustomSpell(GetCaster(), SPELL_WARRIOR_BLOODTHIRST, &damage, NULL, NULL, true, NULL); } void Register() { - // add dummy effect spell handler to Last Stand - OnEffectHit += SpellEffectFn(spell_warr_last_stand_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + OnEffectHitTarget += SpellEffectFn(spell_warr_bloodthirst_SpellScript::HandleDamage, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE); + OnEffectHit += SpellEffectFn(spell_warr_bloodthirst_SpellScript::HandleDummy, EFFECT_1, SPELL_EFFECT_DUMMY); } }; SpellScript* GetSpellScript() const { - return new spell_warr_last_stand_SpellScript(); + return new spell_warr_bloodthirst_SpellScript(); } }; -class spell_warr_improved_spell_reflection : public SpellScriptLoader +// 23880 - Bloodthirst (Heal) +class spell_warr_bloodthirst_heal : public SpellScriptLoader { public: - spell_warr_improved_spell_reflection() : SpellScriptLoader("spell_warr_improved_spell_reflection") { } + spell_warr_bloodthirst_heal() : SpellScriptLoader("spell_warr_bloodthirst_heal") { } - class spell_warr_improved_spell_reflection_SpellScript : public SpellScript + class spell_warr_bloodthirst_heal_SpellScript : public SpellScript { - PrepareSpellScript(spell_warr_improved_spell_reflection_SpellScript); + PrepareSpellScript(spell_warr_bloodthirst_heal_SpellScript); - void FilterTargets(std::list& unitList) + void HandleHeal(SpellEffIndex /*effIndex*/) { - if (GetCaster()) - unitList.remove(GetCaster()); + if (SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(SPELL_WARRIOR_BLOODTHIRST_DAMAGE)) + SetHitHeal(GetCaster()->CountPctFromMaxHealth(spellInfo->Effects[EFFECT_1].CalcValue(GetCaster()))); } void Register() { - OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_warr_improved_spell_reflection_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_CASTER_AREA_PARTY); + OnEffectHitTarget += SpellEffectFn(spell_warr_bloodthirst_heal_SpellScript::HandleHeal, EFFECT_0, SPELL_EFFECT_HEAL); } }; SpellScript* GetSpellScript() const { - return new spell_warr_improved_spell_reflection_SpellScript(); + return new spell_warr_bloodthirst_heal_SpellScript(); } }; -enum DamageReductionAura +// -100 - Charge +class spell_warr_charge : public SpellScriptLoader { - SPELL_BLESSING_OF_SANCTUARY = 20911, - SPELL_GREATER_BLESSING_OF_SANCTUARY = 25899, - SPELL_RENEWED_HOPE = 63944, - SPELL_DAMAGE_REDUCTION_AURA = 68066, -}; + public: + spell_warr_charge() : SpellScriptLoader("spell_warr_charge") { } -class spell_warr_vigilance : public SpellScriptLoader -{ -public: - spell_warr_vigilance() : SpellScriptLoader("spell_warr_vigilance") { } + class spell_warr_charge_SpellScript : public SpellScript + { + PrepareSpellScript(spell_warr_charge_SpellScript); - class spell_warr_vigilance_AuraScript : public AuraScript - { - PrepareAuraScript(spell_warr_vigilance_AuraScript); + bool Validate(SpellInfo const* /*spellInfo*/) + { + if (!sSpellMgr->GetSpellInfo(SPELL_WARRIOR_JUGGERNAUT_CRIT_BONUS_TALENT) || !sSpellMgr->GetSpellInfo(SPELL_WARRIOR_JUGGERNAUT_CRIT_BONUS_BUFF) || !sSpellMgr->GetSpellInfo(SPELL_WARRIOR_CHARGE)) + return false; + return true; + } - bool Validate(SpellInfo const* /*SpellEntry*/) - { - if (!sSpellMgr->GetSpellInfo(SPELL_DAMAGE_REDUCTION_AURA)) - return false; - return true; - } + void HandleDummy(SpellEffIndex /*effIndex*/) + { + int32 chargeBasePoints0 = GetEffectValue(); + Unit* caster = GetCaster(); + caster->CastCustomSpell(caster, SPELL_WARRIOR_CHARGE, &chargeBasePoints0, NULL, NULL, true); - void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) - { - if (Unit* target = GetTarget()) - target->CastSpell(target, SPELL_DAMAGE_REDUCTION_AURA, true); - } + // Juggernaut crit bonus + if (caster->HasAura(SPELL_WARRIOR_JUGGERNAUT_CRIT_BONUS_TALENT)) + caster->CastSpell(caster, SPELL_WARRIOR_JUGGERNAUT_CRIT_BONUS_BUFF, true); + } - void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) - { - if (Unit* target = GetTarget()) + void Register() { - if (target->HasAura(SPELL_DAMAGE_REDUCTION_AURA) && !(target->HasAura(SPELL_BLESSING_OF_SANCTUARY) || - target->HasAura(SPELL_GREATER_BLESSING_OF_SANCTUARY) || - target->HasAura(SPELL_RENEWED_HOPE))) - target->RemoveAurasDueToSpell(SPELL_DAMAGE_REDUCTION_AURA); + OnEffectHitTarget += SpellEffectFn(spell_warr_charge_SpellScript::HandleDummy, EFFECT_1, SPELL_EFFECT_DUMMY); } - } + }; - void Register() + SpellScript* GetSpellScript() const { - OnEffectApply += AuraEffectApplyFn(spell_warr_vigilance_AuraScript::OnApply, EFFECT_0, SPELL_AURA_PROC_TRIGGER_SPELL, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK); - OnEffectRemove += AuraEffectRemoveFn(spell_warr_vigilance_AuraScript::OnRemove, EFFECT_0, SPELL_AURA_PROC_TRIGGER_SPELL, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK); + return new spell_warr_charge_SpellScript(); } - - }; - - AuraScript* GetAuraScript() const - { - return new spell_warr_vigilance_AuraScript(); - } }; -enum DeepWounds +// 12809 - Concussion Blow +class spell_warr_concussion_blow : public SpellScriptLoader { - SPELL_DEEP_WOUNDS_RANK_1 = 12162, - SPELL_DEEP_WOUNDS_RANK_2 = 12850, - SPELL_DEEP_WOUNDS_RANK_3 = 12868, - SPELL_DEEP_WOUNDS_RANK_PERIODIC = 12721, + public: + spell_warr_concussion_blow() : SpellScriptLoader("spell_warr_concussion_blow") { } + + class spell_warr_concussion_blow_SpellScript : public SpellScript + { + PrepareSpellScript(spell_warr_concussion_blow_SpellScript); + + void HandleDummy(SpellEffIndex /*effIndex*/) + { + SetHitDamage(CalculatePct(GetCaster()->GetTotalAttackPowerValue(BASE_ATTACK), GetEffectValue())); + } + + void Register() + { + OnEffectHitTarget += SpellEffectFn(spell_warr_concussion_blow_SpellScript::HandleDummy, EFFECT_2, SPELL_EFFECT_DUMMY); + } + }; + + SpellScript* GetSpellScript() const + { + return new spell_warr_concussion_blow_SpellScript(); + } }; +// -12162 - Deep Wounds class spell_warr_deep_wounds : public SpellScriptLoader { public: @@ -168,14 +204,14 @@ class spell_warr_deep_wounds : public SpellScriptLoader { PrepareSpellScript(spell_warr_deep_wounds_SpellScript); - bool Validate(SpellInfo const* /*SpellEntry*/) + bool Validate(SpellInfo const* /*spellInfo*/) { - if (!sSpellMgr->GetSpellInfo(SPELL_DEEP_WOUNDS_RANK_1) || !sSpellMgr->GetSpellInfo(SPELL_DEEP_WOUNDS_RANK_2) || !sSpellMgr->GetSpellInfo(SPELL_DEEP_WOUNDS_RANK_3)) + if (!sSpellMgr->GetSpellInfo(SPELL_WARRIOR_DEEP_WOUNDS_RANK_1) || !sSpellMgr->GetSpellInfo(SPELL_WARRIOR_DEEP_WOUNDS_RANK_2) || !sSpellMgr->GetSpellInfo(SPELL_WARRIOR_DEEP_WOUNDS_RANK_3)) return false; return true; } - void HandleDummy(SpellEffIndex /* effIndex */) + void HandleDummy(SpellEffIndex /*effIndex*/) { int32 damage = GetEffectValue(); Unit* caster = GetCaster(); @@ -188,16 +224,16 @@ class spell_warr_deep_wounds : public SpellScriptLoader damage = target->SpellDamageBonusTaken(caster, GetSpellInfo(), damage, SPELL_DIRECT_DAMAGE); - SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(SPELL_DEEP_WOUNDS_RANK_PERIODIC); + SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(SPELL_WARRIOR_DEEP_WOUNDS_RANK_PERIODIC); uint32 ticks = spellInfo->GetDuration() / spellInfo->Effects[EFFECT_0].Amplitude; // Add remaining ticks to damage done - if (AuraEffect const* aurEff = target->GetAuraEffect(SPELL_DEEP_WOUNDS_RANK_PERIODIC, EFFECT_0, caster->GetGUID())) + if (AuraEffect const* aurEff = target->GetAuraEffect(SPELL_WARRIOR_DEEP_WOUNDS_RANK_PERIODIC, EFFECT_0, caster->GetGUID())) damage += aurEff->GetAmount() * (ticks - aurEff->GetTickNumber()); - damage = damage / ticks; + damage /= ticks; - caster->CastCustomSpell(target, SPELL_DEEP_WOUNDS_RANK_PERIODIC, &damage, NULL, NULL, true); + caster->CastCustomSpell(target, SPELL_WARRIOR_DEEP_WOUNDS_RANK_PERIODIC, &damage, NULL, NULL, true); } } @@ -213,311 +249,261 @@ class spell_warr_deep_wounds : public SpellScriptLoader } }; -enum Charge -{ - SPELL_JUGGERNAUT_CRIT_BONUS_TALENT = 64976, - SPELL_JUGGERNAUT_CRIT_BONUS_BUFF = 65156, - SPELL_CHARGE = 34846, -}; - -class spell_warr_charge : public SpellScriptLoader +// -5308 - Execute +class spell_warr_execute : public SpellScriptLoader { public: - spell_warr_charge() : SpellScriptLoader("spell_warr_charge") { } + spell_warr_execute() : SpellScriptLoader("spell_warr_execute") { } - class spell_warr_charge_SpellScript : public SpellScript + class spell_warr_execute_SpellScript : public SpellScript { - PrepareSpellScript(spell_warr_charge_SpellScript); + PrepareSpellScript(spell_warr_execute_SpellScript); - bool Validate(SpellInfo const* /*SpellEntry*/) + bool Validate(SpellInfo const* /*spellInfo*/) { - if (!sSpellMgr->GetSpellInfo(SPELL_JUGGERNAUT_CRIT_BONUS_TALENT) || !sSpellMgr->GetSpellInfo(SPELL_JUGGERNAUT_CRIT_BONUS_BUFF) || !sSpellMgr->GetSpellInfo(SPELL_CHARGE)) + if (!sSpellMgr->GetSpellInfo(SPELL_WARRIOR_EXECUTE) || !sSpellMgr->GetSpellInfo(SPELL_WARRIOR_GLYPH_OF_EXECUTION)) return false; return true; } - void HandleDummy(SpellEffIndex /* effIndex */) + + void HandleDummy(SpellEffIndex effIndex) { - int32 chargeBasePoints0 = GetEffectValue(); Unit* caster = GetCaster(); - caster->CastCustomSpell(caster, SPELL_CHARGE, &chargeBasePoints0, NULL, NULL, true); + if (Unit* target = GetHitUnit()) + { + SpellInfo const* spellInfo = GetSpellInfo(); + int32 rageUsed = std::min(300 - spellInfo->CalcPowerCost(caster, SpellSchoolMask(spellInfo->SchoolMask)), caster->GetPower(POWER_RAGE)); + int32 newRage = std::max(0, caster->GetPower(POWER_RAGE) - rageUsed); + + // Sudden Death rage save + if (AuraEffect* aurEff = caster->GetAuraEffect(SPELL_AURA_PROC_TRIGGER_SPELL, SPELLFAMILY_GENERIC, WARRIOR_ICON_ID_SUDDEN_DEATH, EFFECT_0)) + { + int32 ragesave = aurEff->GetSpellInfo()->Effects[EFFECT_1].CalcValue() * 10; + newRage = std::max(newRage, ragesave); + } - //Juggernaut crit bonus - if (caster->HasAura(SPELL_JUGGERNAUT_CRIT_BONUS_TALENT)) - caster->CastSpell(caster, SPELL_JUGGERNAUT_CRIT_BONUS_BUFF, true); + caster->SetPower(POWER_RAGE, uint32(newRage)); + // Glyph of Execution bonus + if (AuraEffect* aurEff = caster->GetAuraEffect(SPELL_WARRIOR_GLYPH_OF_EXECUTION, EFFECT_0)) + rageUsed += aurEff->GetAmount() * 10; + + + int32 bp = GetEffectValue() + int32(rageUsed * spellInfo->Effects[effIndex].DamageMultiplier + caster->GetTotalAttackPowerValue(BASE_ATTACK) * 0.2f); + caster->CastCustomSpell(target, SPELL_WARRIOR_EXECUTE, &bp, NULL, NULL, true, NULL, NULL, GetOriginalCaster()->GetGUID()); + } } void Register() { - OnEffectHitTarget += SpellEffectFn(spell_warr_charge_SpellScript::HandleDummy, EFFECT_1, SPELL_EFFECT_DUMMY); + OnEffectHitTarget += SpellEffectFn(spell_warr_execute_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; SpellScript* GetSpellScript() const { - return new spell_warr_charge_SpellScript(); + return new spell_warr_execute_SpellScript(); } }; -enum Slam -{ - SPELL_SLAM = 50783, -}; - -class spell_warr_slam : public SpellScriptLoader +// 59725 - Improved Spell Reflection +class spell_warr_improved_spell_reflection : public SpellScriptLoader { public: - spell_warr_slam() : SpellScriptLoader("spell_warr_slam") { } + spell_warr_improved_spell_reflection() : SpellScriptLoader("spell_warr_improved_spell_reflection") { } - class spell_warr_slam_SpellScript : public SpellScript + class spell_warr_improved_spell_reflection_SpellScript : public SpellScript { - PrepareSpellScript(spell_warr_slam_SpellScript); + PrepareSpellScript(spell_warr_improved_spell_reflection_SpellScript); - bool Validate(SpellInfo const* /*SpellEntry*/) - { - if (!sSpellMgr->GetSpellInfo(SPELL_SLAM)) - return false; - return true; - } - void HandleDummy(SpellEffIndex /* effIndex */) + void FilterTargets(std::list& unitList) { - int32 bp0 = GetEffectValue(); - if (GetHitUnit()) - GetCaster()->CastCustomSpell(GetHitUnit(), SPELL_SLAM, &bp0, NULL, NULL, true, 0); + if (GetCaster()) + unitList.remove(GetCaster()); } void Register() { - OnEffectHitTarget += SpellEffectFn(spell_warr_slam_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_warr_improved_spell_reflection_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_CASTER_AREA_PARTY); } }; SpellScript* GetSpellScript() const { - return new spell_warr_slam_SpellScript(); + return new spell_warr_improved_spell_reflection_SpellScript(); } }; -enum Execute -{ - SPELL_EXECUTE = 20647, - SPELL_GLYPH_OF_EXECUTION = 58367, - ICON_ID_SUDDEN_DEATH = 1989, -}; - -class spell_warr_execute : public SpellScriptLoader +// 12975 - Last Stand +class spell_warr_last_stand : public SpellScriptLoader { public: - spell_warr_execute() : SpellScriptLoader("spell_warr_execute") { } + spell_warr_last_stand() : SpellScriptLoader("spell_warr_last_stand") { } - class spell_warr_execute_SpellScript : public SpellScript + class spell_warr_last_stand_SpellScript : public SpellScript { - PrepareSpellScript(spell_warr_execute_SpellScript); + PrepareSpellScript(spell_warr_last_stand_SpellScript); - bool Validate(SpellInfo const* /*SpellEntry*/) + bool Validate(SpellInfo const* /*spellInfo*/) { - if (!sSpellMgr->GetSpellInfo(SPELL_EXECUTE) || !sSpellMgr->GetSpellInfo(SPELL_GLYPH_OF_EXECUTION)) + if (!sSpellMgr->GetSpellInfo(SPELL_WARRIOR_LAST_STAND_TRIGGERED)) return false; return true; } - void HandleDummy(SpellEffIndex effIndex) + + void HandleDummy(SpellEffIndex /*effIndex*/) { - Unit* caster = GetCaster(); - if (Unit* target = GetHitUnit()) + if (Unit* caster = GetCaster()) { - SpellInfo const* spellInfo = GetSpellInfo(); - int32 rageUsed = std::min(300 - spellInfo->CalcPowerCost(caster, SpellSchoolMask(spellInfo->SchoolMask)), caster->GetPower(POWER_RAGE)); - int32 newRage = std::max(0, caster->GetPower(POWER_RAGE) - rageUsed); - - // Sudden Death rage save - if (AuraEffect* aurEff = caster->GetAuraEffect(SPELL_AURA_PROC_TRIGGER_SPELL, SPELLFAMILY_GENERIC, ICON_ID_SUDDEN_DEATH, EFFECT_0)) - { - int32 ragesave = aurEff->GetSpellInfo()->Effects[EFFECT_1].CalcValue() * 10; - newRage = std::max(newRage, ragesave); - } - - caster->SetPower(POWER_RAGE, uint32(newRage)); - // Glyph of Execution bonus - if (AuraEffect* aurEff = caster->GetAuraEffect(SPELL_GLYPH_OF_EXECUTION, EFFECT_0)) - rageUsed += aurEff->GetAmount() * 10; - - - int32 bp = GetEffectValue() + int32(rageUsed * spellInfo->Effects[effIndex].DamageMultiplier + caster->GetTotalAttackPowerValue(BASE_ATTACK) * 0.2f); - caster->CastCustomSpell(target,SPELL_EXECUTE,&bp,0,0,true,0,0,GetOriginalCaster()->GetGUID()); + int32 healthModSpellBasePoints0 = int32(caster->CountPctFromMaxHealth(30)); + caster->CastCustomSpell(caster, SPELL_WARRIOR_LAST_STAND_TRIGGERED, &healthModSpellBasePoints0, NULL, NULL, true, NULL); } } void Register() { - OnEffectHitTarget += SpellEffectFn(spell_warr_execute_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + OnEffectHit += SpellEffectFn(spell_warr_last_stand_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; SpellScript* GetSpellScript() const { - return new spell_warr_execute_SpellScript(); + return new spell_warr_last_stand_SpellScript(); } }; -class spell_warr_concussion_blow : public SpellScriptLoader +// 7384, 7887, 11584, 11585 - Overpower +class spell_warr_overpower : public SpellScriptLoader { public: - spell_warr_concussion_blow() : SpellScriptLoader("spell_warr_concussion_blow") { } + spell_warr_overpower() : SpellScriptLoader("spell_warr_overpower") { } - class spell_warr_concussion_blow_SpellScript : public SpellScript + class spell_warr_overpower_SpellScript : public SpellScript { - PrepareSpellScript(spell_warr_concussion_blow_SpellScript); + PrepareSpellScript(spell_warr_overpower_SpellScript); - void HandleDummy(SpellEffIndex /* effIndex */) + void HandleEffect(SpellEffIndex /*effIndex*/) { - SetHitDamage(CalculatePct(GetCaster()->GetTotalAttackPowerValue(BASE_ATTACK), GetEffectValue())); + uint32 spellId = 0; + if (GetCaster()->HasAura(SPELL_WARRIOR_UNRELENTING_ASSAULT_RANK_1)) + spellId = SPELL_WARRIOR_UNRELENTING_ASSAULT_TRIGGER_1; + else if (GetCaster()->HasAura(SPELL_WARRIOR_UNRELENTING_ASSAULT_RANK_2)) + spellId = SPELL_WARRIOR_UNRELENTING_ASSAULT_TRIGGER_2; + + if (!spellId) + return; + + if (Player* target = GetHitPlayer()) + if (target->HasUnitState(UNIT_STATE_CASTING)) + target->CastSpell(target, spellId, true); } void Register() { - OnEffectHitTarget += SpellEffectFn(spell_warr_concussion_blow_SpellScript::HandleDummy, EFFECT_2, SPELL_EFFECT_DUMMY); + OnEffectHitTarget += SpellEffectFn(spell_warr_overpower_SpellScript::HandleEffect, EFFECT_0, SPELL_EFFECT_ANY); } }; SpellScript* GetSpellScript() const { - return new spell_warr_concussion_blow_SpellScript(); + return new spell_warr_overpower_SpellScript(); } }; -enum Bloodthirst -{ - SPELL_BLOODTHIRST = 23885, -}; - -class spell_warr_bloodthirst : public SpellScriptLoader +// -1464 - Slam +class spell_warr_slam : public SpellScriptLoader { public: - spell_warr_bloodthirst() : SpellScriptLoader("spell_warr_bloodthirst") { } + spell_warr_slam() : SpellScriptLoader("spell_warr_slam") { } - class spell_warr_bloodthirst_SpellScript : public SpellScript + class spell_warr_slam_SpellScript : public SpellScript { - PrepareSpellScript(spell_warr_bloodthirst_SpellScript); + PrepareSpellScript(spell_warr_slam_SpellScript); - void HandleDamage(SpellEffIndex /*effIndex*/) + bool Validate(SpellInfo const* /*spellInfo*/) { - int32 damage = GetEffectValue(); - ApplyPct(damage, GetCaster()->GetTotalAttackPowerValue(BASE_ATTACK)); - - if (Unit* target = GetHitUnit()) - { - damage = GetCaster()->SpellDamageBonusDone(target, GetSpellInfo(), uint32(damage), SPELL_DIRECT_DAMAGE); - damage = target->SpellDamageBonusTaken(GetCaster(), GetSpellInfo(), uint32(damage), SPELL_DIRECT_DAMAGE); - } - SetHitDamage(damage); + if (!sSpellMgr->GetSpellInfo(SPELL_WARRIOR_SLAM)) + return false; + return true; } void HandleDummy(SpellEffIndex /*effIndex*/) { - int32 damage = GetEffectValue(); - GetCaster()->CastCustomSpell(GetCaster(), SPELL_BLOODTHIRST, &damage, NULL, NULL, true, NULL); + int32 bp0 = GetEffectValue(); + if (GetHitUnit()) + GetCaster()->CastCustomSpell(GetHitUnit(), SPELL_WARRIOR_SLAM, &bp0, NULL, NULL, true, 0); } void Register() { - OnEffectHitTarget += SpellEffectFn(spell_warr_bloodthirst_SpellScript::HandleDamage, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE); - OnEffectHit += SpellEffectFn(spell_warr_bloodthirst_SpellScript::HandleDummy, EFFECT_1, SPELL_EFFECT_DUMMY); + OnEffectHitTarget += SpellEffectFn(spell_warr_slam_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; SpellScript* GetSpellScript() const { - return new spell_warr_bloodthirst_SpellScript(); + return new spell_warr_slam_SpellScript(); } }; -enum BloodthirstHeal -{ - SPELL_BLOODTHIRST_DAMAGE = 23881, -}; - -class spell_warr_bloodthirst_heal : public SpellScriptLoader +// 50720 - Vigilance +class spell_warr_vigilance : public SpellScriptLoader { public: - spell_warr_bloodthirst_heal() : SpellScriptLoader("spell_warr_bloodthirst_heal") { } + spell_warr_vigilance() : SpellScriptLoader("spell_warr_vigilance") { } - class spell_warr_bloodthirst_heal_SpellScript : public SpellScript + class spell_warr_vigilance_AuraScript : public AuraScript { - PrepareSpellScript(spell_warr_bloodthirst_heal_SpellScript); + PrepareAuraScript(spell_warr_vigilance_AuraScript); - void HandleHeal(SpellEffIndex /*effIndex*/) + bool Validate(SpellInfo const* /*spellInfo*/) { - if (SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(SPELL_BLOODTHIRST_DAMAGE)) - SetHitHeal(GetCaster()->CountPctFromMaxHealth(spellInfo->Effects[EFFECT_1].CalcValue(GetCaster()))); + if (!sSpellMgr->GetSpellInfo(SPELL_GEN_DAMAGE_REDUCTION_AURA)) + return false; + return true; } - void Register() + void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) { - OnEffectHitTarget += SpellEffectFn(spell_warr_bloodthirst_heal_SpellScript::HandleHeal, EFFECT_0, SPELL_EFFECT_HEAL); + if (Unit* target = GetTarget()) + target->CastSpell(target, SPELL_GEN_DAMAGE_REDUCTION_AURA, true); } - }; - SpellScript* GetSpellScript() const - { - return new spell_warr_bloodthirst_heal_SpellScript(); - } -}; - -enum Overpower -{ - SPELL_UNRELENTING_ASSAULT_RANK_1 = 46859, - SPELL_UNRELENTING_ASSAULT_RANK_2 = 46860, - SPELL_UNRELENTING_ASSAULT_TRIGGER_1 = 64849, - SPELL_UNRELENTING_ASSAULT_TRIGGER_2 = 64850, -}; - -class spell_warr_overpower : public SpellScriptLoader -{ -public: - spell_warr_overpower() : SpellScriptLoader("spell_warr_overpower") { } + void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + if (Unit* target = GetTarget()) + { + if (target->HasAura(SPELL_GEN_DAMAGE_REDUCTION_AURA) && !(target->HasAura(SPELL_PALADIN_BLESSING_OF_SANCTUARY) || + target->HasAura(SPELL_PALADIN_GREATER_BLESSING_OF_SANCTUARY) || + target->HasAura(SPELL_PRIEST_RENEWED_HOPE))) + target->RemoveAurasDueToSpell(SPELL_GEN_DAMAGE_REDUCTION_AURA); + } + } - class spell_warr_overpower_SpellScript : public SpellScript - { - PrepareSpellScript(spell_warr_overpower_SpellScript); + void Register() + { + OnEffectApply += AuraEffectApplyFn(spell_warr_vigilance_AuraScript::OnApply, EFFECT_0, SPELL_AURA_PROC_TRIGGER_SPELL, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK); + OnEffectRemove += AuraEffectRemoveFn(spell_warr_vigilance_AuraScript::OnRemove, EFFECT_0, SPELL_AURA_PROC_TRIGGER_SPELL, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK); + } - void HandleEffect(SpellEffIndex /* effIndex */) - { - uint32 spellId = 0; - if (GetCaster()->HasAura(SPELL_UNRELENTING_ASSAULT_RANK_1)) - spellId = SPELL_UNRELENTING_ASSAULT_TRIGGER_1; - else if (GetCaster()->HasAura(SPELL_UNRELENTING_ASSAULT_RANK_2)) - spellId = SPELL_UNRELENTING_ASSAULT_TRIGGER_2; - - if (!spellId) - return; - - if (Player* target = GetHitPlayer()) - if (target->HasUnitState(UNIT_STATE_CASTING)) - target->CastSpell(target, spellId, true); - } + }; - void Register() + AuraScript* GetAuraScript() const { - OnEffectHitTarget += SpellEffectFn(spell_warr_overpower_SpellScript::HandleEffect, EFFECT_0, SPELL_EFFECT_ANY); + return new spell_warr_vigilance_AuraScript(); } - }; - - SpellScript* GetSpellScript() const - { - return new spell_warr_overpower_SpellScript(); - } }; void AddSC_warrior_spell_scripts() { - new spell_warr_last_stand(); - new spell_warr_improved_spell_reflection(); - new spell_warr_vigilance(); - new spell_warr_deep_wounds(); - new spell_warr_charge(); - new spell_warr_slam(); - new spell_warr_execute(); - new spell_warr_concussion_blow(); new spell_warr_bloodthirst(); new spell_warr_bloodthirst_heal(); + new spell_warr_charge(); + new spell_warr_concussion_blow(); + new spell_warr_deep_wounds(); + new spell_warr_execute(); + new spell_warr_improved_spell_reflection(); + new spell_warr_last_stand(); new spell_warr_overpower(); + new spell_warr_slam(); + new spell_warr_vigilance(); } -- cgit v1.2.3 From 0b6997b8af2ebd377b418235c62161e93a64ec5c Mon Sep 17 00:00:00 2001 From: Malcrom Date: Sat, 12 Jan 2013 00:14:12 -0330 Subject: Core/Scripting: Move Boss_Gatewatcher_Gyrokill to c++ scripting. Additional cleanup in Mechanar. --- .../world/2013_01_11_05_world_creature_text.sql | 13 ++ .../Mechanar/boss_gatewatcher_gyrokill.cpp | 127 ++++++++++++++-- .../Mechanar/boss_nethermancer_sepethrea.cpp | 134 ++++++++-------- .../Mechanar/boss_pathaleon_the_calculator.cpp | 168 ++++++++++----------- .../TempestKeep/Mechanar/instance_mechanar.cpp | 22 +-- .../Outland/TempestKeep/Mechanar/mechanar.h | 17 ++- 6 files changed, 292 insertions(+), 189 deletions(-) create mode 100644 sql/updates/world/2013_01_11_05_world_creature_text.sql (limited to 'src') diff --git a/sql/updates/world/2013_01_11_05_world_creature_text.sql b/sql/updates/world/2013_01_11_05_world_creature_text.sql new file mode 100644 index 00000000000..1283fd86106 --- /dev/null +++ b/sql/updates/world/2013_01_11_05_world_creature_text.sql @@ -0,0 +1,13 @@ +-- NPC talk text for Gatewatcher Gyro-Kill +DELETE FROM `creature_text` WHERE `entry`=19218; +INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES +(19218,0,0, 'I predict a painful death.',14,0,100,0,0,11101, 'Gatewatcher Gyro-Kill - Aggro'), +(19218,1,0, 'Your strategy was flawed.',14,0,100,0,0,11102, 'Gatewatcher Gyro-Kill - On Kill'), +(19218,1,1, 'Yes, the only logical outcome.',12,0,100,0,0,11103, 'Gatewatcher Gyro-Kill - On Kill'), +(19218,2,0, 'Measure twice; cut once.',14,0,100,0,0,11104, 'Gatewatcher Gyro-Kill - Sawblades'), +(19218,2,1, 'If my division is correct you should be quite dead.',14,0,100,0,0,11105, 'Gatewatcher Gyro-Kill - Sawblades'), +(19218,3,0, 'An unforeseen... contingency.',14,0,100,0,0,11106, 'Gatewatcher Gyro-Kill - On Death'); + +DELETE FROM `creature_ai_scripts` WHERE `creature_id`=19218; +DELETE FROM `creature_ai_texts` WHERE `entry` BETWEEN -86 AND -81; +UPDATE `creature_template` SET `AIName`='', `ScriptName`= 'Boss_Gatewatcher_Gyrokill' WHERE `entry`=19218; 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 3c72c8353aa..796308d68f6 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_gyrokill.cpp +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_gyrokill.cpp @@ -1,6 +1,5 @@ /* * Copyright (C) 2008-2013 TrinityCore - * Copyright (C) 2006-2009 ScriptDev2 * * 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 @@ -25,18 +24,120 @@ EndScriptData */ #include "ScriptMgr.h" #include "ScriptedCreature.h" +#include "mechanar.h" -//not used -#define SAY_AGGRO -1554000 -#define SAY_SAW_ATTACK1 -1554001 -#define SAY_SAW_ATTACK2 -1554002 -#define SAY_SLAY1 -1554003 -#define SAY_SLAY2 -1554004 -#define SAY_DEATH -1554005 +enum Say +{ + SAY_AGGRO = 0, + SAY_SLAY = 1, + SAY_SAW_BLADEs = 2, + SAY_DEATH = 3 +}; -#define SPELL_STREAM_OF_MACHINE_FLUID 35311 -#define SPELL_SAW_BLADE 35318 -#define H_SPELL_SAW_BLADE 39192 -#define SPELL_SHADOW_POWER 35322 -#define H_SPELL_SHADOW_POWER 39193 +enum Spells +{ + SPELL_STREAM_OF_MACHINE_FLUID = 35311, + SPELL_SAW_BLADE = 35318, + H_SPELL_SAW_BLADE = 39192, + SPELL_SHADOW_POWER = 35322, + H_SPELL_SHADOW_POWER = 39193 +}; +enum Events +{ + EVENT_STREAM_OF_MACHINE_FLUID = 0, + EVENT_SAW_BLADE = 1, + EVENT_SHADOW_POWER = 2 +}; + +class Boss_Gatewatcher_Gyrokill : public CreatureScript +{ + public: Boss_Gatewatcher_Gyrokill() : CreatureScript("Boss_Gatewatcher_Gyrokill") { } + + struct Boss_Gatewatcher_GyrokillAI : public BossAI + { + Boss_Gatewatcher_GyrokillAI(Creature* creature) : BossAI(creature, DATA_GATEWATCHER_GYROKILL) {} + + void Reset() + { + if (instance) + instance->SetData(DATA_GATEWATCHER_GYROKILL, NOT_STARTED); + } + + void JustDied(Unit* /*killer*/) + { + if (instance) + instance->SetData(DATA_GATEWATCHER_GYROKILL, DONE); + + Talk(SAY_DEATH); + } + + void EnterCombat(Unit* /*who*/) + { + if (instance) + instance->SetData(DATA_GATEWATCHER_GYROKILL, IN_PROGRESS); + + events.ScheduleEvent(EVENT_STREAM_OF_MACHINE_FLUID, 10000); + events.ScheduleEvent(EVENT_SAW_BLADE, 20000); + events.ScheduleEvent(EVENT_SHADOW_POWER, 25000); + + Talk(SAY_AGGRO); + } + + void KilledUnit(Unit* /*victim*/) + { + Talk(SAY_SLAY); + } + + void UpdateAI(uint32 const diff) + { + if (!UpdateVictim()) + return; + + events.Update(diff); + + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; + + while (uint32 eventId = events.ExecuteEvent()) + { + switch (eventId) + { + case EVENT_STREAM_OF_MACHINE_FLUID: + DoCastVictim(SPELL_STREAM_OF_MACHINE_FLUID, true); + events.ScheduleEvent(EVENT_STREAM_OF_MACHINE_FLUID, urand(13000, 17000)); + break; + case EVENT_SAW_BLADE: + if (IsHeroic()) + DoCast(me, H_SPELL_SAW_BLADE); + else + DoCast(me, SPELL_SAW_BLADE); + Talk(SAY_SAW_BLADEs); + events.ScheduleEvent(EVENT_SAW_BLADE, urand(20000, 30000)); + break; + case EVENT_SHADOW_POWER: + if (IsHeroic()) + DoCast(me, H_SPELL_SHADOW_POWER); + else + DoCast(me, SPELL_SHADOW_POWER); + events.ScheduleEvent(EVENT_SAW_BLADE, urand(25000, 35000)); + break; + default: + break; + } + } + + DoMeleeAttackIfReady(); + } + }; + + CreatureAI* GetAI(Creature* creature) const + { + return new Boss_Gatewatcher_GyrokillAI (creature); + } +}; + +void AddSC_Boss_Gatewatcher_Gyrokill() +{ + new Boss_Gatewatcher_Gyrokill(); +} \ No newline at end of file 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 5a9e551375b..cdfb20b5f0d 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp @@ -36,59 +36,58 @@ enum eSays SAY_DEATH = 4 }; -enum eSpells +enum Spells { - SPELL_SUMMON_RAGIN_FLAMES = 35275, + SPELL_SUMMON_RAGIN_FLAMES = 35275, // Not scripted SPELL_FROST_ATTACK = 35263, SPELL_ARCANE_BLAST = 35314, SPELL_DRAGONS_BREATH = 35250, SPELL_KNOCKBACK = 37317, SPELL_SOLARBURN = 35267, - H_SPELL_SUMMON_RAGIN_FLAMES = 39084, - SPELL_INFERNO = 35268, - H_SPELL_INFERNO = 39346, - SPELL_FIRE_TAIL = 35278, + H_SPELL_SUMMON_RAGIN_FLAMES = 39084, // Not scripted + SPELL_INFERNO = 35268, // Not scripted + H_SPELL_INFERNO = 39346, // Not scripted + SPELL_FIRE_TAIL = 35278 // Not scripted +}; + +enum Events +{ + EVENT_FROST_ATTACK = 0, + EVENT_ARCANE_BLAST = 1, + EVENT_DRAGONS_BREATH = 2, + EVENT_KNOCKBACK = 3, + EVENT_SOLARBURN = 4 }; class boss_nethermancer_sepethrea : public CreatureScript { - public: + public: boss_nethermancer_sepethrea(): CreatureScript("boss_nethermancer_sepethrea") {} - boss_nethermancer_sepethrea() - : CreatureScript("boss_nethermancer_sepethrea") - { - } - struct boss_nethermancer_sepethreaAI : public ScriptedAI + struct boss_nethermancer_sepethreaAI : public BossAI { - boss_nethermancer_sepethreaAI(Creature* creature) : ScriptedAI(creature) + boss_nethermancer_sepethreaAI(Creature* creature) : BossAI(creature,DATA_NETHERMANCER_SEPRETHREA) { instance = creature->GetInstanceScript(); } InstanceScript* instance; - uint32 frost_attack_Timer; - uint32 arcane_blast_Timer; - uint32 dragons_breath_Timer; - uint32 knockback_Timer; - uint32 solarburn_Timer; - void Reset() { - frost_attack_Timer = urand(7000, 10000); - arcane_blast_Timer = urand(12000, 18000); - dragons_breath_Timer = urand(18000, 22000); - knockback_Timer = urand(22000, 28000); - solarburn_Timer = 30000; - if (instance) - instance->SetData(DATA_NETHERMANCER_EVENT, NOT_STARTED); + instance->SetData(DATA_NETHERMANCER_SEPRETHREA, NOT_STARTED); } void EnterCombat(Unit* who) { if (instance) - instance->SetData(DATA_NETHERMANCER_EVENT, IN_PROGRESS); + instance->SetData(DATA_NETHERMANCER_SEPRETHREA, IN_PROGRESS); + + events.ScheduleEvent(EVENT_FROST_ATTACK, urand(7000, 10000)); + events.ScheduleEvent(EVENT_ARCANE_BLAST, urand(12000, 18000)); + events.ScheduleEvent(EVENT_DRAGONS_BREATH, urand(18000, 22000)); + events.ScheduleEvent(EVENT_KNOCKBACK, urand(22000, 28000)); + events.ScheduleEvent(EVENT_SOLARBURN, 30000); Talk(SAY_AGGRO); DoCast(who, SPELL_SUMMON_RAGIN_FLAMES); @@ -104,64 +103,49 @@ class boss_nethermancer_sepethrea : public CreatureScript { Talk(SAY_DEATH); if (instance) - instance->SetData(DATA_NETHERMANCER_EVENT, DONE); + instance->SetData(DATA_NETHERMANCER_SEPRETHREA, DONE); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 const diff) { - //Return since we have no target if (!UpdateVictim()) return; - //Frost Attack - if (frost_attack_Timer <= diff) - { - DoCast(me->getVictim(), SPELL_FROST_ATTACK); + events.Update(diff); - frost_attack_Timer = urand(7000, 10000); - } - else - frost_attack_Timer -= diff; + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; - //Arcane Blast - if (arcane_blast_Timer <= diff) - { - DoCast(me->getVictim(), SPELL_ARCANE_BLAST); - arcane_blast_Timer = 15000; - } - else - arcane_blast_Timer -= diff; - //Dragons Breath - if (dragons_breath_Timer <= diff) + while (uint32 eventId = events.ExecuteEvent()) { - DoCast(me->getVictim(), SPELL_DRAGONS_BREATH); + switch (eventId) { - if (rand()%2) - return; - Talk(SAY_DRAGONS_BREATH); + case EVENT_FROST_ATTACK: + DoCastVictim(SPELL_FROST_ATTACK, true); + events.ScheduleEvent(EVENT_FROST_ATTACK, urand(7000, 10000)); + break; + case EVENT_ARCANE_BLAST: + DoCastVictim(SPELL_ARCANE_BLAST, true); + events.ScheduleEvent(EVENT_ARCANE_BLAST, 15000); + break; + case EVENT_DRAGONS_BREATH: + DoCastVictim(SPELL_DRAGONS_BREATH, true); + events.ScheduleEvent(EVENT_DRAGONS_BREATH, urand(12000, 22000)); + if (roll_chance_i(50)) + Talk(SAY_DRAGONS_BREATH); + break; + case EVENT_KNOCKBACK: + DoCastVictim(SPELL_KNOCKBACK, true); + events.ScheduleEvent(EVENT_KNOCKBACK, urand(15000, 25000)); + break; + case EVENT_SOLARBURN: + DoCastVictim(SPELL_SOLARBURN, true); + events.ScheduleEvent(EVENT_SOLARBURN, 30000); + break; + default: + break; } - dragons_breath_Timer = urand(12000, 22000); - } - else - dragons_breath_Timer -= diff; - - //Knockback - if (knockback_Timer <= diff) - { - DoCast(me->getVictim(), SPELL_KNOCKBACK); - knockback_Timer = urand(15000, 25000); } - else - knockback_Timer -= diff; - - //Solarburn - if (solarburn_Timer <= diff) - { - DoCast(me->getVictim(), SPELL_SOLARBURN); - solarburn_Timer = 30000; - } - else - solarburn_Timer -= diff; DoMeleeAttackIfReady(); } @@ -172,6 +156,7 @@ class boss_nethermancer_sepethrea : public CreatureScript return new boss_nethermancer_sepethreaAI(creature); } }; + class mob_ragin_flames : public CreatureScript { public: @@ -217,7 +202,7 @@ class mob_ragin_flames : public CreatureScript { if (instance) { - if (instance->GetData(DATA_NETHERMANCER_EVENT) != IN_PROGRESS) + if (instance->GetData(DATA_NETHERMANCER_SEPRETHREA) != IN_PROGRESS) { //remove me->setDeathState(JUST_DIED); @@ -259,6 +244,7 @@ class mob_ragin_flames : public CreatureScript return new mob_ragin_flamesAI(creature); } }; + void AddSC_boss_nethermancer_sepethrea() { new boss_nethermancer_sepethrea(); 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 41296daf1fa..b7857239157 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 @@ -25,8 +25,9 @@ EndScriptData */ #include "ScriptMgr.h" #include "ScriptedCreature.h" +#include "mechanar.h" -enum eSays +enum Says { SAY_AGGRO = 0, SAY_DOMINATION = 1, @@ -35,65 +36,65 @@ enum eSays SAY_SLAY = 4, SAY_DEATH = 5 }; -// Spells to be casted -enum eSpells + +enum Spells { SPELL_MANA_TAP = 36021, SPELL_ARCANE_TORRENT = 36022, SPELL_DOMINATION = 35280, H_SPELL_ARCANE_EXPLOSION = 15453, SPELL_FRENZY = 36992, - //Spells work, but not implemented - SPELL_SUMMON_NETHER_WRAITH_1 = 35285, - SPELL_SUMMON_NETHER_WRAITH_2 = 35286, - SPELL_SUMMON_NETHER_WRAITH_3 = 35287, - SPELL_SUMMON_NETHER_WRAITH_4 = 35288, - // Add Spells - SPELL_DETONATION = 35058, - SPELL_ARCANE_MISSILES = 35034, + SPELL_SUMMON_NETHER_WRAITH_1 = 35285, // Not scripted + SPELL_SUMMON_NETHER_WRAITH_2 = 35286, // Not scripted + SPELL_SUMMON_NETHER_WRAITH_3 = 35287, // Not scripted + SPELL_SUMMON_NETHER_WRAITH_4 = 35288, // Not scripted + SPELL_DETONATION = 35058, // Used by Nether Wraith + SPELL_ARCANE_MISSILES = 35034 // Used by Nether Wraith }; -class boss_pathaleon_the_calculator : public CreatureScript +enum Events { - public: + EVENT_SUMMON = 0, + EVENT_MANA_TAP = 1, + EVENT_ARCANE_TORRENT = 2, + EVENT_DOMINATION = 3, + EVENT_ARCANE_EXPLOSION = 4 +}; - boss_pathaleon_the_calculator() - : CreatureScript("boss_pathaleon_the_calculator") - { - } +class boss_pathaleon_the_calculator : public CreatureScript +{ + public: boss_pathaleon_the_calculator(): CreatureScript("boss_pathaleon_the_calculator") {} - struct boss_pathaleon_the_calculatorAI : public ScriptedAI + struct boss_pathaleon_the_calculatorAI : public BossAI { - boss_pathaleon_the_calculatorAI(Creature* creature) : ScriptedAI(creature), summons(me) - { - } + boss_pathaleon_the_calculatorAI(Creature* creature) : BossAI(creature,DATA_PATHALEON_THE_CALCULATOR), summons(me) {} - uint32 Summon_Timer; SummonList summons; - uint32 ManaTap_Timer; - uint32 ArcaneTorrent_Timer; - uint32 Domination_Timer; - uint32 ArcaneExplosion_Timer; - bool Enraged; - uint32 Counter; void Reset() { - Summon_Timer = 30000; - ManaTap_Timer = urand(12000, 20000); - ArcaneTorrent_Timer = urand(16000, 25000); - Domination_Timer = urand(25000, 40000); - ArcaneExplosion_Timer = urand(8000, 13000); + if (instance) + instance->SetData(DATA_PATHALEON_THE_CALCULATOR, NOT_STARTED); Enraged = false; - Counter = 0; summons.DespawnAll(); } + void EnterCombat(Unit* /*who*/) { + if (instance) + instance->SetData(DATA_PATHALEON_THE_CALCULATOR, IN_PROGRESS); + + events.ScheduleEvent(EVENT_SUMMON, 30000); + events.ScheduleEvent(EVENT_MANA_TAP, urand(12000, 20000)); + events.ScheduleEvent(EVENT_ARCANE_TORRENT, urand(16000, 25000)); + events.ScheduleEvent(EVENT_DOMINATION, urand(25000, 40000)); + if (IsHeroic()) + events.ScheduleEvent(EVENT_ARCANE_EXPLOSION, urand(8000, 13000)); + Talk(SAY_AGGRO); } @@ -107,84 +108,73 @@ class boss_pathaleon_the_calculator : public CreatureScript Talk(SAY_DEATH); summons.DespawnAll(); + + if (instance) + instance->SetData(DATA_PATHALEON_THE_CALCULATOR, DONE); } void JustSummoned(Creature* summon) { summons.Summon(summon); } + void SummonedCreatureDespawn(Creature* summon) { summons.Despawn(summon); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 const diff) { - //Return since we have no target if (!UpdateVictim()) return; - if (Summon_Timer <= diff) - { - for (uint8 i = 0; i < 3; ++i) - { - Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0); - Creature* Wraith = me->SummonCreature(21062, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 25000); - if (target && Wraith) - Wraith->AI()->AttackStart(target); - } - Talk(SAY_SUMMON); - Summon_Timer = urand(30000, 45000); - } - else - Summon_Timer -= diff; + events.Update(diff); - if (ManaTap_Timer <= diff) - { - DoCast(me->getVictim(), SPELL_MANA_TAP); - ManaTap_Timer = urand(14000, 22000); - } - else - ManaTap_Timer -= diff; - - if (ArcaneTorrent_Timer <= diff) + if (!Enraged && HealthBelowPct(21)) { - DoCast(me->getVictim(), SPELL_ARCANE_TORRENT); - ArcaneTorrent_Timer = urand(12000, 18000); + DoCast(me, SPELL_FRENZY); + Talk(SAY_ENRAGE); + Enraged = true; } - else - ArcaneTorrent_Timer -= diff; - if (Domination_Timer <= diff) - { - if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1)) - { - Talk(SAY_DOMINATION); - DoCast(target, SPELL_DOMINATION); - } - Domination_Timer = urand(25000, 30000); - } - else - Domination_Timer -= diff; + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; - //Only casting if Heroic Mode is used - if (IsHeroic()) + while (uint32 eventId = events.ExecuteEvent()) { - if (ArcaneExplosion_Timer <= diff) + switch (eventId) { - DoCast(me->getVictim(), H_SPELL_ARCANE_EXPLOSION); - ArcaneExplosion_Timer = urand(10000, 14000); + case EVENT_SUMMON: + for (uint8 i = 0; i < 3; ++i) + { + Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0); + Creature* Wraith = me->SummonCreature(21062, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 25000); + if (target && Wraith) + Wraith->AI()->AttackStart(target); + } + Talk(SAY_SUMMON); + events.ScheduleEvent(EVENT_SUMMON, urand(30000, 45000)); + break; + case EVENT_MANA_TAP: + DoCastVictim(SPELL_MANA_TAP, true); + events.ScheduleEvent(EVENT_MANA_TAP, urand(14000, 22000)); + break; + case EVENT_ARCANE_TORRENT: + DoCastVictim(SPELL_ARCANE_TORRENT, true); + events.ScheduleEvent(EVENT_ARCANE_TORRENT, urand(12000, 18000)); + break; + case EVENT_DOMINATION: + Talk(SAY_DOMINATION); + DoCastVictim(SPELL_DOMINATION, true); + events.ScheduleEvent(EVENT_DOMINATION, urand(25000, 30000)); + break; + case EVENT_ARCANE_EXPLOSION: // Heroic only + DoCastVictim(H_SPELL_ARCANE_EXPLOSION, true); + events.ScheduleEvent(EVENT_ARCANE_EXPLOSION, urand(10000, 14000)); + break; + default: + break; } - else - ArcaneExplosion_Timer -= diff; - } - - if (!Enraged && HealthBelowPct(21)) - { - DoCast(me, SPELL_FRENZY); - Talk(SAY_ENRAGE); - Enraged = true; - } DoMeleeAttackIfReady(); diff --git a/src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp b/src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp index 1f9ddfcdd0b..21fb085b266 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp @@ -27,15 +27,9 @@ EndScriptData */ #include "InstanceScript.h" #include "mechanar.h" -#define MAX_ENCOUNTER 1 - class instance_mechanar : public InstanceMapScript { - public: - instance_mechanar() - : InstanceMapScript("instance_mechanar", 554) - { - } + public: instance_mechanar(): InstanceMapScript("instance_mechanar", 554) {} struct instance_mechanar_InstanceMapScript : public InstanceScript { @@ -45,7 +39,7 @@ class instance_mechanar : public InstanceMapScript void Initialize() { - memset(&m_auiEncounter, 0, sizeof(m_auiEncounter)); + // memset(&m_auiEncounter, 0, sizeof(m_auiEncounter)); } bool IsEncounterInProgress() const @@ -61,7 +55,11 @@ class instance_mechanar : public InstanceMapScript { switch (type) { - case DATA_NETHERMANCER_EVENT: return m_auiEncounter[0]; + case DATA_GATEWATCHER_GYROKILL: return m_auiEncounter[DATA_GATEWATCHER_GYROKILL]; + case DATA_IRON_HAND: return m_auiEncounter[DATA_IRON_HAND]; + case DATA_MECHANOLORD_CAPACITUS: return m_auiEncounter[DATA_MECHANOLORD_CAPACITUS]; + case DATA_NETHERMANCER_SEPRETHREA: return m_auiEncounter[DATA_NETHERMANCER_SEPRETHREA]; + case DATA_PATHALEON_THE_CALCULATOR: return m_auiEncounter[DATA_PATHALEON_THE_CALCULATOR]; } return false; @@ -76,7 +74,11 @@ class instance_mechanar : public InstanceMapScript { switch (type) { - case DATA_NETHERMANCER_EVENT: m_auiEncounter[0] = data; break; + case DATA_GATEWATCHER_GYROKILL: m_auiEncounter[DATA_GATEWATCHER_GYROKILL] = data; break; + case DATA_IRON_HAND: m_auiEncounter[DATA_IRON_HAND] = data; break; + case DATA_MECHANOLORD_CAPACITUS: m_auiEncounter[DATA_MECHANOLORD_CAPACITUS] = data; break; + case DATA_NETHERMANCER_SEPRETHREA: m_auiEncounter[DATA_NETHERMANCER_SEPRETHREA] = data; break; + case DATA_PATHALEON_THE_CALCULATOR: m_auiEncounter[DATA_PATHALEON_THE_CALCULATOR] = data; break; } } }; diff --git a/src/server/scripts/Outland/TempestKeep/Mechanar/mechanar.h b/src/server/scripts/Outland/TempestKeep/Mechanar/mechanar.h index c933c90afef..7aa4cca7f8e 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/mechanar.h +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/mechanar.h @@ -1,6 +1,5 @@ /* * Copyright (C) 2008-2013 TrinityCore - * Copyright (C) 2006-2009 ScriptDev2 * * 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 @@ -19,6 +18,18 @@ #ifndef DEF_MECHANAR_H #define DEF_MECHANAR_H -#define DATA_NETHERMANCER_EVENT 1 -#endif +enum DataTypes +{ + DATA_GATEWATCHER_GYROKILL = 0, + DATA_IRON_HAND = 1, + DATA_MECHANOLORD_CAPACITUS = 2, + DATA_NETHERMANCER_SEPRETHREA = 3, + DATA_PATHALEON_THE_CALCULATOR = 4 +}; + +enum Misc +{ + MAX_ENCOUNTER = 5 +}; +#endif -- cgit v1.2.3 From d8b2954507d3cba335aba8c2571f580d095639ed Mon Sep 17 00:00:00 2001 From: w1sht0l1v3 Date: Sat, 12 Jan 2013 14:26:30 +0200 Subject: Core/Tickets: Allow viewing of ticket response(if any) when using .ticket viewid or .ticket viewname. Fix an sql name. --- sql/updates/world/2013_01_12_00_world_smart_scripts.sql | 7 +++++++ sql/updates/world/2013_01_12_01_00_world_smart_scripts.sql | 7 ------- sql/updates/world/2013_01_12_01_world_string.sql | 3 +++ src/server/game/Miscellaneous/Language.h | 1 + src/server/game/Tickets/TicketMgr.cpp | 2 ++ 5 files changed, 13 insertions(+), 7 deletions(-) create mode 100644 sql/updates/world/2013_01_12_00_world_smart_scripts.sql delete mode 100644 sql/updates/world/2013_01_12_01_00_world_smart_scripts.sql create mode 100644 sql/updates/world/2013_01_12_01_world_string.sql (limited to 'src') diff --git a/sql/updates/world/2013_01_12_00_world_smart_scripts.sql b/sql/updates/world/2013_01_12_00_world_smart_scripts.sql new file mode 100644 index 00000000000..06562cbd122 --- /dev/null +++ b/sql/updates/world/2013_01_12_00_world_smart_scripts.sql @@ -0,0 +1,7 @@ +-- Hulking Abomination +UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=31140; +DELETE FROM `smart_scripts` WHERE `entryorguid`=31140 AND `source_type`=0; +INSERT INTO `smart_scripts`(`entryorguid`,`id`,`event_type`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`target_type`,`comment`) VALUES +(31140,0,6,0,0,0,0,0,11,58995,2,1,'Hulking Abomination - Just died - Cast Exploding Corpse'), +(31140,1,9,1,8,40,0,0,11,50335,0,7,'Hulking Abomination - Invoker in range of 8 to 40 yards - Cast Scourge Hook'), +(31140,2,0,0,3000,3000,7000,7000,11,40504,0,2,'Hulking Abomination - In combat - Cast Cleave'); diff --git a/sql/updates/world/2013_01_12_01_00_world_smart_scripts.sql b/sql/updates/world/2013_01_12_01_00_world_smart_scripts.sql deleted file mode 100644 index 06562cbd122..00000000000 --- a/sql/updates/world/2013_01_12_01_00_world_smart_scripts.sql +++ /dev/null @@ -1,7 +0,0 @@ --- Hulking Abomination -UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=31140; -DELETE FROM `smart_scripts` WHERE `entryorguid`=31140 AND `source_type`=0; -INSERT INTO `smart_scripts`(`entryorguid`,`id`,`event_type`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`target_type`,`comment`) VALUES -(31140,0,6,0,0,0,0,0,11,58995,2,1,'Hulking Abomination - Just died - Cast Exploding Corpse'), -(31140,1,9,1,8,40,0,0,11,50335,0,7,'Hulking Abomination - Invoker in range of 8 to 40 yards - Cast Scourge Hook'), -(31140,2,0,0,3000,3000,7000,7000,11,40504,0,2,'Hulking Abomination - In combat - Cast Cleave'); diff --git a/sql/updates/world/2013_01_12_01_world_string.sql b/sql/updates/world/2013_01_12_01_world_string.sql new file mode 100644 index 00000000000..8766e97231d --- /dev/null +++ b/sql/updates/world/2013_01_12_01_world_string.sql @@ -0,0 +1,3 @@ +DELETE FROM `trinity_string` WHERE `entry`=2029; +INSERT INTO `trinity_string` (`entry`,`content_default`,`content_loc1`,`content_loc2`,`content_loc3`,`content_loc4`,`content_loc5`,`content_loc6`,`content_loc7`,`content_loc8`) VALUES +(2029,'|cff00ff00Ticket Response|r: [%s]|r',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); diff --git a/src/server/game/Miscellaneous/Language.h b/src/server/game/Miscellaneous/Language.h index f116d695e17..292833c3955 100644 --- a/src/server/game/Miscellaneous/Language.h +++ b/src/server/game/Miscellaneous/Language.h @@ -928,6 +928,7 @@ enum TrinityStrings LANG_COMMAND_TICKETSHOWESCALATEDLIST = 2026, LANG_COMMAND_TICKETPENDING = 2027, LANG_COMMAND_TICKETRESET = 2028, + LANG_COMMAND_TICKETLISTRESPONSE = 2029, // Trinity strings 5000-9999 LANG_COMMAND_FREEZE = 5000, diff --git a/src/server/game/Tickets/TicketMgr.cpp b/src/server/game/Tickets/TicketMgr.cpp index 1b7ecd34051..fe10b81b09d 100644 --- a/src/server/game/Tickets/TicketMgr.cpp +++ b/src/server/game/Tickets/TicketMgr.cpp @@ -182,6 +182,8 @@ std::string GmTicket::FormatMessageString(ChatHandler& handler, bool detailed) c ss << handler.PGetParseString(LANG_COMMAND_TICKETLISTMESSAGE, _message.c_str()); if (!_comment.empty()) ss << handler.PGetParseString(LANG_COMMAND_TICKETLISTCOMMENT, _comment.c_str()); + if (!_response.empty()) + ss << handler.PGetParseString(LANG_COMMAND_TICKETLISTRESPONSE, _response.c_str()); } return ss.str(); } -- cgit v1.2.3 From f46ac4a46c8f9605f2ab3d4a3c123a4f85d708ba Mon Sep 17 00:00:00 2001 From: Gacko Date: Sat, 12 Jan 2013 13:34:39 +0100 Subject: Core/Script: Pyroguard emberseer Cleanup while working on #4586 --- .../EasternKingdoms/BlackrockSpire/boss_pyroguard_emberseer.cpp | 8 +++----- .../EasternKingdoms/BlackrockSpire/instance_blackrock_spire.cpp | 3 ++- 2 files changed, 5 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_pyroguard_emberseer.cpp b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_pyroguard_emberseer.cpp index 047ad3f7096..da38fe9f54b 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_pyroguard_emberseer.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_pyroguard_emberseer.cpp @@ -66,7 +66,6 @@ public: { if (instance->GetBossState(DATA_PYROGAURD_EMBERSEER) == IN_PROGRESS) OpenDoors(false); - instance->SetBossState(DATA_PYROGAURD_EMBERSEER,NOT_STARTED); // respawn any dead Blackhand Incarcerators DoCast(me, SPELL_ENCAGED_EMBERSEER); //DoCast(me, SPELL_FIRE_SHIELD_TRIGGER); @@ -83,7 +82,6 @@ public: void JustDied(Unit* /*killer*/) { - instance->SetBossState(DATA_PYROGAURD_EMBERSEER,DONE); OpenDoors(true); _JustDied(); } @@ -102,7 +100,6 @@ public: void UpdateAI(uint32 const diff) { if (!UpdateVictim()) - return; events.Update(diff); @@ -115,11 +112,11 @@ public: switch (eventId) { case EVENT_FIRENOVA: - DoCast(me->getVictim(), SPELL_FIRENOVA); + DoCastVictim(SPELL_FIRENOVA); events.ScheduleEvent(EVENT_FIRENOVA, 6 * IN_MILLISECONDS); break; case EVENT_FLAMEBUFFET: - DoCast(me->getVictim(), SPELL_FLAMEBUFFET); + DoCastVictim(SPELL_FLAMEBUFFET); events.ScheduleEvent(EVENT_FLAMEBUFFET, 14 * IN_MILLISECONDS); break; case EVENT_PYROBLAST: @@ -129,6 +126,7 @@ public: break; } } + DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/BlackrockSpire/instance_blackrock_spire.cpp b/src/server/scripts/EasternKingdoms/BlackrockSpire/instance_blackrock_spire.cpp index 72a5712181e..06ba0036ef3 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockSpire/instance_blackrock_spire.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockSpire/instance_blackrock_spire.cpp @@ -215,7 +215,8 @@ public: switch (eventId) { case EVENT_PYROGUARD_EMBERSEER: - SetBossState(DATA_PYROGAURD_EMBERSEER,IN_PROGRESS); + if (GetBossState(DATA_PYROGAURD_EMBERSEER) == NOT_STARTED) + SetBossState(DATA_PYROGAURD_EMBERSEER, IN_PROGRESS); break; default: break; -- cgit v1.2.3 From f739be50527407f9c189ecce16b6fc7598e235f9 Mon Sep 17 00:00:00 2001 From: Gacko Date: Sat, 12 Jan 2013 13:47:32 +0100 Subject: Core/UnitAI: Checks in DoCastVictim Consider triggered flag and unit state --- src/server/game/AI/CoreAI/UnitAI.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/server/game/AI/CoreAI/UnitAI.cpp b/src/server/game/AI/CoreAI/UnitAI.cpp index a3cb57b3332..09ba2cc19b1 100644 --- a/src/server/game/AI/CoreAI/UnitAI.cpp +++ b/src/server/game/AI/CoreAI/UnitAI.cpp @@ -172,7 +172,9 @@ void UnitAI::DoCast(Unit* victim, uint32 spellId, bool triggered) void UnitAI::DoCastVictim(uint32 spellId, bool triggered) { - // Why don't we check for casting unit_state and existing target as we do in DoCast(.. ? + if (!me->getVictim() || (me->HasUnitState(UNIT_STATE_CASTING) && !triggered)) + return; + me->CastSpell(me->getVictim(), spellId, triggered); } -- cgit v1.2.3 From cc5e40e8eeefdeadec567458ba0e0771ad8f1f6a Mon Sep 17 00:00:00 2001 From: Vincent_Michael Date: Sat, 12 Jan 2013 13:54:14 +0100 Subject: Scripts/Scholomance: Fix warning --- .../Scholomance/boss_darkmaster_gandling.cpp | 5 +- .../Scholomance/boss_doctor_theolen_krastinov.cpp | 9 +- .../Scholomance/boss_illucia_barov.cpp | 9 +- .../Scholomance/boss_instructor_malicia.cpp | 8 +- .../Scholomance/boss_kirtonos_the_herald.cpp | 3 +- .../Scholomance/boss_lord_alexei_barov.cpp | 8 +- .../Scholomance/boss_lorekeeper_polkelt.cpp | 9 +- .../Scholomance/boss_the_ravenian.cpp | 10 +- .../Scholomance/instance_scholomance.cpp | 313 +++++++++++++-------- .../EasternKingdoms/Scholomance/scholomance.h | 12 +- 10 files changed, 211 insertions(+), 175 deletions(-) (limited to 'src') diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp index 4e2a1b6fa19..b596ad3f609 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp @@ -58,20 +58,21 @@ class boss_darkmaster_gandling : public CreatureScript void Reset() { + _Reset(); if (GameObject* gate = me->GetMap()->GetGameObject(instance->GetData64(GO_GATE_GANDLING))) gate->SetGoState(GO_STATE_ACTIVE); } void JustDied(Unit* /*killer*/) { - if (instance) - instance->SetData(DATA_DARKMASTERGANDLING, DONE); + _JustDied(); if (GameObject* gate = me->GetMap()->GetGameObject(instance->GetData64(GO_GATE_GANDLING))) gate->SetGoState(GO_STATE_ACTIVE); } void EnterCombat(Unit* /*who*/) { + _EnterCombat(); events.ScheduleEvent(EVENT_ARCANEMISSILES, 4500); events.ScheduleEvent(EVENT_SHADOWSHIELD, 12000); events.ScheduleEvent(EVENT_CURSE, 2000); 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 fc54b90ab45..b2a91f4efe4 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_doctor_theolen_krastinov.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_doctor_theolen_krastinov.cpp @@ -53,16 +53,9 @@ class boss_doctor_theolen_krastinov : public CreatureScript { boss_theolenkrastinovAI(Creature* creature) : BossAI(creature, DATA_DOCTORTHEOLENKRASTINOV) {} - void Reset() {} - - void JustDied(Unit* /*killer*/) - { - if (instance) - instance->SetData(DATA_DOCTORTHEOLENKRASTINOV, DONE); - } - void EnterCombat(Unit* /*who*/) { + _EnterCombat(); events.ScheduleEvent(EVENT_REND, 8000); events.ScheduleEvent(EVENT_BACKHAND, 9000); events.ScheduleEvent(EVENT_FRENZY, 1000); diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_illucia_barov.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_illucia_barov.cpp index 64d827e41f1..d09a5ae96c9 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_illucia_barov.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_illucia_barov.cpp @@ -50,16 +50,9 @@ class boss_illucia_barov : public CreatureScript { boss_illuciabarovAI(Creature* creature) : BossAI(creature,DATA_LADYILLUCIABAROV) {} - void Reset() {} - - void JustDied(Unit* /*killer*/) - { - if (instance) - instance->SetData(DATA_LADYILLUCIABAROV, DONE); - } - void EnterCombat(Unit* /*who*/) { + _EnterCombat(); events.ScheduleEvent(EVENT_CURSEOFAGONY, 18000); events.ScheduleEvent(EVENT_SHADOWSHOCK, 9000); events.ScheduleEvent(EVENT_SILENCE, 5000); diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_instructor_malicia.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_instructor_malicia.cpp index 1f55666acc3..5036158cae2 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_instructor_malicia.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_instructor_malicia.cpp @@ -57,18 +57,14 @@ class boss_instructor_malicia : public CreatureScript void Reset() { + _Reset(); FlashCounter = 0; TouchCounter = 0; } - void JustDied(Unit* /*killer*/) - { - if (instance) - instance->SetData(DATA_INSTRUCTORMALICIA, DONE); - } - void EnterCombat(Unit* /*who*/) { + _EnterCombat(); events.ScheduleEvent(EVENT_CALLOFGRAVES, 4000); events.ScheduleEvent(EVENT_CORRUPTION, 8000); events.ScheduleEvent(EVENT_RENEW, 32000); 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 9d8f448964c..32c16a1c70c 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp @@ -103,8 +103,7 @@ class boss_kirtonos_the_herald : public CreatureScript brazier->ResetDoorOrButton(); brazier->SetGoState(GO_STATE_READY); } - if (instance) - instance->SetData(DATA_KIRTONOS, DONE); + _JustDied(); } void EnterEvadeMode() 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 c246e781bd8..e8fb4324d00 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_lord_alexei_barov.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_lord_alexei_barov.cpp @@ -48,17 +48,13 @@ class boss_lord_alexei_barov : public CreatureScript void Reset() { + _Reset(); me->LoadCreaturesAddon(); } - void JustDied(Unit* /*killer*/) - { - if (instance) - instance->SetData(DATA_LORDALEXEIBAROV, DONE); - } - void EnterCombat(Unit* /*who*/) { + _EnterCombat(); events.ScheduleEvent(EVENT_IMMOLATE, 7000); events.ScheduleEvent(EVENT_VEILOFSHADOW, 15000); } diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_lorekeeper_polkelt.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_lorekeeper_polkelt.cpp index 2239194a5e3..d06189d5054 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_lorekeeper_polkelt.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_lorekeeper_polkelt.cpp @@ -50,16 +50,9 @@ class boss_lorekeeper_polkelt : public CreatureScript { boss_lorekeeperpolkeltAI(Creature* creature) : BossAI(creature, DATA_LOREKEEPERPOLKELT) {} - void Reset() {} - - void JustDied(Unit* /*killer*/) - { - if (instance) - instance->SetData(DATA_LOREKEEPERPOLKELT, DONE); - } - void EnterCombat(Unit* /*who*/) { + _EnterCombat(); events.ScheduleEvent(EVENT_VOLATILEINFECTION, 38000); events.ScheduleEvent(EVENT_DARKPLAGUE, 8000); events.ScheduleEvent(EVENT_CORROSIVEACID, 45000); diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_the_ravenian.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_the_ravenian.cpp index e2e04ae7b81..99b9fba958c 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_the_ravenian.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_the_ravenian.cpp @@ -42,7 +42,6 @@ enum Events EVENT_KNOCKAWAY = 4 }; - class boss_the_ravenian : public CreatureScript { public: boss_the_ravenian() : CreatureScript("boss_the_ravenian") { } @@ -51,16 +50,9 @@ class boss_the_ravenian : public CreatureScript { boss_theravenianAI(Creature* creature) : BossAI(creature, DATA_THERAVENIAN) {} - void Reset() {} - - void JustDied(Unit* /*killer*/) - { - if (instance) - instance->SetData(DATA_THERAVENIAN, DONE); - } - void EnterCombat(Unit* /*who*/) { + _EnterCombat(); events.ScheduleEvent(EVENT_TRAMPLE, 24000); events.ScheduleEvent(EVENT_CLEAVE, 15000); events.ScheduleEvent(EVENT_SUNDERINCLEAVE, 40000); diff --git a/src/server/scripts/EasternKingdoms/Scholomance/instance_scholomance.cpp b/src/server/scripts/EasternKingdoms/Scholomance/instance_scholomance.cpp index d97372d4379..c43c1e18811 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/instance_scholomance.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/instance_scholomance.cpp @@ -24,151 +24,222 @@ EndScriptData */ #include "ScriptMgr.h" #include "InstanceScript.h" -#include "scholomance.h" #include "Player.h" +#include "scholomance.h" -enum CreatureId -{ - NPC_DARKMASTER_GANDLING = 1853 -}; - -Position const GandlingLoc = {180.7712f, -5.428603f, 75.57024f, 1.291544f}; +Position const GandlingLoc = { 180.7712f, -5.428603f, 75.57024f, 1.291544f }; class instance_scholomance : public InstanceMapScript { -public: - instance_scholomance() : InstanceMapScript("instance_scholomance", 289) { } - - InstanceScript* GetInstanceScript(InstanceMap* map) const - { - return new instance_scholomance_InstanceMapScript(map); - } - - struct instance_scholomance_InstanceMapScript : public InstanceScript - { - instance_scholomance_InstanceMapScript(Map* map) : InstanceScript(map) {} - - //Lord Alexei Barov, Doctor Theolen Krastinov, The Ravenian, Lorekeeper Polkelt, Instructor Malicia and the Lady Illucia Barov. - uint32 m_auiEncounter[MAX_ENCOUNTER]; - uint64 GateKirtonosGUID; - uint64 GateGandlingGUID; - uint64 GateMiliciaGUID; - uint64 GateTheolenGUID; - uint64 GatePolkeltGUID; - uint64 GateRavenianGUID; - uint64 GateBarovGUID; - uint64 GateIlluciaGUID; - uint64 BrazierOfTheHeraldGUID; - - void Initialize() + public: + instance_scholomance() : InstanceMapScript("instance_scholomance", 289) { } + + InstanceScript* GetInstanceScript(InstanceMap* map) const { - GateKirtonosGUID = 0; - GateGandlingGUID = 0; - GateMiliciaGUID = 0; - GateTheolenGUID = 0; - GatePolkeltGUID = 0; - GateRavenianGUID = 0; - GateBarovGUID = 0; - GateIlluciaGUID = 0; - BrazierOfTheHeraldGUID = 0; - - for (uint8 i = 0; i < MAX_ENCOUNTER; ++i) - m_auiEncounter[i] = NOT_STARTED; + return new instance_scholomance_InstanceMapScript(map); } - void OnGameObjectCreate(GameObject* go) + struct instance_scholomance_InstanceMapScript : public InstanceScript { - switch (go->GetEntry()) + instance_scholomance_InstanceMapScript(Map* map) : InstanceScript(map) { - case GO_GATE_KIRTONOS: GateKirtonosGUID = go->GetGUID(); break; - case GO_GATE_GANDLING: GateGandlingGUID = go->GetGUID(); break; - case GO_GATE_MALICIA: GateMiliciaGUID = go->GetGUID(); break; - case GO_GATE_THEOLEN: GateTheolenGUID = go->GetGUID(); break; - case GO_GATE_POLKELT: GatePolkeltGUID = go->GetGUID(); break; - case GO_GATE_RAVENIAN: GateRavenianGUID = go->GetGUID(); break; - case GO_GATE_BAROV: GateBarovGUID = go->GetGUID(); break; - case GO_GATE_ILLUCIA: GateIlluciaGUID = go->GetGUID(); break; - case GO_BRAZIER_OF_THE_HERALD: BrazierOfTheHeraldGUID = go->GetGUID(); break; + SetBossNumber(EncounterCount); + GateKirtonosGUID = 0; + GateGandlingGUID = 0; + GateMiliciaGUID = 0; + GateTheolenGUID = 0; + GatePolkeltGUID = 0; + GateRavenianGUID = 0; + GateBarovGUID = 0; + GateIlluciaGUID = 0; + BrazierOfTheHeraldGUID = 0; } - } - void SetData(uint32 type, uint32 data) - { - switch (type) + void OnGameObjectCreate(GameObject* go) { - case DATA_LORDALEXEIBAROV: - m_auiEncounter[DATA_LORDALEXEIBAROV] = data; - CheckToSpawnGandling(); - break; - case DATA_DOCTORTHEOLENKRASTINOV: - m_auiEncounter[DATA_DOCTORTHEOLENKRASTINOV] = data; - CheckToSpawnGandling(); - break; - case DATA_THERAVENIAN: - m_auiEncounter[DATA_THERAVENIAN] = data; - CheckToSpawnGandling(); - break; - case DATA_LOREKEEPERPOLKELT: - m_auiEncounter[DATA_LOREKEEPERPOLKELT] = data; - CheckToSpawnGandling(); - break; - case DATA_INSTRUCTORMALICIA: - m_auiEncounter[DATA_INSTRUCTORMALICIA] = data; - CheckToSpawnGandling(); - break; - case DATA_LADYILLUCIABAROV: - m_auiEncounter[DATA_LADYILLUCIABAROV] = data; - CheckToSpawnGandling(); - break; - case DATA_DARKMASTERGANDLING: - m_auiEncounter[DATA_DARKMASTERGANDLING] = data; - break; - case DATA_KIRTONOS: - m_auiEncounter[DATA_KIRTONOS] = data; - break; + switch (go->GetEntry()) + { + case GO_GATE_KIRTONOS: + GateKirtonosGUID = go->GetGUID(); + break; + case GO_GATE_GANDLING: + GateGandlingGUID = go->GetGUID(); + break; + case GO_GATE_MALICIA: + GateMiliciaGUID = go->GetGUID(); + break; + case GO_GATE_THEOLEN: + GateTheolenGUID = go->GetGUID(); + break; + case GO_GATE_POLKELT: + GatePolkeltGUID = go->GetGUID(); + break; + case GO_GATE_RAVENIAN: + GateRavenianGUID = go->GetGUID(); + break; + case GO_GATE_BAROV: + GateBarovGUID = go->GetGUID(); + break; + case GO_GATE_ILLUCIA: + GateIlluciaGUID = go->GetGUID(); + break; + case GO_BRAZIER_OF_THE_HERALD: + BrazierOfTheHeraldGUID = go->GetGUID(); + break; + default: + break; + } } - } - uint32 GetData(uint32 type) const - { - return type == (m_auiEncounter[DATA_LORDALEXEIBAROV] == DONE) && (m_auiEncounter[DATA_DOCTORTHEOLENKRASTINOV] == DONE) && - (m_auiEncounter[DATA_THERAVENIAN] == DONE) && (m_auiEncounter[DATA_LOREKEEPERPOLKELT] == DONE) && - (m_auiEncounter[DATA_INSTRUCTORMALICIA] == DONE) && (m_auiEncounter[DATA_LADYILLUCIABAROV] == DONE) - ? IN_PROGRESS : 0; - } + bool SetBossState(uint32 type, EncounterState state) + { + if (!InstanceScript::SetBossState(type, state)) + return false; + + switch (type) + { + case DATA_LORDALEXEIBAROV: + case DATA_DOCTORTHEOLENKRASTINOV: + case DATA_THERAVENIAN: + case DATA_LOREKEEPERPOLKELT: + case DATA_INSTRUCTORMALICIA: + case DATA_LADYILLUCIABAROV: + CheckToSpawnGandling(); + break; + default: + break; + } + + return true; + } - uint64 GetData64(uint32 type) const - { - switch (type) + uint64 GetData64(uint32 type) const { - case GO_GATE_KIRTONOS: return GateKirtonosGUID; break; - case GO_GATE_GANDLING: return GateGandlingGUID; break; - case GO_GATE_MALICIA: return GateMiliciaGUID; break; - case GO_GATE_THEOLEN: return GateTheolenGUID; break; - case GO_GATE_POLKELT: return GatePolkeltGUID; break; - case GO_GATE_RAVENIAN: return GateRavenianGUID; break; - case GO_GATE_BAROV: return GateBarovGUID; break; - case GO_GATE_ILLUCIA: return GateIlluciaGUID; break; - case GO_BRAZIER_OF_THE_HERALD: return BrazierOfTheHeraldGUID; break; + switch (type) + { + case GO_GATE_KIRTONOS: + return GateKirtonosGUID; + break; + case GO_GATE_GANDLING: + return GateGandlingGUID; + break; + case GO_GATE_MALICIA: + return GateMiliciaGUID; + break; + case GO_GATE_THEOLEN: + return GateTheolenGUID; + break; + case GO_GATE_POLKELT: + return GatePolkeltGUID; + break; + case GO_GATE_RAVENIAN: + return GateRavenianGUID; + break; + case GO_GATE_BAROV: + return GateBarovGUID; + break; + case GO_GATE_ILLUCIA: + return GateIlluciaGUID; + break; + case GO_BRAZIER_OF_THE_HERALD: + return BrazierOfTheHeraldGUID; + break; + default: + break; + } + + return 0; } - return 0; - } + bool CheckPreBosses(uint32 bossId) const + { + switch (bossId) + { + case DATA_DARKMASTERGANDLING: + if (GetBossState(DATA_LORDALEXEIBAROV) != DONE) + return false; + if (GetBossState(DATA_DOCTORTHEOLENKRASTINOV) != DONE) + return false; + if (GetBossState(DATA_THERAVENIAN) != DONE) + return false; + if (GetBossState(DATA_LOREKEEPERPOLKELT) != DONE) + return false; + if (GetBossState(DATA_INSTRUCTORMALICIA) != DONE) + return false; + if (GetBossState(DATA_LADYILLUCIABAROV) != DONE) + return false; + if (GetBossState(DATA_DARKMASTERGANDLING) == DONE) + return false; + break; + default: + break; + } + + return true; + } - void CheckToSpawnGandling() - { - if (GetData(DATA_DARKMASTERGANDLING) == IN_PROGRESS) + void CheckToSpawnGandling() + { + if (CheckPreBosses(DATA_DARKMASTERGANDLING)) + instance->SummonCreature(NPC_DARKMASTER_GANDLING, GandlingLoc); + } + + std::string GetSaveData() + { + OUT_SAVE_INST_DATA; + + std::ostringstream saveStream; + saveStream << "S O " << GetBossSaveData(); + + OUT_SAVE_INST_DATA_COMPLETE; + return saveStream.str(); + } + + void Load(const char* str) { - Map::PlayerList const &PlayerList = instance->GetPlayers(); - if (PlayerList.isEmpty()) + if (!str) + { + OUT_LOAD_INST_DATA_FAIL; return; + } + + OUT_LOAD_INST_DATA(str); + + char dataHead1, dataHead2; + + std::istringstream loadStream(str); + loadStream >> dataHead1 >> dataHead2; - Map::PlayerList::const_iterator i = PlayerList.begin(); - if (Player* i_pl = i->getSource()) - i_pl->SummonCreature(NPC_DARKMASTER_GANDLING, GandlingLoc); + if (dataHead1 == 'S' && dataHead2 == 'O') + { + for (uint32 i = 0; i < EncounterCount; ++i) + { + uint32 tmpState; + loadStream >> tmpState; + if (tmpState == IN_PROGRESS || tmpState > SPECIAL) + tmpState = NOT_STARTED; + SetBossState(i, EncounterState(tmpState)); + } + + CheckToSpawnGandling(); + } + else + OUT_LOAD_INST_DATA_FAIL; + + OUT_LOAD_INST_DATA_COMPLETE; } - } - }; + + protected: + uint64 GateKirtonosGUID; + uint64 GateGandlingGUID; + uint64 GateMiliciaGUID; + uint64 GateTheolenGUID; + uint64 GatePolkeltGUID; + uint64 GateRavenianGUID; + uint64 GateBarovGUID; + uint64 GateIlluciaGUID; + uint64 BrazierOfTheHeraldGUID; + }; }; void AddSC_instance_scholomance() diff --git a/src/server/scripts/EasternKingdoms/Scholomance/scholomance.h b/src/server/scripts/EasternKingdoms/Scholomance/scholomance.h index 2d9c8c7bbe7..5c38cc39e3d 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/scholomance.h +++ b/src/server/scripts/EasternKingdoms/Scholomance/scholomance.h @@ -18,6 +18,8 @@ #ifndef DEF_SCHOLOMANCE_H #define DEF_SCHOLOMANCE_H +uint32 const EncounterCount = 8; + enum DataTypes { DATA_DOCTORTHEOLENKRASTINOV = 0, @@ -30,6 +32,11 @@ enum DataTypes DATA_KIRTONOS = 7 }; +enum CreatureIds +{ + NPC_DARKMASTER_GANDLING = 1853 +}; + enum GameobjectIds { GO_GATE_KIRTONOS = 175570, @@ -43,9 +50,4 @@ enum GameobjectIds GO_BRAZIER_OF_THE_HERALD = 175564 }; -enum Misc -{ - MAX_ENCOUNTER = 8 -}; - #endif -- cgit v1.2.3 From 4d9fa7f22c066010ff3b53c54d6f2b89c016e354 Mon Sep 17 00:00:00 2001 From: Gacko Date: Sat, 12 Jan 2013 15:01:53 +0100 Subject: Core/Spell: Gordunni Trap Casting npc of the trap should not remove the summoned chest on despawn. Solves #4811 --- src/server/scripts/Kalimdor/zone_feralas.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src') diff --git a/src/server/scripts/Kalimdor/zone_feralas.cpp b/src/server/scripts/Kalimdor/zone_feralas.cpp index b2326de86ab..2d5b383cefc 100644 --- a/src/server/scripts/Kalimdor/zone_feralas.cpp +++ b/src/server/scripts/Kalimdor/zone_feralas.cpp @@ -221,7 +221,10 @@ class spell_gordunni_trap : public SpellScriptLoader { if (Unit* caster = GetCaster()) if (GameObject* chest = caster->SummonGameObject(GO_GORDUNNI_DIRT_MOUND, caster->GetPositionX(), caster->GetPositionY(), caster->GetPositionZ(), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0)) + { chest->SetSpellId(GetSpellInfo()->Id); + caster->RemoveGameObject(chest, false); + } } void Register() -- cgit v1.2.3 From 199354410395c3cb074ba9f6127ea057cffd99ea Mon Sep 17 00:00:00 2001 From: Malcrom Date: Sat, 12 Jan 2013 14:04:25 -0330 Subject: Core/Scripting: More updates to Mechanar --- .../Mechanar/boss_gatewatcher_gyrokill.cpp | 29 ++----- .../Mechanar/boss_nethermancer_sepethrea.cpp | 21 +---- .../Mechanar/boss_pathaleon_the_calculator.cpp | 17 +--- .../TempestKeep/Mechanar/instance_mechanar.cpp | 98 +++++++++++++++------- .../Outland/TempestKeep/Mechanar/mechanar.h | 7 +- 5 files changed, 84 insertions(+), 88 deletions(-) (limited to 'src') 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 796308d68f6..60d42c38c50 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_gyrokill.cpp +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_gyrokill.cpp @@ -17,8 +17,8 @@ /* ScriptData SDName: Boss_Gatewatcher_Gyrokill -SD%Complete: 0 -SDComment: Place Holder +SD%Complete: 99% +SDComment: SDCategory: Tempest Keep, The Mechanar EndScriptData */ @@ -58,29 +58,18 @@ class Boss_Gatewatcher_Gyrokill : public CreatureScript { Boss_Gatewatcher_GyrokillAI(Creature* creature) : BossAI(creature, DATA_GATEWATCHER_GYROKILL) {} - void Reset() - { - if (instance) - instance->SetData(DATA_GATEWATCHER_GYROKILL, NOT_STARTED); - } - void JustDied(Unit* /*killer*/) { - if (instance) - instance->SetData(DATA_GATEWATCHER_GYROKILL, DONE); - + _JustDied(); Talk(SAY_DEATH); } void EnterCombat(Unit* /*who*/) { - if (instance) - instance->SetData(DATA_GATEWATCHER_GYROKILL, IN_PROGRESS); - + _EnterCombat(); events.ScheduleEvent(EVENT_STREAM_OF_MACHINE_FLUID, 10000); events.ScheduleEvent(EVENT_SAW_BLADE, 20000); events.ScheduleEvent(EVENT_SHADOW_POWER, 25000); - Talk(SAY_AGGRO); } @@ -108,18 +97,12 @@ class Boss_Gatewatcher_Gyrokill : public CreatureScript events.ScheduleEvent(EVENT_STREAM_OF_MACHINE_FLUID, urand(13000, 17000)); break; case EVENT_SAW_BLADE: - if (IsHeroic()) - DoCast(me, H_SPELL_SAW_BLADE); - else - DoCast(me, SPELL_SAW_BLADE); + DoCast(me, SPELL_SAW_BLADE); Talk(SAY_SAW_BLADEs); events.ScheduleEvent(EVENT_SAW_BLADE, urand(20000, 30000)); break; case EVENT_SHADOW_POWER: - if (IsHeroic()) - DoCast(me, H_SPELL_SHADOW_POWER); - else - DoCast(me, SPELL_SHADOW_POWER); + DoCast(me, SPELL_SHADOW_POWER); events.ScheduleEvent(EVENT_SAW_BLADE, urand(25000, 35000)); break; default: 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 cdfb20b5f0d..4f71a020f83 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp @@ -65,30 +65,16 @@ class boss_nethermancer_sepethrea : public CreatureScript struct boss_nethermancer_sepethreaAI : public BossAI { - boss_nethermancer_sepethreaAI(Creature* creature) : BossAI(creature,DATA_NETHERMANCER_SEPRETHREA) - { - instance = creature->GetInstanceScript(); - } - - InstanceScript* instance; - - void Reset() - { - if (instance) - instance->SetData(DATA_NETHERMANCER_SEPRETHREA, NOT_STARTED); - } + boss_nethermancer_sepethreaAI(Creature* creature) : BossAI(creature,DATA_NETHERMANCER_SEPRETHREA) {} void EnterCombat(Unit* who) { - if (instance) - instance->SetData(DATA_NETHERMANCER_SEPRETHREA, IN_PROGRESS); - + _EnterCombat(); events.ScheduleEvent(EVENT_FROST_ATTACK, urand(7000, 10000)); events.ScheduleEvent(EVENT_ARCANE_BLAST, urand(12000, 18000)); events.ScheduleEvent(EVENT_DRAGONS_BREATH, urand(18000, 22000)); events.ScheduleEvent(EVENT_KNOCKBACK, urand(22000, 28000)); events.ScheduleEvent(EVENT_SOLARBURN, 30000); - Talk(SAY_AGGRO); DoCast(who, SPELL_SUMMON_RAGIN_FLAMES); Talk(SAY_SUMMON); @@ -101,9 +87,8 @@ class boss_nethermancer_sepethrea : public CreatureScript void JustDied(Unit* /*killer*/) { + _JustDied(); Talk(SAY_DEATH); - if (instance) - instance->SetData(DATA_NETHERMANCER_SEPRETHREA, DONE); } void UpdateAI(uint32 const 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 b7857239157..94daedfdc43 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 @@ -75,9 +75,7 @@ class boss_pathaleon_the_calculator : public CreatureScript void Reset() { - if (instance) - instance->SetData(DATA_PATHALEON_THE_CALCULATOR, NOT_STARTED); - + _Reset(); Enraged = false; Counter = 0; summons.DespawnAll(); @@ -85,16 +83,12 @@ class boss_pathaleon_the_calculator : public CreatureScript void EnterCombat(Unit* /*who*/) { - if (instance) - instance->SetData(DATA_PATHALEON_THE_CALCULATOR, IN_PROGRESS); - + _EnterCombat(); events.ScheduleEvent(EVENT_SUMMON, 30000); events.ScheduleEvent(EVENT_MANA_TAP, urand(12000, 20000)); events.ScheduleEvent(EVENT_ARCANE_TORRENT, urand(16000, 25000)); events.ScheduleEvent(EVENT_DOMINATION, urand(25000, 40000)); - if (IsHeroic()) - events.ScheduleEvent(EVENT_ARCANE_EXPLOSION, urand(8000, 13000)); - + events.ScheduleEvent(EVENT_ARCANE_EXPLOSION, urand(8000, 13000)); Talk(SAY_AGGRO); } @@ -105,12 +99,9 @@ class boss_pathaleon_the_calculator : public CreatureScript void JustDied(Unit* /*killer*/) { + _JustDied(); Talk(SAY_DEATH); - summons.DespawnAll(); - - if (instance) - instance->SetData(DATA_PATHALEON_THE_CALCULATOR, DONE); } void JustSummoned(Creature* summon) diff --git a/src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp b/src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp index 21fb085b266..6256aa45dd3 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp @@ -31,35 +31,29 @@ class instance_mechanar : public InstanceMapScript { public: instance_mechanar(): InstanceMapScript("instance_mechanar", 554) {} - struct instance_mechanar_InstanceMapScript : public InstanceScript + InstanceScript* GetInstanceScript(InstanceMap* map) const { - instance_mechanar_InstanceMapScript(Map* map) : InstanceScript(map) {} - - uint32 m_auiEncounter[MAX_ENCOUNTER]; + return new instance_mechanar_InstanceMapScript(map); + } - void Initialize() + struct instance_mechanar_InstanceMapScript : public InstanceScript + { + instance_mechanar_InstanceMapScript(Map* map) : InstanceScript(map) { - // memset(&m_auiEncounter, 0, sizeof(m_auiEncounter)); + SetBossNumber(EncounterCount); } - bool IsEncounterInProgress() const - { - for (uint8 i = 0; i < MAX_ENCOUNTER; ++i) - if (m_auiEncounter[i] == IN_PROGRESS) - return true; - return false; - } uint32 GetData(uint32 type) const { switch (type) { - case DATA_GATEWATCHER_GYROKILL: return m_auiEncounter[DATA_GATEWATCHER_GYROKILL]; - case DATA_IRON_HAND: return m_auiEncounter[DATA_IRON_HAND]; - case DATA_MECHANOLORD_CAPACITUS: return m_auiEncounter[DATA_MECHANOLORD_CAPACITUS]; - case DATA_NETHERMANCER_SEPRETHREA: return m_auiEncounter[DATA_NETHERMANCER_SEPRETHREA]; - case DATA_PATHALEON_THE_CALCULATOR: return m_auiEncounter[DATA_PATHALEON_THE_CALCULATOR]; + case DATA_GATEWATCHER_GYROKILL: return SetBossNumber[DATA_GATEWATCHER_GYROKILL]; + case DATA_IRON_HAND: return SetBossNumber[DATA_IRON_HAND]; + case DATA_MECHANOLORD_CAPACITUS: return SetBossNumber[DATA_MECHANOLORD_CAPACITUS]; + case DATA_NETHERMANCER_SEPRETHREA: return SetBossNumber[DATA_NETHERMANCER_SEPRETHREA]; + case DATA_PATHALEON_THE_CALCULATOR: return SetBossNumber[DATA_PATHALEON_THE_CALCULATOR]; } return false; @@ -70,23 +64,69 @@ class instance_mechanar : public InstanceMapScript return 0; } - void SetData(uint32 type, uint32 data) + bool SetBossState(uint32 type, EncounterState state) { + if (!InstanceScript::SetBossState(type, state)) + return false; + switch (type) { - case DATA_GATEWATCHER_GYROKILL: m_auiEncounter[DATA_GATEWATCHER_GYROKILL] = data; break; - case DATA_IRON_HAND: m_auiEncounter[DATA_IRON_HAND] = data; break; - case DATA_MECHANOLORD_CAPACITUS: m_auiEncounter[DATA_MECHANOLORD_CAPACITUS] = data; break; - case DATA_NETHERMANCER_SEPRETHREA: m_auiEncounter[DATA_NETHERMANCER_SEPRETHREA] = data; break; - case DATA_PATHALEON_THE_CALCULATOR: m_auiEncounter[DATA_PATHALEON_THE_CALCULATOR] = data; break; + case DATA_GATEWATCHER_GYROKILL: + case DATA_IRON_HAND: + case DATA_MECHANOLORD_CAPACITUS: + case DATA_NETHERMANCER_SEPRETHREA: + case DATA_PATHALEON_THE_CALCULATOR: + break; + default: + break; } + + return true; } - }; - InstanceScript* GetInstanceScript(InstanceMap* map) const - { - return new instance_mechanar_InstanceMapScript(map); - } + std::string GetSaveData() + { + OUT_SAVE_INST_DATA; + + std::ostringstream saveStream; + saveStream << "S O " << GetBossSaveData(); + + OUT_SAVE_INST_DATA_COMPLETE; + return saveStream.str(); + } + + void Load(const char* str) + { + if (!str) + { + OUT_LOAD_INST_DATA_FAIL; + return; + } + + OUT_LOAD_INST_DATA(str); + + char dataHead1, dataHead2; + + std::istringstream loadStream(str); + loadStream >> dataHead1 >> dataHead2; + + if (dataHead1 == 'S' && dataHead2 == 'O') + { + for (uint32 i = 0; i < EncounterCount; ++i) + { + uint32 tmpState; + loadStream >> tmpState; + if (tmpState == IN_PROGRESS || tmpState > SPECIAL) + tmpState = NOT_STARTED; + SetBossState(i, EncounterState(tmpState)); + } + } + else + OUT_LOAD_INST_DATA_FAIL; + + OUT_LOAD_INST_DATA_COMPLETE; + } + }; }; void AddSC_instance_mechanar() diff --git a/src/server/scripts/Outland/TempestKeep/Mechanar/mechanar.h b/src/server/scripts/Outland/TempestKeep/Mechanar/mechanar.h index 7aa4cca7f8e..b1c7cf8e25c 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/mechanar.h +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/mechanar.h @@ -18,6 +18,8 @@ #ifndef DEF_MECHANAR_H #define DEF_MECHANAR_H +uint32 const EncounterCount = 5; + enum DataTypes { DATA_GATEWATCHER_GYROKILL = 0, @@ -27,9 +29,4 @@ enum DataTypes DATA_PATHALEON_THE_CALCULATOR = 4 }; -enum Misc -{ - MAX_ENCOUNTER = 5 -}; - #endif -- cgit v1.2.3 From 84cdd538bb6dabffb0c20db9ea59ba059f955141 Mon Sep 17 00:00:00 2001 From: Vincent_Michael Date: Sat, 12 Jan 2013 18:52:51 +0100 Subject: Core/Commands: Fix sql warnings with pinfo at ban players --- src/server/scripts/Commands/cs_misc.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/server/scripts/Commands/cs_misc.cpp b/src/server/scripts/Commands/cs_misc.cpp index 59315e1a813..54fe41a8a4d 100644 --- a/src/server/scripts/Commands/cs_misc.cpp +++ b/src/server/scripts/Commands/cs_misc.cpp @@ -1534,7 +1534,7 @@ public: return false; Field* fields = result->Fetch(); - totalPlayerTime = fields[0].GetUInt32(); + totalPlayerTime = fields[0].GetUInt32(); level = fields[1].GetUInt8(); money = fields[2].GetUInt32(); accId = fields[3].GetUInt32(); @@ -1617,7 +1617,7 @@ public: if (result2) { Field* fields = result2->Fetch(); - banTime = int64(fields[1].GetBool() ? 0 : fields[0].GetUInt32()); + banTime = int64(fields[1].GetUInt64() ? 0 : fields[0].GetUInt32()); bannedby = fields[2].GetString(); banreason = fields[3].GetString(); } -- cgit v1.2.3 From a02fa868a8b5386c5d0fce261f62be269bbcbf97 Mon Sep 17 00:00:00 2001 From: Vincent_Michael Date: Sat, 12 Jan 2013 19:01:49 +0100 Subject: Core: Fix build --- .../TempestKeep/Mechanar/instance_mechanar.cpp | 39 +++++----------------- 1 file changed, 9 insertions(+), 30 deletions(-) (limited to 'src') diff --git a/src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp b/src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp index 6256aa45dd3..ac8efb83822 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp @@ -29,12 +29,7 @@ EndScriptData */ class instance_mechanar : public InstanceMapScript { - public: instance_mechanar(): InstanceMapScript("instance_mechanar", 554) {} - - InstanceScript* GetInstanceScript(InstanceMap* map) const - { - return new instance_mechanar_InstanceMapScript(map); - } + public: instance_mechanar(): InstanceMapScript("instance_mechanar", 554) { } struct instance_mechanar_InstanceMapScript : public InstanceScript { @@ -43,27 +38,6 @@ class instance_mechanar : public InstanceMapScript SetBossNumber(EncounterCount); } - - - uint32 GetData(uint32 type) const - { - switch (type) - { - case DATA_GATEWATCHER_GYROKILL: return SetBossNumber[DATA_GATEWATCHER_GYROKILL]; - case DATA_IRON_HAND: return SetBossNumber[DATA_IRON_HAND]; - case DATA_MECHANOLORD_CAPACITUS: return SetBossNumber[DATA_MECHANOLORD_CAPACITUS]; - case DATA_NETHERMANCER_SEPRETHREA: return SetBossNumber[DATA_NETHERMANCER_SEPRETHREA]; - case DATA_PATHALEON_THE_CALCULATOR: return SetBossNumber[DATA_PATHALEON_THE_CALCULATOR]; - } - - return false; - } - - uint64 GetData64(uint32 /*identifier*/) const - { - return 0; - } - bool SetBossState(uint32 type, EncounterState state) { if (!InstanceScript::SetBossState(type, state)) @@ -89,7 +63,7 @@ class instance_mechanar : public InstanceMapScript OUT_SAVE_INST_DATA; std::ostringstream saveStream; - saveStream << "S O " << GetBossSaveData(); + saveStream << "M C " << GetBossSaveData(); OUT_SAVE_INST_DATA_COMPLETE; return saveStream.str(); @@ -110,7 +84,7 @@ class instance_mechanar : public InstanceMapScript std::istringstream loadStream(str); loadStream >> dataHead1 >> dataHead2; - if (dataHead1 == 'S' && dataHead2 == 'O') + if (dataHead1 == 'M' && dataHead2 == 'C') { for (uint32 i = 0; i < EncounterCount; ++i) { @@ -127,10 +101,15 @@ class instance_mechanar : public InstanceMapScript OUT_LOAD_INST_DATA_COMPLETE; } }; + + InstanceScript* GetInstanceScript(InstanceMap* map) const + { + return new instance_mechanar_InstanceMapScript(map); + } }; void AddSC_instance_mechanar() { - new instance_mechanar; + new instance_mechanar(); } -- cgit v1.2.3 From 9d1e5a013eb5be9020b1fc9d92e736067576b749 Mon Sep 17 00:00:00 2001 From: Nay Date: Sat, 12 Jan 2013 18:16:02 +0000 Subject: Core/Ticket: Fix unassigned message not showing who was assigned to ticket Thanks to @Bezo Closes #8923 --- src/server/scripts/Commands/cs_ticket.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/server/scripts/Commands/cs_ticket.cpp b/src/server/scripts/Commands/cs_ticket.cpp index 3215b533bce..aee01f47581 100644 --- a/src/server/scripts/Commands/cs_ticket.cpp +++ b/src/server/scripts/Commands/cs_ticket.cpp @@ -386,12 +386,13 @@ public: return true; } + std::string assignedTo = ticket->GetAssignedToName(); // copy assignedto name because we need it after the ticket has been unnassigned SQLTransaction trans = SQLTransaction(NULL); ticket->SetUnassigned(); ticket->SaveToDB(trans); sTicketMgr->UpdateLastChange(); - std::string msg = ticket->FormatMessageString(*handler, NULL, ticket->GetAssignedToName().c_str(), + std::string msg = ticket->FormatMessageString(*handler, NULL, assignedTo.c_str(), handler->GetSession() ? handler->GetSession()->GetPlayer()->GetName().c_str() : "Console", NULL); handler->SendGlobalGMSysMessage(msg.c_str()); -- cgit v1.2.3 From bf7f58365f5a2b2be24f27b328a66049cb03348e Mon Sep 17 00:00:00 2001 From: Vincent_Michael Date: Sat, 12 Jan 2013 19:35:11 +0100 Subject: Scripts/Misc: Some cleanups --- .../2013_01_12_02_world_creature_template.sql | 1 + .../Scholomance/instance_scholomance.cpp | 16 ------ .../Mechanar/boss_gatewatcher_gyrokill.cpp | 18 +++---- .../Mechanar/boss_nethermancer_sepethrea.cpp | 6 +-- .../Mechanar/boss_pathaleon_the_calculator.cpp | 62 ++++++++-------------- .../TempestKeep/Mechanar/instance_mechanar.cpp | 1 - 6 files changed, 33 insertions(+), 71 deletions(-) create mode 100644 sql/updates/world/2013_01_12_02_world_creature_template.sql (limited to 'src') diff --git a/sql/updates/world/2013_01_12_02_world_creature_template.sql b/sql/updates/world/2013_01_12_02_world_creature_template.sql new file mode 100644 index 00000000000..f9c15b34423 --- /dev/null +++ b/sql/updates/world/2013_01_12_02_world_creature_template.sql @@ -0,0 +1 @@ +UPDATE `creature_template` SET `ScriptName`= 'boss_gatewatcher_gyrokill' WHERE `entry`=19218; \ No newline at end of file diff --git a/src/server/scripts/EasternKingdoms/Scholomance/instance_scholomance.cpp b/src/server/scripts/EasternKingdoms/Scholomance/instance_scholomance.cpp index c43c1e18811..0da31fbe428 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/instance_scholomance.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/instance_scholomance.cpp @@ -15,13 +15,6 @@ * with this program. If not, see . */ -/* ScriptData -Name: Instance_Scholomance -%Complete: 100 -Comment: -Category: Scholomance -EndScriptData */ - #include "ScriptMgr.h" #include "InstanceScript.h" #include "Player.h" @@ -119,31 +112,22 @@ class instance_scholomance : public InstanceMapScript { case GO_GATE_KIRTONOS: return GateKirtonosGUID; - break; case GO_GATE_GANDLING: return GateGandlingGUID; - break; case GO_GATE_MALICIA: return GateMiliciaGUID; - break; case GO_GATE_THEOLEN: return GateTheolenGUID; - break; case GO_GATE_POLKELT: return GatePolkeltGUID; - break; case GO_GATE_RAVENIAN: return GateRavenianGUID; - break; case GO_GATE_BAROV: return GateBarovGUID; - break; case GO_GATE_ILLUCIA: return GateIlluciaGUID; - break; case GO_BRAZIER_OF_THE_HERALD: return BrazierOfTheHeraldGUID; - break; default: break; } 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 60d42c38c50..00cce1ecebc 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_gyrokill.cpp +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_gyrokill.cpp @@ -16,7 +16,7 @@ */ /* ScriptData -SDName: Boss_Gatewatcher_Gyrokill +SDName: boss_gatewatcher_gyrokill SD%Complete: 99% SDComment: SDCategory: Tempest Keep, The Mechanar @@ -50,13 +50,13 @@ enum Events EVENT_SHADOW_POWER = 2 }; -class Boss_Gatewatcher_Gyrokill : public CreatureScript +class boss_gatewatcher_gyrokill : public CreatureScript { - public: Boss_Gatewatcher_Gyrokill() : CreatureScript("Boss_Gatewatcher_Gyrokill") { } + public: boss_gatewatcher_gyrokill() : CreatureScript("boss_gatewatcher_gyrokill") { } - struct Boss_Gatewatcher_GyrokillAI : public BossAI + struct boss_gatewatcher_gyrokillAI : public BossAI { - Boss_Gatewatcher_GyrokillAI(Creature* creature) : BossAI(creature, DATA_GATEWATCHER_GYROKILL) {} + boss_gatewatcher_gyrokillAI(Creature* creature) : BossAI(creature, DATA_GATEWATCHER_GYROKILL) {} void JustDied(Unit* /*killer*/) { @@ -116,11 +116,11 @@ class Boss_Gatewatcher_Gyrokill : public CreatureScript CreatureAI* GetAI(Creature* creature) const { - return new Boss_Gatewatcher_GyrokillAI (creature); + return new boss_gatewatcher_gyrokillAI (creature); } }; -void AddSC_Boss_Gatewatcher_Gyrokill() +void AddSC_boss_gatewatcher_gyrokill() { - new Boss_Gatewatcher_Gyrokill(); -} \ No newline at end of file + new boss_gatewatcher_gyrokill(); +} 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 4f71a020f83..0b2370e1b17 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp @@ -145,10 +145,7 @@ class boss_nethermancer_sepethrea : public CreatureScript class mob_ragin_flames : public CreatureScript { public: - mob_ragin_flames() - : CreatureScript("mob_ragin_flames") - { - } + mob_ragin_flames() : CreatureScript("mob_ragin_flames") { } struct mob_ragin_flamesAI : public ScriptedAI { @@ -235,4 +232,3 @@ void AddSC_boss_nethermancer_sepethrea() new boss_nethermancer_sepethrea(); new mob_ragin_flames(); } - 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 94daedfdc43..09b3403f5c2 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 @@ -61,25 +61,18 @@ enum Events EVENT_ARCANE_EXPLOSION = 4 }; +enum Creatures +{ + NPC_NETHER_WRAITH = 21062 +}; + class boss_pathaleon_the_calculator : public CreatureScript { public: boss_pathaleon_the_calculator(): CreatureScript("boss_pathaleon_the_calculator") {} struct boss_pathaleon_the_calculatorAI : public BossAI { - boss_pathaleon_the_calculatorAI(Creature* creature) : BossAI(creature,DATA_PATHALEON_THE_CALCULATOR), summons(me) {} - - SummonList summons; - bool Enraged; - uint32 Counter; - - void Reset() - { - _Reset(); - Enraged = false; - Counter = 0; - summons.DespawnAll(); - } + boss_pathaleon_the_calculatorAI(Creature* creature) : BossAI(creature, DATA_PATHALEON_THE_CALCULATOR) { } void EnterCombat(Unit* /*who*/) { @@ -101,17 +94,15 @@ class boss_pathaleon_the_calculator : public CreatureScript { _JustDied(); Talk(SAY_DEATH); - summons.DespawnAll(); - } - - void JustSummoned(Creature* summon) - { - summons.Summon(summon); } - void SummonedCreatureDespawn(Creature* summon) + void DamageTaken(Unit* /*attacker*/, uint32& damage) { - summons.Despawn(summon); + if (me->HealthBelowPctDamaged(20, damage) && !me->HasAura(SPELL_FRENZY)) + { + DoCast(me, SPELL_FRENZY); + Talk(SAY_ENRAGE); + } } void UpdateAI(uint32 const diff) @@ -121,13 +112,6 @@ class boss_pathaleon_the_calculator : public CreatureScript events.Update(diff); - if (!Enraged && HealthBelowPct(21)) - { - DoCast(me, SPELL_FRENZY); - Talk(SAY_ENRAGE); - Enraged = true; - } - if (me->HasUnitState(UNIT_STATE_CASTING)) return; @@ -138,10 +122,11 @@ class boss_pathaleon_the_calculator : public CreatureScript case EVENT_SUMMON: for (uint8 i = 0; i < 3; ++i) { - Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0); - Creature* Wraith = me->SummonCreature(21062, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 25000); - if (target && Wraith) - Wraith->AI()->AttackStart(target); + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) + { + if (Creature* Wraith = me->SummonCreature(NPC_NETHER_WRAITH, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 25000)) + Wraith->AI()->AttackStart(target); + } } Talk(SAY_SUMMON); events.ScheduleEvent(EVENT_SUMMON, urand(30000, 45000)); @@ -172,20 +157,17 @@ class boss_pathaleon_the_calculator : public CreatureScript } }; - CreatureAI* GetAI(Creature* creature) const - { - return new boss_pathaleon_the_calculatorAI (creature); - } + CreatureAI* GetAI(Creature* creature) const + { + return new boss_pathaleon_the_calculatorAI (creature); + } }; class mob_nether_wraith : public CreatureScript { public: - mob_nether_wraith() - : CreatureScript("mob_nether_wraith") - { - } + mob_nether_wraith() : CreatureScript("mob_nether_wraith") { } struct mob_nether_wraithAI : public ScriptedAI { diff --git a/src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp b/src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp index ac8efb83822..250959a1468 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp @@ -112,4 +112,3 @@ void AddSC_instance_mechanar() { new instance_mechanar(); } - -- cgit v1.2.3 From da21bbe93c219f6122f8f4a04eb5ef3d5210acb9 Mon Sep 17 00:00:00 2001 From: Gacko Date: Sat, 12 Jan 2013 20:23:40 +0100 Subject: Core/Battleground: Eye of Storm - Fel Reaver Ruins Make it possible to deliver the flag at Fel Reaver Ruins which was impossible before because of a big areatrigger which covered the original areatrigger for the flag point. Solves #337. Thanks to @Greymane --- src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp index 4ddf7a8b052..13b41e7553e 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp @@ -247,7 +247,7 @@ void BattlegroundEY::UpdatePointStatuses() if (player) { this->UpdateWorldStateForPlayer(PROGRESS_BAR_STATUS, m_PointBarStatus[point], player); - //if point owner changed we must evoke event! + //if point owner changed we must evoke event! if (pointOwnerTeamId != m_PointOwnedByTeam[point]) { //point was uncontrolled and player is from team which captured point @@ -258,6 +258,11 @@ void BattlegroundEY::UpdatePointStatuses() if (m_PointState[point] == EY_POINT_UNDER_CONTROL && player->GetTeam() != m_PointOwnedByTeam[point]) this->EventTeamLostPoint(player, point); } + + if (point == FEL_REAVER && m_PointOwnedByTeam[point] == player->GetTeam()) + if (m_FlagState && GetFlagPickerGUID() == player->GetGUID()) + if (player->GetDistance2d(2044,1730) < 2) + EventPlayerCapturedFlag(player, BG_EY_OBJECT_FLAG_FEL_REAVER); } } } @@ -378,6 +383,8 @@ void BattlegroundEY::HandleAreaTrigger(Player* player, uint32 trigger) if (!player->isAlive()) //hack code, must be removed later return; + + switch (trigger) { case TR_BLOOD_ELF_POINT: -- cgit v1.2.3 From 31043b1ae3854bc933fbfa934260ed7de3ab9a98 Mon Sep 17 00:00:00 2001 From: Gacko Date: Sat, 12 Jan 2013 20:29:40 +0100 Subject: Fix codestyle in da21bbe93c219f6122f8f4a04eb5ef3d5210acb9 --- src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp | 2 -- 1 file changed, 2 deletions(-) (limited to 'src') diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp index 13b41e7553e..369519312e2 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp @@ -383,8 +383,6 @@ void BattlegroundEY::HandleAreaTrigger(Player* player, uint32 trigger) if (!player->isAlive()) //hack code, must be removed later return; - - switch (trigger) { case TR_BLOOD_ELF_POINT: -- cgit v1.2.3 From 26aeed3744acace54b404754e7b9c902c9ef4572 Mon Sep 17 00:00:00 2001 From: Gacko Date: Sat, 12 Jan 2013 20:33:08 +0100 Subject: Once last codestyle change. --- src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp index 369519312e2..076c68b5f76 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp @@ -261,7 +261,7 @@ void BattlegroundEY::UpdatePointStatuses() if (point == FEL_REAVER && m_PointOwnedByTeam[point] == player->GetTeam()) if (m_FlagState && GetFlagPickerGUID() == player->GetGUID()) - if (player->GetDistance2d(2044,1730) < 2) + if (player->GetDistance2d(2044.0f, 1730.0f) < 2.0f) EventPlayerCapturedFlag(player, BG_EY_OBJECT_FLAG_FEL_REAVER); } } -- cgit v1.2.3 From df2e54f587ce350bdd3e349a82b694649edd2dc3 Mon Sep 17 00:00:00 2001 From: Malcrom Date: Sat, 12 Jan 2013 19:35:14 -0330 Subject: Core/Scripting: More cleanup to Mechanar scripts. Added missing doors and handling to instance. --- .../world/2013_01_12_03_world_gameobject.sql | 7 + src/server/game/Scripting/ScriptLoader.cpp | 2 + .../Mechanar/boss_gatewatcher_gyrokill.cpp | 4 +- .../Mechanar/boss_gatewatcher_ironhand.cpp | 144 ++++++++++----------- .../Mechanar/boss_mechano_lord_capacitus.cpp | 5 +- .../Mechanar/boss_nethermancer_sepethrea.cpp | 2 + .../TempestKeep/Mechanar/instance_mechanar.cpp | 68 +++++++++- .../Outland/TempestKeep/Mechanar/mechanar.h | 9 +- 8 files changed, 151 insertions(+), 90 deletions(-) create mode 100644 sql/updates/world/2013_01_12_03_world_gameobject.sql (limited to 'src') diff --git a/sql/updates/world/2013_01_12_03_world_gameobject.sql b/sql/updates/world/2013_01_12_03_world_gameobject.sql new file mode 100644 index 00000000000..a7a914fceec --- /dev/null +++ b/sql/updates/world/2013_01_12_03_world_gameobject.sql @@ -0,0 +1,7 @@ +-- Add missing doors to mechanar +SET @GUID := 6032; +DELETE FROM `gameobject` WHERE `guid` BETWEEN @GUID AND @GUID+2; +INSERT INTO `gameobject` (`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`position_x`,`position_y`,`position_z`,`orientation`,`rotation0`,`rotation1`,`rotation2`,`rotation3`,`spawntimesecs`,`animprogress`,`state`) VALUES +(@GUID,184632,554,3,1,236.4597,52.36356,1.653544,3.141593,0,0,-1,0,120,0,1), +(@GUID+1,184322,554,3,1,242.874,52.314810,1.596334,3.141593,0,0,-1,0,120,0,1), +(@GUID+2,184449,554,3,1,267.9281,52.31481,27.04254,3.141593,0,0,-1,0,120,0,1); diff --git a/src/server/game/Scripting/ScriptLoader.cpp b/src/server/game/Scripting/ScriptLoader.cpp index 479979f177f..3e30e95639f 100644 --- a/src/server/game/Scripting/ScriptLoader.cpp +++ b/src/server/game/Scripting/ScriptLoader.cpp @@ -590,6 +590,7 @@ void AddSC_boss_high_astromancer_solarian(); void AddSC_instance_the_eye(); void AddSC_the_eye(); void AddSC_boss_gatewatcher_iron_hand(); //TK The Mechanar +void AddSC_boss_gatewatcher_gyrokill(); void AddSC_boss_nethermancer_sepethrea(); void AddSC_boss_pathaleon_the_calculator(); void AddSC_boss_mechano_lord_capacitus(); @@ -1073,6 +1074,7 @@ void AddOutlandScripts() AddSC_instance_the_eye(); AddSC_the_eye(); AddSC_boss_gatewatcher_iron_hand(); //TK The Mechanar + AddSC_boss_gatewatcher_gyrokill(); AddSC_boss_nethermancer_sepethrea(); AddSC_boss_pathaleon_the_calculator(); AddSC_boss_mechano_lord_capacitus(); 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 00cce1ecebc..22aff78f441 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_gyrokill.cpp +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_gyrokill.cpp @@ -52,7 +52,7 @@ enum Events class boss_gatewatcher_gyrokill : public CreatureScript { - public: boss_gatewatcher_gyrokill() : CreatureScript("boss_gatewatcher_gyrokill") { } + public: boss_gatewatcher_gyrokill() : CreatureScript("boss_gatewatcher_gyrokill") {} struct boss_gatewatcher_gyrokillAI : public BossAI { @@ -62,6 +62,8 @@ class boss_gatewatcher_gyrokill : public CreatureScript { _JustDied(); Talk(SAY_DEATH); + if (GameObject* door = me->GetMap()->GetGameObject(instance->GetData64(GO_DOOR_MOARG_2))) + door->SetGoState(GO_STATE_ACTIVE); } void EnterCombat(Unit* /*who*/) 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 09ff6cf8e49..c613b3a67bb 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_ironhand.cpp +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_ironhand.cpp @@ -25,8 +25,9 @@ EndScriptData */ #include "ScriptMgr.h" #include "ScriptedCreature.h" +#include "mechanar.h" -enum eSays +enum Says { SAY_AGGRO = 0, SAY_HAMMER = 1, @@ -35,106 +36,91 @@ enum eSays EMOTE_HAMMER = 4 }; -enum eSpells +enum Spells { - // Spells to be casted SPELL_SHADOW_POWER = 35322, H_SPELL_SHADOW_POWER = 39193, SPELL_HAMMER_PUNCH = 35326, SPELL_JACKHAMMER = 35327, H_SPELL_JACKHAMMER = 39194, - SPELL_STREAM_OF_MACHINE_FLUID = 35311, + SPELL_STREAM_OF_MACHINE_FLUID = 35311 +}; + +enum Events +{ + EVENT_STREAM_OF_MACHINE_FLUID = 0, + EVENT_JACKHAMMER = 1, + EVENT_SHADOW_POWER = 2 }; class boss_gatewatcher_iron_hand : public CreatureScript { - public: + public: boss_gatewatcher_iron_hand(): CreatureScript("boss_gatewatcher_iron_hand") {} - boss_gatewatcher_iron_hand() - : CreatureScript("boss_gatewatcher_iron_hand") + struct boss_gatewatcher_iron_handAI : public BossAI { - } - // Gatewatcher Iron-Hand AI - struct boss_gatewatcher_iron_handAI : public ScriptedAI - { - boss_gatewatcher_iron_handAI(Creature* creature) : ScriptedAI(creature) - { - } - - uint32 Shadow_Power_Timer; - uint32 Jackhammer_Timer; - uint32 Stream_of_Machine_Fluid_Timer; - - void Reset() - { - Shadow_Power_Timer = 25000; - Jackhammer_Timer = 45000; - Stream_of_Machine_Fluid_Timer = 55000; + boss_gatewatcher_iron_handAI(Creature* creature) : BossAI(creature, DATA_GATEWATCHER_IRON_HAND) {} - } - void EnterCombat(Unit* /*who*/) - { - Talk(SAY_AGGRO); - } - - void KilledUnit(Unit* /*victim*/) - { - if (rand()%2) - return; + void EnterCombat(Unit* /*who*/) + { + _EnterCombat(); + events.ScheduleEvent(EVENT_STREAM_OF_MACHINE_FLUID, 55000); + events.ScheduleEvent(EVENT_JACKHAMMER, 45000); + events.ScheduleEvent(EVENT_SHADOW_POWER, 25000); + Talk(SAY_AGGRO); + } + void KilledUnit(Unit* /*victim*/) + { + if (roll_chance_i(50)) Talk(SAY_SLAY); - } - - void JustDied(Unit* /*killer*/) - { - Talk(SAY_DEATH); - //TODO: Add door check/open code - } - - void UpdateAI(const uint32 diff) - { - //Return since we have no target - if (!UpdateVictim()) - return; - - //Shadow Power - if (Shadow_Power_Timer <= diff) - { - DoCast(me, SPELL_SHADOW_POWER); - Shadow_Power_Timer = urand(20000, 28000); - } - else - Shadow_Power_Timer -= diff; + } - //Jack Hammer - if (Jackhammer_Timer <= diff) - { - //TODO: expect cast this about 5 times in a row (?), announce it by emote only once - Talk(EMOTE_HAMMER); - DoCast(me->getVictim(), SPELL_JACKHAMMER); + void JustDied(Unit* /*killer*/) + { + _JustDied(); + Talk(SAY_DEATH); + if (GameObject* door = me->GetMap()->GetGameObject(instance->GetData64(GO_DOOR_MOARG_1))) + door->SetGoState(GO_STATE_ACTIVE); + } - //chance to yell, but not same time as emote (after spell in fact casted) - if (rand()%2) - return; + void UpdateAI(uint32 const diff) + { + if (!UpdateVictim()) + return; - Talk(SAY_HAMMER); - Jackhammer_Timer = 30000; - } - else - Jackhammer_Timer -= diff; + events.Update(diff); - //Stream of Machine Fluid - if (Stream_of_Machine_Fluid_Timer <= diff) + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; + while (uint32 eventId = events.ExecuteEvent()) + { + switch (eventId) { - DoCast(me->getVictim(), SPELL_STREAM_OF_MACHINE_FLUID); - Stream_of_Machine_Fluid_Timer = urand(35000, 50000); + case EVENT_STREAM_OF_MACHINE_FLUID: + DoCastVictim(SPELL_STREAM_OF_MACHINE_FLUID, true); + events.ScheduleEvent(EVENT_STREAM_OF_MACHINE_FLUID, urand(35000, 50000)); + break; + case EVENT_JACKHAMMER: + Talk(EMOTE_HAMMER); + //TODO: expect cast this about 5 times in a row (?), announce it by emote only once + DoCastVictim(SPELL_JACKHAMMER, true); + if (roll_chance_i(50)) + Talk(SAY_HAMMER); + events.ScheduleEvent(EVENT_JACKHAMMER, 30000); + break; + case EVENT_SHADOW_POWER: + DoCast(me, SPELL_SHADOW_POWER); + events.ScheduleEvent(EVENT_SHADOW_POWER, urand(20000, 28000)); + break; + default: + break; } - else - Stream_of_Machine_Fluid_Timer -= diff; - - DoMeleeAttackIfReady(); } - }; + + DoMeleeAttackIfReady(); + } + }; CreatureAI* GetAI(Creature* creature) const { 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 f8c44471b30..e71be639999 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 @@ -29,13 +29,12 @@ enum Spells SPELL_POSITIVE_CHARGE = 39090, SPELL_NEGATIVE_POLARITY = 39091, SPELL_NEGATIVE_CHARGE_STACK = 39092, - SPELL_NEGATIVE_CHARGE = 39093, + SPELL_NEGATIVE_CHARGE = 39093 }; class spell_capacitus_polarity_charge : public SpellScriptLoader { - public: - spell_capacitus_polarity_charge() : SpellScriptLoader("spell_capacitus_polarity_charge") { } + public: spell_capacitus_polarity_charge() : SpellScriptLoader("spell_capacitus_polarity_charge") { } class spell_capacitus_polarity_charge_SpellScript : public SpellScript { 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 0b2370e1b17..fcf32e5c341 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp @@ -89,6 +89,8 @@ class boss_nethermancer_sepethrea : public CreatureScript { _JustDied(); Talk(SAY_DEATH); + if (GameObject* door = me->GetMap()->GetGameObject(instance->GetData64(GO_DOOR_NETHERMANCER))) + door->SetGoState(GO_STATE_ACTIVE); } void UpdateAI(uint32 const diff) diff --git a/src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp b/src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp index 250959a1468..66424fb9e10 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp @@ -31,11 +31,67 @@ class instance_mechanar : public InstanceMapScript { public: instance_mechanar(): InstanceMapScript("instance_mechanar", 554) { } + InstanceScript* GetInstanceScript(InstanceMap* map) const + { + return new instance_mechanar_InstanceMapScript(map); + } + struct instance_mechanar_InstanceMapScript : public InstanceScript { instance_mechanar_InstanceMapScript(Map* map) : InstanceScript(map) { SetBossNumber(EncounterCount); + DoorMoArg1GUID = 0; + DoorMoArg2GUID = 0; + DoorNethermancerGUID = 0; + } + + void OnGameObjectCreate(GameObject* go) + { + switch (go->GetEntry()) + { + case GO_DOOR_MOARG_1: + DoorMoArg1GUID = go->GetGUID(); + break; + case GO_DOOR_MOARG_2: + DoorMoArg2GUID = go->GetGUID(); + break; + case GO_DOOR_NETHERMANCER: + DoorNethermancerGUID = go->GetGUID(); + break; + default: + break; + } + CheckInstanceStatus(); + } + + void CheckInstanceStatus() + { + if (GetBossState(DATA_GATEWATCHER_IRON_HAND) == DONE) + HandleGameObject(DoorMoArg1GUID, true); + + if (GetBossState(DATA_GATEWATCHER_GYROKILL) == DONE) + HandleGameObject(DoorMoArg2GUID, true); + + if (GetBossState(DATA_NETHERMANCER_SEPRETHREA) == DONE) + HandleGameObject(DoorNethermancerGUID, true); + } + + uint64 GetData64(uint32 type) const + { + switch (type) + { + case GO_DOOR_MOARG_1: + return DoorMoArg1GUID; + case GO_DOOR_MOARG_2: + return DoorMoArg2GUID; + case GO_DOOR_NETHERMANCER: + return DoorNethermancerGUID; + default: + break; + } + + return 0; } bool SetBossState(uint32 type, EncounterState state) @@ -46,7 +102,7 @@ class instance_mechanar : public InstanceMapScript switch (type) { case DATA_GATEWATCHER_GYROKILL: - case DATA_IRON_HAND: + case DATA_GATEWATCHER_IRON_HAND: case DATA_MECHANOLORD_CAPACITUS: case DATA_NETHERMANCER_SEPRETHREA: case DATA_PATHALEON_THE_CALCULATOR: @@ -100,12 +156,12 @@ class instance_mechanar : public InstanceMapScript OUT_LOAD_INST_DATA_COMPLETE; } - }; - InstanceScript* GetInstanceScript(InstanceMap* map) const - { - return new instance_mechanar_InstanceMapScript(map); - } + protected: + uint64 DoorMoArg1GUID; + uint64 DoorMoArg2GUID; + uint64 DoorNethermancerGUID; + }; }; void AddSC_instance_mechanar() diff --git a/src/server/scripts/Outland/TempestKeep/Mechanar/mechanar.h b/src/server/scripts/Outland/TempestKeep/Mechanar/mechanar.h index b1c7cf8e25c..0d3a4ea241d 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/mechanar.h +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/mechanar.h @@ -23,10 +23,17 @@ uint32 const EncounterCount = 5; enum DataTypes { DATA_GATEWATCHER_GYROKILL = 0, - DATA_IRON_HAND = 1, + DATA_GATEWATCHER_IRON_HAND = 1, DATA_MECHANOLORD_CAPACITUS = 2, DATA_NETHERMANCER_SEPRETHREA = 3, DATA_PATHALEON_THE_CALCULATOR = 4 }; +enum GameobjectIds +{ + GO_DOOR_MOARG_1 = 184632, + GO_DOOR_MOARG_2 = 184322, + GO_DOOR_NETHERMANCER = 184449 +}; + #endif -- cgit v1.2.3 From abe4b656c8775c2fe25649e83c135510442dc2b8 Mon Sep 17 00:00:00 2001 From: Vincent_Michael Date: Sun, 13 Jan 2013 01:04:59 +0100 Subject: Scripts/Mechanar: * cleanup for door system * Convert mechano lord capacitus in c++ --- sql/updates/world/2013_01_12_04_world_misc.sql | 28 +++++ .../Mechanar/boss_gatewatcher_gyrokill.cpp | 5 +- .../Mechanar/boss_gatewatcher_ironhand.cpp | 16 +-- .../Mechanar/boss_mechano_lord_capacitus.cpp | 131 ++++++++++++++++++++- .../Mechanar/boss_nethermancer_sepethrea.cpp | 2 - .../Mechanar/boss_pathaleon_the_calculator.cpp | 3 +- .../TempestKeep/Mechanar/instance_mechanar.cpp | 71 ++++------- 7 files changed, 192 insertions(+), 64 deletions(-) create mode 100644 sql/updates/world/2013_01_12_04_world_misc.sql (limited to 'src') diff --git a/sql/updates/world/2013_01_12_04_world_misc.sql b/sql/updates/world/2013_01_12_04_world_misc.sql new file mode 100644 index 00000000000..5ba81aa39f1 --- /dev/null +++ b/sql/updates/world/2013_01_12_04_world_misc.sql @@ -0,0 +1,28 @@ +UPDATE `creature_template` SET `AIName` = '',`ScriptName` = 'boss_mechano_lord_capacitus' WHERE `entry` =19219; +UPDATE `creature_template` SET `unit_flags`=`unit_flags` |2 |33554432 WHERE `entry` IN (20405,21534); -- Nether Charge + +DELETE FROM `creature_ai_scripts` WHERE `creature_id` IN (19219,20405); +DELETE FROM `creature_ai_texts` WHERE `entry` BETWEEN -92 AND -87; + +DELETE FROM `creature_template_addon` WHERE `entry` IN (20405,21534); +INSERT INTO `creature_template_addon` (`entry`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES +(20405,0,0,0,0,0,'37670 35150'), -- Nether Charge +(21534,0,0,0,0,0,'37670 35150'); -- Nether Charge (1) + +SET @ENTRY := 20405; -- Nether Charge + +DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY; +UPDATE creature_template SET AIName="SmartAI" WHERE entry=@ENTRY LIMIT 1; +INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES +(@ENTRY,0,0,0,0,0,100,0,14000,14000,1000,1000,11,35151,0,0,0,0,0,0,0,0,0,0.0,0.0,0.0,0.0,"Nether Bomb - Nether Charge Pulse"), +(@ENTRY,0,1,0,0,0,100,0,0,0,0,0,20,0,0,0,0,0,0,0,0,0,0,0.0,0.0,0.0,0.0,"Nether Charge - No Melee"), +(@ENTRY,0,2,0,0,0,100,0,0,0,14000,14000,21,0,0,0,0,0,0,0,0,0,0,0.0,0.0,0.0,0.0,"Nether Charge - Prevent Combat Movement When Start..."); + +DELETE FROM `creature_text` WHERE `entry` = 19219; +INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES +(19219, 0, 0, 'You should split while you can.', 14, 0, 100, 0, 0, 11162, 'Mechano-Lord Capacitus - Aggro'), +(19219, 1, 0, 'Go ahead, gimme your best shot. I can take it!', 14, 0, 100, 0, 0, 11166, 'Mechano-Lord Capacitus - Yells'), -- Reflective Damage Shield +(19219, 2, 0, 'Think you can hurt me, huh? Think I''m afraid a'' you?', 14, 0, 100, 0, 0, 11165, 'Mechano-Lord Capacitus - Yells'), -- Reflective Magic Shield +(19219, 3, 0, 'Can''t say I didn''t warn you!', 14, 0, 100, 0, 0, 11163, 'Mechano-Lord Capacitus - Killing a player'), +(19219, 3, 1, 'Damn, I''m good!', 14, 0, 100, 0, 0, 11164, 'Mechano-Lord Capacitus - Killing a player'), +(19219, 4, 0, 'Bully!', 14, 0, 100, 0, 0, 11167, 'Mechano-Lord Capacitus - Death'); 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 22aff78f441..dc9940c87b8 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_gyrokill.cpp +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_gyrokill.cpp @@ -52,7 +52,8 @@ enum Events class boss_gatewatcher_gyrokill : public CreatureScript { - public: boss_gatewatcher_gyrokill() : CreatureScript("boss_gatewatcher_gyrokill") {} + public: + boss_gatewatcher_gyrokill() : CreatureScript("boss_gatewatcher_gyrokill") {} struct boss_gatewatcher_gyrokillAI : public BossAI { @@ -62,8 +63,6 @@ class boss_gatewatcher_gyrokill : public CreatureScript { _JustDied(); Talk(SAY_DEATH); - if (GameObject* door = me->GetMap()->GetGameObject(instance->GetData64(GO_DOOR_MOARG_2))) - door->SetGoState(GO_STATE_ACTIVE); } void EnterCombat(Unit* /*who*/) 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 c613b3a67bb..440e17a29cf 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_ironhand.cpp +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_ironhand.cpp @@ -55,7 +55,8 @@ enum Events class boss_gatewatcher_iron_hand : public CreatureScript { - public: boss_gatewatcher_iron_hand(): CreatureScript("boss_gatewatcher_iron_hand") {} + public: + boss_gatewatcher_iron_hand(): CreatureScript("boss_gatewatcher_iron_hand") {} struct boss_gatewatcher_iron_handAI : public BossAI { @@ -80,8 +81,6 @@ class boss_gatewatcher_iron_hand : public CreatureScript { _JustDied(); Talk(SAY_DEATH); - if (GameObject* door = me->GetMap()->GetGameObject(instance->GetData64(GO_DOOR_MOARG_1))) - door->SetGoState(GO_STATE_ACTIVE); } void UpdateAI(uint32 const diff) @@ -93,7 +92,8 @@ class boss_gatewatcher_iron_hand : public CreatureScript if (me->HasUnitState(UNIT_STATE_CASTING)) return; - while (uint32 eventId = events.ExecuteEvent()) + + while (uint32 eventId = events.ExecuteEvent()) { switch (eventId) { @@ -122,10 +122,10 @@ class boss_gatewatcher_iron_hand : public CreatureScript } }; - CreatureAI* GetAI(Creature* creature) const - { - return new boss_gatewatcher_iron_handAI(creature); - } + CreatureAI* GetAI(Creature* creature) const + { + return new boss_gatewatcher_iron_handAI(creature); + } }; void AddSC_boss_gatewatcher_iron_hand() 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 e71be639999..1a43798ccef 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 @@ -15,26 +15,150 @@ * with this program. If not, see . */ -//! TODO - Boss not scripted, just ported required spellscript from core - #include "ScriptMgr.h" #include "ScriptedCreature.h" #include "SpellScript.h" +#include "mechanar.h" #include "Player.h" enum Spells { + SPELL_HEADCRACK = 35161, + SPELL_REFLECTIVE_MAGIC_SHIELD = 35158, + SPELL_REFLECTIVE_DAMAGE_SHIELD = 35159, + SPELL_POLARITY_SHIFT = 39096, + SPELL_BERSERK = 26662, + SPELL_NETHER_CHARGE_TIMER = 37670, + SPELL_NETHER_CHARGE_PASSIVE = 37670, + SPELL_POSITIVE_POLARITY = 39088, SPELL_POSITIVE_CHARGE_STACK = 39089, SPELL_POSITIVE_CHARGE = 39090, + SPELL_NEGATIVE_POLARITY = 39091, SPELL_NEGATIVE_CHARGE_STACK = 39092, SPELL_NEGATIVE_CHARGE = 39093 }; +enum Yells +{ + YELL_AGGRO = 0, + YELL_REFLECTIVE_MAGIC_SHIELD = 1, + YELL_REFLECTIVE_DAMAGE_SHIELD = 2, + YELL_KILL = 3, + YELL_DEATH = 4 +}; + +enum Creatures +{ + NPC_NETHER_CHARGE = 20405 +}; + +enum Events +{ + EVENT_NONE = 0, + + EVENT_HEADCRACK = 1, + EVENT_REFLECTIVE_DAMAGE_SHIELD = 2, + EVENT_REFLECTIVE_MAGIE_SHIELD = 3, + EVENT_POSITIVE_SHIFT = 4, + EVENT_SUMMON_NETHER_CHARGE = 5, + EVENT_BERSERK = 6 +}; + +class boss_mechano_lord_capacitus : public CreatureScript +{ + public: + boss_mechano_lord_capacitus() : CreatureScript("boss_mechano_lord_capacitus") { } + + struct boss_mechano_lord_capacitusAI : public BossAI + { + boss_mechano_lord_capacitusAI(Creature* creature) : BossAI(creature, DATA_MECHANOLORD_CAPACITUS) { } + + void EnterCombat(Unit* /*who*/) + { + _EnterCombat(); + Talk(YELL_AGGRO); + events.ScheduleEvent(EVENT_HEADCRACK, 10 * IN_MILLISECONDS); + events.ScheduleEvent(EVENT_REFLECTIVE_DAMAGE_SHIELD, 15 * IN_MILLISECONDS); + events.ScheduleEvent(EVENT_SUMMON_NETHER_CHARGE, 10 * IN_MILLISECONDS); + events.ScheduleEvent(EVENT_BERSERK, 3 * MINUTE * IN_MILLISECONDS); + + if (IsHeroic()) + events.ScheduleEvent(EVENT_POSITIVE_SHIFT, 15 * IN_MILLISECONDS); + } + + void KilledUnit(Unit* /*victim*/) + { + Talk(YELL_KILL); + } + + void JustDied(Unit* /*victim*/) + { + _JustDied(); + Talk(YELL_DEATH); + } + + void UpdateAI(uint32 const diff) + { + if (!UpdateVictim()) + return; + + events.Update(diff); + + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; + + while (uint32 eventId = events.ExecuteEvent()) + { + switch (eventId) + { + case EVENT_HEADCRACK: + DoCastVictim(SPELL_HEADCRACK); + events.ScheduleEvent(EVENT_HEADCRACK, 10 * IN_MILLISECONDS); + break; + case EVENT_REFLECTIVE_DAMAGE_SHIELD: + Talk(YELL_REFLECTIVE_DAMAGE_SHIELD); + DoCast(me, SPELL_REFLECTIVE_DAMAGE_SHIELD); + events.ScheduleEvent(EVENT_REFLECTIVE_MAGIE_SHIELD, 30 * IN_MILLISECONDS); + break; + case EVENT_REFLECTIVE_MAGIE_SHIELD: + Talk(YELL_REFLECTIVE_MAGIC_SHIELD); + DoCast(me, SPELL_REFLECTIVE_MAGIC_SHIELD); + events.ScheduleEvent(EVENT_REFLECTIVE_DAMAGE_SHIELD, 30 * IN_MILLISECONDS); + break; + case EVENT_POSITIVE_SHIFT: + DoCastAOE(SPELL_POLARITY_SHIFT); + events.ScheduleEvent(EVENT_POSITIVE_SHIFT, urand(45, 60) * IN_MILLISECONDS); + break; + case EVENT_SUMMON_NETHER_CHARGE: + Position pos; + me->GetRandomNearPosition(pos, 5.0f); + me->SummonCreature(NPC_NETHER_CHARGE, pos, TEMPSUMMON_TIMED_DESPAWN, 18000); + events.ScheduleEvent(EVENT_SUMMON_NETHER_CHARGE, 10 * IN_MILLISECONDS); + break; + case EVENT_BERSERK: + DoCast(me, SPELL_BERSERK); + break; + default: + break; + } + } + + DoMeleeAttackIfReady(); + } + }; + + CreatureAI* GetAI(Creature* creature) const + { + return new boss_mechano_lord_capacitusAI(creature); + } +}; + class spell_capacitus_polarity_charge : public SpellScriptLoader { - public: spell_capacitus_polarity_charge() : SpellScriptLoader("spell_capacitus_polarity_charge") { } + public: + spell_capacitus_polarity_charge() : SpellScriptLoader("spell_capacitus_polarity_charge") { } class spell_capacitus_polarity_charge_SpellScript : public SpellScript { @@ -137,6 +261,7 @@ class spell_capacitus_polarity_shift : public SpellScriptLoader void AddSC_boss_mechano_lord_capacitus() { + new boss_mechano_lord_capacitus(); new spell_capacitus_polarity_charge(); new spell_capacitus_polarity_shift(); } 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 fcf32e5c341..0b2370e1b17 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp @@ -89,8 +89,6 @@ class boss_nethermancer_sepethrea : public CreatureScript { _JustDied(); Talk(SAY_DEATH); - if (GameObject* door = me->GetMap()->GetGameObject(instance->GetData64(GO_DOOR_NETHERMANCER))) - door->SetGoState(GO_STATE_ACTIVE); } void UpdateAI(uint32 const 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 09b3403f5c2..9d894e41b60 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 @@ -68,7 +68,8 @@ enum Creatures class boss_pathaleon_the_calculator : public CreatureScript { - public: boss_pathaleon_the_calculator(): CreatureScript("boss_pathaleon_the_calculator") {} + public: + boss_pathaleon_the_calculator(): CreatureScript("boss_pathaleon_the_calculator") {} struct boss_pathaleon_the_calculatorAI : public BossAI { diff --git a/src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp b/src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp index 66424fb9e10..e6cb05084ad 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp @@ -16,82 +16,59 @@ * with this program. If not, see . */ -/* ScriptData -SDName: Instance_Mechanar -SD%Complete: 100 -SDComment: -SDCategory: Mechanar -EndScriptData */ #include "ScriptMgr.h" #include "InstanceScript.h" #include "mechanar.h" -class instance_mechanar : public InstanceMapScript +static DoorData const doorData[] = { - public: instance_mechanar(): InstanceMapScript("instance_mechanar", 554) { } + { GO_DOOR_MOARG_1, DATA_GATEWATCHER_IRON_HAND, DOOR_TYPE_PASSAGE, BOUNDARY_NONE }, + { GO_DOOR_MOARG_2, DATA_GATEWATCHER_GYROKILL, DOOR_TYPE_PASSAGE, BOUNDARY_NONE }, + { GO_DOOR_NETHERMANCER, DATA_NETHERMANCER_SEPRETHREA, DOOR_TYPE_ROOM, BOUNDARY_NONE }, + {0, 0, DOOR_TYPE_ROOM, BOUNDARY_NONE } +}; - InstanceScript* GetInstanceScript(InstanceMap* map) const - { - return new instance_mechanar_InstanceMapScript(map); - } +class instance_mechanar : public InstanceMapScript +{ + public: + instance_mechanar(): InstanceMapScript("instance_mechanar", 554) { } struct instance_mechanar_InstanceMapScript : public InstanceScript { instance_mechanar_InstanceMapScript(Map* map) : InstanceScript(map) { SetBossNumber(EncounterCount); - DoorMoArg1GUID = 0; - DoorMoArg2GUID = 0; - DoorNethermancerGUID = 0; + LoadDoorData(doorData); } + - void OnGameObjectCreate(GameObject* go) + void OnGameObjectCreate(GameObject* gameObject) { - switch (go->GetEntry()) + switch (gameObject->GetEntry()) { case GO_DOOR_MOARG_1: - DoorMoArg1GUID = go->GetGUID(); - break; case GO_DOOR_MOARG_2: - DoorMoArg2GUID = go->GetGUID(); - break; case GO_DOOR_NETHERMANCER: - DoorNethermancerGUID = go->GetGUID(); + AddDoor(gameObject, true); break; default: break; } - CheckInstanceStatus(); - } - - void CheckInstanceStatus() - { - if (GetBossState(DATA_GATEWATCHER_IRON_HAND) == DONE) - HandleGameObject(DoorMoArg1GUID, true); - - if (GetBossState(DATA_GATEWATCHER_GYROKILL) == DONE) - HandleGameObject(DoorMoArg2GUID, true); - - if (GetBossState(DATA_NETHERMANCER_SEPRETHREA) == DONE) - HandleGameObject(DoorNethermancerGUID, true); } - uint64 GetData64(uint32 type) const + void OnGameObjectRemove(GameObject* gameObject) { - switch (type) + switch (gameObject->GetEntry()) { case GO_DOOR_MOARG_1: - return DoorMoArg1GUID; case GO_DOOR_MOARG_2: - return DoorMoArg2GUID; case GO_DOOR_NETHERMANCER: - return DoorNethermancerGUID; + AddDoor(gameObject, false); + break; default: break; } - - return 0; } bool SetBossState(uint32 type, EncounterState state) @@ -156,12 +133,12 @@ class instance_mechanar : public InstanceMapScript OUT_LOAD_INST_DATA_COMPLETE; } - - protected: - uint64 DoorMoArg1GUID; - uint64 DoorMoArg2GUID; - uint64 DoorNethermancerGUID; }; + + InstanceScript* GetInstanceScript(InstanceMap* map) const + { + return new instance_mechanar_InstanceMapScript(map); + } }; void AddSC_instance_mechanar() -- cgit v1.2.3 From 2f1bbb2c7ae29ee9f7509395f126bd341f683046 Mon Sep 17 00:00:00 2001 From: joschiwald Date: Sun, 13 Jan 2013 02:41:40 +0100 Subject: Misc: Reorder more scripts in some script files and some cosmetic stuff --- src/server/scripts/Spells/spell_dk.cpp | 2 +- src/server/scripts/Spells/spell_holiday.cpp | 8 +- src/server/scripts/Spells/spell_hunter.cpp | 4 - src/server/scripts/Spells/spell_rogue.cpp | 3 +- src/server/scripts/Spells/spell_shaman.cpp | 549 +++++++++++---------- src/server/scripts/Spells/spell_warlock.cpp | 714 ++++++++++++++-------------- 6 files changed, 640 insertions(+), 640 deletions(-) (limited to 'src') diff --git a/src/server/scripts/Spells/spell_dk.cpp b/src/server/scripts/Spells/spell_dk.cpp index afb9a625761..060db02d53c 100644 --- a/src/server/scripts/Spells/spell_dk.cpp +++ b/src/server/scripts/Spells/spell_dk.cpp @@ -172,7 +172,7 @@ class spell_dk_anti_magic_zone : public SpellScriptLoader return true; } - bool Validate(SpellInfo const* /*spellEntry*/) + bool Validate(SpellInfo const* /*spellInfo*/) { if (!sSpellMgr->GetSpellInfo(SPELL_DK_ANTI_MAGIC_SHELL_TALENT)) return false; diff --git a/src/server/scripts/Spells/spell_holiday.cpp b/src/server/scripts/Spells/spell_holiday.cpp index 83532e7d72d..d883b4d7da7 100644 --- a/src/server/scripts/Spells/spell_holiday.cpp +++ b/src/server/scripts/Spells/spell_holiday.cpp @@ -17,6 +17,7 @@ /* * Spells used in holidays/game events that do not fit any other category. + * Ordered alphabetically using scriptname. * Scriptnames in this file should be prefixed with "spell_#holidayname_". */ @@ -133,6 +134,7 @@ class spell_hallow_end_trick : public SpellScriptLoader class spell_hallow_end_trick_SpellScript : public SpellScript { PrepareSpellScript(spell_hallow_end_trick_SpellScript); + bool Validate(SpellInfo const* /*spell*/) { if (!sSpellMgr->GetSpellInfo(SPELL_PIRATE_COSTUME_MALE) || !sSpellMgr->GetSpellInfo(SPELL_PIRATE_COSTUME_FEMALE) || !sSpellMgr->GetSpellInfo(SPELL_NINJA_COSTUME_MALE) @@ -170,7 +172,7 @@ class spell_hallow_end_trick : public SpellScriptLoader break; } - caster->CastSpell(target, spellId, true, NULL); + caster->CastSpell(target, spellId, true); } } @@ -218,8 +220,8 @@ class spell_hallow_end_trick_or_treat : public SpellScriptLoader Unit* caster = GetCaster(); if (Player* target = GetHitPlayer()) { - caster->CastSpell(target, roll_chance_i(50) ? SPELL_TRICK : SPELL_TREAT, true, NULL); - caster->CastSpell(target, SPELL_TRICKED_OR_TREATED, true, NULL); + caster->CastSpell(target, roll_chance_i(50) ? SPELL_TRICK : SPELL_TREAT, true); + caster->CastSpell(target, SPELL_TRICKED_OR_TREATED, true); } } diff --git a/src/server/scripts/Spells/spell_hunter.cpp b/src/server/scripts/Spells/spell_hunter.cpp index b3c429d27aa..a9b21807899 100644 --- a/src/server/scripts/Spells/spell_hunter.cpp +++ b/src/server/scripts/Spells/spell_hunter.cpp @@ -286,7 +286,6 @@ class spell_hun_last_stand_pet : public SpellScriptLoader void Register() { - // add dummy effect spell handler to pet's Last Stand OnEffectHitTarget += SpellEffectFn(spell_hun_last_stand_pet_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; @@ -452,7 +451,6 @@ class spell_hun_pet_carrion_feeder : public SpellScriptLoader void Register() { - // add dummy effect spell handler to pet's Last Stand OnEffectHit += SpellEffectFn(spell_hun_pet_carrion_feeder_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); OnCheckCast += SpellCheckCastFn(spell_hun_pet_carrion_feeder_SpellScript::CheckIfCorpseNear); } @@ -501,7 +499,6 @@ class spell_hun_pet_heart_of_the_phoenix : public SpellScriptLoader void Register() { - // add dummy effect spell handler to pet's Last Stand OnEffectHitTarget += SpellEffectFn(spell_hun_pet_heart_of_the_phoenix_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); } }; @@ -551,7 +548,6 @@ class spell_hun_readiness : public SpellScriptLoader void Register() { - // add dummy effect spell handler to Readiness OnEffectHitTarget += SpellEffectFn(spell_hun_readiness_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; diff --git a/src/server/scripts/Spells/spell_rogue.cpp b/src/server/scripts/Spells/spell_rogue.cpp index 1a2738afdbb..70b677f5aaa 100644 --- a/src/server/scripts/Spells/spell_rogue.cpp +++ b/src/server/scripts/Spells/spell_rogue.cpp @@ -250,7 +250,7 @@ class spell_rog_preparation : public SpellScriptLoader return GetCaster()->GetTypeId() == TYPEID_PLAYER; } - bool Validate(SpellInfo const* /*spellEntry*/) + bool Validate(SpellInfo const* /*spellInfo*/) { if (!sSpellMgr->GetSpellInfo(SPELL_ROGUE_GLYPH_OF_PREPARATION)) return false; @@ -292,7 +292,6 @@ class spell_rog_preparation : public SpellScriptLoader void Register() { - // add dummy effect spell handler to Preparation OnEffectHitTarget += SpellEffectFn(spell_rog_preparation_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; diff --git a/src/server/scripts/Spells/spell_shaman.cpp b/src/server/scripts/Spells/spell_shaman.cpp index ff7c83b95a5..0d249953421 100644 --- a/src/server/scripts/Spells/spell_shaman.cpp +++ b/src/server/scripts/Spells/spell_shaman.cpp @@ -30,28 +30,69 @@ enum ShamanSpells { - SHAMAN_SPELL_GLYPH_OF_MANA_TIDE = 55441, - SHAMAN_SPELL_MANA_TIDE_TOTEM = 39609, - SHAMAN_SPELL_FIRE_NOVA_R1 = 1535, - SHAMAN_SPELL_FIRE_NOVA_TRIGGERED_R1 = 8349, - SHAMAN_SPELL_SATED = 57724, - SHAMAN_SPELL_EXHAUSTION = 57723, + SPELL_SHAMAN_ANCESTRAL_AWAKENING_PROC = 52752, + SPELL_SHAMAN_BIND_SIGHT = 6277, + SPELL_SHAMAN_CLEANSING_TOTEM_EFFECT = 52025, + SPELL_SHAMAN_EXHAUSTION = 57723, + SPELL_SHAMAN_FIRE_NOVA_R1 = 1535, + SPELL_SHAMAN_FIRE_NOVA_TRIGGERED_R1 = 8349, + SPELL_SHAMAN_GLYPH_OF_HEALING_STREAM_TOTEM = 55456, + SPELL_SHAMAN_GLYPH_OF_MANA_TIDE = 55441, + SPELL_SHAMAN_LAVA_FLOWS_R1 = 51480, + SPELL_SHAMAN_LAVA_FLOWS_TRIGGERED_R1 = 64694, + SPELL_SHAMAN_MANA_SPRING_TOTEM_ENERGIZE = 52032, + SPELL_SHAMAN_MANA_TIDE_TOTEM = 39609, + SPELL_SHAMAN_SATED = 57724, + SPELL_SHAMAN_STORM_EARTH_AND_FIRE = 51483, + SPELL_SHAMAN_TOTEM_EARTHBIND_EARTHGRAB = 64695, + SPELL_SHAMAN_TOTEM_EARTHBIND_TOTEM = 6474, + SPELL_SHAMAN_TOTEM_EARTHEN_POWER = 59566, + SPELL_SHAMAN_TOTEM_HEALING_STREAM_HEAL = 52042 +}; - SHAMAN_SPELL_STORM_EARTH_AND_FIRE = 51483, - EARTHBIND_TOTEM_SPELL_EARTHGRAB = 64695, +enum ShamanSpellIcons +{ + SHAMAN_ICON_ID_RESTORATIVE_TOTEMS = 338, + SHAMAN_ICON_ID_SHAMAN_LAVA_FLOW = 3087 +}; - // For Earthen Power - SHAMAN_TOTEM_SPELL_EARTHBIND_TOTEM = 6474, - SHAMAN_TOTEM_SPELL_EARTHEN_POWER = 59566, +// 52759 - Ancestral Awakening (Proc) +class spell_sha_ancestral_awakening_proc : public SpellScriptLoader +{ + public: + spell_sha_ancestral_awakening_proc() : SpellScriptLoader("spell_sha_ancestral_awakening_proc") { } - SHAMAN_BIND_SIGHT = 6277, + class spell_sha_ancestral_awakening_proc_SpellScript : public SpellScript + { + PrepareSpellScript(spell_sha_ancestral_awakening_proc_SpellScript); - ICON_ID_SHAMAN_LAVA_FLOW = 3087, - SHAMAN_LAVA_FLOWS_R1 = 51480, - SHAMAN_LAVA_FLOWS_TRIGGERED_R1 = 64694, + bool Validate(SpellInfo const* /*spellInfo*/) + { + if (!sSpellMgr->GetSpellInfo(SPELL_SHAMAN_ANCESTRAL_AWAKENING_PROC)) + return false; + return true; + } + + void HandleDummy(SpellEffIndex /*effIndex*/) + { + int32 damage = GetEffectValue(); + if (GetHitUnit()) + GetCaster()->CastCustomSpell(GetHitUnit(), SPELL_SHAMAN_ANCESTRAL_AWAKENING_PROC, &damage, NULL, NULL, true); + } + + void Register() + { + OnEffectHitTarget += SpellEffectFn(spell_sha_ancestral_awakening_proc_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + } + }; + + SpellScript* GetSpellScript() const + { + return new spell_sha_ancestral_awakening_proc_SpellScript(); + } }; -// 51474 - Astral shift +// 51474 - Astral Shift class spell_sha_astral_shift : public SpellScriptLoader { public: @@ -95,115 +136,136 @@ class spell_sha_astral_shift : public SpellScriptLoader } }; -// 1535 Fire Nova -class spell_sha_fire_nova : public SpellScriptLoader +// 2825 - Bloodlust +class spell_sha_bloodlust : public SpellScriptLoader { public: - spell_sha_fire_nova() : SpellScriptLoader("spell_sha_fire_nova") { } + spell_sha_bloodlust() : SpellScriptLoader("spell_sha_bloodlust") { } - class spell_sha_fire_nova_SpellScript : public SpellScript + class spell_sha_bloodlust_SpellScript : public SpellScript { - PrepareSpellScript(spell_sha_fire_nova_SpellScript); + PrepareSpellScript(spell_sha_bloodlust_SpellScript); - bool Validate(SpellInfo const* spellEntry) + bool Validate(SpellInfo const* /*spellInfo*/) { - if (!sSpellMgr->GetSpellInfo(SHAMAN_SPELL_FIRE_NOVA_R1) || sSpellMgr->GetFirstSpellInChain(SHAMAN_SPELL_FIRE_NOVA_R1) != sSpellMgr->GetFirstSpellInChain(spellEntry->Id)) - return false; - - uint8 rank = sSpellMgr->GetSpellRank(spellEntry->Id); - if (!sSpellMgr->GetSpellWithRank(SHAMAN_SPELL_FIRE_NOVA_TRIGGERED_R1, rank, true)) + if (!sSpellMgr->GetSpellInfo(SPELL_SHAMAN_SATED)) return false; return true; } - SpellCastResult CheckFireTotem() + void RemoveInvalidTargets(std::list& targets) { - // fire totem - if (!GetCaster()->m_SummonSlot[1]) - { - SetCustomCastResultMessage(SPELL_CUSTOM_ERROR_MUST_HAVE_FIRE_TOTEM); - return SPELL_FAILED_CUSTOM_ERROR; - } + targets.remove_if(Trinity::UnitAuraCheck(true, SPELL_SHAMAN_SATED)); + } - return SPELL_CAST_OK; + void ApplyDebuff() + { + if (Unit* target = GetHitUnit()) + target->CastSpell(target, SPELL_SHAMAN_SATED, true); } - void HandleDummy(SpellEffIndex /*effIndex*/) + void Register() { - if (Unit* caster = GetCaster()) + OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_sha_bloodlust_SpellScript::RemoveInvalidTargets, EFFECT_0, TARGET_UNIT_CASTER_AREA_RAID); + OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_sha_bloodlust_SpellScript::RemoveInvalidTargets, EFFECT_1, TARGET_UNIT_CASTER_AREA_RAID); + OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_sha_bloodlust_SpellScript::RemoveInvalidTargets, EFFECT_2, TARGET_UNIT_CASTER_AREA_RAID); + AfterHit += SpellHitFn(spell_sha_bloodlust_SpellScript::ApplyDebuff); + } + }; + + SpellScript* GetSpellScript() const + { + return new spell_sha_bloodlust_SpellScript(); + } +}; + +// -1064 - Chain Heal +class spell_sha_chain_heal : public SpellScriptLoader +{ + public: + spell_sha_chain_heal() : SpellScriptLoader("spell_sha_chain_heal") { } + + class spell_sha_chain_heal_SpellScript : public SpellScript + { + PrepareSpellScript(spell_sha_chain_heal_SpellScript); + + bool Load() + { + firstHeal = true; + riptide = false; + return true; + } + + void HandleHeal(SpellEffIndex /*effIndex*/) + { + if (firstHeal) { - uint8 rank = sSpellMgr->GetSpellRank(GetSpellInfo()->Id); - if (uint32 spellId = sSpellMgr->GetSpellWithRank(SHAMAN_SPELL_FIRE_NOVA_TRIGGERED_R1, rank)) + // Check if the target has Riptide + if (AuraEffect* aurEff = GetHitUnit()->GetAuraEffect(SPELL_AURA_PERIODIC_HEAL, SPELLFAMILY_SHAMAN, 0, 0, 0x10, GetCaster()->GetGUID())) { - Creature* totem = caster->GetMap()->GetCreature(caster->m_SummonSlot[1]); - if (totem && totem->isTotem()) - caster->CastSpell(totem, spellId, true); + riptide = true; + // Consume it + GetHitUnit()->RemoveAura(aurEff->GetBase()); } + firstHeal = false; } + // Riptide increases the Chain Heal effect by 25% + if (riptide) + SetHitHeal(GetHitHeal() * 1.25f); } void Register() { - OnCheckCast += SpellCheckCastFn(spell_sha_fire_nova_SpellScript::CheckFireTotem); - OnEffectHitTarget += SpellEffectFn(spell_sha_fire_nova_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + OnEffectHitTarget += SpellEffectFn(spell_sha_chain_heal_SpellScript::HandleHeal, EFFECT_0, SPELL_EFFECT_HEAL); } + + bool firstHeal; + bool riptide; }; SpellScript* GetSpellScript() const { - return new spell_sha_fire_nova_SpellScript(); + return new spell_sha_chain_heal_SpellScript(); } }; -// 39610 Mana Tide Totem -class spell_sha_mana_tide_totem : public SpellScriptLoader +// 8171 - Cleansing Totem (Pulse) +class spell_sha_cleansing_totem_pulse : public SpellScriptLoader { public: - spell_sha_mana_tide_totem() : SpellScriptLoader("spell_sha_mana_tide_totem") { } + spell_sha_cleansing_totem_pulse() : SpellScriptLoader("spell_sha_cleansing_totem_pulse") { } - class spell_sha_mana_tide_totem_SpellScript : public SpellScript + class spell_sha_cleansing_totem_pulse_SpellScript : public SpellScript { - PrepareSpellScript(spell_sha_mana_tide_totem_SpellScript); + PrepareSpellScript(spell_sha_cleansing_totem_pulse_SpellScript); - bool Validate(SpellInfo const* /*spellEntry*/) + bool Validate(SpellInfo const* /*spellInfo*/) { - if (!sSpellMgr->GetSpellInfo(SHAMAN_SPELL_GLYPH_OF_MANA_TIDE) || !sSpellMgr->GetSpellInfo(SHAMAN_SPELL_MANA_TIDE_TOTEM)) + if (!sSpellMgr->GetSpellInfo(SPELL_SHAMAN_CLEANSING_TOTEM_EFFECT)) return false; return true; } void HandleDummy(SpellEffIndex /*effIndex*/) { - if (Unit* caster = GetCaster()) - if (Unit* unitTarget = GetHitUnit()) - { - if (unitTarget->getPowerType() == POWER_MANA) - { - int32 effValue = GetEffectValue(); - // Glyph of Mana Tide - if (Unit* owner = caster->GetOwner()) - if (AuraEffect* dummy = owner->GetAuraEffect(SHAMAN_SPELL_GLYPH_OF_MANA_TIDE, 0)) - effValue += dummy->GetAmount(); - // Regenerate 6% of Total Mana Every 3 secs - int32 effBasePoints0 = int32(CalculatePct(unitTarget->GetMaxPower(POWER_MANA), effValue)); - caster->CastCustomSpell(unitTarget, SHAMAN_SPELL_MANA_TIDE_TOTEM, &effBasePoints0, NULL, NULL, true, NULL, NULL, GetOriginalCaster()->GetGUID()); - } - } + int32 bp = 1; + if (GetCaster() && GetHitUnit() && GetOriginalCaster()) + GetCaster()->CastCustomSpell(GetHitUnit(), SPELL_SHAMAN_CLEANSING_TOTEM_EFFECT, NULL, &bp, NULL, true, NULL, NULL, GetOriginalCaster()->GetGUID()); } void Register() { - OnEffectHitTarget += SpellEffectFn(spell_sha_mana_tide_totem_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + OnEffectHitTarget += SpellEffectFn(spell_sha_cleansing_totem_pulse_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; SpellScript* GetSpellScript() const { - return new spell_sha_mana_tide_totem_SpellScript(); + return new spell_sha_cleansing_totem_pulse_SpellScript(); } }; -// 6474 - Earthbind Totem - Fix Talent:Earthen Power +// 6474 - Earthbind Totem - Fix Talent: Earthen Power class spell_sha_earthbind_totem : public SpellScriptLoader { public: @@ -213,9 +275,9 @@ class spell_sha_earthbind_totem : public SpellScriptLoader { PrepareAuraScript(spell_sha_earthbind_totem_AuraScript); - bool Validate(SpellInfo const* /*spellEntry*/) + bool Validate(SpellInfo const* /*spellInfo*/) { - if (!sSpellMgr->GetSpellInfo(SHAMAN_TOTEM_SPELL_EARTHBIND_TOTEM) || !sSpellMgr->GetSpellInfo(SHAMAN_TOTEM_SPELL_EARTHEN_POWER)) + if (!sSpellMgr->GetSpellInfo(SPELL_SHAMAN_TOTEM_EARTHBIND_TOTEM) || !sSpellMgr->GetSpellInfo(SPELL_SHAMAN_TOTEM_EARTHEN_POWER)) return false; return true; } @@ -227,7 +289,7 @@ class spell_sha_earthbind_totem : public SpellScriptLoader if (Player* owner = GetCaster()->GetCharmerOrOwnerPlayerOrPlayerItself()) if (AuraEffect* aur = owner->GetDummyAuraEffect(SPELLFAMILY_SHAMAN, 2289, 0)) if (roll_chance_i(aur->GetBaseAmount())) - GetTarget()->CastSpell((Unit*)NULL, SHAMAN_TOTEM_SPELL_EARTHEN_POWER, true); + GetTarget()->CastSpell((Unit*)NULL, SPELL_SHAMAN_TOTEM_EARTHEN_POWER, true); } void Apply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) @@ -238,10 +300,10 @@ class spell_sha_earthbind_totem : public SpellScriptLoader if (!owner) return; // Storm, Earth and Fire - if (AuraEffect* aurEff = owner->GetAuraEffectOfRankedSpell(SHAMAN_SPELL_STORM_EARTH_AND_FIRE, EFFECT_1)) + if (AuraEffect* aurEff = owner->GetAuraEffectOfRankedSpell(SPELL_SHAMAN_STORM_EARTH_AND_FIRE, EFFECT_1)) { if (roll_chance_i(aurEff->GetAmount())) - GetCaster()->CastSpell(GetCaster(), EARTHBIND_TOTEM_SPELL_EARTHGRAB, false); + GetCaster()->CastSpell(GetCaster(), SPELL_SHAMAN_TOTEM_EARTHBIND_EARTHGRAB, false); } } @@ -275,6 +337,7 @@ class EarthenPowerTargetSelector } }; +// 59566 - Earthen Power class spell_sha_earthen_power : public SpellScriptLoader { public: @@ -301,177 +364,112 @@ class spell_sha_earthen_power : public SpellScriptLoader } }; -class spell_sha_bloodlust : public SpellScriptLoader +// -1535 - Fire Nova +class spell_sha_fire_nova : public SpellScriptLoader { public: - spell_sha_bloodlust() : SpellScriptLoader("spell_sha_bloodlust") { } + spell_sha_fire_nova() : SpellScriptLoader("spell_sha_fire_nova") { } - class spell_sha_bloodlust_SpellScript : public SpellScript + class spell_sha_fire_nova_SpellScript : public SpellScript { - PrepareSpellScript(spell_sha_bloodlust_SpellScript); + PrepareSpellScript(spell_sha_fire_nova_SpellScript); - bool Validate(SpellInfo const* /*spellEntry*/) + bool Validate(SpellInfo const* spellInfo) { - if (!sSpellMgr->GetSpellInfo(SHAMAN_SPELL_SATED)) + if (!sSpellMgr->GetSpellInfo(SPELL_SHAMAN_FIRE_NOVA_R1) || sSpellMgr->GetFirstSpellInChain(SPELL_SHAMAN_FIRE_NOVA_R1) != sSpellMgr->GetFirstSpellInChain(spellInfo->Id)) return false; - return true; - } - void RemoveInvalidTargets(std::list& targets) - { - targets.remove_if(Trinity::UnitAuraCheck(true, SHAMAN_SPELL_SATED)); - } - - void ApplyDebuff() - { - if (Unit* target = GetHitUnit()) - target->CastSpell(target, SHAMAN_SPELL_SATED, true); - } - - void Register() - { - OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_sha_bloodlust_SpellScript::RemoveInvalidTargets, EFFECT_0, TARGET_UNIT_CASTER_AREA_RAID); - OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_sha_bloodlust_SpellScript::RemoveInvalidTargets, EFFECT_1, TARGET_UNIT_CASTER_AREA_RAID); - OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_sha_bloodlust_SpellScript::RemoveInvalidTargets, EFFECT_2, TARGET_UNIT_CASTER_AREA_RAID); - AfterHit += SpellHitFn(spell_sha_bloodlust_SpellScript::ApplyDebuff); - } - }; - - SpellScript* GetSpellScript() const - { - return new spell_sha_bloodlust_SpellScript(); - } -}; - -class spell_sha_heroism : public SpellScriptLoader -{ - public: - spell_sha_heroism() : SpellScriptLoader("spell_sha_heroism") { } - - class spell_sha_heroism_SpellScript : public SpellScript - { - PrepareSpellScript(spell_sha_heroism_SpellScript); - - bool Validate(SpellInfo const* /*spellEntry*/) - { - if (!sSpellMgr->GetSpellInfo(SHAMAN_SPELL_EXHAUSTION)) + uint8 rank = sSpellMgr->GetSpellRank(spellInfo->Id); + if (!sSpellMgr->GetSpellWithRank(SPELL_SHAMAN_FIRE_NOVA_TRIGGERED_R1, rank, true)) return false; return true; } - void RemoveInvalidTargets(std::list& targets) - { - targets.remove_if(Trinity::UnitAuraCheck(true, SHAMAN_SPELL_EXHAUSTION)); - } - - void ApplyDebuff() - { - if (Unit* target = GetHitUnit()) - target->CastSpell(target, SHAMAN_SPELL_EXHAUSTION, true); - } - - void Register() + SpellCastResult CheckFireTotem() { - OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_sha_heroism_SpellScript::RemoveInvalidTargets, EFFECT_0, TARGET_UNIT_CASTER_AREA_RAID); - OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_sha_heroism_SpellScript::RemoveInvalidTargets, EFFECT_1, TARGET_UNIT_CASTER_AREA_RAID); - OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_sha_heroism_SpellScript::RemoveInvalidTargets, EFFECT_2, TARGET_UNIT_CASTER_AREA_RAID); - AfterHit += SpellHitFn(spell_sha_heroism_SpellScript::ApplyDebuff); - } - }; - - SpellScript* GetSpellScript() const - { - return new spell_sha_heroism_SpellScript(); - } -}; - -enum AncestralAwakeningProc -{ - SPELL_ANCESTRAL_AWAKENING_PROC = 52752, -}; - -class spell_sha_ancestral_awakening_proc : public SpellScriptLoader -{ - public: - spell_sha_ancestral_awakening_proc() : SpellScriptLoader("spell_sha_ancestral_awakening_proc") { } - - class spell_sha_ancestral_awakening_proc_SpellScript : public SpellScript - { - PrepareSpellScript(spell_sha_ancestral_awakening_proc_SpellScript); + // fire totem + if (!GetCaster()->m_SummonSlot[1]) + { + SetCustomCastResultMessage(SPELL_CUSTOM_ERROR_MUST_HAVE_FIRE_TOTEM); + return SPELL_FAILED_CUSTOM_ERROR; + } - bool Validate(SpellInfo const* /*SpellEntry*/) - { - if (!sSpellMgr->GetSpellInfo(SPELL_ANCESTRAL_AWAKENING_PROC)) - return false; - return true; + return SPELL_CAST_OK; } - void HandleDummy(SpellEffIndex /* effIndex */) + void HandleDummy(SpellEffIndex /*effIndex*/) { - int32 damage = GetEffectValue(); - if (GetCaster() && GetHitUnit()) - GetCaster()->CastCustomSpell(GetHitUnit(), SPELL_ANCESTRAL_AWAKENING_PROC, &damage, NULL, NULL, true); + if (Unit* caster = GetCaster()) + { + uint8 rank = sSpellMgr->GetSpellRank(GetSpellInfo()->Id); + if (uint32 spellId = sSpellMgr->GetSpellWithRank(SPELL_SHAMAN_FIRE_NOVA_TRIGGERED_R1, rank)) + { + Creature* totem = caster->GetMap()->GetCreature(caster->m_SummonSlot[1]); + if (totem && totem->isTotem()) + caster->CastSpell(totem, spellId, true); + } + } } void Register() { - OnEffectHitTarget += SpellEffectFn(spell_sha_ancestral_awakening_proc_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + OnCheckCast += SpellCheckCastFn(spell_sha_fire_nova_SpellScript::CheckFireTotem); + OnEffectHitTarget += SpellEffectFn(spell_sha_fire_nova_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; SpellScript* GetSpellScript() const { - return new spell_sha_ancestral_awakening_proc_SpellScript(); + return new spell_sha_fire_nova_SpellScript(); } }; -enum CleansingTotemPulse -{ - SPELL_CLEANSING_TOTEM_EFFECT = 52025, -}; - -class spell_sha_cleansing_totem_pulse : public SpellScriptLoader +// -8050 - Flame Shock +class spell_sha_flame_shock : public SpellScriptLoader { public: - spell_sha_cleansing_totem_pulse() : SpellScriptLoader("spell_sha_cleansing_totem_pulse") { } + spell_sha_flame_shock() : SpellScriptLoader("spell_sha_flame_shock") { } - class spell_sha_cleansing_totem_pulse_SpellScript : public SpellScript + class spell_sha_flame_shock_AuraScript : public AuraScript { - PrepareSpellScript(spell_sha_cleansing_totem_pulse_SpellScript); + PrepareAuraScript(spell_sha_flame_shock_AuraScript); - bool Validate(SpellInfo const* /*SpellEntry*/) + bool Validate(SpellInfo const* /*spell*/) { - if (!sSpellMgr->GetSpellInfo(SPELL_CLEANSING_TOTEM_EFFECT)) + if (!sSpellMgr->GetSpellInfo(SPELL_SHAMAN_LAVA_FLOWS_R1)) + return false; + if (!sSpellMgr->GetSpellInfo(SPELL_SHAMAN_LAVA_FLOWS_TRIGGERED_R1)) return false; return true; } - void HandleDummy(SpellEffIndex /* effIndex */) + void HandleDispel(DispelInfo* /*dispelInfo*/) { - int32 bp = 1; - if (GetCaster() && GetHitUnit() && GetOriginalCaster()) - GetCaster()->CastCustomSpell(GetHitUnit(), SPELL_CLEANSING_TOTEM_EFFECT, NULL, &bp, NULL, true, NULL, NULL, GetOriginalCaster()->GetGUID()); + if (Unit* caster = GetCaster()) + // Lava Flows + if (AuraEffect const* aurEff = caster->GetDummyAuraEffect(SPELLFAMILY_SHAMAN, SHAMAN_ICON_ID_SHAMAN_LAVA_FLOW, EFFECT_0)) + { + if (sSpellMgr->GetFirstSpellInChain(SPELL_SHAMAN_LAVA_FLOWS_R1) != sSpellMgr->GetFirstSpellInChain(aurEff->GetId())) + return; + + uint8 rank = sSpellMgr->GetSpellRank(aurEff->GetId()); + caster->CastSpell(caster, sSpellMgr->GetSpellWithRank(SPELL_SHAMAN_LAVA_FLOWS_TRIGGERED_R1, rank), true); + } } void Register() { - OnEffectHitTarget += SpellEffectFn(spell_sha_cleansing_totem_pulse_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + AfterDispel += AuraDispelFn(spell_sha_flame_shock_AuraScript::HandleDispel); } }; - SpellScript* GetSpellScript() const + AuraScript* GetAuraScript() const { - return new spell_sha_cleansing_totem_pulse_SpellScript(); + return new spell_sha_flame_shock_AuraScript(); } }; -enum HealingStreamTotem -{ - SPELL_GLYPH_OF_HEALING_STREAM_TOTEM = 55456, - ICON_ID_RESTORATIVE_TOTEMS = 338, - SPELL_HEALING_STREAM_TOTEM_HEAL = 52042, -}; - +// 52041, 52046, 52047, 52048, 52049, 52050, 58759, 58760, 58761 - Healing Stream Totem class spell_sha_healing_stream_totem : public SpellScriptLoader { public: @@ -481,14 +479,14 @@ class spell_sha_healing_stream_totem : public SpellScriptLoader { PrepareSpellScript(spell_sha_healing_stream_totem_SpellScript); - bool Validate(SpellInfo const* /*SpellEntry*/) + bool Validate(SpellInfo const* /*spellInfo*/) { - if (!sSpellMgr->GetSpellInfo(SPELL_GLYPH_OF_HEALING_STREAM_TOTEM) || !sSpellMgr->GetSpellInfo(SPELL_HEALING_STREAM_TOTEM_HEAL)) + if (!sSpellMgr->GetSpellInfo(SPELL_SHAMAN_GLYPH_OF_HEALING_STREAM_TOTEM) || !sSpellMgr->GetSpellInfo(SPELL_SHAMAN_TOTEM_HEALING_STREAM_HEAL)) return false; return true; } - void HandleDummy(SpellEffIndex /* effIndex */) + void HandleDummy(SpellEffIndex /*effIndex*/) { int32 damage = GetEffectValue(); SpellInfo const* triggeringSpell = GetTriggeringSpell(); @@ -501,16 +499,16 @@ class spell_sha_healing_stream_totem : public SpellScriptLoader damage = int32(owner->SpellHealingBonusDone(target, triggeringSpell, damage, HEAL)); // Restorative Totems - if (AuraEffect* dummy = owner->GetAuraEffect(SPELL_AURA_DUMMY, SPELLFAMILY_SHAMAN, ICON_ID_RESTORATIVE_TOTEMS, 1)) + if (AuraEffect* dummy = owner->GetAuraEffect(SPELL_AURA_DUMMY, SPELLFAMILY_SHAMAN, SHAMAN_ICON_ID_RESTORATIVE_TOTEMS, 1)) AddPct(damage, dummy->GetAmount()); // Glyph of Healing Stream Totem - if (AuraEffect const* aurEff = owner->GetAuraEffect(SPELL_GLYPH_OF_HEALING_STREAM_TOTEM, EFFECT_0)) + if (AuraEffect const* aurEff = owner->GetAuraEffect(SPELL_SHAMAN_GLYPH_OF_HEALING_STREAM_TOTEM, EFFECT_0)) AddPct(damage, aurEff->GetAmount()); damage = int32(target->SpellHealingBonusTaken(owner, triggeringSpell, damage, HEAL)); } - caster->CastCustomSpell(target, SPELL_HEALING_STREAM_TOTEM_HEAL, &damage, 0, 0, true, 0, 0, GetOriginalCaster()->GetGUID()); + caster->CastCustomSpell(target, SPELL_SHAMAN_TOTEM_HEALING_STREAM_HEAL, &damage, 0, 0, true, 0, 0, GetOriginalCaster()->GetGUID()); } } @@ -526,49 +524,50 @@ class spell_sha_healing_stream_totem : public SpellScriptLoader } }; -enum ManaSpringTotem -{ - SPELL_MANA_SPRING_TOTEM_ENERGIZE = 52032, -}; - -class spell_sha_mana_spring_totem : public SpellScriptLoader +// 32182 - Heroism +class spell_sha_heroism : public SpellScriptLoader { public: - spell_sha_mana_spring_totem() : SpellScriptLoader("spell_sha_mana_spring_totem") { } + spell_sha_heroism() : SpellScriptLoader("spell_sha_heroism") { } - class spell_sha_mana_spring_totem_SpellScript : public SpellScript + class spell_sha_heroism_SpellScript : public SpellScript { - PrepareSpellScript(spell_sha_mana_spring_totem_SpellScript); + PrepareSpellScript(spell_sha_heroism_SpellScript); - bool Validate(SpellInfo const* /*SpellEntry*/) + bool Validate(SpellInfo const* /*spellInfo*/) { - if (!sSpellMgr->GetSpellInfo(SPELL_MANA_SPRING_TOTEM_ENERGIZE)) + if (!sSpellMgr->GetSpellInfo(SPELL_SHAMAN_EXHAUSTION)) return false; return true; } - void HandleDummy(SpellEffIndex /* effIndex */) + void RemoveInvalidTargets(std::list& targets) + { + targets.remove_if(Trinity::UnitAuraCheck(true, SPELL_SHAMAN_EXHAUSTION)); + } + + void ApplyDebuff() { - int32 damage = GetEffectValue(); if (Unit* target = GetHitUnit()) - if (Unit* caster = GetCaster()) - if (target->getPowerType() == POWER_MANA) - caster->CastCustomSpell(target, SPELL_MANA_SPRING_TOTEM_ENERGIZE, &damage, 0, 0, true, 0, 0, GetOriginalCaster()->GetGUID()); + target->CastSpell(target, SPELL_SHAMAN_EXHAUSTION, true); } void Register() { - OnEffectHitTarget += SpellEffectFn(spell_sha_mana_spring_totem_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_sha_heroism_SpellScript::RemoveInvalidTargets, EFFECT_0, TARGET_UNIT_CASTER_AREA_RAID); + OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_sha_heroism_SpellScript::RemoveInvalidTargets, EFFECT_1, TARGET_UNIT_CASTER_AREA_RAID); + OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_sha_heroism_SpellScript::RemoveInvalidTargets, EFFECT_2, TARGET_UNIT_CASTER_AREA_RAID); + AfterHit += SpellHitFn(spell_sha_heroism_SpellScript::ApplyDebuff); } - }; SpellScript* GetSpellScript() const { - return new spell_sha_mana_spring_totem_SpellScript(); + return new spell_sha_heroism_SpellScript(); } }; +// 60103 - Lava Lash class spell_sha_lava_lash : public SpellScriptLoader { public: @@ -583,7 +582,7 @@ class spell_sha_lava_lash : public SpellScriptLoader return GetCaster()->GetTypeId() == TYPEID_PLAYER; } - void HandleDummy(SpellEffIndex /* effIndex */) + void HandleDummy(SpellEffIndex /*effIndex*/) { if (Player* caster = GetCaster()->ToPlayer()) { @@ -612,100 +611,94 @@ class spell_sha_lava_lash : public SpellScriptLoader } }; -// 1064 Chain Heal -class spell_sha_chain_heal : public SpellScriptLoader +// 52031, 52033, 52034, 52035, 52036, 58778, 58779, 58780 - Mana Spring Totem +class spell_sha_mana_spring_totem : public SpellScriptLoader { public: - spell_sha_chain_heal() : SpellScriptLoader("spell_sha_chain_heal") { } + spell_sha_mana_spring_totem() : SpellScriptLoader("spell_sha_mana_spring_totem") { } - class spell_sha_chain_heal_SpellScript : public SpellScript + class spell_sha_mana_spring_totem_SpellScript : public SpellScript { - PrepareSpellScript(spell_sha_chain_heal_SpellScript); + PrepareSpellScript(spell_sha_mana_spring_totem_SpellScript); - bool Load() + bool Validate(SpellInfo const* /*spellInfo*/) { - firstHeal = true; - riptide = false; + if (!sSpellMgr->GetSpellInfo(SPELL_SHAMAN_MANA_SPRING_TOTEM_ENERGIZE)) + return false; return true; } - void HandleHeal(SpellEffIndex /*effIndex*/) + void HandleDummy(SpellEffIndex /*effIndex*/) { - if (firstHeal) - { - // Check if the target has Riptide - if (AuraEffect* aurEff = GetHitUnit()->GetAuraEffect(SPELL_AURA_PERIODIC_HEAL, SPELLFAMILY_SHAMAN, 0, 0, 0x10, GetCaster()->GetGUID())) - { - riptide = true; - // Consume it - GetHitUnit()->RemoveAura(aurEff->GetBase()); - } - firstHeal = false; - } - // Riptide increases the Chain Heal effect by 25% - if (riptide) - SetHitHeal(GetHitHeal() * 1.25f); + int32 damage = GetEffectValue(); + if (Unit* target = GetHitUnit()) + if (Unit* caster = GetCaster()) + if (target->getPowerType() == POWER_MANA) + caster->CastCustomSpell(target, SPELL_SHAMAN_MANA_SPRING_TOTEM_ENERGIZE, &damage, 0, 0, true, 0, 0, GetOriginalCaster()->GetGUID()); } void Register() { - OnEffectHitTarget += SpellEffectFn(spell_sha_chain_heal_SpellScript::HandleHeal, EFFECT_0, SPELL_EFFECT_HEAL); + OnEffectHitTarget += SpellEffectFn(spell_sha_mana_spring_totem_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } - bool firstHeal; - bool riptide; }; SpellScript* GetSpellScript() const { - return new spell_sha_chain_heal_SpellScript(); + return new spell_sha_mana_spring_totem_SpellScript(); } }; -class spell_sha_flame_shock : public SpellScriptLoader +// 39610 - Mana Tide Totem +class spell_sha_mana_tide_totem : public SpellScriptLoader { public: - spell_sha_flame_shock() : SpellScriptLoader("spell_sha_flame_shock") { } + spell_sha_mana_tide_totem() : SpellScriptLoader("spell_sha_mana_tide_totem") { } - class spell_sha_flame_shock_AuraScript : public AuraScript + class spell_sha_mana_tide_totem_SpellScript : public SpellScript { - PrepareAuraScript(spell_sha_flame_shock_AuraScript); + PrepareSpellScript(spell_sha_mana_tide_totem_SpellScript); - bool Validate(SpellInfo const* /*spell*/) + bool Validate(SpellInfo const* /*spellInfo*/) { - if (!sSpellMgr->GetSpellInfo(SHAMAN_LAVA_FLOWS_R1)) - return false; - if (!sSpellMgr->GetSpellInfo(SHAMAN_LAVA_FLOWS_TRIGGERED_R1)) + if (!sSpellMgr->GetSpellInfo(SPELL_SHAMAN_GLYPH_OF_MANA_TIDE) || !sSpellMgr->GetSpellInfo(SPELL_SHAMAN_MANA_TIDE_TOTEM)) return false; return true; } - void HandleDispel(DispelInfo* /*dispelInfo*/) + void HandleDummy(SpellEffIndex /*effIndex*/) { if (Unit* caster = GetCaster()) - // Lava Flows - if (AuraEffect const* aurEff = caster->GetDummyAuraEffect(SPELLFAMILY_SHAMAN, ICON_ID_SHAMAN_LAVA_FLOW, EFFECT_0)) + if (Unit* unitTarget = GetHitUnit()) { - if (sSpellMgr->GetFirstSpellInChain(SHAMAN_LAVA_FLOWS_R1) != sSpellMgr->GetFirstSpellInChain(aurEff->GetId())) - return; - - uint8 rank = sSpellMgr->GetSpellRank(aurEff->GetId()); - caster->CastSpell(caster, sSpellMgr->GetSpellWithRank(SHAMAN_LAVA_FLOWS_TRIGGERED_R1, rank), true); + if (unitTarget->getPowerType() == POWER_MANA) + { + int32 effValue = GetEffectValue(); + // Glyph of Mana Tide + if (Unit* owner = caster->GetOwner()) + if (AuraEffect* dummy = owner->GetAuraEffect(SPELL_SHAMAN_GLYPH_OF_MANA_TIDE, 0)) + effValue += dummy->GetAmount(); + // Regenerate 6% of Total Mana Every 3 secs + int32 effBasePoints0 = int32(CalculatePct(unitTarget->GetMaxPower(POWER_MANA), effValue)); + caster->CastCustomSpell(unitTarget, SPELL_SHAMAN_MANA_TIDE_TOTEM, &effBasePoints0, NULL, NULL, true, NULL, NULL, GetOriginalCaster()->GetGUID()); + } } } void Register() { - AfterDispel += AuraDispelFn(spell_sha_flame_shock_AuraScript::HandleDispel); + OnEffectHitTarget += SpellEffectFn(spell_sha_mana_tide_totem_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; - AuraScript* GetAuraScript() const + SpellScript* GetSpellScript() const { - return new spell_sha_flame_shock_AuraScript(); + return new spell_sha_mana_tide_totem_SpellScript(); } }; +// 6495 - Sentry Totem class spell_sha_sentry_totem : public SpellScriptLoader { public: @@ -717,7 +710,7 @@ class spell_sha_sentry_totem : public SpellScriptLoader bool Validate(SpellInfo const* /*spell*/) { - if (!sSpellMgr->GetSpellInfo(SHAMAN_BIND_SIGHT)) + if (!sSpellMgr->GetSpellInfo(SPELL_SHAMAN_BIND_SIGHT)) return false; return true; } @@ -727,7 +720,7 @@ class spell_sha_sentry_totem : public SpellScriptLoader if (Unit* caster = GetCaster()) if (Creature* totem = caster->GetMap()->GetCreature(caster->m_SummonSlot[4])) if (totem->isTotem()) - caster->CastSpell(totem, SHAMAN_BIND_SIGHT, true); + caster->CastSpell(totem, SPELL_SHAMAN_BIND_SIGHT, true); } void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) @@ -752,19 +745,19 @@ class spell_sha_sentry_totem : public SpellScriptLoader void AddSC_shaman_spell_scripts() { + new spell_sha_ancestral_awakening_proc(); new spell_sha_astral_shift(); - new spell_sha_fire_nova(); - new spell_sha_mana_tide_totem(); - new spell_sha_earthbind_totem(); - new spell_sha_earthen_power(); new spell_sha_bloodlust(); - new spell_sha_heroism(); - new spell_sha_ancestral_awakening_proc(); + new spell_sha_chain_heal(); new spell_sha_cleansing_totem_pulse(); + new spell_sha_earthbind_totem(); + new spell_sha_earthen_power(); + new spell_sha_fire_nova(); + new spell_sha_flame_shock(); new spell_sha_healing_stream_totem(); - new spell_sha_mana_spring_totem(); + new spell_sha_heroism(); new spell_sha_lava_lash(); - new spell_sha_chain_heal(); - new spell_sha_flame_shock(); + new spell_sha_mana_spring_totem(); + new spell_sha_mana_tide_totem(); new spell_sha_sentry_totem(); } diff --git a/src/server/scripts/Spells/spell_warlock.cpp b/src/server/scripts/Spells/spell_warlock.cpp index 2070933173b..89c69733daf 100644 --- a/src/server/scripts/Spells/spell_warlock.cpp +++ b/src/server/scripts/Spells/spell_warlock.cpp @@ -28,141 +28,88 @@ enum WarlockSpells { - WARLOCK_DEMONIC_EMPOWERMENT_SUCCUBUS = 54435, - WARLOCK_DEMONIC_EMPOWERMENT_VOIDWALKER = 54443, - WARLOCK_DEMONIC_EMPOWERMENT_FELGUARD = 54508, - WARLOCK_DEMONIC_EMPOWERMENT_FELHUNTER = 54509, - WARLOCK_DEMONIC_EMPOWERMENT_IMP = 54444, - WARLOCK_IMPROVED_HEALTHSTONE_R1 = 18692, - WARLOCK_IMPROVED_HEALTHSTONE_R2 = 18693, - WARLOCK_DEMONIC_CIRCLE_SUMMON = 48018, - WARLOCK_DEMONIC_CIRCLE_TELEPORT = 48020, - WARLOCK_DEMONIC_CIRCLE_ALLOW_CAST = 62388, - WARLOCK_HAUNT = 48181, - WARLOCK_HAUNT_HEAL = 48210, - WARLOCK_UNSTABLE_AFFLICTION_DISPEL = 31117, - WARLOCK_CURSE_OF_DOOM_EFFECT = 18662, - WARLOCK_IMPROVED_HEALTH_FUNNEL_R1 = 18703, - WARLOCK_IMPROVED_HEALTH_FUNNEL_R2 = 18704, - WARLOCK_IMPROVED_HEALTH_FUNNEL_BUFF_R1 = 60955, - WARLOCK_IMPROVED_HEALTH_FUNNEL_BUFF_R2 = 60956, + SPELL_WARLOCK_CURSE_OF_DOOM_EFFECT = 18662, + SPELL_WARLOCK_DEMONIC_CIRCLE_SUMMON = 48018, + SPELL_WARLOCK_DEMONIC_CIRCLE_TELEPORT = 48020, + SPELL_WARLOCK_DEMONIC_CIRCLE_ALLOW_CAST = 62388, + SPELL_WARLOCK_DEMONIC_EMPOWERMENT_SUCCUBUS = 54435, + SPELL_WARLOCK_DEMONIC_EMPOWERMENT_VOIDWALKER = 54443, + SPELL_WARLOCK_DEMONIC_EMPOWERMENT_FELGUARD = 54508, + SPELL_WARLOCK_DEMONIC_EMPOWERMENT_FELHUNTER = 54509, + SPELL_WARLOCK_DEMONIC_EMPOWERMENT_IMP = 54444, + SPELL_WARLOCK_IMPROVED_HEALTHSTONE_R1 = 18692, + SPELL_WARLOCK_IMPROVED_HEALTHSTONE_R2 = 18693, + SPELL_WARLOCK_IMPROVED_HEALTH_FUNNEL_R1 = 18703, + SPELL_WARLOCK_IMPROVED_HEALTH_FUNNEL_R2 = 18704, + SPELL_WARLOCK_IMPROVED_HEALTH_FUNNEL_BUFF_R1 = 60955, + SPELL_WARLOCK_IMPROVED_HEALTH_FUNNEL_BUFF_R2 = 60956, + SPELL_WARLOCK_HAUNT = 48181, + SPELL_WARLOCK_HAUNT_HEAL = 48210, + SPELL_WARLOCK_LIFE_TAP_ENERGIZE = 31818, + SPELL_WARLOCK_LIFE_TAP_ENERGIZE_2 = 32553, + SPELL_WARLOCK_SOULSHATTER = 32835, + SPELL_WARLOCK_UNSTABLE_AFFLICTION_DISPEL = 31117 }; -class spell_warl_banish : public SpellScriptLoader +enum WarlockSpellIcons { -public: - spell_warl_banish() : SpellScriptLoader("spell_warl_banish") { } - - class spell_warl_banish_SpellScript : public SpellScript - { - PrepareSpellScript(spell_warl_banish_SpellScript); - - bool Load() - { - _removed = false; - return true; - } - - void HandleBanish() - { - if (Unit* target = GetHitUnit()) - { - if (target->GetAuraEffect(SPELL_AURA_SCHOOL_IMMUNITY, SPELLFAMILY_WARLOCK, 0, 0x08000000, 0)) - { - //No need to remove old aura since its removed due to not stack by current Banish aura - PreventHitDefaultEffect(EFFECT_0); - PreventHitDefaultEffect(EFFECT_1); - PreventHitDefaultEffect(EFFECT_2); - _removed = true; - } - } - } - - void RemoveAura() - { - if (_removed) - PreventHitAura(); - } - - void Register() - { - BeforeHit += SpellHitFn(spell_warl_banish_SpellScript::HandleBanish); - AfterHit += SpellHitFn(spell_warl_banish_SpellScript::RemoveAura); - } - - bool _removed; - }; - - SpellScript* GetSpellScript() const - { - return new spell_warl_banish_SpellScript(); - } + WARLOCK_ICON_ID_IMPROVED_LIFE_TAP = 208, + WARLOCK_ICON_ID_MANA_FEED = 1982 }; -// 47193 Demonic Empowerment -class spell_warl_demonic_empowerment : public SpellScriptLoader +// 710, 18647 - Banish +class spell_warl_banish : public SpellScriptLoader { public: - spell_warl_demonic_empowerment() : SpellScriptLoader("spell_warl_demonic_empowerment") { } + spell_warl_banish() : SpellScriptLoader("spell_warl_banish") { } - class spell_warl_demonic_empowerment_SpellScript : public SpellScript + class spell_warl_banish_SpellScript : public SpellScript { - PrepareSpellScript(spell_warl_demonic_empowerment_SpellScript); + PrepareSpellScript(spell_warl_banish_SpellScript); - bool Validate(SpellInfo const* /*spellEntry*/) + bool Load() { - if (!sSpellMgr->GetSpellInfo(WARLOCK_DEMONIC_EMPOWERMENT_SUCCUBUS) || !sSpellMgr->GetSpellInfo(WARLOCK_DEMONIC_EMPOWERMENT_VOIDWALKER) || !sSpellMgr->GetSpellInfo(WARLOCK_DEMONIC_EMPOWERMENT_FELGUARD) || !sSpellMgr->GetSpellInfo(WARLOCK_DEMONIC_EMPOWERMENT_FELHUNTER) || !sSpellMgr->GetSpellInfo(WARLOCK_DEMONIC_EMPOWERMENT_IMP)) - return false; + _removed = false; return true; } - void HandleScriptEffect(SpellEffIndex /*effIndex*/) + void HandleBanish() { - if (Creature* targetCreature = GetHitCreature()) + if (Unit* target = GetHitUnit()) { - if (targetCreature->isPet()) + if (target->GetAuraEffect(SPELL_AURA_SCHOOL_IMMUNITY, SPELLFAMILY_WARLOCK, 0, 0x08000000, 0)) { - CreatureTemplate const* ci = sObjectMgr->GetCreatureTemplate(targetCreature->GetEntry()); - switch (ci->family) - { - case CREATURE_FAMILY_SUCCUBUS: - targetCreature->CastSpell(targetCreature, WARLOCK_DEMONIC_EMPOWERMENT_SUCCUBUS, true); - break; - case CREATURE_FAMILY_VOIDWALKER: - { - SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(WARLOCK_DEMONIC_EMPOWERMENT_VOIDWALKER); - int32 hp = int32(targetCreature->CountPctFromMaxHealth(GetCaster()->CalculateSpellDamage(targetCreature, spellInfo, 0))); - targetCreature->CastCustomSpell(targetCreature, WARLOCK_DEMONIC_EMPOWERMENT_VOIDWALKER, &hp, NULL, NULL, true); - //unitTarget->CastSpell(unitTarget, 54441, true); - break; - } - case CREATURE_FAMILY_FELGUARD: - targetCreature->CastSpell(targetCreature, WARLOCK_DEMONIC_EMPOWERMENT_FELGUARD, true); - break; - case CREATURE_FAMILY_FELHUNTER: - targetCreature->CastSpell(targetCreature, WARLOCK_DEMONIC_EMPOWERMENT_FELHUNTER, true); - break; - case CREATURE_FAMILY_IMP: - targetCreature->CastSpell(targetCreature, WARLOCK_DEMONIC_EMPOWERMENT_IMP, true); - break; - } + // No need to remove old aura since its removed due to not stack by current Banish aura + PreventHitDefaultEffect(EFFECT_0); + PreventHitDefaultEffect(EFFECT_1); + PreventHitDefaultEffect(EFFECT_2); + _removed = true; } } } + void RemoveAura() + { + if (_removed) + PreventHitAura(); + } + void Register() { - OnEffectHitTarget += SpellEffectFn(spell_warl_demonic_empowerment_SpellScript::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + BeforeHit += SpellHitFn(spell_warl_banish_SpellScript::HandleBanish); + AfterHit += SpellHitFn(spell_warl_banish_SpellScript::RemoveAura); } + + bool _removed; }; SpellScript* GetSpellScript() const { - return new spell_warl_demonic_empowerment_SpellScript(); + return new spell_warl_banish_SpellScript(); } }; -// 6201 Create Healthstone (and ranks) +// 6201 - Create Healthstone (and ranks) class spell_warl_create_healthstone : public SpellScriptLoader { public: @@ -174,9 +121,9 @@ class spell_warl_create_healthstone : public SpellScriptLoader static uint32 const iTypes[8][3]; - bool Validate(SpellInfo const* /*spellEntry*/) + bool Validate(SpellInfo const* /*spellInfo*/) { - if (!sSpellMgr->GetSpellInfo(WARLOCK_IMPROVED_HEALTHSTONE_R1) || !sSpellMgr->GetSpellInfo(WARLOCK_IMPROVED_HEALTHSTONE_R2)) + if (!sSpellMgr->GetSpellInfo(SPELL_WARLOCK_IMPROVED_HEALTHSTONE_R1) || !sSpellMgr->GetSpellInfo(SPELL_WARLOCK_IMPROVED_HEALTHSTONE_R2)) return false; return true; } @@ -204,8 +151,12 @@ class spell_warl_create_healthstone : public SpellScriptLoader { switch (aurEff->GetId()) { - case WARLOCK_IMPROVED_HEALTHSTONE_R1: rank = 1; break; - case WARLOCK_IMPROVED_HEALTHSTONE_R2: rank = 2; break; + case SPELL_WARLOCK_IMPROVED_HEALTHSTONE_R1: + rank = 1; + break; + case SPELL_WARLOCK_IMPROVED_HEALTHSTONE_R2: + rank = 2; + break; default: sLog->outError(LOG_FILTER_SPELLS_AURAS, "Unknown rank of Improved Healthstone id: %d", aurEff->GetId()); break; @@ -241,142 +192,336 @@ uint32 const spell_warl_create_healthstone::spell_warl_create_healthstone_SpellS {36892, 36893, 36894} // Fel Healthstone }; -// 47422 Everlasting Affliction -class spell_warl_everlasting_affliction : public SpellScriptLoader +// -603 - Curse of Doom +class spell_warl_curse_of_doom : public SpellScriptLoader { public: - spell_warl_everlasting_affliction() : SpellScriptLoader("spell_warl_everlasting_affliction") { } + spell_warl_curse_of_doom() : SpellScriptLoader("spell_warl_curse_of_doom") { } - class spell_warl_everlasting_affliction_SpellScript : public SpellScript + class spell_warl_curse_of_doom_AuraScript : public AuraScript { - PrepareSpellScript(spell_warl_everlasting_affliction_SpellScript); + PrepareAuraScript(spell_warl_curse_of_doom_AuraScript); - void HandleScriptEffect(SpellEffIndex /*effIndex*/) + bool Validate(SpellInfo const* /*spell*/) { - if (Unit* unitTarget = GetHitUnit()) - // Refresh corruption on target - if (AuraEffect* aur = unitTarget->GetAuraEffect(SPELL_AURA_PERIODIC_DAMAGE, SPELLFAMILY_WARLOCK, 0x2, 0, 0, GetCaster()->GetGUID())) - aur->GetBase()->RefreshDuration(); + if (!sSpellMgr->GetSpellInfo(SPELL_WARLOCK_CURSE_OF_DOOM_EFFECT)) + return false; + return true; + } + + bool Load() + { + return GetCaster() && GetCaster()->GetTypeId() == TYPEID_PLAYER; + } + + void OnRemove(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/) + { + if (!GetCaster()) + return; + + AuraRemoveMode removeMode = GetTargetApplication()->GetRemoveMode(); + if (removeMode != AURA_REMOVE_BY_DEATH || !IsExpired()) + return; + + if (GetCaster()->ToPlayer()->isHonorOrXPTarget(GetTarget())) + GetCaster()->CastSpell(GetTarget(), SPELL_WARLOCK_CURSE_OF_DOOM_EFFECT, true, NULL, aurEff); } void Register() { - OnEffectHitTarget += SpellEffectFn(spell_warl_everlasting_affliction_SpellScript::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + AfterEffectRemove += AuraEffectRemoveFn(spell_warl_curse_of_doom_AuraScript::OnRemove, EFFECT_0, SPELL_AURA_PERIODIC_DAMAGE, AURA_EFFECT_HANDLE_REAL); } }; - SpellScript* GetSpellScript() const + AuraScript* GetAuraScript() const { - return new spell_warl_everlasting_affliction_SpellScript(); + return new spell_warl_curse_of_doom_AuraScript(); } }; -// 18541 Ritual of Doom Effect -class spell_warl_ritual_of_doom_effect : public SpellScriptLoader +// 48018 - Demonic Circle Summon +class spell_warl_demonic_circle_summon : public SpellScriptLoader { -public: - spell_warl_ritual_of_doom_effect() : SpellScriptLoader("spell_warl_ritual_of_doom_effect") { } + public: + spell_warl_demonic_circle_summon() : SpellScriptLoader("spell_warl_demonic_circle_summon") { } + + class spell_warl_demonic_circle_summon_AuraScript : public AuraScript + { + PrepareAuraScript(spell_warl_demonic_circle_summon_AuraScript); + + void HandleRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes mode) + { + // If effect is removed by expire remove the summoned demonic circle too. + if (!(mode & AURA_EFFECT_HANDLE_REAPPLY)) + GetTarget()->RemoveGameObject(GetId(), true); + + GetTarget()->RemoveAura(SPELL_WARLOCK_DEMONIC_CIRCLE_ALLOW_CAST); + } + + void HandleDummyTick(AuraEffect const* /*aurEff*/) + { + if (GameObject* circle = GetTarget()->GetGameObject(GetId())) + { + // Here we check if player is in demonic circle teleport range, if so add + // WARLOCK_DEMONIC_CIRCLE_ALLOW_CAST; allowing him to cast the WARLOCK_DEMONIC_CIRCLE_TELEPORT. + // If not in range remove the WARLOCK_DEMONIC_CIRCLE_ALLOW_CAST. + + SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(SPELL_WARLOCK_DEMONIC_CIRCLE_TELEPORT); + + if (GetTarget()->IsWithinDist(circle, spellInfo->GetMaxRange(true))) + { + if (!GetTarget()->HasAura(SPELL_WARLOCK_DEMONIC_CIRCLE_ALLOW_CAST)) + GetTarget()->CastSpell(GetTarget(), SPELL_WARLOCK_DEMONIC_CIRCLE_ALLOW_CAST, true); + } + else + GetTarget()->RemoveAura(SPELL_WARLOCK_DEMONIC_CIRCLE_ALLOW_CAST); + } + } - class spell_warl_ritual_of_doom_effect_SpellScript : public SpellScript - { - PrepareSpellScript(spell_warl_ritual_of_doom_effect_SpellScript); + void Register() + { + OnEffectRemove += AuraEffectApplyFn(spell_warl_demonic_circle_summon_AuraScript::HandleRemove, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK); + OnEffectPeriodic += AuraEffectPeriodicFn(spell_warl_demonic_circle_summon_AuraScript::HandleDummyTick, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY); + } + }; - void HandleDummy(SpellEffIndex /*effIndex*/) + AuraScript* GetAuraScript() const { - Unit* caster = GetCaster(); - caster->CastSpell(caster, GetEffectValue(), true); + return new spell_warl_demonic_circle_summon_AuraScript(); } +}; - void Register() +// 48020 - Demonic Circle Teleport +class spell_warl_demonic_circle_teleport : public SpellScriptLoader +{ + public: + spell_warl_demonic_circle_teleport() : SpellScriptLoader("spell_warl_demonic_circle_teleport") { } + + class spell_warl_demonic_circle_teleport_AuraScript : public AuraScript { - OnEffectHit += SpellEffectFn(spell_warl_ritual_of_doom_effect_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); - } - }; + PrepareAuraScript(spell_warl_demonic_circle_teleport_AuraScript); - SpellScript* GetSpellScript() const - { - return new spell_warl_ritual_of_doom_effect_SpellScript(); - } + void HandleTeleport(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + if (Player* player = GetTarget()->ToPlayer()) + { + if (GameObject* circle = player->GetGameObject(SPELL_WARLOCK_DEMONIC_CIRCLE_SUMMON)) + { + player->NearTeleportTo(circle->GetPositionX(), circle->GetPositionY(), circle->GetPositionZ(), circle->GetOrientation()); + player->RemoveMovementImpairingAuras(); + } + } + } + + void Register() + { + OnEffectApply += AuraEffectApplyFn(spell_warl_demonic_circle_teleport_AuraScript::HandleTeleport, EFFECT_0, SPELL_AURA_MECHANIC_IMMUNITY, AURA_EFFECT_HANDLE_REAL); + } + }; + + AuraScript* GetAuraScript() const + { + return new spell_warl_demonic_circle_teleport_AuraScript(); + } }; -class spell_warl_seed_of_corruption : public SpellScriptLoader +// 47193 - Demonic Empowerment +class spell_warl_demonic_empowerment : public SpellScriptLoader { public: - spell_warl_seed_of_corruption() : SpellScriptLoader("spell_warl_seed_of_corruption") { } + spell_warl_demonic_empowerment() : SpellScriptLoader("spell_warl_demonic_empowerment") { } - class spell_warl_seed_of_corruption_SpellScript : public SpellScript + class spell_warl_demonic_empowerment_SpellScript : public SpellScript { - PrepareSpellScript(spell_warl_seed_of_corruption_SpellScript); + PrepareSpellScript(spell_warl_demonic_empowerment_SpellScript); - void FilterTargets(std::list& targets) + bool Validate(SpellInfo const* /*spellInfo*/) { - if (GetExplTargetUnit()) - targets.remove(GetExplTargetUnit()); + if (!sSpellMgr->GetSpellInfo(SPELL_WARLOCK_DEMONIC_EMPOWERMENT_SUCCUBUS) || !sSpellMgr->GetSpellInfo(SPELL_WARLOCK_DEMONIC_EMPOWERMENT_VOIDWALKER) || !sSpellMgr->GetSpellInfo(SPELL_WARLOCK_DEMONIC_EMPOWERMENT_FELGUARD) || !sSpellMgr->GetSpellInfo(SPELL_WARLOCK_DEMONIC_EMPOWERMENT_FELHUNTER) || !sSpellMgr->GetSpellInfo(SPELL_WARLOCK_DEMONIC_EMPOWERMENT_IMP)) + return false; + return true; + } + + void HandleScriptEffect(SpellEffIndex /*effIndex*/) + { + if (Creature* targetCreature = GetHitCreature()) + { + if (targetCreature->isPet()) + { + CreatureTemplate const* ci = sObjectMgr->GetCreatureTemplate(targetCreature->GetEntry()); + switch (ci->family) + { + case CREATURE_FAMILY_SUCCUBUS: + targetCreature->CastSpell(targetCreature, SPELL_WARLOCK_DEMONIC_EMPOWERMENT_SUCCUBUS, true); + break; + case CREATURE_FAMILY_VOIDWALKER: + { + SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(SPELL_WARLOCK_DEMONIC_EMPOWERMENT_VOIDWALKER); + int32 hp = int32(targetCreature->CountPctFromMaxHealth(GetCaster()->CalculateSpellDamage(targetCreature, spellInfo, 0))); + targetCreature->CastCustomSpell(targetCreature, SPELL_WARLOCK_DEMONIC_EMPOWERMENT_VOIDWALKER, &hp, NULL, NULL, true); + //unitTarget->CastSpell(unitTarget, 54441, true); + break; + } + case CREATURE_FAMILY_FELGUARD: + targetCreature->CastSpell(targetCreature, SPELL_WARLOCK_DEMONIC_EMPOWERMENT_FELGUARD, true); + break; + case CREATURE_FAMILY_FELHUNTER: + targetCreature->CastSpell(targetCreature, SPELL_WARLOCK_DEMONIC_EMPOWERMENT_FELHUNTER, true); + break; + case CREATURE_FAMILY_IMP: + targetCreature->CastSpell(targetCreature, SPELL_WARLOCK_DEMONIC_EMPOWERMENT_IMP, true); + break; + } + } + } } void Register() { - OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_warl_seed_of_corruption_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_DEST_AREA_ENEMY); + OnEffectHitTarget += SpellEffectFn(spell_warl_demonic_empowerment_SpellScript::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); } }; SpellScript* GetSpellScript() const { - return new spell_warl_seed_of_corruption_SpellScript(); + return new spell_warl_demonic_empowerment_SpellScript(); } }; -enum Soulshatter +// 47422 - Everlasting Affliction +class spell_warl_everlasting_affliction : public SpellScriptLoader { - SPELL_SOULSHATTER = 32835, + public: + spell_warl_everlasting_affliction() : SpellScriptLoader("spell_warl_everlasting_affliction") { } + + class spell_warl_everlasting_affliction_SpellScript : public SpellScript + { + PrepareSpellScript(spell_warl_everlasting_affliction_SpellScript); + + void HandleScriptEffect(SpellEffIndex /*effIndex*/) + { + if (Unit* unitTarget = GetHitUnit()) + // Refresh corruption on target + if (AuraEffect* aur = unitTarget->GetAuraEffect(SPELL_AURA_PERIODIC_DAMAGE, SPELLFAMILY_WARLOCK, 0x2, 0, 0, GetCaster()->GetGUID())) + aur->GetBase()->RefreshDuration(); + } + + void Register() + { + OnEffectHitTarget += SpellEffectFn(spell_warl_everlasting_affliction_SpellScript::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } + }; + + SpellScript* GetSpellScript() const + { + return new spell_warl_everlasting_affliction_SpellScript(); + } }; -class spell_warl_soulshatter : public SpellScriptLoader +// -48181 - Haunt +class spell_warl_haunt : public SpellScriptLoader { public: - spell_warl_soulshatter() : SpellScriptLoader("spell_warl_soulshatter") { } + spell_warl_haunt() : SpellScriptLoader("spell_warl_haunt") { } - class spell_warl_soulshatter_SpellScript : public SpellScript + class spell_warl_haunt_SpellScript : public SpellScript { - PrepareSpellScript(spell_warl_soulshatter_SpellScript); + PrepareSpellScript(spell_warl_haunt_SpellScript); + + void HandleOnHit() + { + if (Aura* aura = GetHitAura()) + if (AuraEffect* aurEff = aura->GetEffect(EFFECT_1)) + aurEff->SetAmount(CalculatePct(aurEff->GetAmount(), GetHitDamage())); + } + + void Register() + { + OnHit += SpellHitFn(spell_warl_haunt_SpellScript::HandleOnHit); + } + }; + + class spell_warl_haunt_AuraScript : public AuraScript + { + PrepareAuraScript(spell_warl_haunt_AuraScript); bool Validate(SpellInfo const* /*spell*/) { - if (!sSpellMgr->GetSpellInfo(SPELL_SOULSHATTER)) + if (!sSpellMgr->GetSpellInfo(SPELL_WARLOCK_HAUNT_HEAL)) return false; return true; } - void HandleDummy(SpellEffIndex /*effIndex*/) + void HandleRemove(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/) { - Unit* caster = GetCaster(); - if (Unit* target = GetHitUnit()) + if (Unit* caster = GetCaster()) { - if (target->CanHaveThreatList() && target->getThreatManager().getThreat(caster) > 0.0f) - caster->CastSpell(target, SPELL_SOULSHATTER, true); + int32 amount = aurEff->GetAmount(); + GetTarget()->CastCustomSpell(caster, SPELL_WARLOCK_HAUNT_HEAL, &amount, NULL, NULL, true, NULL, aurEff, GetCasterGUID()); } } void Register() { - OnEffectHitTarget += SpellEffectFn(spell_warl_soulshatter_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + OnEffectRemove += AuraEffectApplyFn(spell_warl_haunt_AuraScript::HandleRemove, EFFECT_1, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK); } }; SpellScript* GetSpellScript() const { - return new spell_warl_soulshatter_SpellScript(); + return new spell_warl_haunt_SpellScript(); + } + + AuraScript* GetAuraScript() const + { + return new spell_warl_haunt_AuraScript(); } }; -enum LifeTap +// -755 - Health Funnel +class spell_warl_health_funnel : public SpellScriptLoader { - SPELL_LIFE_TAP_ENERGIZE = 31818, - SPELL_LIFE_TAP_ENERGIZE_2 = 32553, - ICON_ID_IMPROVED_LIFE_TAP = 208, - ICON_ID_MANA_FEED = 1982, + public: + spell_warl_health_funnel() : SpellScriptLoader("spell_warl_health_funnel") { } + + class spell_warl_health_funnel_AuraScript : public AuraScript + { + PrepareAuraScript(spell_warl_health_funnel_AuraScript); + + void ApplyEffect(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + Unit* caster = GetCaster(); + if (!caster) + return; + + Unit* target = GetTarget(); + if (caster->HasAura(SPELL_WARLOCK_IMPROVED_HEALTH_FUNNEL_R2)) + target->CastSpell(target, SPELL_WARLOCK_IMPROVED_HEALTH_FUNNEL_BUFF_R2, true); + else if (caster->HasAura(SPELL_WARLOCK_IMPROVED_HEALTH_FUNNEL_R1)) + target->CastSpell(target, SPELL_WARLOCK_IMPROVED_HEALTH_FUNNEL_BUFF_R1, true); + } + + void RemoveEffect(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + Unit* target = GetTarget(); + target->RemoveAurasDueToSpell(SPELL_WARLOCK_IMPROVED_HEALTH_FUNNEL_BUFF_R1); + target->RemoveAurasDueToSpell(SPELL_WARLOCK_IMPROVED_HEALTH_FUNNEL_BUFF_R2); + } + + void Register() + { + OnEffectRemove += AuraEffectRemoveFn(spell_warl_health_funnel_AuraScript::RemoveEffect, EFFECT_0, SPELL_AURA_PERIODIC_HEAL, AURA_EFFECT_HANDLE_REAL); + OnEffectApply += AuraEffectApplyFn(spell_warl_health_funnel_AuraScript::ApplyEffect, EFFECT_0, SPELL_AURA_PERIODIC_HEAL, AURA_EFFECT_HANDLE_REAL); + } + }; + + AuraScript* GetAuraScript() const + { + return new spell_warl_health_funnel_AuraScript(); + } }; +// -1454 - Life Tap class spell_warl_life_tap : public SpellScriptLoader { public: @@ -393,7 +538,7 @@ class spell_warl_life_tap : public SpellScriptLoader bool Validate(SpellInfo const* /*spell*/) { - if (!sSpellMgr->GetSpellInfo(SPELL_LIFE_TAP_ENERGIZE) || !sSpellMgr->GetSpellInfo(SPELL_LIFE_TAP_ENERGIZE_2)) + if (!sSpellMgr->GetSpellInfo(SPELL_WARLOCK_LIFE_TAP_ENERGIZE) || !sSpellMgr->GetSpellInfo(SPELL_WARLOCK_LIFE_TAP_ENERGIZE_2)) return false; return true; } @@ -410,20 +555,20 @@ class spell_warl_life_tap : public SpellScriptLoader target->ModifyHealth(-damage); // Improved Life Tap mod - if (AuraEffect const* aurEff = caster->GetDummyAuraEffect(SPELLFAMILY_WARLOCK, ICON_ID_IMPROVED_LIFE_TAP, 0)) + if (AuraEffect const* aurEff = caster->GetDummyAuraEffect(SPELLFAMILY_WARLOCK, WARLOCK_ICON_ID_IMPROVED_LIFE_TAP, 0)) AddPct(mana, aurEff->GetAmount()); - caster->CastCustomSpell(target, SPELL_LIFE_TAP_ENERGIZE, &mana, NULL, NULL, false); + caster->CastCustomSpell(target, SPELL_WARLOCK_LIFE_TAP_ENERGIZE, &mana, NULL, NULL, false); // Mana Feed int32 manaFeedVal = 0; - if (AuraEffect const* aurEff = caster->GetAuraEffect(SPELL_AURA_ADD_FLAT_MODIFIER, SPELLFAMILY_WARLOCK, ICON_ID_MANA_FEED, 0)) + if (AuraEffect const* aurEff = caster->GetAuraEffect(SPELL_AURA_ADD_FLAT_MODIFIER, SPELLFAMILY_WARLOCK, WARLOCK_ICON_ID_MANA_FEED, 0)) manaFeedVal = aurEff->GetAmount(); if (manaFeedVal > 0) { ApplyPct(manaFeedVal, mana); - caster->CastCustomSpell(caster, SPELL_LIFE_TAP_ENERGIZE_2, &manaFeedVal, NULL, NULL, true, NULL); + caster->CastCustomSpell(caster, SPELL_WARLOCK_LIFE_TAP_ENERGIZE_2, &manaFeedVal, NULL, NULL, true, NULL); } } } @@ -448,149 +593,102 @@ class spell_warl_life_tap : public SpellScriptLoader } }; -class spell_warl_demonic_circle_summon : public SpellScriptLoader +// 18541 - Ritual of Doom Effect +class spell_warl_ritual_of_doom_effect : public SpellScriptLoader { public: - spell_warl_demonic_circle_summon() : SpellScriptLoader("spell_warl_demonic_circle_summon") { } + spell_warl_ritual_of_doom_effect() : SpellScriptLoader("spell_warl_ritual_of_doom_effect") { } - class spell_warl_demonic_circle_summon_AuraScript : public AuraScript + class spell_warl_ritual_of_doom_effect_SpellScript : public SpellScript { - PrepareAuraScript(spell_warl_demonic_circle_summon_AuraScript); - - void HandleRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes mode) - { - // If effect is removed by expire remove the summoned demonic circle too. - if (!(mode & AURA_EFFECT_HANDLE_REAPPLY)) - GetTarget()->RemoveGameObject(GetId(), true); + PrepareSpellScript(spell_warl_ritual_of_doom_effect_SpellScript); - GetTarget()->RemoveAura(WARLOCK_DEMONIC_CIRCLE_ALLOW_CAST); - } - - void HandleDummyTick(AuraEffect const* /*aurEff*/) + void HandleDummy(SpellEffIndex /*effIndex*/) { - if (GameObject* circle = GetTarget()->GetGameObject(GetId())) - { - // Here we check if player is in demonic circle teleport range, if so add - // WARLOCK_DEMONIC_CIRCLE_ALLOW_CAST; allowing him to cast the WARLOCK_DEMONIC_CIRCLE_TELEPORT. - // If not in range remove the WARLOCK_DEMONIC_CIRCLE_ALLOW_CAST. - - SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(WARLOCK_DEMONIC_CIRCLE_TELEPORT); - - if (GetTarget()->IsWithinDist(circle, spellInfo->GetMaxRange(true))) - { - if (!GetTarget()->HasAura(WARLOCK_DEMONIC_CIRCLE_ALLOW_CAST)) - GetTarget()->CastSpell(GetTarget(), WARLOCK_DEMONIC_CIRCLE_ALLOW_CAST, true); - } - else - GetTarget()->RemoveAura(WARLOCK_DEMONIC_CIRCLE_ALLOW_CAST); - } + Unit* caster = GetCaster(); + caster->CastSpell(caster, GetEffectValue(), true); } void Register() { - OnEffectRemove += AuraEffectApplyFn(spell_warl_demonic_circle_summon_AuraScript::HandleRemove, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK); - OnEffectPeriodic += AuraEffectPeriodicFn(spell_warl_demonic_circle_summon_AuraScript::HandleDummyTick, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY); + OnEffectHit += SpellEffectFn(spell_warl_ritual_of_doom_effect_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; - AuraScript* GetAuraScript() const + SpellScript* GetSpellScript() const { - return new spell_warl_demonic_circle_summon_AuraScript(); + return new spell_warl_ritual_of_doom_effect_SpellScript(); } }; -class spell_warl_demonic_circle_teleport : public SpellScriptLoader +// -27285 - Seed of Corruption +class spell_warl_seed_of_corruption : public SpellScriptLoader { public: - spell_warl_demonic_circle_teleport() : SpellScriptLoader("spell_warl_demonic_circle_teleport") { } + spell_warl_seed_of_corruption() : SpellScriptLoader("spell_warl_seed_of_corruption") { } - class spell_warl_demonic_circle_teleport_AuraScript : public AuraScript + class spell_warl_seed_of_corruption_SpellScript : public SpellScript { - PrepareAuraScript(spell_warl_demonic_circle_teleport_AuraScript); + PrepareSpellScript(spell_warl_seed_of_corruption_SpellScript); - void HandleTeleport(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + void FilterTargets(std::list& targets) { - if (Player* player = GetTarget()->ToPlayer()) - { - if (GameObject* circle = player->GetGameObject(WARLOCK_DEMONIC_CIRCLE_SUMMON)) - { - player->NearTeleportTo(circle->GetPositionX(), circle->GetPositionY(), circle->GetPositionZ(), circle->GetOrientation()); - player->RemoveMovementImpairingAuras(); - } - } + if (GetExplTargetUnit()) + targets.remove(GetExplTargetUnit()); } void Register() { - OnEffectApply += AuraEffectApplyFn(spell_warl_demonic_circle_teleport_AuraScript::HandleTeleport, EFFECT_0, SPELL_AURA_MECHANIC_IMMUNITY, AURA_EFFECT_HANDLE_REAL); + OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_warl_seed_of_corruption_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_DEST_AREA_ENEMY); } }; - AuraScript* GetAuraScript() const + SpellScript* GetSpellScript() const { - return new spell_warl_demonic_circle_teleport_AuraScript(); + return new spell_warl_seed_of_corruption_SpellScript(); } }; -class spell_warl_haunt : public SpellScriptLoader +// 29858 - Soulshatter +class spell_warl_soulshatter : public SpellScriptLoader { public: - spell_warl_haunt() : SpellScriptLoader("spell_warl_haunt") { } - - class spell_warl_haunt_SpellScript : public SpellScript - { - PrepareSpellScript(spell_warl_haunt_SpellScript); - - void HandleOnHit() - { - if (Aura* aura = GetHitAura()) - if (AuraEffect* aurEff = aura->GetEffect(EFFECT_1)) - aurEff->SetAmount(CalculatePct(aurEff->GetAmount(), GetHitDamage())); - } - - void Register() - { - OnHit += SpellHitFn(spell_warl_haunt_SpellScript::HandleOnHit); - } - }; + spell_warl_soulshatter() : SpellScriptLoader("spell_warl_soulshatter") { } - class spell_warl_haunt_AuraScript : public AuraScript + class spell_warl_soulshatter_SpellScript : public SpellScript { - PrepareAuraScript(spell_warl_haunt_AuraScript); + PrepareSpellScript(spell_warl_soulshatter_SpellScript); bool Validate(SpellInfo const* /*spell*/) { - if (!sSpellMgr->GetSpellInfo(WARLOCK_HAUNT_HEAL)) + if (!sSpellMgr->GetSpellInfo(SPELL_WARLOCK_SOULSHATTER)) return false; return true; } - void HandleRemove(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/) + void HandleDummy(SpellEffIndex /*effIndex*/) { - if (Unit* caster = GetCaster()) + Unit* caster = GetCaster(); + if (Unit* target = GetHitUnit()) { - int32 amount = aurEff->GetAmount(); - GetTarget()->CastCustomSpell(caster, WARLOCK_HAUNT_HEAL, &amount, NULL, NULL, true, NULL, aurEff, GetCasterGUID()); + if (target->CanHaveThreatList() && target->getThreatManager().getThreat(caster) > 0.0f) + caster->CastSpell(target, SPELL_WARLOCK_SOULSHATTER, true); } } void Register() { - OnEffectRemove += AuraEffectApplyFn(spell_warl_haunt_AuraScript::HandleRemove, EFFECT_1, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK); + OnEffectHitTarget += SpellEffectFn(spell_warl_soulshatter_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; SpellScript* GetSpellScript() const { - return new spell_warl_haunt_SpellScript(); - } - - AuraScript* GetAuraScript() const - { - return new spell_warl_haunt_AuraScript(); + return new spell_warl_soulshatter_SpellScript(); } }; +// -30108 - Unstable Affliction class spell_warl_unstable_affliction : public SpellScriptLoader { public: @@ -602,7 +700,7 @@ class spell_warl_unstable_affliction : public SpellScriptLoader bool Validate(SpellInfo const* /*spell*/) { - if (!sSpellMgr->GetSpellInfo(WARLOCK_UNSTABLE_AFFLICTION_DISPEL)) + if (!sSpellMgr->GetSpellInfo(SPELL_WARLOCK_UNSTABLE_AFFLICTION_DISPEL)) return false; return true; } @@ -614,7 +712,7 @@ class spell_warl_unstable_affliction : public SpellScriptLoader { int32 damage = aurEff->GetAmount() * 9; // backfire damage and silence - caster->CastCustomSpell(dispelInfo->GetDispeller(), WARLOCK_UNSTABLE_AFFLICTION_DISPEL, &damage, NULL, NULL, true, NULL, aurEff); + caster->CastCustomSpell(dispelInfo->GetDispeller(), SPELL_WARLOCK_UNSTABLE_AFFLICTION_DISPEL, &damage, NULL, NULL, true, NULL, aurEff); } } @@ -630,108 +728,20 @@ class spell_warl_unstable_affliction : public SpellScriptLoader } }; -class spell_warl_curse_of_doom : public SpellScriptLoader -{ - public: - spell_warl_curse_of_doom() : SpellScriptLoader("spell_warl_curse_of_doom") { } - - class spell_warl_curse_of_doom_AuraScript : public AuraScript - { - PrepareAuraScript(spell_warl_curse_of_doom_AuraScript); - - bool Validate(SpellInfo const* /*spell*/) - { - if (!sSpellMgr->GetSpellInfo(WARLOCK_CURSE_OF_DOOM_EFFECT)) - return false; - return true; - } - - bool Load() - { - return GetCaster() && GetCaster()->GetTypeId() == TYPEID_PLAYER; - } - - void OnRemove(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/) - { - if (!GetCaster()) - return; - - AuraRemoveMode removeMode = GetTargetApplication()->GetRemoveMode(); - if (removeMode != AURA_REMOVE_BY_DEATH || !IsExpired()) - return; - - if (GetCaster()->ToPlayer()->isHonorOrXPTarget(GetTarget())) - GetCaster()->CastSpell(GetTarget(), WARLOCK_CURSE_OF_DOOM_EFFECT, true, NULL, aurEff); - } - - void Register() - { - AfterEffectRemove += AuraEffectRemoveFn(spell_warl_curse_of_doom_AuraScript::OnRemove, EFFECT_0, SPELL_AURA_PERIODIC_DAMAGE, AURA_EFFECT_HANDLE_REAL); - } - }; - - AuraScript* GetAuraScript() const - { - return new spell_warl_curse_of_doom_AuraScript(); - } -}; - -class spell_warl_health_funnel : public SpellScriptLoader -{ -public: - spell_warl_health_funnel() : SpellScriptLoader("spell_warl_health_funnel") { } - - class spell_warl_health_funnel_AuraScript : public AuraScript - { - PrepareAuraScript(spell_warl_health_funnel_AuraScript); - - void ApplyEffect(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) - { - Unit* caster = GetCaster(); - if (!caster) - return; - - Unit* target = GetTarget(); - if (caster->HasAura(WARLOCK_IMPROVED_HEALTH_FUNNEL_R2)) - target->CastSpell(target, WARLOCK_IMPROVED_HEALTH_FUNNEL_BUFF_R2, true); - else if (caster->HasAura(WARLOCK_IMPROVED_HEALTH_FUNNEL_R1)) - target->CastSpell(target, WARLOCK_IMPROVED_HEALTH_FUNNEL_BUFF_R1, true); - } - - void RemoveEffect(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) - { - Unit* target = GetTarget(); - target->RemoveAurasDueToSpell(WARLOCK_IMPROVED_HEALTH_FUNNEL_BUFF_R1); - target->RemoveAurasDueToSpell(WARLOCK_IMPROVED_HEALTH_FUNNEL_BUFF_R2); - } - - void Register() - { - OnEffectRemove += AuraEffectRemoveFn(spell_warl_health_funnel_AuraScript::RemoveEffect, EFFECT_0, SPELL_AURA_PERIODIC_HEAL, AURA_EFFECT_HANDLE_REAL); - OnEffectApply += AuraEffectApplyFn(spell_warl_health_funnel_AuraScript::ApplyEffect, EFFECT_0, SPELL_AURA_PERIODIC_HEAL, AURA_EFFECT_HANDLE_REAL); - } - }; - - AuraScript* GetAuraScript() const - { - return new spell_warl_health_funnel_AuraScript(); - } -}; - void AddSC_warlock_spell_scripts() { new spell_warl_banish(); - new spell_warl_demonic_empowerment(); new spell_warl_create_healthstone(); + new spell_warl_curse_of_doom(); + new spell_warl_demonic_circle_summon(); + new spell_warl_demonic_circle_teleport(); + new spell_warl_demonic_empowerment(); new spell_warl_everlasting_affliction(); + new spell_warl_haunt(); + new spell_warl_health_funnel(); + new spell_warl_life_tap(); new spell_warl_ritual_of_doom_effect(); new spell_warl_seed_of_corruption(); new spell_warl_soulshatter(); - new spell_warl_life_tap(); - new spell_warl_demonic_circle_summon(); - new spell_warl_demonic_circle_teleport(); - new spell_warl_haunt(); new spell_warl_unstable_affliction(); - new spell_warl_curse_of_doom(); - new spell_warl_health_funnel(); } -- cgit v1.2.3 From 0fe10ce283146fa682dd586f729806f684dc8f94 Mon Sep 17 00:00:00 2001 From: Malcrom Date: Sun, 13 Jan 2013 01:07:35 -0330 Subject: Core/Scripting: Updates to Zul'Grub Instance. --- .../EasternKingdoms/ZulGurub/boss_arlokk.cpp | 42 ++---- .../EasternKingdoms/ZulGurub/boss_gahzranka.cpp | 83 ++++++----- .../EasternKingdoms/ZulGurub/boss_grilek.cpp | 78 ++++++----- .../EasternKingdoms/ZulGurub/boss_hakkar.cpp | 32 ++--- .../EasternKingdoms/ZulGurub/boss_hazzarah.cpp | 100 +++++++------- .../EasternKingdoms/ZulGurub/boss_jeklik.cpp | 45 +++--- .../EasternKingdoms/ZulGurub/boss_jindo.cpp | 26 ++-- .../EasternKingdoms/ZulGurub/boss_mandokir.cpp | 22 ++- .../EasternKingdoms/ZulGurub/boss_marli.cpp | 40 +++--- .../EasternKingdoms/ZulGurub/boss_renataki.cpp | 17 +-- .../EasternKingdoms/ZulGurub/boss_thekal.cpp | 33 ++--- .../EasternKingdoms/ZulGurub/boss_venoxis.cpp | 39 ++---- .../EasternKingdoms/ZulGurub/boss_wushoolay.cpp | 63 +++++---- .../EasternKingdoms/ZulGurub/instance_zulgurub.cpp | 152 +++++++++++---------- .../scripts/EasternKingdoms/ZulGurub/zulgurub.h | 35 +++-- 15 files changed, 404 insertions(+), 403 deletions(-) (limited to 'src') diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp index 54a5f5c706c..593ee05d951 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp @@ -27,14 +27,14 @@ EndScriptData */ #include "ScriptedCreature.h" #include "zulgurub.h" -enum eYells +enum Says { SAY_AGGRO = 0, SAY_FEAST_PANTHER = 1, - SAY_DEATH = 2, + SAY_DEATH = 2 }; -enum eSpells +enum Spells { SPELL_SHADOWWORDPAIN = 23952, SPELL_GOUGE = 24698, @@ -51,21 +51,11 @@ enum eSpells class boss_arlokk : public CreatureScript { - public: - - boss_arlokk() - : CreatureScript("boss_arlokk") - { - } + public: boss_arlokk() : CreatureScript("boss_arlokk") {} - struct boss_arlokkAI : public ScriptedAI + struct boss_arlokkAI : public BossAI { - boss_arlokkAI(Creature* creature) : ScriptedAI(creature) - { - instance = creature->GetInstanceScript(); - } - - InstanceScript* instance; + boss_arlokkAI(Creature* creature) : BossAI(creature, DATA_ARLOKK) {} uint32 m_uiShadowWordPain_Timer; uint32 m_uiGouge_Timer; @@ -104,8 +94,17 @@ class boss_arlokk : public CreatureScript me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); } + void JustDied(Unit* /*killer*/) + { + _JustDied(); + Talk(SAY_DEATH); + me->SetDisplayId(MODEL_ID_NORMAL); + me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + } + void EnterCombat(Unit* /*who*/) { + _EnterCombat(); Talk(SAY_AGGRO); } @@ -118,17 +117,6 @@ class boss_arlokk : public CreatureScript me->DespawnOrUnsummon(); } - void JustDied(Unit* /*killer*/) - { - Talk(SAY_DEATH); - - me->SetDisplayId(MODEL_ID_NORMAL); - me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - - if (instance) - instance->SetData(DATA_ARLOKK, DONE); - } - void DoSummonPhanters() { if (MarkedTargetGUID) diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp index e7d54aecb31..7943e51a7cd 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp @@ -25,62 +25,73 @@ EndScriptData */ #include "ScriptMgr.h" #include "ScriptedCreature.h" +#include "zulgurub.h" -#define SPELL_FROSTBREATH 16099 -#define SPELL_MASSIVEGEYSER 22421 //Not working. Cause its a summon... -#define SPELL_SLAM 24326 +enum Spells +{ + SPELL_FROSTBREATH = 16099, + SPELL_MASSIVEGEYSER = 22421, // Not working. (summon) + SPELL_SLAM = 24326 +}; + +enum Events +{ + EVENT_FROSTBREATH = 0, + EVENT_MASSIVEGEYSER = 1, + EVENT_SLAM = 2 +}; -class boss_gahzranka : public CreatureScript +class boss_gahzranka : public CreatureScript // gahzranka { - public: - boss_gahzranka() : CreatureScript("boss_gahzranka") { } + public: boss_gahzranka() : CreatureScript("boss_gahzranka") {} - struct boss_gahzrankaAI : public ScriptedAI + struct boss_gahzrankaAI : public BossAI { - boss_gahzrankaAI(Creature* creature) : ScriptedAI(creature) { } - uint32 Frostbreath_Timer; - uint32 MassiveGeyser_Timer; - uint32 Slam_Timer; + boss_gahzrankaAI(Creature* creature) : BossAI(creature, DATA_GAHZRANKA) {} - void Reset() + void JustDied(Unit* /*killer*/) { - Frostbreath_Timer = 8000; - MassiveGeyser_Timer = 25000; - Slam_Timer = 17000; + _JustDied(); } void EnterCombat(Unit* /*who*/) { + _EnterCombat(); + events.ScheduleEvent(EVENT_FROSTBREATH, 8000); + events.ScheduleEvent(EVENT_MASSIVEGEYSER, 25000); + events.ScheduleEvent(EVENT_SLAM, 17000); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 const diff) { - //Return since we have no target if (!UpdateVictim()) return; - //Frostbreath_Timer - if (Frostbreath_Timer <= diff) - { - DoCast(me->getVictim(), SPELL_FROSTBREATH); - Frostbreath_Timer = urand(7000, 11000); - } else Frostbreath_Timer -= diff; - - //MassiveGeyser_Timer - if (MassiveGeyser_Timer <= diff) - { - DoCast(me->getVictim(), SPELL_MASSIVEGEYSER); - DoResetThreat(); + events.Update(diff); - MassiveGeyser_Timer = urand(22000, 32000); - } else MassiveGeyser_Timer -= diff; + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; - //Slam_Timer - if (Slam_Timer <= diff) + while (uint32 eventId = events.ExecuteEvent()) { - DoCast(me->getVictim(), SPELL_SLAM); - Slam_Timer = urand(12000, 20000); - } else Slam_Timer -= diff; + switch (eventId) + { + case EVENT_FROSTBREATH: + DoCastVictim(SPELL_FROSTBREATH, true); + events.ScheduleEvent(EVENT_FROSTBREATH, urand(7000, 11000)); + break; + case EVENT_MASSIVEGEYSER: + DoCastVictim(SPELL_MASSIVEGEYSER, true); + events.ScheduleEvent(EVENT_MASSIVEGEYSER, urand(22000, 32000)); + break; + case EVENT_SLAM: + DoCastVictim(SPELL_SLAM, true); + events.ScheduleEvent(EVENT_SLAM, urand(12000, 20000)); + break; + default: + break; + } + } DoMeleeAttackIfReady(); } diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp index 4ccdbceb466..686ecb55c88 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp @@ -27,60 +27,68 @@ EndScriptData */ #include "ScriptedCreature.h" #include "zulgurub.h" -#define SPELL_AVARTAR 24646 //The Enrage Spell -#define SPELL_GROUNDTREMOR 6524 +enum Spells +{ + SPELL_AVARTAR = 24646, // Enrage Spell + SPELL_GROUNDTREMOR = 6524 +}; + +enum Events +{ + EVENT_AVARTAR = 0, + EVENT_GROUNDTREMOR = 1 +}; -class boss_grilek : public CreatureScript +class boss_grilek : public CreatureScript // grilek { - public: - boss_grilek() : CreatureScript("boss_grilek") { } + public: boss_grilek() : CreatureScript("boss_grilek") {} - struct boss_grilekAI : public ScriptedAI + struct boss_grilekAI : public BossAI { - boss_grilekAI(Creature* creature) : ScriptedAI(creature) { } - - uint32 Avartar_Timer; - uint32 GroundTremor_Timer; + boss_grilekAI(Creature* creature) : BossAI(creature, DATA_EDGE_OF_MADNESS) {} - void Reset() + void JustDied(Unit* /*killer*/) { - Avartar_Timer = urand(15000, 25000); - GroundTremor_Timer = urand(8000, 16000); + _JustDied(); } void EnterCombat(Unit* /*who*/) { + _EnterCombat(); + events.ScheduleEvent(EVENT_AVARTAR, urand(15000, 25000)); + events.ScheduleEvent(EVENT_GROUNDTREMOR, urand(15000, 25000)); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 const diff) { - //Return since we have no target if (!UpdateVictim()) return; - //Avartar_Timer - if (Avartar_Timer <= diff) - { - - DoCast(me, SPELL_AVARTAR); - Unit* target = NULL; - - target = SelectTarget(SELECT_TARGET_RANDOM, 1); + events.Update(diff); - if (DoGetThreat(me->getVictim())) - DoModifyThreatPercent(me->getVictim(), -50); - if (target) - AttackStart(target); - - Avartar_Timer = urand(25000, 35000); - } else Avartar_Timer -= diff; + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; - //GroundTremor_Timer - if (GroundTremor_Timer <= diff) + while (uint32 eventId = events.ExecuteEvent()) { - DoCast(me->getVictim(), SPELL_GROUNDTREMOR); - GroundTremor_Timer = urand(12000, 16000); - } else GroundTremor_Timer -= diff; + switch (eventId) + { + case EVENT_AVARTAR: + DoCast(me, SPELL_AVARTAR); + if (DoGetThreat(me->getVictim())) + DoModifyThreatPercent(me->getVictim(), -50); + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1)) + AttackStart(target); + events.ScheduleEvent(EVENT_AVARTAR, urand(25000, 35000)); + break; + case EVENT_GROUNDTREMOR: + DoCastVictim(SPELL_GROUNDTREMOR, true); + events.ScheduleEvent(EVENT_GROUNDTREMOR, urand(12000, 16000)); + break; + default: + break; + } + } DoMeleeAttackIfReady(); } diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp index 781b68bfcb0..87a9c02e3ed 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp @@ -27,19 +27,21 @@ EndScriptData */ #include "ScriptedCreature.h" #include "zulgurub.h" -enum Hakkar +enum Says { SAY_AGGRO = 0, SAY_FLEEING = 1, SAY_MINION_DESTROY = 2, //where does it belong? - SAY_PROTECT_ALTAR = 3, //where does it belong? + SAY_PROTECT_ALTAR = 3 //where does it belong? +}; +enum Spells +{ SPELL_BLOODSIPHON = 24322, SPELL_CORRUPTEDBLOOD = 24328, SPELL_CAUSEINSANITY = 24327, //Not working disabled. SPELL_WILLOFHAKKAR = 24178, SPELL_ENRAGE = 24318, - // The Aspects of all High Priests SPELL_ASPECT_OF_JEKLIK = 24687, SPELL_ASPECT_OF_VENOXIS = 24688, @@ -48,23 +50,13 @@ enum Hakkar SPELL_ASPECT_OF_ARLOKK = 24690 }; -class boss_hakkar : public CreatureScript +class boss_hakkar : public CreatureScript // hakkar { - public: - - boss_hakkar() - : CreatureScript("boss_hakkar") - { - } + public: boss_hakkar() : CreatureScript("boss_hakkar") {} - struct boss_hakkarAI : public ScriptedAI + struct boss_hakkarAI : public BossAI { - boss_hakkarAI(Creature* creature) : ScriptedAI(creature) - { - instance = creature->GetInstanceScript(); - } - - InstanceScript* instance; + boss_hakkarAI(Creature* creature) : BossAI(creature, DATA_HAKKAR) {} uint32 BloodSiphon_Timer; uint32 CorruptedBlood_Timer; @@ -109,8 +101,14 @@ class boss_hakkar : public CreatureScript Enraged = false; } + void JustDied(Unit* /*killer*/) + { + _JustDied(); + } + void EnterCombat(Unit* /*who*/) { + _EnterCombat(); Talk(SAY_AGGRO); } diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp index bbdc2905874..d7266794f7d 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp @@ -27,75 +27,81 @@ EndScriptData */ #include "ScriptedCreature.h" #include "zulgurub.h" -#define SPELL_MANABURN 26046 -#define SPELL_SLEEP 24664 +enum Spells +{ + SPELL_MANABURN = 26046, + SPELL_SLEEP = 24664 +}; -class boss_hazzarah : public CreatureScript +enum Events { - public: + EVENT_MANABURN = 0, + EVENT_SLEEP = 1, + EVENT_ILLUSIONS = 2 +}; - boss_hazzarah() - : CreatureScript("boss_hazzarah") - { - } +class boss_hazzarah : public CreatureScript +{ + public: boss_hazzarah() : CreatureScript("boss_hazzarah") {} - struct boss_hazzarahAI : public ScriptedAI + struct boss_hazzarahAI : public BossAI { - boss_hazzarahAI(Creature* creature) : ScriptedAI(creature) {} - - uint32 ManaBurn_Timer; - uint32 Sleep_Timer; - uint32 Illusions_Timer; + boss_hazzarahAI(Creature* creature) : BossAI(creature, DATA_EDGE_OF_MADNESS) {} - void Reset() + void JustDied(Unit* /*killer*/) { - ManaBurn_Timer = urand(4000, 10000); - Sleep_Timer = urand(10000, 18000); - Illusions_Timer = urand(10000, 18000); + _JustDied(); } void EnterCombat(Unit* /*who*/) { + _EnterCombat(); + events.ScheduleEvent(EVENT_MANABURN, urand(4000, 10000)); + events.ScheduleEvent(EVENT_SLEEP, urand(10000, 18000)); + events.ScheduleEvent(EVENT_ILLUSIONS, urand(10000, 18000)); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 const diff) { if (!UpdateVictim()) return; - //ManaBurn_Timer - if (ManaBurn_Timer <= diff) - { - DoCast(me->getVictim(), SPELL_MANABURN); - ManaBurn_Timer = urand(8000, 16000); - } else ManaBurn_Timer -= diff; + events.Update(diff); - //Sleep_Timer - if (Sleep_Timer <= diff) - { - DoCast(me->getVictim(), SPELL_SLEEP); - Sleep_Timer = urand(12000, 20000); - } else Sleep_Timer -= diff; + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; - //Illusions_Timer - if (Illusions_Timer <= diff) + while (uint32 eventId = events.ExecuteEvent()) { - //We will summon 3 illusions that will spawn on a random gamer and attack this gamer - //We will just use one model for the beginning - Unit* target = NULL; - for (uint8 i = 0; i < 3; ++i) + switch (eventId) { - target = SelectTarget(SELECT_TARGET_RANDOM, 0); - if (!target) - return; - - Creature* Illusion = me->SummonCreature(15163, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 30000); - if (Illusion) - Illusion->AI()->AttackStart(target); + case EVENT_MANABURN: + DoCastVictim(SPELL_MANABURN, true); + events.ScheduleEvent(EVENT_MANABURN, urand(8000, 16000)); + break; + case EVENT_SLEEP: + DoCastVictim(SPELL_SLEEP, true); + events.ScheduleEvent(EVENT_SLEEP, urand(12000, 20000)); + break; + case EVENT_ILLUSIONS: + // We will summon 3 illusions that will spawn on a random gamer and attack this gamer + // We will just use one model for the beginning + for (uint8 i = 0; i < 3; ++i) + { + Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0); + if (!target) + return; + + Creature* Illusion = me->SummonCreature(NPC_NIGHTMARE_ILLUSION, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 30000); + if (Illusion) + Illusion->AI()->AttackStart(target); + } + events.ScheduleEvent(EVENT_ILLUSIONS, urand(15000, 25000)); + break; + default: + break; } - - Illusions_Timer = urand(15000, 25000); - } else Illusions_Timer -= diff; + } DoMeleeAttackIfReady(); } diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_jeklik.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_jeklik.cpp index 10431ec84bd..4d27fd99769 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_jeklik.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_jeklik.cpp @@ -27,42 +27,34 @@ EndScriptData */ #include "ScriptedCreature.h" #include "zulgurub.h" -enum Jeklik +enum Says { SAY_AGGRO = 0, SAY_RAIN_FIRE = 1, - SAY_DEATH = 2, + SAY_DEATH = 2 +}; +enum Spells +{ SPELL_CHARGE = 22911, SPELL_SONICBURST = 23918, SPELL_SCREECH = 6605, SPELL_SHADOW_WORD_PAIN = 23952, SPELL_MIND_FLAY = 23953, - SPELL_CHAIN_MIND_FLAY = 26044, //Right ID unknown. So disabled + SPELL_CHAIN_MIND_FLAY = 26044, // Right ID unknown. So disabled SPELL_GREATERHEAL = 23954, SPELL_BAT_FORM = 23966, - // Batriders Spell - SPELL_BOMB = 40332 //Wrong ID but Magmadars bomb is not working... + SPELL_BOMB = 40332 // Wrong ID but Magmadars bomb is not working... }; -class boss_jeklik : public CreatureScript +class boss_jeklik : public CreatureScript //jeklik { - public: - - boss_jeklik() - : CreatureScript("boss_jeklik") - { - } + public: boss_jeklik() : CreatureScript("boss_jeklik") {} - struct boss_jeklikAI : public ScriptedAI + struct boss_jeklikAI : public BossAI { - boss_jeklikAI(Creature* creature) : ScriptedAI(creature) - { - instance = creature->GetInstanceScript(); - } - - InstanceScript* instance; + boss_jeklikAI(Creature* creature) : BossAI(creature, DATA_JEKLIK) {} uint32 Charge_Timer; uint32 SonicBurst_Timer; @@ -91,18 +83,17 @@ class boss_jeklik : public CreatureScript PhaseTwo = false; } - void EnterCombat(Unit* /*who*/) - { - Talk(SAY_AGGRO); - DoCast(me, SPELL_BAT_FORM); - } - void JustDied(Unit* /*killer*/) { + _JustDied(); Talk(SAY_DEATH); + } - if (instance) - instance->SetData(DATA_JEKLIK, DONE); + void EnterCombat(Unit* /*who*/) + { + _EnterCombat(); + Talk(SAY_AGGRO); + DoCast(me, SPELL_BAT_FORM); } void UpdateAI(const uint32 diff) diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp index 7c4c9626f9a..61f8fa08c2f 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp @@ -27,19 +27,20 @@ EndScriptData */ #include "ScriptedCreature.h" #include "zulgurub.h" -enum Jindo +enum Say { - SAY_AGGRO = 1, + SAY_AGGRO = 1 +}; +enum Spells +{ SPELL_BRAINWASHTOTEM = 24262, SPELL_POWERFULLHEALINGWARD = 24309, //We will not use this spell. We will summon a totem by script cause the spell totems will not cast. SPELL_HEX = 24053, SPELL_DELUSIONSOFJINDO = 24306, SPELL_SHADEOFJINDO = 24308, //We will not use this spell. We will summon a shade by script. - //Healing Ward Spell SPELL_HEAL = 38588, //Totems are not working right. Right heal spell ID is 24311 but this spell is not casting... - //Shade of Jindo Spell SPELL_SHADOWSHOCK = 19460, SPELL_INVISIBLE = 24699 @@ -47,16 +48,11 @@ enum Jindo class boss_jindo : public CreatureScript { - public: + public: boss_jindo() : CreatureScript("boss_jindo") {} - boss_jindo() - : CreatureScript("boss_jindo") + struct boss_jindoAI : public BossAI { - } - - struct boss_jindoAI : public ScriptedAI - { - boss_jindoAI(Creature* creature) : ScriptedAI(creature) {} + boss_jindoAI(Creature* creature) : BossAI(creature, DATA_JINDO) {} uint32 BrainWashTotem_Timer; uint32 HealingWard_Timer; @@ -73,8 +69,14 @@ class boss_jindo : public CreatureScript Teleport_Timer = 5000; } + void JustDied(Unit* /*killer*/) + { + _JustDied(); + } + void EnterCombat(Unit* /*who*/) { + _EnterCombat(); Talk(SAY_AGGRO); } diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp index bcc080bb8a5..b7230aa8b65 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp @@ -50,21 +50,13 @@ enum Mandokir NPC_SPEAKER = 11391 }; -class boss_mandokir : public CreatureScript +class boss_mandokir : public CreatureScript //mandokir { - public: + public: boss_mandokir() : CreatureScript("boss_mandokir") {} - boss_mandokir() - : CreatureScript("boss_mandokir") + struct boss_mandokirAI : public BossAI { - } - - struct boss_mandokirAI : public ScriptedAI - { - boss_mandokirAI(Creature* creature) : ScriptedAI(creature) - { - instance = creature->GetInstanceScript(); - } + boss_mandokirAI(Creature* creature) : BossAI(creature, DATA_MANDOKIR) {} uint32 KillCount; uint32 Watch_Timer; @@ -114,6 +106,11 @@ class boss_mandokir : public CreatureScript DoCast(me, 23243); } + void JustDied(Unit* /*killer*/) + { + _JustDied(); + } + void KilledUnit(Unit* victim) { if (victim->GetTypeId() == TYPEID_PLAYER) @@ -144,6 +141,7 @@ class boss_mandokir : public CreatureScript void EnterCombat(Unit* /*who*/) { + _EnterCombat(); Talk(SAY_AGGRO); } diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_marli.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_marli.cpp index 56aeee93ee2..35ddb93c83e 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_marli.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_marli.cpp @@ -27,40 +27,32 @@ EndScriptData */ #include "ScriptedCreature.h" #include "zulgurub.h" -enum Marli +enum Says { SAY_AGGRO = 0, SAY_TRANSFORM = 1, SAY_SPIDER_SPAWN = 2, - SAY_DEATH = 3, + SAY_DEATH = 3 +}; +enum Spells +{ SPELL_CHARGE = 22911, SPELL_ASPECT_OF_MARLI = 24686, // A stun spell SPELL_ENVOLWINGWEB = 24110, SPELL_POISONVOLLEY = 24099, SPELL_SPIDER_FORM = 24084, - //The Spider Spells - SPELL_LEVELUP = 24312 //Not right Spell. + SPELL_LEVELUP = 24312 // Not right Spell. }; -class boss_marli : public CreatureScript +class boss_marli : public CreatureScript // marli { - public: + public: boss_marli() : CreatureScript("boss_marli") {} - boss_marli() - : CreatureScript("boss_marli") + struct boss_marliAI : public BossAI { - } - - struct boss_marliAI : public ScriptedAI - { - boss_marliAI(Creature* creature) : ScriptedAI(creature) - { - instance = creature->GetInstanceScript(); - } - - InstanceScript* instance; + boss_marliAI(Creature* creature) : BossAI(creature, DATA_MARLI) {} uint32 SpawnStartSpiders_Timer; uint32 PoisonVolley_Timer; @@ -87,16 +79,16 @@ class boss_marli : public CreatureScript PhaseTwo = false; } - void EnterCombat(Unit* /*who*/) + void JustDied(Unit* /*killer*/) { - Talk(SAY_AGGRO); + _JustDied(); + Talk(SAY_DEATH); } - void JustDied(Unit* /*killer*/) + void EnterCombat(Unit* /*who*/) { - Talk(SAY_DEATH); - if (instance) - instance->SetData(DATA_MARLI, DONE); + _EnterCombat(); + Talk(SAY_AGGRO); } void UpdateAI(const uint32 diff) diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_renataki.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_renataki.cpp index d562b7cdf9b..65730d1baf2 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_renataki.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_renataki.cpp @@ -40,16 +40,11 @@ enum Misc class boss_renataki : public CreatureScript { - public: + public: boss_renataki() : CreatureScript("boss_renataki") {} - boss_renataki() - : CreatureScript("boss_renataki") + struct boss_renatakiAI : public BossAI { - } - - struct boss_renatakiAI : public ScriptedAI - { - boss_renatakiAI(Creature* creature) : ScriptedAI(creature) {} + boss_renatakiAI(Creature* creature) : BossAI(creature, DATA_EDGE_OF_MADNESS) {} uint32 Invisible_Timer; uint32 Ambush_Timer; @@ -72,8 +67,14 @@ class boss_renataki : public CreatureScript Ambushed = false; } + void JustDied(Unit* /*killer*/) + { + _JustDied(); + } + void EnterCombat(Unit* /*who*/) { + _EnterCombat(); } void UpdateAI(const uint32 diff) diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp index d91b8f0b483..69a1348db15 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp @@ -30,8 +30,11 @@ EndScriptData */ enum Thekal { SAY_AGGRO = 0, - SAY_DEATH = 1, + SAY_DEATH = 1 +}; +enum Spells +{ SPELL_MORTALCLEAVE = 22859, SPELL_SILENCE = 22666, SPELL_FRENZY = 8269, @@ -56,21 +59,13 @@ enum Thekal SPELL_BLIND = 21060 }; -class boss_thekal : public CreatureScript +class boss_thekal : public CreatureScript // thekal { - public: + public: boss_thekal() : CreatureScript("boss_thekal") {} - boss_thekal() - : CreatureScript("boss_thekal") + struct boss_thekalAI : public BossAI { - } - - struct boss_thekalAI : public ScriptedAI - { - boss_thekalAI(Creature* creature) : ScriptedAI(creature) - { - instance = creature->GetInstanceScript(); - } + boss_thekalAI(Creature* creature) : BossAI(creature, DATA_THEKAL) {} uint32 MortalCleave_Timer; uint32 Silence_Timer; @@ -104,16 +99,16 @@ class boss_thekal : public CreatureScript WasDead = false; } - void EnterCombat(Unit* /*who*/) + void JustDied(Unit* /*killer*/) { - Talk(SAY_AGGRO); + _JustDied(); + Talk(SAY_DEATH); } - void JustDied(Unit* /*killer*/) + void EnterCombat(Unit* /*who*/) { - Talk(SAY_DEATH); - if (instance) - instance->SetData(DATA_THEKAL, DONE); + _EnterCombat(); + Talk(SAY_AGGRO); } void JustReachedHome() diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_venoxis.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_venoxis.cpp index ff63e4a8adb..7fe250eda57 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_venoxis.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_venoxis.cpp @@ -27,10 +27,10 @@ * - Fix timers (research some more) */ -enum Texts +enum Says { SAY_VENOXIS_TRANSFORM = 1, // Let the coils of hate unfurl! - SAY_VENOXIS_DEATH = 2, // Ssserenity.. at lassst! + SAY_VENOXIS_DEATH = 2 // Ssserenity.. at lassst! }; enum Spells @@ -53,12 +53,12 @@ enum Spells // used when swapping event-stages SPELL_VENOXIS_TRANSFORM = 23849, // 50% health - shapechange to cobra - SPELL_FRENZY = 8269, // 20% health - frenzy + SPELL_FRENZY = 8269 // 20% health - frenzy }; enum NPCs { - NPC_PARASITIC_SERPENT = 14884, + NPC_PARASITIC_SERPENT = 14884 }; enum Events @@ -70,10 +70,8 @@ enum Events EVENT_HOLY_NOVA = 4, EVENT_HOLY_FIRE = 5, EVENT_HOLY_WRATH = 6, - // phase-changing EVENT_TRANSFORM = 7, - // snake form events EVENT_POISON_CLOUD = 8, EVENT_VENOM_SPIT = 9, @@ -84,19 +82,16 @@ enum Events enum Phases { PHASE_ONE = 1, // troll form - PHASE_TWO = 2, // snake form + PHASE_TWO = 2 // snake form }; class boss_venoxis : public CreatureScript { - public: - boss_venoxis() : CreatureScript("boss_venoxis") {} + public: boss_venoxis() : CreatureScript("boss_venoxis") {} struct boss_venoxisAI : public BossAI { - boss_venoxisAI(Creature* creature) : BossAI(creature, DATA_VENOXIS) - { - } + boss_venoxisAI(Creature* creature) : BossAI(creature, DATA_VENOXIS) {} void Reset() { @@ -118,15 +113,19 @@ class boss_venoxis : public CreatureScript events.SetPhase(PHASE_ONE); } + void JustDied(Unit* /*killer*/) + { + _JustDied(); + Talk(SAY_VENOXIS_DEATH); + me->RemoveAllAuras(); + } + void EnterCombat(Unit* /*who*/) { + _EnterCombat(); me->SetReactState(REACT_AGGRESSIVE); - - instance->SetBossState(DATA_VENOXIS, IN_PROGRESS); - // Always running events events.ScheduleEvent(EVENT_THRASH, 5000); - // Phase one events (regular form) events.ScheduleEvent(EVENT_HOLY_NOVA, 5000, 0, PHASE_ONE); events.ScheduleEvent(EVENT_DISPEL_MAGIC, 35000, 0, PHASE_ONE); @@ -157,14 +156,6 @@ class boss_venoxis : public CreatureScript } } - void JustDied(Unit* /*killer*/) - { - Talk(SAY_VENOXIS_DEATH); - // venoxis is dead, mark him as such for the instance - instance->SetBossState(DATA_VENOXIS, DONE); - me->RemoveAllAuras(); - } - void UpdateAI(const uint32 diff) { if (!UpdateVictim()) diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_wushoolay.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_wushoolay.cpp index 810ee5e900e..196df2b98b9 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_wushoolay.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_wushoolay.cpp @@ -33,53 +33,58 @@ enum Spells SPELL_LIGHTNINGWAVE = 24819 }; -class boss_wushoolay : public CreatureScript +enum Events { - public: + EVENT_LIGHTNINGCLOUD = 0, + EVENT_LIGHTNINGWAVE = 1 +}; - boss_wushoolay() - : CreatureScript("boss_wushoolay") - { - } +class boss_wushoolay : public CreatureScript +{ + public: boss_wushoolay() : CreatureScript("boss_wushoolay") {} - struct boss_wushoolayAI : public ScriptedAI + struct boss_wushoolayAI : public BossAI { - boss_wushoolayAI(Creature* creature) : ScriptedAI(creature) {} + boss_wushoolayAI(Creature* creature) : BossAI(creature, DATA_EDGE_OF_MADNESS) {} - uint32 LightningCloud_Timer; - uint32 LightningWave_Timer; - - void Reset() + void JustDied(Unit* /*killer*/) { - LightningCloud_Timer = urand(5000, 10000); - LightningWave_Timer = urand(8000, 16000); + _JustDied(); } void EnterCombat(Unit* /*who*/) { + _EnterCombat(); + events.ScheduleEvent(EVENT_LIGHTNINGCLOUD, urand(5000, 10000)); + events.ScheduleEvent(EVENT_LIGHTNINGWAVE, urand(8000, 16000)); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 const diff) { if (!UpdateVictim()) return; - //LightningCloud_Timer - if (LightningCloud_Timer <= diff) - { - DoCast(me->getVictim(), SPELL_LIGHTNINGCLOUD); - LightningCloud_Timer = urand(15000, 20000); - } else LightningCloud_Timer -= diff; + events.Update(diff); - //LightningWave_Timer - if (LightningWave_Timer <= diff) - { - Unit* target = NULL; - target = SelectTarget(SELECT_TARGET_RANDOM, 0); - if (target) DoCast(target, SPELL_LIGHTNINGWAVE); + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; - LightningWave_Timer = urand(12000, 16000); - } else LightningWave_Timer -= diff; + while (uint32 eventId = events.ExecuteEvent()) + { + switch (eventId) + { + case EVENT_LIGHTNINGCLOUD: + DoCastVictim(SPELL_LIGHTNINGCLOUD, true); + events.ScheduleEvent(EVENT_LIGHTNINGCLOUD, urand(15000, 20000)); + break; + case EVENT_LIGHTNINGWAVE: + DoCast(SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true), SPELL_LIGHTNINGWAVE); + events.ScheduleEvent(EVENT_LIGHTNINGWAVE, urand(12000, 16000)); + break; + default: + break; + } + } DoMeleeAttackIfReady(); } diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp index cfaf19642f2..a4fb19b708a 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp @@ -29,33 +29,28 @@ EndScriptData */ class instance_zulgurub : public InstanceMapScript { - public: - instance_zulgurub() - : InstanceMapScript("instance_zulgurub", 309) - { - } + public: instance_zulgurub(): InstanceMapScript("instance_zulgurub", 309) {} struct instance_zulgurub_InstanceMapScript : public InstanceScript { - instance_zulgurub_InstanceMapScript(Map* map) : InstanceScript(map) {} + instance_zulgurub_InstanceMapScript(Map* map) : InstanceScript(map) + { + SetBossNumber(EncounterCount); + } //If all High Priest bosses were killed. Lorkhan, Zath and Ohgan are added too. - uint32 m_auiEncounter[MAX_ENCOUNTERS]; - //Storing Lorkhan, Zath and Thekal because we need to cast on them later. Jindo is needed for healfunction too. - uint64 m_uiLorKhanGUID; - uint64 m_uiZathGUID; - uint64 m_uiThekalGUID; - uint64 m_uiJindoGUID; + uint64 LorKhanGUID; + uint64 ZathGUID; + uint64 ThekalGUID; + uint64 JindoGUID; void Initialize() { - memset(&m_auiEncounter, 0, sizeof(m_auiEncounter)); - - m_uiLorKhanGUID = 0; - m_uiZathGUID = 0; - m_uiThekalGUID = 0; - m_uiJindoGUID = 0; + LorKhanGUID = 0; + ZathGUID = 0; + ThekalGUID = 0; + JindoGUID = 0; } bool IsEncounterInProgress() const @@ -68,73 +63,39 @@ class instance_zulgurub : public InstanceMapScript { switch (creature->GetEntry()) { - case 11347: m_uiLorKhanGUID = creature->GetGUID(); break; - case 11348: m_uiZathGUID = creature->GetGUID(); break; - case 14509: m_uiThekalGUID = creature->GetGUID(); break; - case 11380: m_uiJindoGUID = creature->GetGUID(); break; + case NPC_ZEALOT_LORKHAN: LorKhanGUID = creature->GetGUID(); break; + case NPC_ZEALOT_ZATH: ZathGUID = creature->GetGUID(); break; + case NPC_HIGH_PRIEST_THEKAL: ThekalGUID = creature->GetGUID(); break; + case NPC_JINDO_THE_HEXXER: JindoGUID = creature->GetGUID(); break; } } - void SetData(uint32 uiType, uint32 uiData) + bool SetBossState(uint32 type, EncounterState state) { - switch (uiType) - { - case DATA_ARLOKK: - m_auiEncounter[0] = uiData; - break; + if (!InstanceScript::SetBossState(type, state)) + return false; + switch (type) + { case DATA_JEKLIK: - m_auiEncounter[1] = uiData; - break; - case DATA_VENOXIS: - m_auiEncounter[2] = uiData; - break; - case DATA_MARLI: - m_auiEncounter[3] = uiData; - break; - + case DATA_ARLOKK: + case DATA_HAKKAR: + case DATA_MANDOKIR: + case DATA_JINDO: + case DATA_GAHZRANKA: + case DATA_EDGE_OF_MADNESS: case DATA_THEKAL: - m_auiEncounter[4] = uiData; - break; - case DATA_LORKHAN: - m_auiEncounter[5] = uiData; - break; - case DATA_ZATH: - m_auiEncounter[6] = uiData; - break; - case DATA_OHGAN: - m_auiEncounter[7] = uiData; + break; + default: break; } - } - uint32 GetData(uint32 uiType) const - { - switch (uiType) - { - case DATA_ARLOKK: - return m_auiEncounter[0]; - case DATA_JEKLIK: - return m_auiEncounter[1]; - case DATA_VENOXIS: - return m_auiEncounter[2]; - case DATA_MARLI: - return m_auiEncounter[3]; - case DATA_THEKAL: - return m_auiEncounter[4]; - case DATA_LORKHAN: - return m_auiEncounter[5]; - case DATA_ZATH: - return m_auiEncounter[6]; - case DATA_OHGAN: - return m_auiEncounter[7]; - } - return 0; + return true; } uint64 GetData64(uint32 uiData) const @@ -142,16 +103,59 @@ class instance_zulgurub : public InstanceMapScript switch (uiData) { case DATA_LORKHAN: - return m_uiLorKhanGUID; + return LorKhanGUID; case DATA_ZATH: - return m_uiZathGUID; + return ZathGUID; case DATA_THEKAL: - return m_uiThekalGUID; + return ThekalGUID; case DATA_JINDO: - return m_uiJindoGUID; + return JindoGUID; } return 0; } + + std::string GetSaveData() + { + OUT_SAVE_INST_DATA; + + std::ostringstream saveStream; + saveStream << "M C " << GetBossSaveData(); + + OUT_SAVE_INST_DATA_COMPLETE; + return saveStream.str(); + } + + void Load(const char* str) + { + if (!str) + { + OUT_LOAD_INST_DATA_FAIL; + return; + } + + OUT_LOAD_INST_DATA(str); + + char dataHead1, dataHead2; + + std::istringstream loadStream(str); + loadStream >> dataHead1 >> dataHead2; + + if (dataHead1 == 'M' && dataHead2 == 'C') + { + for (uint32 i = 0; i < EncounterCount; ++i) + { + uint32 tmpState; + loadStream >> tmpState; + if (tmpState == IN_PROGRESS || tmpState > SPECIAL) + tmpState = NOT_STARTED; + SetBossState(i, EncounterState(tmpState)); + } + } + else + OUT_LOAD_INST_DATA_FAIL; + + OUT_LOAD_INST_DATA_COMPLETE; + } }; InstanceScript* GetInstanceScript(InstanceMap* map) const diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h b/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h index 22637315066..55bf0e50e3c 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h +++ b/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h @@ -1,6 +1,5 @@ /* * Copyright (C) 2008-2013 TrinityCore - * Copyright (C) 2006-2009 ScriptDev2 * * 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 @@ -19,20 +18,32 @@ #ifndef DEF_ZULGURUB_H #define DEF_ZULGURUB_H +uint32 const EncounterCount = 13; + enum DataTypes { - MAX_ENCOUNTERS = 8, + DATA_JEKLIK = 0, // Main boss + DATA_VENOXIS = 1, // Main boss + DATA_MARLI = 2, // Main boss + DATA_ARLOKK = 3, // Main boss + DATA_HAKKAR = 4, // Main boss + DATA_MANDOKIR = 5, // Optional boss + DATA_JINDO = 6, // Optional boss + DATA_GAHZRANKA = 7, // Optional boss + DATA_EDGE_OF_MADNESS = 8, // Optional Event Edge of Madness - one of: Gri'lek, Renataki, Hazza'rah, or Wushoolay + DATA_THEKAL = 9, // ?? + DATA_LORKHAN = 10, // ?? + DATA_ZATH = 11, // ?? + DATA_OHGAN = 12 // ?? +}; - DATA_ARLOKK = 1, - DATA_JEKLIK = 2, - DATA_VENOXIS = 3, - DATA_MARLI = 4, - DATA_OHGAN = 5, - DATA_THEKAL = 6, - DATA_ZATH = 7, - DATA_LORKHAN = 8, - DATA_JINDO = 10, +enum CreatureIds +{ + NPC_ZEALOT_LORKHAN = 11347, + NPC_ZEALOT_ZATH = 11348, + NPC_HIGH_PRIEST_THEKAL = 14509, + NPC_JINDO_THE_HEXXER = 11380, + NPC_NIGHTMARE_ILLUSION = 15163 }; #endif - -- cgit v1.2.3 From d7383717ea246d17b88b9c442df3caf1e6e754eb Mon Sep 17 00:00:00 2001 From: Malcrom Date: Sun, 13 Jan 2013 01:38:28 -0330 Subject: Core/Scripting: Misc Cleanup. --- .../EasternKingdoms/ZulAman/boss_halazzi.cpp | 56 ++++++++++++---------- src/server/scripts/EasternKingdoms/boss_kruul.cpp | 17 ++++--- .../scripts/Northrend/Naxxramas/boss_grobbulus.cpp | 36 ++++++++------ .../scripts/Northrend/VioletHold/boss_xevozz.cpp | 4 +- .../CoilfangReservoir/underbog/boss_hungarfen.cpp | 7 ++- 5 files changed, 70 insertions(+), 50 deletions(-) (limited to 'src') diff --git a/src/server/scripts/EasternKingdoms/ZulAman/boss_halazzi.cpp b/src/server/scripts/EasternKingdoms/ZulAman/boss_halazzi.cpp index 935e54eae0c..577423adb39 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/boss_halazzi.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/boss_halazzi.cpp @@ -45,32 +45,37 @@ EndScriptData */ #define YELL_BERSERK "Whatch you be doing? Pissin' yourselves..." #define SOUND_BERSERK 12025 -#define SPELL_DUAL_WIELD 29651 -#define SPELL_SABER_LASH 43267 -#define SPELL_FRENZY 43139 -#define SPELL_FLAMESHOCK 43303 -#define SPELL_EARTHSHOCK 43305 -#define SPELL_TRANSFORM_SPLIT 43142 -#define SPELL_TRANSFORM_SPLIT2 43573 -#define SPELL_TRANSFORM_MERGE 43271 -#define SPELL_SUMMON_LYNX 43143 -#define SPELL_SUMMON_TOTEM 43302 -#define SPELL_BERSERK 45078 - -#define MOB_SPIRIT_LYNX 24143 -#define SPELL_LYNX_FRENZY 43290 -#define SPELL_SHRED_ARMOR 43243 - -#define MOB_TOTEM 24224 +enum Spells +{ + SPELL_DUAL_WIELD = 29651, + SPELL_SABER_LASH = 43267, + SPELL_FRENZY = 43139, + SPELL_FLAMESHOCK = 43303, + SPELL_EARTHSHOCK = 43305, + SPELL_TRANSFORM_SPLIT = 43142, + SPELL_TRANSFORM_SPLIT2 = 43573, + SPELL_TRANSFORM_MERGE = 43271, + SPELL_SUMMON_LYNX = 43143, + SPELL_SUMMON_TOTEM = 43302, + SPELL_BERSERK = 45078, + SPELL_LYNX_FRENZY = 43290, // Used by Spirit Lynx + SPELL_SHRED_ARMOR = 43243 // Used by Spirit Lynx +}; + +enum Hal_CreatureIds +{ + NPC_SPIRIT_LYNX = 24143, + NPC_TOTEM = 24224 +}; enum PhaseHalazzi { - PHASE_NONE = 0, - PHASE_LYNX = 1, - PHASE_SPLIT = 2, - PHASE_HUMAN = 3, - PHASE_MERGE = 4, - PHASE_ENRAGE = 5 + PHASE_NONE = 0, + PHASE_LYNX = 1, + PHASE_SPLIT = 2, + PHASE_HUMAN = 3, + PHASE_MERGE = 4, + PHASE_ENRAGE = 5 }; class boss_halazzi : public CreatureScript @@ -134,7 +139,7 @@ class boss_halazzi : public CreatureScript void JustSummoned(Creature* summon) { summon->AI()->AttackStart(me->getVictim()); - if (summon->GetEntry() == MOB_SPIRIT_LYNX) + if (summon->GetEntry() == NPC_SPIRIT_LYNX) LynxGUID = summon->GetGUID(); } @@ -183,7 +188,7 @@ class boss_halazzi : public CreatureScript break; case PHASE_HUMAN: //DoCast(me, SPELL_SUMMON_LYNX, true); - DoSpawnCreature(MOB_SPIRIT_LYNX, 5, 5, 0, 0, TEMPSUMMON_CORPSE_DESPAWN, 0); + DoSpawnCreature(NPC_SPIRIT_LYNX, 5, 5, 0, 0, TEMPSUMMON_CORPSE_DESPAWN, 0); me->SetMaxHealth(400000); me->SetHealth(400000); ShockTimer = 10000; @@ -413,3 +418,4 @@ void AddSC_boss_halazzi() new mob_halazzi_lynx(); } + diff --git a/src/server/scripts/EasternKingdoms/boss_kruul.cpp b/src/server/scripts/EasternKingdoms/boss_kruul.cpp index 226ff794a9f..158861e90c7 100644 --- a/src/server/scripts/EasternKingdoms/boss_kruul.cpp +++ b/src/server/scripts/EasternKingdoms/boss_kruul.cpp @@ -26,13 +26,16 @@ EndScriptData */ #include "ScriptMgr.h" #include "ScriptedCreature.h" -#define SPELL_SHADOWVOLLEY 21341 -#define SPELL_CLEAVE 20677 -#define SPELL_THUNDERCLAP 23931 -#define SPELL_TWISTEDREFLECTION 21063 -#define SPELL_VOIDBOLT 21066 -#define SPELL_RAGE 21340 -#define SPELL_CAPTURESOUL 21054 +enum Spells +{ + SPELL_SHADOWVOLLEY = 21341, + SPELL_CLEAVE = 20677, + SPELL_THUNDERCLAP = 23931, + SPELL_TWISTEDREFLECTION = 21063, + SPELL_VOIDBOLT = 21066, + SPELL_RAGE = 21340, + SPELL_CAPTURESOUL = 21054 +}; class boss_kruul : public CreatureScript { diff --git a/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp b/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp index f3f2e587178..536c2af2bd8 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp @@ -20,25 +20,33 @@ #include "naxxramas.h" #include "SpellInfo.h" -#define SPELL_BOMBARD_SLIME 28280 - -#define SPELL_POISON_CLOUD 28240 -#define SPELL_MUTATING_INJECTION 28169 -#define SPELL_SLIME_SPRAY RAID_MODE(28157, 54364) -#define SPELL_BERSERK 26662 -#define SPELL_POISON_CLOUD_ADD 59116 +enum Spells +{ + SPELL_BOMBARD_SLIME = 28280, + SPELL_POISON_CLOUD = 28240, + SPELL_MUTATING_INJECTION = 28169, + SPELL_SLIME_SPRAY = 28157, + H_SPELL_SLIME_SPRAY = 54364, + SPELL_BERSERK = 26662, + SPELL_POISON_CLOUD_ADD = 59116 +}; -#define EVENT_BERSERK 1 -#define EVENT_CLOUD 2 -#define EVENT_INJECT 3 -#define EVENT_SPRAY 4 +enum Events +{ + EVENT_BERSERK = 0, + EVENT_CLOUD = 1, + EVENT_INJECT = 2, + EVENT_SPRAY = 3 +}; -#define MOB_FALLOUT_SLIME 16290 +enum CreatureId +{ + MOB_FALLOUT_SLIME = 16290 +}; class boss_grobbulus : public CreatureScript { -public: - boss_grobbulus() : CreatureScript("boss_grobbulus") { } +public: boss_grobbulus() : CreatureScript("boss_grobbulus") { } CreatureAI* GetAI(Creature* creature) const { diff --git a/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp b/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp index 92ced3c702f..891b91c6dfb 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp @@ -28,7 +28,7 @@ enum Spells SPELL_ARCANE_BUFFET_H = 59485, SPELL_SUMMON_ETHEREAL_SPHERE_1 = 54102, SPELL_SUMMON_ETHEREAL_SPHERE_2 = 54137, - SPELL_SUMMON_ETHEREAL_SPHERE_3 = 54138, + SPELL_SUMMON_ETHEREAL_SPHERE_3 = 54138 }; enum NPCs @@ -42,7 +42,7 @@ enum CreatureSpells SPELL_ARCANE_POWER = 54160, H_SPELL_ARCANE_POWER = 59474, SPELL_SUMMON_PLAYERS = 54164, - SPELL_POWER_BALL_VISUAL = 54141, + SPELL_POWER_BALL_VISUAL = 54141 }; enum Yells diff --git a/src/server/scripts/Outland/CoilfangReservoir/underbog/boss_hungarfen.cpp b/src/server/scripts/Outland/CoilfangReservoir/underbog/boss_hungarfen.cpp index 9fa5a1a51f5..c55e93726a9 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/underbog/boss_hungarfen.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/underbog/boss_hungarfen.cpp @@ -26,8 +26,11 @@ EndScriptData */ #include "ScriptMgr.h" #include "ScriptedCreature.h" -#define SPELL_FOUL_SPORES 31673 -#define SPELL_ACID_GEYSER 38739 +enum Spells +{ + SPELL_FOUL_SPORES = 31673, + SPELL_ACID_GEYSER = 38739 +}; class boss_hungarfen : public CreatureScript { -- cgit v1.2.3 From fdd853366ab2d01a46202bb97394cd6008d96256 Mon Sep 17 00:00:00 2001 From: Gacko Date: Sun, 13 Jan 2013 11:54:05 +0100 Subject: Core/Script: Uldaman - Altar of the Keepers ... and some codestyle changes. --- .../2013_01_13_00_world_gameobject_template.sql | 1 + .../EasternKingdoms/Uldaman/boss_archaedas.cpp | 30 ---- .../EasternKingdoms/Uldaman/instance_uldaman.cpp | 177 +++++++++++---------- 3 files changed, 97 insertions(+), 111 deletions(-) create mode 100644 sql/updates/world/2013_01_13_00_world_gameobject_template.sql (limited to 'src') diff --git a/sql/updates/world/2013_01_13_00_world_gameobject_template.sql b/sql/updates/world/2013_01_13_00_world_gameobject_template.sql new file mode 100644 index 00000000000..056dfea0bc9 --- /dev/null +++ b/sql/updates/world/2013_01_13_00_world_gameobject_template.sql @@ -0,0 +1 @@ +UPDATE `gameobject_template` SET `ScriptName`='' WHERE `entry`=130511; diff --git a/src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp b/src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp index 87301f43745..22c4da74d44 100644 --- a/src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp +++ b/src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp @@ -399,35 +399,6 @@ class go_altar_of_archaedas : public GameObjectScript } }; -/* ScriptData -SDName: go_altar_of_the_keepers -SD%Complete: 100 -SDComment: Need 1 person to activate to open the altar. One by one the StoneKeepers will activate. After all four are dead than the door will open. -SDCategory: Uldaman -EndScriptData */ - -class go_altar_of_the_keepers : public GameObjectScript -{ - public: - - go_altar_of_the_keepers() - : GameObjectScript("go_altar_of_the_keepers") - { - } - - bool OnGossipHello(Player* player, GameObject* /*go*/) - { - InstanceScript* instance = player->GetInstanceScript(); - if (!instance) - return false; - - player->CastSpell (player, SPELL_BOSS_OBJECT_VISUAL, false); - - instance->SetData(DATA_STONE_KEEPERS, IN_PROGRESS); // activate the Stone Keepers - return false; - } -}; - //This is the actual function called only once durring InitScripts() //It must define all handled functions that are to be run in this script void AddSC_boss_archaedas() @@ -436,6 +407,5 @@ void AddSC_boss_archaedas() new mob_archaedas_minions(); new mob_stonekeepers(); new go_altar_of_archaedas(); - new go_altar_of_the_keepers(); } diff --git a/src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp b/src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp index 138243a9ce2..ac26056c6e6 100644 --- a/src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp +++ b/src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp @@ -33,38 +33,38 @@ enum eSpells SPELL_AWAKEN_VAULT_WALKER = 10258, }; +enum Events +{ + EVENT_SUB_BOSS_AGGRO = 2228 +}; + class instance_uldaman : public InstanceMapScript { public: - instance_uldaman() - : InstanceMapScript("instance_uldaman", 70) - { - } + instance_uldaman() : InstanceMapScript("instance_uldaman", 70) {} struct instance_uldaman_InstanceMapScript : public InstanceScript { - instance_uldaman_InstanceMapScript(Map* map) : InstanceScript(map) - { - } + instance_uldaman_InstanceMapScript(Map* map) : InstanceScript(map) {} void Initialize() { memset(&m_auiEncounter, 0, sizeof(m_auiEncounter)); - uiArchaedasGUID = 0; - uiIronayaGUID = 0; - uiWhoWokeuiArchaedasGUID = 0; + archaedasGUID = 0; + ironayaGUID = 0; + whoWokeuiArchaedasGUID = 0; - uiAltarOfTheKeeperTempleDoor = 0; - uiArchaedasTempleDoor = 0; - uiAncientVaultDoor = 0; + altarOfTheKeeperTempleDoor = 0; + archaedasTempleDoor = 0; + ancientVaultDoor = 0; - uiIronayaSealDoor = 0; + ironayaSealDoor = 0; - uiKeystoneGUID = 0; + keystoneGUID = 0; - uiIronayaSealDoorTimer = 27000; //animation time - bKeystoneCheck = false; + ironayaSealDoorTimer = 27000; //animation time + keystoneCheck = false; } bool IsEncounterInProgress() const @@ -76,25 +76,25 @@ class instance_uldaman : public InstanceMapScript return false; } - uint64 uiArchaedasGUID; - uint64 uiIronayaGUID; - uint64 uiWhoWokeuiArchaedasGUID; + uint64 archaedasGUID; + uint64 ironayaGUID; + uint64 whoWokeuiArchaedasGUID; - uint64 uiAltarOfTheKeeperTempleDoor; - uint64 uiArchaedasTempleDoor; - uint64 uiAncientVaultDoor; - uint64 uiIronayaSealDoor; + uint64 altarOfTheKeeperTempleDoor; + uint64 archaedasTempleDoor; + uint64 ancientVaultDoor; + uint64 ironayaSealDoor; - uint64 uiKeystoneGUID; + uint64 keystoneGUID; - uint32 uiIronayaSealDoorTimer; - bool bKeystoneCheck; + uint32 ironayaSealDoorTimer; + bool keystoneCheck; - std::vector vStoneKeeper; - std::vector vAltarOfTheKeeperCount; - std::vector vVaultWalker; - std::vector vEarthenGuardian; - std::vector vArchaedasWallMinions; // minions lined up around the wall + std::vector stoneKeepers; + std::vector altarOfTheKeeperCounts; + std::vector vaultWalkers; + std::vector earthenGuardians; + std::vector archaedasWallMinions; // minions lined up around the wall uint32 m_auiEncounter[MAX_ENCOUNTER]; std::string str_data; @@ -104,14 +104,14 @@ class instance_uldaman : public InstanceMapScript switch (go->GetEntry()) { case GO_ALTAR_OF_THE_KEEPER_TEMPLE_DOOR: // lock the door - uiAltarOfTheKeeperTempleDoor = go->GetGUID(); + altarOfTheKeeperTempleDoor = go->GetGUID(); if (m_auiEncounter[0] == DONE) HandleGameObject(0, true, go); break; case GO_ARCHAEDAS_TEMPLE_DOOR: - uiArchaedasTempleDoor = go->GetGUID(); + archaedasTempleDoor = go->GetGUID(); if (m_auiEncounter[0] == DONE) HandleGameObject(0, true, go); @@ -120,21 +120,21 @@ class instance_uldaman : public InstanceMapScript case GO_ANCIENT_VAULT_DOOR: go->SetGoState(GO_STATE_READY); go->SetUInt32Value(GAMEOBJECT_FLAGS, 33); - uiAncientVaultDoor = go->GetGUID(); + ancientVaultDoor = go->GetGUID(); if (m_auiEncounter[1] == DONE) HandleGameObject(0, true, go); break; case GO_IRONAYA_SEAL_DOOR: - uiIronayaSealDoor = go->GetGUID(); + ironayaSealDoor = go->GetGUID(); if (m_auiEncounter[2] == DONE) HandleGameObject(0, true, go); break; case GO_KEYSTONE: - uiKeystoneGUID = go->GetGUID(); + keystoneGUID = go->GetGUID(); if (m_auiEncounter[2] == DONE) { @@ -174,28 +174,31 @@ class instance_uldaman : public InstanceMapScript void ActivateStoneKeepers() { - for (std::vector::const_iterator i = vStoneKeeper.begin(); i != vStoneKeeper.end(); ++i) + if (GetData(DATA_ALTAR_DOORS) != DONE) { - Creature* target = instance->GetCreature(*i); - if (!target || !target->isAlive() || target->getFaction() == 14) - continue; - target->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE); - target->setFaction(14); - target->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - return; // only want the first one we find + for (std::vector::const_iterator i = stoneKeepers.begin(); i != stoneKeepers.end(); ++i) + { + Creature* target = instance->GetCreature(*i); + if (!target || !target->isAlive()) + continue; + target->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE); + target->setFaction(14); + target->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + return; // only want the first one we find + } + // if we get this far than all four are dead so open the door + SetData(DATA_ALTAR_DOORS, DONE); + SetDoor(archaedasTempleDoor, true); //open next the door too } - // if we get this far than all four are dead so open the door - SetData(DATA_ALTAR_DOORS, DONE); - SetDoor(uiArchaedasTempleDoor, true); //open next the door too } void ActivateWallMinions() { - Creature* archaedas = instance->GetCreature(uiArchaedasGUID); + Creature* archaedas = instance->GetCreature(archaedasGUID); if (!archaedas) return; - for (std::vector::const_iterator i = vArchaedasWallMinions.begin(); i != vArchaedasWallMinions.end(); ++i) + for (std::vector::const_iterator i = archaedasWallMinions.begin(); i != archaedasWallMinions.end(); ++i) { Creature* target = instance->GetCreature(*i); if (!target || !target->isAlive() || target->getFaction() == 14) @@ -213,7 +216,7 @@ class instance_uldaman : public InstanceMapScript void DeActivateMinions() { // first despawn any aggroed wall minions - for (std::vector::const_iterator i = vArchaedasWallMinions.begin(); i != vArchaedasWallMinions.end(); ++i) + for (std::vector::const_iterator i = archaedasWallMinions.begin(); i != archaedasWallMinions.end(); ++i) { Creature* target = instance->GetCreature(*i); if (!target || target->isDead() || target->getFaction() != 14) @@ -223,7 +226,7 @@ class instance_uldaman : public InstanceMapScript } // Vault Walkers - for (std::vector::const_iterator i = vVaultWalker.begin(); i != vVaultWalker.end(); ++i) + for (std::vector::const_iterator i = vaultWalkers.begin(); i != vaultWalkers.end(); ++i) { Creature* target = instance->GetCreature(*i); if (!target || target->isDead() || target->getFaction() != 14) @@ -233,7 +236,7 @@ class instance_uldaman : public InstanceMapScript } // Earthen Guardians - for (std::vector::const_iterator i = vEarthenGuardian.begin(); i != vEarthenGuardian.end(); ++i) + for (std::vector::const_iterator i = earthenGuardians.begin(); i != earthenGuardians.end(); ++i) { Creature* target = instance->GetCreature(*i); if (!target || target->isDead() || target->getFaction() != 14) @@ -245,20 +248,20 @@ class instance_uldaman : public InstanceMapScript void ActivateArchaedas(uint64 target) { - Creature* archaedas = instance->GetCreature(uiArchaedasGUID); + Creature* archaedas = instance->GetCreature(archaedasGUID); if (!archaedas) return; if (Unit::GetUnit(*archaedas, target)) { archaedas->CastSpell(archaedas, SPELL_ARCHAEDAS_AWAKEN, false); - uiWhoWokeuiArchaedasGUID = target; + whoWokeuiArchaedasGUID = target; } } void ActivateIronaya() { - Creature* ironaya = instance->GetCreature(uiIronayaGUID); + Creature* ironaya = instance->GetCreature(ironayaGUID); if (!ironaya) return; @@ -270,7 +273,7 @@ class instance_uldaman : public InstanceMapScript void RespawnMinions() { // first respawn any aggroed wall minions - for (std::vector::const_iterator i = vArchaedasWallMinions.begin(); i != vArchaedasWallMinions.end(); ++i) + for (std::vector::const_iterator i = archaedasWallMinions.begin(); i != archaedasWallMinions.end(); ++i) { Creature* target = instance->GetCreature(*i); if (target && target->isDead()) @@ -282,7 +285,7 @@ class instance_uldaman : public InstanceMapScript } // Vault Walkers - for (std::vector::const_iterator i = vVaultWalker.begin(); i != vVaultWalker.end(); ++i) + for (std::vector::const_iterator i = vaultWalkers.begin(); i != vaultWalkers.end(); ++i) { Creature* target = instance->GetCreature(*i); if (target && target->isDead()) @@ -294,7 +297,7 @@ class instance_uldaman : public InstanceMapScript } // Earthen Guardians - for (std::vector::const_iterator i = vEarthenGuardian.begin(); i != vEarthenGuardian.end(); ++i) + for (std::vector::const_iterator i = earthenGuardians.begin(); i != earthenGuardians.end(); ++i) { Creature* target = instance->GetCreature(*i); if (target && target->isDead()) @@ -307,21 +310,21 @@ class instance_uldaman : public InstanceMapScript } void Update(uint32 diff) { - if (!bKeystoneCheck) + if (!keystoneCheck) return; - if (uiIronayaSealDoorTimer <= diff) + if (ironayaSealDoorTimer <= diff) { ActivateIronaya(); - SetDoor(uiIronayaSealDoor, true); - BlockGO(uiKeystoneGUID); + SetDoor(ironayaSealDoor, true); + BlockGO(keystoneGUID); SetData(DATA_IRONAYA_DOOR, DONE); //save state - bKeystoneCheck = false; + keystoneCheck = false; } else - uiIronayaSealDoorTimer -= diff; + ironayaSealDoorTimer -= diff; } void SetData(uint32 type, uint32 data) @@ -331,15 +334,15 @@ class instance_uldaman : public InstanceMapScript case DATA_ALTAR_DOORS: m_auiEncounter[0] = data; if (data == DONE) - SetDoor(uiAltarOfTheKeeperTempleDoor, true); + SetDoor(altarOfTheKeeperTempleDoor, true); break; case DATA_ANCIENT_DOOR: m_auiEncounter[1] = data; if (data == DONE) //archeadas defeat { - SetDoor(uiArchaedasTempleDoor, true); //re open enter door - SetDoor(uiAncientVaultDoor, true); + SetDoor(archaedasTempleDoor, true); //re open enter door + SetDoor(ancientVaultDoor, true); } break; @@ -356,7 +359,7 @@ class instance_uldaman : public InstanceMapScript { case NOT_STARTED: if (m_auiEncounter[0] == DONE) //if players opened the doors - SetDoor(uiArchaedasTempleDoor, true); + SetDoor(archaedasTempleDoor, true); RespawnMinions(); break; @@ -372,7 +375,7 @@ class instance_uldaman : public InstanceMapScript break; case DATA_IRONAYA_SEAL: - bKeystoneCheck = true; + keystoneCheck = true; break; } @@ -396,7 +399,7 @@ class instance_uldaman : public InstanceMapScript if (type == 0) { ActivateArchaedas (data); - SetDoor(uiArchaedasTempleDoor, false); //close when event is started + SetDoor(archaedasTempleDoor, false); //close when event is started } } @@ -433,34 +436,34 @@ class instance_uldaman : public InstanceMapScript { case 4857: // Stone Keeper SetFrozenState (creature); - vStoneKeeper.push_back(creature->GetGUID()); + stoneKeepers.push_back(creature->GetGUID()); break; case 7309: // Earthen Custodian - vArchaedasWallMinions.push_back(creature->GetGUID()); + archaedasWallMinions.push_back(creature->GetGUID()); break; case 7077: // Earthen Hallshaper - vArchaedasWallMinions.push_back(creature->GetGUID()); + archaedasWallMinions.push_back(creature->GetGUID()); break; case 7076: // Earthen Guardian - vEarthenGuardian.push_back(creature->GetGUID()); + earthenGuardians.push_back(creature->GetGUID()); break; case 7228: // Ironaya - uiIronayaGUID = creature->GetGUID(); + ironayaGUID = creature->GetGUID(); if (m_auiEncounter[2] != DONE) SetFrozenState (creature); break; case 10120: // Vault Walker - vVaultWalker.push_back(creature->GetGUID()); + vaultWalkers.push_back(creature->GetGUID()); break; case 2748: // Archaedas - uiArchaedasGUID = creature->GetGUID(); + archaedasGUID = creature->GetGUID(); break; } @@ -471,25 +474,37 @@ class instance_uldaman : public InstanceMapScript switch (identifier) { case 0: - return uiWhoWokeuiArchaedasGUID; + return whoWokeuiArchaedasGUID; case 1: case 2: case 3: case 4: - return vVaultWalker.at(identifier - 1); + return vaultWalkers.at(identifier - 1); case 5: case 6: case 7: case 8: case 9: case 10: - return vEarthenGuardian.at(identifier - 5); + return earthenGuardians.at(identifier - 5); default: break; } return 0; } // end GetData64 + + void ProcessEvent(WorldObject* /*gameObject*/, uint32 eventId) + { + switch (eventId) + { + case EVENT_SUB_BOSS_AGGRO: + SetData(DATA_STONE_KEEPERS, IN_PROGRESS); // activate the Stone Keepers + break; + default: + break; + } + } }; InstanceScript* GetInstanceScript(InstanceMap* map) const -- cgit v1.2.3 From 7abdab74efda284dac245204a90003579cdb36cb Mon Sep 17 00:00:00 2001 From: Malcrom Date: Sun, 13 Jan 2013 09:52:43 -0330 Subject: Core/Scripting: Some updates to Zul'Grub --- .../EasternKingdoms/ZulGurub/boss_grilek.cpp | 24 +++++++++++----------- .../EasternKingdoms/ZulGurub/boss_hazzarah.cpp | 13 ++++++------ .../EasternKingdoms/ZulGurub/instance_zulgurub.cpp | 4 ++-- 3 files changed, 20 insertions(+), 21 deletions(-) (limited to 'src') diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp index 686ecb55c88..4b7bee5abf1 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp @@ -29,14 +29,14 @@ EndScriptData */ enum Spells { - SPELL_AVARTAR = 24646, // Enrage Spell - SPELL_GROUNDTREMOR = 6524 + SPELL_AVATAR = 24646, // Enrage Spell + SPELL_GROUND_TREMOR = 6524 }; enum Events { - EVENT_AVARTAR = 0, - EVENT_GROUNDTREMOR = 1 + EVENT_AVATAR = 0, + EVENT_GROUND_TREMOR = 1 }; class boss_grilek : public CreatureScript // grilek @@ -55,8 +55,8 @@ class boss_grilek : public CreatureScript // grilek void EnterCombat(Unit* /*who*/) { _EnterCombat(); - events.ScheduleEvent(EVENT_AVARTAR, urand(15000, 25000)); - events.ScheduleEvent(EVENT_GROUNDTREMOR, urand(15000, 25000)); + events.ScheduleEvent(EVENT_AVATAR, urand(15000, 25000)); + events.ScheduleEvent(EVENT_GROUND_TREMOR, urand(15000, 25000)); } void UpdateAI(uint32 const diff) @@ -73,17 +73,17 @@ class boss_grilek : public CreatureScript // grilek { switch (eventId) { - case EVENT_AVARTAR: - DoCast(me, SPELL_AVARTAR); + case EVENT_AVATAR: + DoCast(me, SPELL_AVATAR); if (DoGetThreat(me->getVictim())) DoModifyThreatPercent(me->getVictim(), -50); if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1)) AttackStart(target); - events.ScheduleEvent(EVENT_AVARTAR, urand(25000, 35000)); + events.ScheduleEvent(EVENT_AVATAR, urand(25000, 35000)); break; - case EVENT_GROUNDTREMOR: - DoCastVictim(SPELL_GROUNDTREMOR, true); - events.ScheduleEvent(EVENT_GROUNDTREMOR, urand(12000, 16000)); + case EVENT_GROUND_TREMOR: + DoCastVictim(SPELL_GROUND_TREMOR, true); + events.ScheduleEvent(EVENT_GROUND_TREMOR, urand(12000, 16000)); break; default: break; diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp index d7266794f7d..cd55d648196 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp @@ -88,13 +88,12 @@ class boss_hazzarah : public CreatureScript // We will just use one model for the beginning for (uint8 i = 0; i < 3; ++i) { - Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0); - if (!target) - return; - - Creature* Illusion = me->SummonCreature(NPC_NIGHTMARE_ILLUSION, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 30000); - if (Illusion) - Illusion->AI()->AttackStart(target); + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) + { + Creature* Illusion = me->SummonCreature(NPC_NIGHTMARE_ILLUSION, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 30000); + if (Illusion) + Illusion->AI()->AttackStart(target); + } } events.ScheduleEvent(EVENT_ILLUSIONS, urand(15000, 25000)); break; diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp index a4fb19b708a..393893495f8 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp @@ -119,7 +119,7 @@ class instance_zulgurub : public InstanceMapScript OUT_SAVE_INST_DATA; std::ostringstream saveStream; - saveStream << "M C " << GetBossSaveData(); + saveStream << "Z G " << GetBossSaveData(); OUT_SAVE_INST_DATA_COMPLETE; return saveStream.str(); @@ -140,7 +140,7 @@ class instance_zulgurub : public InstanceMapScript std::istringstream loadStream(str); loadStream >> dataHead1 >> dataHead2; - if (dataHead1 == 'M' && dataHead2 == 'C') + if (dataHead1 == 'Z' && dataHead2 == 'G') { for (uint32 i = 0; i < EncounterCount; ++i) { -- cgit v1.2.3 From 3a32c76de936f2e85ef1cd595283e00055fe8fc6 Mon Sep 17 00:00:00 2001 From: Gacko Date: Sun, 13 Jan 2013 14:30:35 +0100 Subject: Core/DB: Gluttonous Lurkers Solves #1249 --- .../2013_01_13_02_world_gluttonous_lurkers.sql | 36 +++++++++++++++++ src/server/scripts/Northrend/zone_zuldrak.cpp | 45 ++++++++++++++++++++++ 2 files changed, 81 insertions(+) create mode 100644 sql/updates/world/2013_01_13_02_world_gluttonous_lurkers.sql (limited to 'src') diff --git a/sql/updates/world/2013_01_13_02_world_gluttonous_lurkers.sql b/sql/updates/world/2013_01_13_02_world_gluttonous_lurkers.sql new file mode 100644 index 00000000000..71f8efbe0c3 --- /dev/null +++ b/sql/updates/world/2013_01_13_02_world_gluttonous_lurkers.sql @@ -0,0 +1,36 @@ +-- Quest: Gluttonous Lurkers (12527) +-- Zul'drak Rat: Spellclick spells +DELETE FROM `npc_spellclick_spells` WHERE `npc_entry`=28202; +INSERT INTO `npc_spellclick_spells`(`npc_entry`,`spell_id`,`cast_flags`) VALUE +(28202,50926,1), +(28202,50927,2); + +-- Zul'drak Rat: SAI +UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=28202; +DELETE FROM `smart_scripts` WHERE `entryorguid`=28202 AND `source_type`=0; +INSERT INTO `smart_scripts`(`entryorguid`,`event_type`,`event_param1`,`action_type`,`target_type`,`comment`) VALUES +(28202,8,50926,41,1,'Zuldrak Rat - On spell hit of Gluttonous Lurkers: Create ZulDrak Rat Cover - Despawn'); + +-- Zul'drak Rat spell: Script assignment +DELETE FROM `spell_script_names` WHERE `spell_id`=50894; +INSERT INTO `spell_script_names`(`spell_id`,`ScriptName`) VALUE +(50894,'spell_zuldrak_rat'); + +-- Zul'drak Rat spell: Conditions +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=17 AND `SourceEntry`=50894; +INSERT INTO `conditions`(`SourceTypeOrReferenceId`,`SourceEntry`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ErrorType`,`Comment`) VALUE +(17,50894,31,1,3,28145,12,'Zuldrak Rat - Target has to be Lurking Basilisk'); + +-- Lurking Basilisk: SAI +UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=28145; +DELETE FROM `creature_ai_scripts` WHERE `creature_id`=28145; +DELETE FROM `smart_scripts` WHERE `entryorguid`=28145 AND `source_type`=0; +INSERT INTO `smart_scripts`(`entryorguid`,`event_type`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`target_type`,`comment`) VALUE +(28145,0,5000,5000,17000,27000,11,54470,2,'Lurking Basilisk - In Combat - Cast Venemous Bite'); + +-- Gorged Lurking Basilisk: SAI +UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=28203; +DELETE FROM `creature_ai_scripts` WHERE `creature_id`=28203; +DELETE FROM `smart_scripts` WHERE `entryorguid`=28203 AND `source_type`=0; +INSERT INTO `smart_scripts`(`entryorguid`,`event_type`,`event_param1`,`action_type`,`target_type`,`comment`) VALUES +(28203,8,50918,41,1,'Gorged Lurking Basilisk - On Spell Hit of Create Basilisk Crystals Cover - Despawn'); diff --git a/src/server/scripts/Northrend/zone_zuldrak.cpp b/src/server/scripts/Northrend/zone_zuldrak.cpp index 69e8d900435..1d53d229992 100644 --- a/src/server/scripts/Northrend/zone_zuldrak.cpp +++ b/src/server/scripts/Northrend/zone_zuldrak.cpp @@ -21,6 +21,7 @@ #include "ScriptedEscortAI.h" #include "Player.h" #include "SpellInfo.h" +#include "SpellScript.h" /*#### ## npc_drakuru_shackles @@ -1413,6 +1414,49 @@ public: } }; +enum SpellZuldrakRat +{ + SPELL_SUMMON_GORGED_LURKING_BASILISK = 50928 +}; + +class spell_zuldrak_rat : public SpellScriptLoader +{ + public: + spell_zuldrak_rat() : SpellScriptLoader("spell_zuldrak_rat") { } + + class spell_zuldrak_rat_SpellScript : public SpellScript + { + PrepareSpellScript(spell_zuldrak_rat_SpellScript); + + bool Validate(SpellInfo const* /*spell*/) + { + if (!sSpellMgr->GetSpellInfo(SPELL_SUMMON_GORGED_LURKING_BASILISK)) + return false; + return true; + } + + void HandleScriptEffect(SpellEffIndex /* effIndex */) + { + if (GetHitAura() && GetHitAura()->GetStackAmount() >= GetSpellInfo()->StackAmount) + { + GetHitUnit()->CastSpell((Unit*) NULL, SPELL_SUMMON_GORGED_LURKING_BASILISK, true); + if (Creature* basilisk = GetHitUnit()->ToCreature()) + basilisk->DespawnOrUnsummon(); + } + } + + void Register() + { + OnEffectHitTarget += SpellEffectFn(spell_zuldrak_rat_SpellScript::HandleScriptEffect, EFFECT_1, SPELL_EFFECT_SCRIPT_EFFECT); + } + }; + + SpellScript* GetSpellScript() const + { + return new spell_zuldrak_rat_SpellScript(); + } +}; + void AddSC_zuldrak() { new npc_drakuru_shackles; @@ -1428,4 +1472,5 @@ void AddSC_zuldrak() new npc_elemental_lord; new npc_fiend_elemental; new go_scourge_enclosure; + new spell_zuldrak_rat(); } -- cgit v1.2.3 From 0b079126221d1bf4fc2aa05a699dc3b379c77e58 Mon Sep 17 00:00:00 2001 From: Gacko Date: Sun, 13 Jan 2013 15:37:01 +0100 Subject: Fix nonpch build and warning. Move script to spell_quest.cpp --- .../2013_01_13_03_world_spell_script_names.sql | 4 ++ .../EasternKingdoms/ScarletEnclave/chapter1.cpp | 2 +- src/server/scripts/Northrend/zone_zuldrak.cpp | 45 ---------------------- src/server/scripts/Spells/spell_quest.cpp | 45 ++++++++++++++++++++++ 4 files changed, 50 insertions(+), 46 deletions(-) create mode 100644 sql/updates/world/2013_01_13_03_world_spell_script_names.sql (limited to 'src') diff --git a/sql/updates/world/2013_01_13_03_world_spell_script_names.sql b/sql/updates/world/2013_01_13_03_world_spell_script_names.sql new file mode 100644 index 00000000000..a776ea4a765 --- /dev/null +++ b/sql/updates/world/2013_01_13_03_world_spell_script_names.sql @@ -0,0 +1,4 @@ +-- Zul'drak Rat spell: Script assignment +DELETE FROM `spell_script_names` WHERE `spell_id`=50894; +INSERT INTO `spell_script_names`(`spell_id`,`ScriptName`) VALUE +(50894,'spell_q12527_zuldrak_rat'); diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp index 97fe57c5434..96293c635d6 100644 --- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp @@ -146,7 +146,7 @@ public: me->CastSpell(me, SPELL_DK_INITIATE_VISUAL, true); if (Player* starter = Unit::GetPlayer(*me, playerGUID)) - Talk(SAY_EVENT_ATTACK); + sCreatureTextMgr->SendChat(me, SAY_EVENT_ATTACK, 0, CHAT_MSG_ADDON, LANG_ADDON, TEXT_RANGE_NORMAL, 0, TEAM_OTHER, false, starter); phase = PHASE_TO_ATTACK; } diff --git a/src/server/scripts/Northrend/zone_zuldrak.cpp b/src/server/scripts/Northrend/zone_zuldrak.cpp index 1d53d229992..69e8d900435 100644 --- a/src/server/scripts/Northrend/zone_zuldrak.cpp +++ b/src/server/scripts/Northrend/zone_zuldrak.cpp @@ -21,7 +21,6 @@ #include "ScriptedEscortAI.h" #include "Player.h" #include "SpellInfo.h" -#include "SpellScript.h" /*#### ## npc_drakuru_shackles @@ -1414,49 +1413,6 @@ public: } }; -enum SpellZuldrakRat -{ - SPELL_SUMMON_GORGED_LURKING_BASILISK = 50928 -}; - -class spell_zuldrak_rat : public SpellScriptLoader -{ - public: - spell_zuldrak_rat() : SpellScriptLoader("spell_zuldrak_rat") { } - - class spell_zuldrak_rat_SpellScript : public SpellScript - { - PrepareSpellScript(spell_zuldrak_rat_SpellScript); - - bool Validate(SpellInfo const* /*spell*/) - { - if (!sSpellMgr->GetSpellInfo(SPELL_SUMMON_GORGED_LURKING_BASILISK)) - return false; - return true; - } - - void HandleScriptEffect(SpellEffIndex /* effIndex */) - { - if (GetHitAura() && GetHitAura()->GetStackAmount() >= GetSpellInfo()->StackAmount) - { - GetHitUnit()->CastSpell((Unit*) NULL, SPELL_SUMMON_GORGED_LURKING_BASILISK, true); - if (Creature* basilisk = GetHitUnit()->ToCreature()) - basilisk->DespawnOrUnsummon(); - } - } - - void Register() - { - OnEffectHitTarget += SpellEffectFn(spell_zuldrak_rat_SpellScript::HandleScriptEffect, EFFECT_1, SPELL_EFFECT_SCRIPT_EFFECT); - } - }; - - SpellScript* GetSpellScript() const - { - return new spell_zuldrak_rat_SpellScript(); - } -}; - void AddSC_zuldrak() { new npc_drakuru_shackles; @@ -1472,5 +1428,4 @@ void AddSC_zuldrak() new npc_elemental_lord; new npc_fiend_elemental; new go_scourge_enclosure; - new spell_zuldrak_rat(); } diff --git a/src/server/scripts/Spells/spell_quest.cpp b/src/server/scripts/Spells/spell_quest.cpp index 9cd94e9c7d5..49a47a17392 100644 --- a/src/server/scripts/Spells/spell_quest.cpp +++ b/src/server/scripts/Spells/spell_quest.cpp @@ -25,6 +25,7 @@ #include "ScriptMgr.h" #include "ScriptedCreature.h" #include "SpellScript.h" +#include "SpellAuras.h" #include "Vehicle.h" #include "GridNotifiers.h" #include "GridNotifiersImpl.h" @@ -1517,6 +1518,49 @@ class spell_q11010_q11102_q11023_q11008_check_fly_mount : public SpellScriptLoad } }; +enum SpellZuldrakRat +{ + SPELL_SUMMON_GORGED_LURKING_BASILISK = 50928 +}; + +class spell_q12527_zuldrak_rat : public SpellScriptLoader +{ + public: + spell_q12527_zuldrak_rat() : SpellScriptLoader("spell_q12527_zuldrak_rat") { } + + class spell_q12527_zuldrak_rat_SpellScript : public SpellScript + { + PrepareSpellScript(spell_q12527_zuldrak_rat_SpellScript); + + bool Validate(SpellInfo const* /*spell*/) + { + if (!sSpellMgr->GetSpellInfo(SPELL_SUMMON_GORGED_LURKING_BASILISK)) + return false; + return true; + } + + void HandleScriptEffect(SpellEffIndex /* effIndex */) + { + if (GetHitAura() && GetHitAura()->GetStackAmount() >= GetSpellInfo()->StackAmount) + { + GetHitUnit()->CastSpell((Unit*) NULL, SPELL_SUMMON_GORGED_LURKING_BASILISK, true); + if (Creature* basilisk = GetHitUnit()->ToCreature()) + basilisk->DespawnOrUnsummon(); + } + } + + void Register() + { + OnEffectHitTarget += SpellEffectFn(spell_q12527_zuldrak_rat_SpellScript::HandleScriptEffect, EFFECT_1, SPELL_EFFECT_SCRIPT_EFFECT); + } + }; + + SpellScript* GetSpellScript() const + { + return new spell_q12527_zuldrak_rat_SpellScript(); + } +}; + void AddSC_quest_spell_scripts() { new spell_q55_sacred_cleansing(); @@ -1554,4 +1598,5 @@ void AddSC_quest_spell_scripts() new spell_q11010_q11102_q11023_choose_loc(); new spell_q11010_q11102_q11023_q11008_check_fly_mount(); new spell_q12372_azure_on_death_force_whisper(); + new spell_q12527_zuldrak_rat(); } -- cgit v1.2.3 From c54fb9efb459590b8c0f1ddb0b5642473f6a8925 Mon Sep 17 00:00:00 2001 From: kaelima Date: Sun, 13 Jan 2013 15:42:49 +0100 Subject: Core/BG: Corrections to cf5058c4e3ef5a5b736d22a7faa5ee1e8bf8035d --- src/server/game/Battlegrounds/Battleground.cpp | 6 ++--- src/server/game/Battlegrounds/BattlegroundMgr.cpp | 32 +++++++++++------------ src/server/game/Battlegrounds/BattlegroundMgr.h | 2 +- src/server/game/Handlers/BattleGroundHandler.cpp | 4 +-- 4 files changed, 22 insertions(+), 22 deletions(-) (limited to 'src') diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp index 1fe7e4c1035..e0a3943d70f 100644 --- a/src/server/game/Battlegrounds/Battleground.cpp +++ b/src/server/game/Battlegrounds/Battleground.cpp @@ -523,7 +523,7 @@ inline void Battleground::_ProcessJoin(uint32 diff) WorldPacket status; BattlegroundQueueTypeId bgQueueTypeId = sBattlegroundMgr->BGQueueTypeId(m_TypeID, GetArenaType()); uint32 queueSlot = player->GetBattlegroundQueueIndex(bgQueueTypeId); - sBattlegroundMgr->BuildBattlegroundStatusPacket(&status, this, queueSlot, STATUS_IN_PROGRESS, 0, GetStartTime(), GetArenaType(), player->GetBGTeam()); + sBattlegroundMgr->BuildBattlegroundStatusPacket(&status, this, queueSlot, STATUS_IN_PROGRESS, 0, GetStartTime(), GetArenaType(), GetPlayerTeam(itr->first)); player->GetSession()->SendPacket(&status); player->RemoveAurasDueToSpell(SPELL_ARENA_PREPARATION); @@ -919,7 +919,7 @@ void Battleground::EndBattleground(uint32 winner) player->GetSession()->SendPacket(&pvpLogData); WorldPacket data; - sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, this, player->GetBattlegroundQueueIndex(bgQueueTypeId), STATUS_IN_PROGRESS, TIME_TO_AUTOREMOVE, GetStartTime(), GetArenaType(), player->GetBGTeam()); + sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, this, player->GetBattlegroundQueueIndex(bgQueueTypeId), STATUS_IN_PROGRESS, TIME_TO_AUTOREMOVE, GetStartTime(), GetArenaType(), GetPlayerTeam(player->GetGUID())); player->GetSession()->SendPacket(&data); player->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_BATTLEGROUND, 1); } @@ -1846,7 +1846,7 @@ void Battleground::PlayerAddedToBGCheckIfBGIsRunning(Player* player) sBattlegroundMgr->BuildPvpLogDataPacket(&data, this); player->GetSession()->SendPacket(&data); - sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, this, player->GetBattlegroundQueueIndex(bgQueueTypeId), STATUS_IN_PROGRESS, GetEndTime(), GetStartTime(), GetArenaType(), player->GetBGTeam()); + sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, this, player->GetBattlegroundQueueIndex(bgQueueTypeId), STATUS_IN_PROGRESS, GetEndTime(), GetStartTime(), GetArenaType(), GetPlayerTeam(player->GetGUID())); player->GetSession()->SendPacket(&data); } diff --git a/src/server/game/Battlegrounds/BattlegroundMgr.cpp b/src/server/game/Battlegrounds/BattlegroundMgr.cpp index 451fa70a8c9..24e69a151b5 100644 --- a/src/server/game/Battlegrounds/BattlegroundMgr.cpp +++ b/src/server/game/Battlegrounds/BattlegroundMgr.cpp @@ -162,7 +162,7 @@ void BattlegroundMgr::Update(uint32 diff) } } -void BattlegroundMgr::BuildBattlegroundStatusPacket(WorldPacket* data, Battleground* bg, uint8 QueueSlot, uint8 StatusID, uint32 Time1, uint32 Time2, uint8 arenatype, uint8 arenaFaction) +void BattlegroundMgr::BuildBattlegroundStatusPacket(WorldPacket* data, Battleground* bg, uint8 QueueSlot, uint8 StatusID, uint32 Time1, uint32 Time2, uint8 arenatype, uint32 arenaFaction) { // we can be in 2 queues in same time... @@ -188,26 +188,26 @@ void BattlegroundMgr::BuildBattlegroundStatusPacket(WorldPacket* data, Battlegro *data << uint32(bg->GetClientInstanceID()); // alliance/horde for BG and skirmish/rated for Arenas // following displays the minimap-icon 0 = faction icon 1 = arenaicon - *data << uint8(bg->isRated()); // 1 for rated match, 0 for bg or non rated match + *data << uint8(bg->isRated()); // 1 for rated match, 0 for bg or non rated match - *data << uint32(StatusID); // status + *data << uint32(StatusID); // status switch (StatusID) { - case STATUS_WAIT_QUEUE: // status_in_queue - *data << uint32(Time1); // average wait time, milliseconds - *data << uint32(Time2); // time in queue, updated every minute!, milliseconds + case STATUS_WAIT_QUEUE: // status_in_queue + *data << uint32(Time1); // average wait time, milliseconds + *data << uint32(Time2); // time in queue, updated every minute!, milliseconds break; - case STATUS_WAIT_JOIN: // status_invite - *data << uint32(bg->GetMapId()); // map id - *data << uint64(0); // 3.3.5, unknown - *data << uint32(Time1); // time to remove from queue, milliseconds + case STATUS_WAIT_JOIN: // status_invite + *data << uint32(bg->GetMapId()); // map id + *data << uint64(0); // 3.3.5, unknown + *data << uint32(Time1); // time to remove from queue, milliseconds break; - case STATUS_IN_PROGRESS: // status_in_progress - *data << uint32(bg->GetMapId()); // map id - *data << uint64(0); // 3.3.5, unknown - *data << uint32(Time1); // time to bg auto leave, 0 at bg start, 120000 after bg end, milliseconds - *data << uint32(Time2); // time from bg start, milliseconds - *data << uint8(arenaFaction); // arenafaction (0 for horde, 1 for alliance) + case STATUS_IN_PROGRESS: // status_in_progress + *data << uint32(bg->GetMapId()); // map id + *data << uint64(0); // 3.3.5, unknown + *data << uint32(Time1); // time to bg auto leave, 0 at bg start, 120000 after bg end, milliseconds + *data << uint32(Time2); // time from bg start, milliseconds + *data << uint8(arenaFaction == ALLIANCE ? 1 : 0); // arenafaction (0 for horde, 1 for alliance) break; default: sLog->outError(LOG_FILTER_BATTLEGROUND, "Unknown BG status!"); diff --git a/src/server/game/Battlegrounds/BattlegroundMgr.h b/src/server/game/Battlegrounds/BattlegroundMgr.h index ee96414c5f2..c66d9d64ab8 100644 --- a/src/server/game/Battlegrounds/BattlegroundMgr.h +++ b/src/server/game/Battlegrounds/BattlegroundMgr.h @@ -80,7 +80,7 @@ class BattlegroundMgr void BuildGroupJoinedBattlegroundPacket(WorldPacket* data, GroupJoinBattlegroundResult result); void BuildUpdateWorldStatePacket(WorldPacket* data, uint32 field, uint32 value); void BuildPvpLogDataPacket(WorldPacket* data, Battleground* bg); - void BuildBattlegroundStatusPacket(WorldPacket* data, Battleground* bg, uint8 queueSlot, uint8 statusId, uint32 time1, uint32 time2, uint8 arenaType, uint8 arenaFaction); + void BuildBattlegroundStatusPacket(WorldPacket* data, Battleground* bg, uint8 queueSlot, uint8 statusId, uint32 time1, uint32 time2, uint8 arenaType, uint32 arenaFaction); void BuildPlaySoundPacket(WorldPacket* data, uint32 soundId); void SendAreaSpiritHealerQueryOpcode(Player* player, Battleground* bg, uint64 guid); diff --git a/src/server/game/Handlers/BattleGroundHandler.cpp b/src/server/game/Handlers/BattleGroundHandler.cpp index 5fb97a031f1..99056960893 100644 --- a/src/server/game/Handlers/BattleGroundHandler.cpp +++ b/src/server/game/Handlers/BattleGroundHandler.cpp @@ -453,7 +453,7 @@ void WorldSession::HandleBattleFieldPortOpcode(WorldPacket &recvData) _player->CleanupAfterTaxiFlight(); } - sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_IN_PROGRESS, 0, bg->GetStartTime(), bg->GetArenaType(), _player->GetBGTeam()); + sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_IN_PROGRESS, 0, bg->GetStartTime(), bg->GetArenaType(), bg->GetPlayerTeam(_player->GetGUID())); _player->GetSession()->SendPacket(&data); // remove battleground queue status from BGmgr bgQueue.RemovePlayer(_player->GetGUID(), false); @@ -541,7 +541,7 @@ void WorldSession::HandleBattlefieldStatusOpcode(WorldPacket & /*recvData*/) { // this line is checked, i only don't know if GetStartTime is changing itself after bg end! // send status in Battleground - sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, i, STATUS_IN_PROGRESS, bg->GetEndTime(), bg->GetStartTime(), arenaType, _player->GetBGTeam()); + sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, i, STATUS_IN_PROGRESS, bg->GetEndTime(), bg->GetStartTime(), arenaType, bg->GetPlayerTeam(_player->GetGUID())); SendPacket(&data); continue; } -- cgit v1.2.3 From 8be3d4cc80f5c6d9f26bc8becb0296a3e67518ed Mon Sep 17 00:00:00 2001 From: Gacko Date: Sun, 13 Jan 2013 16:15:35 +0100 Subject: Core/BG: Add workaround annotation and use exact coords --- src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp index 076c68b5f76..b6452e76b5d 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp @@ -259,9 +259,10 @@ void BattlegroundEY::UpdatePointStatuses() this->EventTeamLostPoint(player, point); } + /// @workaround The original AreaTrigger is covered by a bigger one and not triggered on client side. if (point == FEL_REAVER && m_PointOwnedByTeam[point] == player->GetTeam()) if (m_FlagState && GetFlagPickerGUID() == player->GetGUID()) - if (player->GetDistance2d(2044.0f, 1730.0f) < 2.0f) + if (player->GetDistance(2044.0f, 1729.729f, 1190.03f) < 3.0f) EventPlayerCapturedFlag(player, BG_EY_OBJECT_FLAG_FEL_REAVER); } } -- cgit v1.2.3 From 4c247f5d2d9fa5e5d7e092f6cb6346f23136ccf7 Mon Sep 17 00:00:00 2001 From: Spp Date: Sun, 13 Jan 2013 16:15:28 +0100 Subject: Core/Dungeon finder: Fix teleport out after dungeon is finished Closes 8914 --- src/server/game/DungeonFinding/LFGMgr.cpp | 13 ++++++++++++- src/server/game/DungeonFinding/LFGMgr.h | 1 + src/server/game/DungeonFinding/LFGQueue.cpp | 2 +- 3 files changed, 14 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/server/game/DungeonFinding/LFGMgr.cpp b/src/server/game/DungeonFinding/LFGMgr.cpp index 9d5d8e40b54..09be64813af 100644 --- a/src/server/game/DungeonFinding/LFGMgr.cpp +++ b/src/server/game/DungeonFinding/LFGMgr.cpp @@ -1563,7 +1563,6 @@ void LFGMgr::FinishDungeon(uint64 gguid, const uint32 dungeonId) LfgPlayerRewardData data = LfgPlayerRewardData(dungeon->Entry(), GetDungeon(gguid, false), done, quest); player->GetSession()->SendLfgPlayerReward(data); } - SetDungeon(gguid, 0); } // --------------------------------------------------------------------------// @@ -1632,6 +1631,18 @@ LfgState LFGMgr::GetState(uint64 guid) return state; } +LfgState LFGMgr::GetOldState(uint64 guid) +{ + LfgState state; + if (IS_GROUP_GUID(guid)) + state = GroupsStore[guid].GetOldState(); + else + state = PlayersStore[guid].GetOldState(); + + sLog->outTrace(LOG_FILTER_LFG, "LFGMgr::GetOldState: [" UI64FMTD "] = %u", guid, state); + return state; +} + uint32 LFGMgr::GetDungeon(uint64 guid, bool asId /*= true */) { uint32 dungeon = GroupsStore[guid].GetDungeon(asId); diff --git a/src/server/game/DungeonFinding/LFGMgr.h b/src/server/game/DungeonFinding/LFGMgr.h index 0a1b90ee04d..33626467486 100644 --- a/src/server/game/DungeonFinding/LFGMgr.h +++ b/src/server/game/DungeonFinding/LFGMgr.h @@ -347,6 +347,7 @@ class LFGMgr uint32 GetDungeon(uint64 guid, bool asId = true); uint32 GetDungeonMapId(uint64 guid); LfgState GetState(uint64 guid); + LfgState GetOldState(uint64 guid); uint8 GetKicksLeft(uint64 gguid); uint64 GetLeader(uint64 guid); bool IsLfgGroup(uint64 guid); diff --git a/src/server/game/DungeonFinding/LFGQueue.cpp b/src/server/game/DungeonFinding/LFGQueue.cpp index e75a1bdc4b3..f1d2dbb313d 100644 --- a/src/server/game/DungeonFinding/LFGQueue.cpp +++ b/src/server/game/DungeonFinding/LFGQueue.cpp @@ -483,7 +483,7 @@ LfgCompatibility LFGQueue::CheckCompatibility(LfgGuidList check) uint64 gguid = *check.begin(); proposal.queues = check; - proposal.isNew = numLfgGroups != 1 || !sLFGMgr->GetDungeon(gguid); + proposal.isNew = numLfgGroups != 1 || sLFGMgr->GetOldState(gguid) != LFG_STATE_DUNGEON; if (!sLFGMgr->AllQueued(check)) { -- cgit v1.2.3 From a47164b3dd96a359b4fe2ad0c3c3016be4505476 Mon Sep 17 00:00:00 2001 From: Malcrom Date: Sun, 13 Jan 2013 12:08:40 -0330 Subject: Core/Scripting: Update script for boss thekal, Zul'Grub --- .../EasternKingdoms/ZulGurub/boss_thekal.cpp | 303 +++++++++++---------- 1 file changed, 153 insertions(+), 150 deletions(-) (limited to 'src') diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp index 69a1348db15..8804aaf3bdf 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp @@ -27,7 +27,7 @@ EndScriptData */ #include "ScriptedCreature.h" #include "zulgurub.h" -enum Thekal +enum Says { SAY_AGGRO = 0, SAY_DEATH = 1 @@ -35,15 +35,16 @@ enum Thekal enum Spells { - SPELL_MORTALCLEAVE = 22859, - SPELL_SILENCE = 22666, - SPELL_FRENZY = 8269, - SPELL_FORCEPUNCH = 24189, - SPELL_CHARGE = 24193, - SPELL_ENRAGE = 8269, - SPELL_SUMMONTIGERS = 24183, - SPELL_TIGER_FORM = 24169, - SPELL_RESURRECT = 24173, //We will not use this spell. + SPELL_MORTALCLEAVE = 22859, // Phase 1 + SPELL_SILENCE = 22666, // Phase 1 + SPELL_TIGER_FORM = 24169, // Phase 1 + SPELL_RESURRECT = 24173, // Phase 1 // Not used in script. + SPELL_FRENZY = 8269, // Phase 2 + SPELL_FORCEPUNCH = 24189, // Phase 2 + SPELL_CHARGE = 24193, // Phase 2 + SPELL_ENRAGE = 8269, // Phase 2 + SPELL_SUMMONTIGERS = 24183, // Phase 2 + //Zealot Lor'Khan Spells SPELL_SHIELD = 20545, @@ -59,6 +60,19 @@ enum Spells SPELL_BLIND = 21060 }; +enum Events +{ + EVENT_MORTALCLEAVE = 0, // Phase 1 + EVENT_SILENCE = 1, // Phase 1 + EVENT_CHECK_TIMER = 2, // Phase 1 + EVENT_RESURRECT_TIMER = 3, // Phase 1 + EVENT_FRENZY = 4, // Phase 2 + EVENT_FORCEPUNCH = 5, // Phase 2 + EVENT_SPELL_CHARGE = 6, // Phase 2 + EVENT_ENRAGE = 7, // Phase 2 + EVENT_SUMMONTIGERS = 8 // Phase 2 +}; + class boss_thekal : public CreatureScript // thekal { public: boss_thekal() : CreatureScript("boss_thekal") {} @@ -67,33 +81,12 @@ class boss_thekal : public CreatureScript // thekal { boss_thekalAI(Creature* creature) : BossAI(creature, DATA_THEKAL) {} - uint32 MortalCleave_Timer; - uint32 Silence_Timer; - uint32 Frenzy_Timer; - uint32 ForcePunch_Timer; - uint32 Charge_Timer; - uint32 Enrage_Timer; - uint32 SummonTigers_Timer; - uint32 Check_Timer; - uint32 Resurrect_Timer; - - InstanceScript* instance; bool Enraged; bool PhaseTwo; bool WasDead; void Reset() { - MortalCleave_Timer = 4000; - Silence_Timer = 9000; - Frenzy_Timer = 30000; - ForcePunch_Timer = 4000; - Charge_Timer = 12000; - Enrage_Timer = 32000; - SummonTigers_Timer = 25000; - Check_Timer = 10000; - Resurrect_Timer = 10000; - Enraged = false; PhaseTwo = false; WasDead = false; @@ -108,6 +101,10 @@ class boss_thekal : public CreatureScript // thekal void EnterCombat(Unit* /*who*/) { _EnterCombat(); + events.ScheduleEvent(EVENT_MORTALCLEAVE, 4000); // Phase 1 + events.ScheduleEvent(EVENT_SILENCE, 9000); // Phase 1 + events.ScheduleEvent(EVENT_CHECK_TIMER, 10000); // Phase 1 + events.ScheduleEvent(EVENT_RESURRECT_TIMER, 10000); // Phase 1 Talk(SAY_AGGRO); } @@ -117,141 +114,153 @@ class boss_thekal : public CreatureScript // thekal instance->SetData(DATA_THEKAL, NOT_STARTED); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 const diff) { if (!UpdateVictim()) return; - //Check_Timer for the death of LorKhan and Zath. - if (!WasDead && Check_Timer <= diff) + events.Update(diff); + + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; + + while (uint32 eventId = events.ExecuteEvent()) + { + if (!PhaseTwo) { - if (instance) + switch (eventId) { - if (instance->GetData(DATA_LORKHAN) == SPECIAL) - { - //Resurrect LorKhan - if (Unit* pLorKhan = Unit::GetUnit(*me, instance->GetData64(DATA_LORKHAN))) + case EVENT_MORTALCLEAVE: + DoCastVictim(SPELL_MORTALCLEAVE, true); + events.ScheduleEvent(EVENT_MORTALCLEAVE, urand(15000, 20000)); + break; + case EVENT_SILENCE: + DoCastVictim(SPELL_SILENCE, true); + events.ScheduleEvent(EVENT_SILENCE, urand(20000, 25000)); + break; + case EVENT_RESURRECT_TIMER: + //Thekal will transform to Tiger if he died and was not resurrected after 10 seconds. + if (WasDead) { - pLorKhan->SetUInt32Value(UNIT_FIELD_BYTES_1, 0); - pLorKhan->setFaction(14); - pLorKhan->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - pLorKhan->SetFullHealth(); - - instance->SetData(DATA_LORKHAN, DONE); + DoCast(me, SPELL_TIGER_FORM); + me->SetObjectScale(2.00f); + me->SetStandState(UNIT_STAND_STATE_STAND); + me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + me->SetFullHealth(); + const CreatureTemplate* cinfo = me->GetCreatureTemplate(); + me->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, (cinfo->mindmg +((cinfo->mindmg/100) * 40))); + me->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, (cinfo->maxdmg +((cinfo->maxdmg/100) * 40))); + me->UpdateDamagePhysical(BASE_ATTACK); + DoResetThreat(); + PhaseTwo = true; + events.ScheduleEvent(EVENT_FRENZY, 30000); // Phase 2 + events.ScheduleEvent(EVENT_FORCEPUNCH, 4000); // Phase 2 + events.ScheduleEvent(EVENT_SPELL_CHARGE, 12000); // Phase 2 + events.ScheduleEvent(EVENT_ENRAGE, 32000); // Phase 2 + events.ScheduleEvent(EVENT_SUMMONTIGERS, 25000); // Phase 2 } + events.ScheduleEvent(EVENT_RESURRECT_TIMER, 10000); + break; + case EVENT_CHECK_TIMER: + //Check_Timer for the death of LorKhan and Zath. + if (!WasDead) + { + if (instance) + { + if (instance->GetData(DATA_LORKHAN) == SPECIAL) + { + //Resurrect LorKhan + if (Unit* pLorKhan = Unit::GetUnit(*me, instance->GetData64(DATA_LORKHAN))) + { + pLorKhan->SetUInt32Value(UNIT_FIELD_BYTES_1, 0); + pLorKhan->setFaction(14); + pLorKhan->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + pLorKhan->SetFullHealth(); + + instance->SetData(DATA_LORKHAN, DONE); + } + } + + if (instance->GetData(DATA_ZATH) == SPECIAL) + { + //Resurrect Zath + if (Unit* pZath = Unit::GetUnit(*me, instance->GetData64(DATA_ZATH))) + { + pZath->SetUInt32Value(UNIT_FIELD_BYTES_1, 0); + pZath->setFaction(14); + pZath->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + pZath->SetFullHealth(); + + instance->SetData(DATA_ZATH, DONE); + } + } + } + events.ScheduleEvent(EVENT_CHECK_TIMER, 5000); + break; + default: + break; } - if (instance->GetData(DATA_ZATH) == SPECIAL) + if (!WasDead && !HealthAbovePct(5)) { - //Resurrect Zath - Unit* pZath = Unit::GetUnit(*me, instance->GetData64(DATA_ZATH)); - if (pZath) - { - pZath->SetUInt32Value(UNIT_FIELD_BYTES_1, 0); - pZath->setFaction(14); - pZath->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - pZath->SetFullHealth(); - - instance->SetData(DATA_ZATH, DONE); - } + me->RemoveAurasByType(SPELL_AURA_PERIODIC_DAMAGE_PERCENT); + me->RemoveAurasByType(SPELL_AURA_PERIODIC_DAMAGE); + me->RemoveAurasByType(SPELL_AURA_PERIODIC_LEECH); + me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + me->SetStandState(UNIT_STAND_STATE_SLEEP); + me->AttackStop(); + if (instance) + instance->SetData(DATA_THEKAL, SPECIAL); + WasDead=true; } } - - Check_Timer = 5000; - } else Check_Timer -= diff; - - if (!PhaseTwo && MortalCleave_Timer <= diff) - { - DoCast(me->getVictim(), SPELL_MORTALCLEAVE); - MortalCleave_Timer = urand(15000, 20000); - } else MortalCleave_Timer -= diff; - - if (!PhaseTwo && Silence_Timer <= diff) - { - DoCast(me->getVictim(), SPELL_SILENCE); - Silence_Timer = urand(20000, 25000); - } else Silence_Timer -= diff; - - if (!PhaseTwo && !WasDead && !HealthAbovePct(5)) - { - me->RemoveAurasByType(SPELL_AURA_PERIODIC_DAMAGE_PERCENT); - me->RemoveAurasByType(SPELL_AURA_PERIODIC_DAMAGE); - me->RemoveAurasByType(SPELL_AURA_PERIODIC_LEECH); - me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - me->SetStandState(UNIT_STAND_STATE_SLEEP); - me->AttackStop(); - - if (instance) - instance->SetData(DATA_THEKAL, SPECIAL); - - WasDead=true; - } - - //Thekal will transform to Tiger if he died and was not resurrected after 10 seconds. - if (!PhaseTwo && WasDead) - { - if (Resurrect_Timer <= diff) - { - DoCast(me, SPELL_TIGER_FORM); - me->SetObjectScale(2.00f); - me->SetStandState(UNIT_STAND_STATE_STAND); - me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - me->SetFullHealth(); - const CreatureTemplate* cinfo = me->GetCreatureTemplate(); - me->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, (cinfo->mindmg +((cinfo->mindmg/100) * 40))); - me->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, (cinfo->maxdmg +((cinfo->maxdmg/100) * 40))); - me->UpdateDamagePhysical(BASE_ATTACK); - DoResetThreat(); - PhaseTwo = true; - } else Resurrect_Timer -= diff; - } - - if (me->IsFullHealth() && WasDead) - { - WasDead = false; } if (PhaseTwo) { - if (Charge_Timer <= diff) + switch (eventId) { - if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) - { - DoCast(target, SPELL_CHARGE); - DoResetThreat(); - AttackStart(target); - } - - Charge_Timer = urand(15000, 22000); - } else Charge_Timer -= diff; - - if (Frenzy_Timer <= diff) - { - DoCast(me, SPELL_FRENZY); - Frenzy_Timer = 30000; - } else Frenzy_Timer -= diff; - - if (ForcePunch_Timer <= diff) - { - DoCast(me->getVictim(), SPELL_SILENCE); - ForcePunch_Timer = urand(16000, 21000); - } else ForcePunch_Timer -= diff; - - if (SummonTigers_Timer <= diff) - { - DoCast(me->getVictim(), SPELL_SUMMONTIGERS); - SummonTigers_Timer = urand(10000, 14000); - } else SummonTigers_Timer -= diff; + case EVENT_FRENZY: + DoCast(me, SPELL_FRENZY); + events.ScheduleEvent(EVENT_FRENZY, 30000); + break; + case EVENT_FORCEPUNCH: + DoCastVictim(SPELL_FORCEPUNCH, true); + events.ScheduleEvent(EVENT_FORCEPUNCH, 16000, 21000); + break; + case EVENT_CHARGE: + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) + { + DoCast(target, SPELL_CHARGE); + DoResetThreat(); + AttackStart(target); + } + events.ScheduleEvent(EVENT_CHARGE, 15000, 22000); + break; + case EVENT_ENRAGE: + if (HealthBelowPct(11) && !Enraged) + { + DoCast(me, SPELL_ENRAGE); + Enraged = true; + } + events.ScheduleEvent(EVENT_ENRAGE, 30000); + break; + case EVENT_SUMMONTIGERS: + DoCastVictim(SPELL_SUMMONTIGERS, true); + events.ScheduleEvent(EVENT_SUMMONTIGERS, urand(10000, 14000)); + break; + default: + break; + } - if (HealthBelowPct(11) && !Enraged) + if (me->IsFullHealth() && WasDead) { - DoCast(me, SPELL_ENRAGE); - Enraged = true; + WasDead = false; } } + } - DoMeleeAttackIfReady(); - + DoMeleeAttackIfReady(); } }; @@ -264,12 +273,7 @@ class boss_thekal : public CreatureScript // thekal //Zealot Lor'Khan class mob_zealot_lorkhan : public CreatureScript { - public: - - mob_zealot_lorkhan() - : CreatureScript("mob_zealot_lorkhan") - { - } + public: mob_zealot_lorkhan() : CreatureScript("mob_zealot_lorkhan") {} struct mob_zealot_lorkhanAI : public ScriptedAI { @@ -580,4 +584,3 @@ void AddSC_boss_thekal() new mob_zealot_lorkhan(); new mob_zealot_zath(); } - -- cgit v1.2.3 From 71bfda55c33844cceb373f36dd21804ca26b4e61 Mon Sep 17 00:00:00 2001 From: Malcrom Date: Sun, 13 Jan 2013 13:44:11 -0330 Subject: Core/Scripting: Improve boss Thekal script and misc cleanup. --- .../EasternKingdoms/ZulGurub/boss_mandokir.cpp | 57 ++--- .../EasternKingdoms/ZulGurub/boss_marli.cpp | 17 +- .../EasternKingdoms/ZulGurub/boss_thekal.cpp | 242 ++++++++++----------- .../EasternKingdoms/ZulGurub/boss_venoxis.cpp | 2 - 4 files changed, 148 insertions(+), 170 deletions(-) (limited to 'src') diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp index b7230aa8b65..6b527ba45f3 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp @@ -27,30 +27,36 @@ EndScriptData */ #include "ScriptedCreature.h" #include "zulgurub.h" -enum Mandokir +enum Says { - SAY_AGGRO = 0, - SAY_DING_KILL = 1, - SAY_WATCH = 2, - SAY_WATCH_WHISPER = 3, //is this text for real? easter egg? - SAY_GRATS_JINDO = 0, - - SPELL_CHARGE = 24408, - SPELL_CLEAVE = 7160, - SPELL_FEAR = 29321, - SPELL_WHIRLWIND = 15589, - SPELL_MORTAL_STRIKE = 16856, - SPELL_ENRAGE = 24318, - SPELL_WATCH = 24314, - SPELL_LEVEL_UP = 24312, - -//Ohgans Spells - SPELL_SUNDERARMOR = 24317, - - NPC_SPEAKER = 11391 + SAY_AGGRO = 0, + SAY_DING_KILL = 1, + SAY_WATCH = 2, + SAY_WATCH_WHISPER = 3, // is this text for real? easter egg? + SAY_GRATS_JINDO = 0, }; -class boss_mandokir : public CreatureScript //mandokir +enum Spells +{ + SPELL_CHARGE = 24408, + SPELL_CLEAVE = 7160, + SPELL_FEAR = 29321, + SPELL_WHIRLWIND = 15589, + SPELL_MORTAL_STRIKE = 16856, + SPELL_ENRAGE = 24318, + SPELL_WATCH = 24314, + SPELL_LEVEL_UP = 24312, + SPELL_SWIFT_ORANGE_RAPTOR = 23243, + // Ohgans Spell + SPELL_SUNDERARMOR = 24317 +}; + +enum CreatureId +{ + NPC_SPEAKER = 11391 +}; + +class boss_mandokir : public CreatureScript { public: boss_mandokir() : CreatureScript("boss_mandokir") {} @@ -300,15 +306,10 @@ class boss_mandokir : public CreatureScript //mandokir } }; -//Ohgan +// Ohgan class mob_ohgan : public CreatureScript { - public: - - mob_ohgan() - : CreatureScript("mob_ohgan") - { - } + public: mob_ohgan() : CreatureScript("mob_ohgan") {} struct mob_ohganAI : public ScriptedAI { diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_marli.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_marli.cpp index 35ddb93c83e..a6c1e014221 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_marli.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_marli.cpp @@ -38,15 +38,15 @@ enum Says enum Spells { SPELL_CHARGE = 22911, - SPELL_ASPECT_OF_MARLI = 24686, // A stun spell + SPELL_ASPECT_OF_MARLI = 24686, // A stun spell SPELL_ENVOLWINGWEB = 24110, SPELL_POISONVOLLEY = 24099, SPELL_SPIDER_FORM = 24084, -//The Spider Spells - SPELL_LEVELUP = 24312 // Not right Spell. + // The Spider Spell + SPELL_LEVELUP = 24312 // Not right Spell. }; -class boss_marli : public CreatureScript // marli +class boss_marli : public CreatureScript { public: boss_marli() : CreatureScript("boss_marli") {} @@ -214,15 +214,10 @@ class boss_marli : public CreatureScript // marli } }; -//Spawn of Marli +// Spawn of Marli class mob_spawn_of_marli : public CreatureScript { - public: - - mob_spawn_of_marli() - : CreatureScript("mob_spawn_of_marli") - { - } + public: mob_spawn_of_marli() : CreatureScript("mob_spawn_of_marli") {} struct mob_spawn_of_marliAI : public ScriptedAI { diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp index 8804aaf3bdf..6710ca67863 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp @@ -44,15 +44,12 @@ enum Spells SPELL_CHARGE = 24193, // Phase 2 SPELL_ENRAGE = 8269, // Phase 2 SPELL_SUMMONTIGERS = 24183, // Phase 2 - - -//Zealot Lor'Khan Spells + // Zealot Lor'Khan Spells SPELL_SHIELD = 20545, SPELL_BLOODLUST = 24185, SPELL_GREATERHEAL = 24208, SPELL_DISARM = 6713, - -//Zealot Zath Spells + // Zealot Zath Spells SPELL_SWEEPINGSTRIKES = 18765, SPELL_SINISTERSTRIKE = 15581, SPELL_GOUGE = 12540, @@ -73,7 +70,13 @@ enum Events EVENT_SUMMONTIGERS = 8 // Phase 2 }; -class boss_thekal : public CreatureScript // thekal +enum Phases +{ + PHASE_ONE = 1, + PHASE_TWO = 2 +}; + +class boss_thekal : public CreatureScript { public: boss_thekal() : CreatureScript("boss_thekal") {} @@ -82,13 +85,11 @@ class boss_thekal : public CreatureScript // thekal boss_thekalAI(Creature* creature) : BossAI(creature, DATA_THEKAL) {} bool Enraged; - bool PhaseTwo; bool WasDead; void Reset() { Enraged = false; - PhaseTwo = false; WasDead = false; } @@ -101,10 +102,10 @@ class boss_thekal : public CreatureScript // thekal void EnterCombat(Unit* /*who*/) { _EnterCombat(); - events.ScheduleEvent(EVENT_MORTALCLEAVE, 4000); // Phase 1 - events.ScheduleEvent(EVENT_SILENCE, 9000); // Phase 1 - events.ScheduleEvent(EVENT_CHECK_TIMER, 10000); // Phase 1 - events.ScheduleEvent(EVENT_RESURRECT_TIMER, 10000); // Phase 1 + events.ScheduleEvent(EVENT_MORTALCLEAVE, 4000, 0, PHASE_ONE); // Phase 1 + events.ScheduleEvent(EVENT_SILENCE, 9000, 0, PHASE_ONE); // Phase 1 + events.ScheduleEvent(EVENT_CHECK_TIMER, 10000, 0, PHASE_ONE); // Phase 1 + events.ScheduleEvent(EVENT_RESURRECT_TIMER, 10000, 0, PHASE_ONE); // Phase 1 Talk(SAY_AGGRO); } @@ -126,140 +127,123 @@ class boss_thekal : public CreatureScript // thekal while (uint32 eventId = events.ExecuteEvent()) { - if (!PhaseTwo) + switch (eventId) { - switch (eventId) - { - case EVENT_MORTALCLEAVE: - DoCastVictim(SPELL_MORTALCLEAVE, true); - events.ScheduleEvent(EVENT_MORTALCLEAVE, urand(15000, 20000)); - break; - case EVENT_SILENCE: - DoCastVictim(SPELL_SILENCE, true); - events.ScheduleEvent(EVENT_SILENCE, urand(20000, 25000)); - break; - case EVENT_RESURRECT_TIMER: - //Thekal will transform to Tiger if he died and was not resurrected after 10 seconds. - if (WasDead) - { - DoCast(me, SPELL_TIGER_FORM); - me->SetObjectScale(2.00f); - me->SetStandState(UNIT_STAND_STATE_STAND); - me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - me->SetFullHealth(); - const CreatureTemplate* cinfo = me->GetCreatureTemplate(); - me->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, (cinfo->mindmg +((cinfo->mindmg/100) * 40))); - me->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, (cinfo->maxdmg +((cinfo->maxdmg/100) * 40))); - me->UpdateDamagePhysical(BASE_ATTACK); - DoResetThreat(); - PhaseTwo = true; - events.ScheduleEvent(EVENT_FRENZY, 30000); // Phase 2 - events.ScheduleEvent(EVENT_FORCEPUNCH, 4000); // Phase 2 - events.ScheduleEvent(EVENT_SPELL_CHARGE, 12000); // Phase 2 - events.ScheduleEvent(EVENT_ENRAGE, 32000); // Phase 2 - events.ScheduleEvent(EVENT_SUMMONTIGERS, 25000); // Phase 2 - } - events.ScheduleEvent(EVENT_RESURRECT_TIMER, 10000); - break; - case EVENT_CHECK_TIMER: - //Check_Timer for the death of LorKhan and Zath. - if (!WasDead) + case EVENT_MORTALCLEAVE: + DoCastVictim(SPELL_MORTALCLEAVE, true); + events.ScheduleEvent(EVENT_MORTALCLEAVE, urand(15000, 20000), 0, PHASE_ONE); + break; + case EVENT_SILENCE: + DoCastVictim(SPELL_SILENCE, true); + events.ScheduleEvent(EVENT_SILENCE, urand(20000, 25000), 0, PHASE_ONE); + break; + case EVENT_RESURRECT_TIMER: + //Thekal will transform to Tiger if he died and was not resurrected after 10 seconds. + if (WasDead) + { + DoCast(me, SPELL_TIGER_FORM); + me->SetObjectScale(2.00f); + me->SetStandState(UNIT_STAND_STATE_STAND); + me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + me->SetFullHealth(); + const CreatureTemplate* cinfo = me->GetCreatureTemplate(); + me->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, (cinfo->mindmg +((cinfo->mindmg/100) * 40))); + me->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, (cinfo->maxdmg +((cinfo->maxdmg/100) * 40))); + me->UpdateDamagePhysical(BASE_ATTACK); + DoResetThreat(); + events.ScheduleEvent(EVENT_FRENZY, 30000, 0, PHASE_TWO); // Phase 2 + events.ScheduleEvent(EVENT_FORCEPUNCH, 4000, 0, PHASE_TWO); // Phase 2 + events.ScheduleEvent(EVENT_SPELL_CHARGE, 12000, 0, PHASE_TWO); // Phase 2 + events.ScheduleEvent(EVENT_ENRAGE, 32000, 0, PHASE_TWO); // Phase 2 + events.ScheduleEvent(EVENT_SUMMONTIGERS, 25000, 0, PHASE_TWO); // Phase 2 + events.SetPhase(PHASE_TWO); + } + events.ScheduleEvent(EVENT_RESURRECT_TIMER, 10000, 0, PHASE_ONE); + break; + case EVENT_CHECK_TIMER: + //Check_Timer for the death of LorKhan and Zath. + if (!WasDead) + { + if (instance) { - if (instance) + if (instance->GetData(DATA_LORKHAN) == SPECIAL) { - if (instance->GetData(DATA_LORKHAN) == SPECIAL) + //Resurrect LorKhan + if (Unit* pLorKhan = Unit::GetUnit(*me, instance->GetData64(DATA_LORKHAN))) { - //Resurrect LorKhan - if (Unit* pLorKhan = Unit::GetUnit(*me, instance->GetData64(DATA_LORKHAN))) - { - pLorKhan->SetUInt32Value(UNIT_FIELD_BYTES_1, 0); - pLorKhan->setFaction(14); - pLorKhan->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - pLorKhan->SetFullHealth(); - - instance->SetData(DATA_LORKHAN, DONE); - } + pLorKhan->SetUInt32Value(UNIT_FIELD_BYTES_1, 0); + pLorKhan->setFaction(14); + pLorKhan->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + pLorKhan->SetFullHealth(); + instance->SetData(DATA_LORKHAN, DONE); } + } - if (instance->GetData(DATA_ZATH) == SPECIAL) + if (instance->GetData(DATA_ZATH) == SPECIAL) + { + //Resurrect Zath + if (Unit* pZath = Unit::GetUnit(*me, instance->GetData64(DATA_ZATH))) { - //Resurrect Zath - if (Unit* pZath = Unit::GetUnit(*me, instance->GetData64(DATA_ZATH))) - { - pZath->SetUInt32Value(UNIT_FIELD_BYTES_1, 0); - pZath->setFaction(14); - pZath->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - pZath->SetFullHealth(); - - instance->SetData(DATA_ZATH, DONE); - } + pZath->SetUInt32Value(UNIT_FIELD_BYTES_1, 0); + pZath->setFaction(14); + pZath->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + pZath->SetFullHealth(); + instance->SetData(DATA_ZATH, DONE); } } - events.ScheduleEvent(EVENT_CHECK_TIMER, 5000); - break; - default: - break; + } } - - if (!WasDead && !HealthAbovePct(5)) + events.ScheduleEvent(EVENT_CHECK_TIMER, 5000, 0, PHASE_ONE); + break; + case EVENT_FRENZY: + DoCast(me, SPELL_FRENZY); + events.ScheduleEvent(EVENT_FRENZY, 30000, 0, PHASE_TWO); + break; + case EVENT_FORCEPUNCH: + DoCastVictim(SPELL_FORCEPUNCH, true); + events.ScheduleEvent(EVENT_FORCEPUNCH, urand(16000, 21000), 0, PHASE_TWO); + break; + case EVENT_CHARGE: + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) { - me->RemoveAurasByType(SPELL_AURA_PERIODIC_DAMAGE_PERCENT); - me->RemoveAurasByType(SPELL_AURA_PERIODIC_DAMAGE); - me->RemoveAurasByType(SPELL_AURA_PERIODIC_LEECH); - me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - me->SetStandState(UNIT_STAND_STATE_SLEEP); - me->AttackStop(); - if (instance) - instance->SetData(DATA_THEKAL, SPECIAL); - WasDead=true; + DoCast(target, SPELL_CHARGE); + DoResetThreat(); + AttackStart(target); } - } + events.ScheduleEvent(EVENT_CHARGE, urand(15000, 22000), 0, PHASE_TWO); + break; + case EVENT_ENRAGE: + if (HealthBelowPct(11) && !Enraged) + { + DoCast(me, SPELL_ENRAGE); + Enraged = true; + } + events.ScheduleEvent(EVENT_ENRAGE, 30000); + break; + case EVENT_SUMMONTIGERS: + DoCastVictim(SPELL_SUMMONTIGERS, true); + events.ScheduleEvent(EVENT_SUMMONTIGERS, urand(10000, 14000), 0, PHASE_TWO); + break; + default: + break; } - if (PhaseTwo) - { - switch (eventId) - { - case EVENT_FRENZY: - DoCast(me, SPELL_FRENZY); - events.ScheduleEvent(EVENT_FRENZY, 30000); - break; - case EVENT_FORCEPUNCH: - DoCastVictim(SPELL_FORCEPUNCH, true); - events.ScheduleEvent(EVENT_FORCEPUNCH, 16000, 21000); - break; - case EVENT_CHARGE: - if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) - { - DoCast(target, SPELL_CHARGE); - DoResetThreat(); - AttackStart(target); - } - events.ScheduleEvent(EVENT_CHARGE, 15000, 22000); - break; - case EVENT_ENRAGE: - if (HealthBelowPct(11) && !Enraged) - { - DoCast(me, SPELL_ENRAGE); - Enraged = true; - } - events.ScheduleEvent(EVENT_ENRAGE, 30000); - break; - case EVENT_SUMMONTIGERS: - DoCastVictim(SPELL_SUMMONTIGERS, true); - events.ScheduleEvent(EVENT_SUMMONTIGERS, urand(10000, 14000)); - break; - default: - break; - } + if (me->IsFullHealth() && WasDead) + WasDead = false; - if (me->IsFullHealth() && WasDead) - { - WasDead = false; - } + if ((events.GetPhaseMask() == PHASE_ONE) && !WasDead && !HealthAbovePct(5)) + { + me->RemoveAurasByType(SPELL_AURA_PERIODIC_DAMAGE_PERCENT); + me->RemoveAurasByType(SPELL_AURA_PERIODIC_DAMAGE); + me->RemoveAurasByType(SPELL_AURA_PERIODIC_LEECH); + me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + me->SetStandState(UNIT_STAND_STATE_SLEEP); + me->AttackStop(); + if (instance) + instance->SetData(DATA_THEKAL, SPECIAL); + WasDead=true; } } - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_venoxis.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_venoxis.cpp index 7fe250eda57..f5c10631a9b 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_venoxis.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_venoxis.cpp @@ -42,7 +42,6 @@ enum Spells SPELL_HOLY_NOVA = 23858, SPELL_HOLY_FIRE = 23860, SPELL_HOLY_WRATH = 23979, - // snake form SPELL_POISON_CLOUD = 23861, SPELL_VENOM_SPIT = 23862, @@ -50,7 +49,6 @@ enum Spells SPELL_PARASITIC_SERPENT = 23865, SPELL_SUMMON_PARASITIC_SERPENT = 23866, SPELL_PARASITIC_SERPENT_TRIGGER = 23867, - // used when swapping event-stages SPELL_VENOXIS_TRANSFORM = 23849, // 50% health - shapechange to cobra SPELL_FRENZY = 8269 // 20% health - frenzy -- cgit v1.2.3 From cdafb60f0c368d766e373071b6b792dba56fa376 Mon Sep 17 00:00:00 2001 From: Malcrom Date: Sun, 13 Jan 2013 15:05:31 -0330 Subject: Core/Scripting: Clean up boss Jin'do --- .../EasternKingdoms/ZulGurub/boss_jindo.cpp | 198 ++++++++++----------- 1 file changed, 98 insertions(+), 100 deletions(-) (limited to 'src') diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp index 61f8fa08c2f..dd1edcb3529 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp @@ -35,17 +35,34 @@ enum Say enum Spells { SPELL_BRAINWASHTOTEM = 24262, - SPELL_POWERFULLHEALINGWARD = 24309, //We will not use this spell. We will summon a totem by script cause the spell totems will not cast. + SPELL_POWERFULLHEALINGWARD = 24309, // HACKED Totem summoned by script because the spell totems will not cast. SPELL_HEX = 24053, SPELL_DELUSIONSOFJINDO = 24306, - SPELL_SHADEOFJINDO = 24308, //We will not use this spell. We will summon a shade by script. + SPELL_SHADEOFJINDO = 24308, // HACKED //Healing Ward Spell - SPELL_HEAL = 38588, //Totems are not working right. Right heal spell ID is 24311 but this spell is not casting... + SPELL_HEAL = 38588, // HACKED Totems are not working right. Right heal spell ID is 24311 but this spell is not casting... //Shade of Jindo Spell SPELL_SHADOWSHOCK = 19460, SPELL_INVISIBLE = 24699 }; +enum Events +{ + EVENT_BRAINWASHTOTEM = 0, + EVENT_POWERFULLHEALINGWARD = 1, + EVENT_HEX = 2, + EVENT_DELUSIONSOFJINDO = 3, + EVENT_TELEPORT = 4 +}; + +enum CreatureId +{ + NPC_SHADE_OF_JINDO = 14986, + NPC_SACRIFICED_TROLL = 14826 +}; + +Position const TeleportLoc = {-11583.7783f, -1249.4278f, 77.5471f, 4.745f}; + class boss_jindo : public CreatureScript { public: boss_jindo() : CreatureScript("boss_jindo") {} @@ -54,21 +71,6 @@ class boss_jindo : public CreatureScript { boss_jindoAI(Creature* creature) : BossAI(creature, DATA_JINDO) {} - uint32 BrainWashTotem_Timer; - uint32 HealingWard_Timer; - uint32 Hex_Timer; - uint32 Delusions_Timer; - uint32 Teleport_Timer; - - void Reset() - { - BrainWashTotem_Timer = 20000; - HealingWard_Timer = 16000; - Hex_Timer = 8000; - Delusions_Timer = 10000; - Teleport_Timer = 5000; - } - void JustDied(Unit* /*killer*/) { _JustDied(); @@ -77,99 +79,96 @@ class boss_jindo : public CreatureScript void EnterCombat(Unit* /*who*/) { _EnterCombat(); + events.ScheduleEvent(EVENT_BRAINWASHTOTEM, 20000); + events.ScheduleEvent(EVENT_POWERFULLHEALINGWARD, 16000); + events.ScheduleEvent(EVENT_HEX, 8000); + events.ScheduleEvent(EVENT_DELUSIONSOFJINDO, 10000); + events.ScheduleEvent(EVENT_TELEPORT, 5000); Talk(SAY_AGGRO); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 const diff) { if (!UpdateVictim()) return; - //BrainWashTotem_Timer - if (BrainWashTotem_Timer <= diff) - { - DoCast(me, SPELL_BRAINWASHTOTEM); - BrainWashTotem_Timer = urand(18000, 26000); - } else BrainWashTotem_Timer -= diff; + events.Update(diff); - //HealingWard_Timer - if (HealingWard_Timer <= diff) - { - //DoCast(me, SPELL_POWERFULLHEALINGWARD); - me->SummonCreature(14987, me->GetPositionX()+3, me->GetPositionY()-2, me->GetPositionZ(), 0, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 30000); - HealingWard_Timer = urand(14000, 20000); - } else HealingWard_Timer -= diff; - - //Hex_Timer - if (Hex_Timer <= diff) - { - DoCast(me->getVictim(), SPELL_HEX); - - if (DoGetThreat(me->getVictim())) - DoModifyThreatPercent(me->getVictim(), -80); - - Hex_Timer = urand(12000, 20000); - } else Hex_Timer -= diff; - - //Casting the delusion curse with a shade. So shade will attack the same target with the curse. - if (Delusions_Timer <= diff) - { - if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) - { - DoCast(target, SPELL_DELUSIONSOFJINDO); - - Creature* Shade = me->SummonCreature(14986, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - if (Shade) - Shade->AI()->AttackStart(target); - } - - Delusions_Timer = urand(4000, 12000); - } else Delusions_Timer -= diff; + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; - //Teleporting a random gamer and spawning 9 skeletons that will attack this gamer - if (Teleport_Timer <= diff) + while (uint32 eventId = events.ExecuteEvent()) { - Unit* target = NULL; - target = SelectTarget(SELECT_TARGET_RANDOM, 0); - if (target && target->GetTypeId() == TYPEID_PLAYER) + switch (eventId) { - DoTeleportPlayer(target, -11583.7783f, -1249.4278f, 77.5471f, 4.745f); - - if (DoGetThreat(me->getVictim())) - DoModifyThreatPercent(target, -100); - - Creature* Skeletons; - Skeletons = me->SummonCreature(14826, target->GetPositionX()+2, target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - if (Skeletons) - Skeletons->AI()->AttackStart(target); - Skeletons = me->SummonCreature(14826, target->GetPositionX()-2, target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - if (Skeletons) - Skeletons->AI()->AttackStart(target); - Skeletons = me->SummonCreature(14826, target->GetPositionX()+4, target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - if (Skeletons) - Skeletons->AI()->AttackStart(target); - Skeletons = me->SummonCreature(14826, target->GetPositionX()-4, target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - if (Skeletons) - Skeletons->AI()->AttackStart(target); - Skeletons = me->SummonCreature(14826, target->GetPositionX(), target->GetPositionY()+2, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - if (Skeletons) - Skeletons->AI()->AttackStart(target); - Skeletons = me->SummonCreature(14826, target->GetPositionX(), target->GetPositionY()-2, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - if (Skeletons) - Skeletons->AI()->AttackStart(target); - Skeletons = me->SummonCreature(14826, target->GetPositionX(), target->GetPositionY()+4, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - if (Skeletons) - Skeletons->AI()->AttackStart(target); - Skeletons = me->SummonCreature(14826, target->GetPositionX(), target->GetPositionY()-4, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - if (Skeletons) - Skeletons->AI()->AttackStart(target); - Skeletons = me->SummonCreature(14826, target->GetPositionX()+3, target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - if (Skeletons) - Skeletons->AI()->AttackStart(target); + case EVENT_BRAINWASHTOTEM: + DoCast(me, SPELL_BRAINWASHTOTEM); + events.ScheduleEvent(EVENT_BRAINWASHTOTEM, urand(18000, 26000)); + break; + case EVENT_POWERFULLHEALINGWARD: // HACK + //DoCast(me, SPELL_POWERFULLHEALINGWARD); + me->SummonCreature(14987, me->GetPositionX()+3, me->GetPositionY()-2, me->GetPositionZ(), 0, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 30000); + events.ScheduleEvent(EVENT_POWERFULLHEALINGWARD, urand(14000, 20000)); + break; + case EVENT_HEX: + DoCastVictim(SPELL_HEX, true); + if (DoGetThreat(me->getVictim())) + DoModifyThreatPercent(me->getVictim(), -80); + events.ScheduleEvent(EVENT_HEX, urand(12000, 20000)); + break; + case EVENT_DELUSIONSOFJINDO: // HACK + // Casting the delusion curse with a shade so shade will attack the same target with the curse. + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) + { + DoCast(target, SPELL_DELUSIONSOFJINDO); + Creature* Shade = me->SummonCreature(NPC_SHADE_OF_JINDO, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); + if (Shade) + Shade->AI()->AttackStart(target); + } + events.ScheduleEvent(EVENT_DELUSIONSOFJINDO, urand(4000, 12000)); + break; + case EVENT_TELEPORT: // Possible HACK + // Teleports a random player and spawns 9 Sacrificed Trolls to attack player + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) + { + DoTeleportPlayer(target, TeleportLoc.m_positionX, TeleportLoc.m_positionY, TeleportLoc.m_positionZ, TeleportLoc.m_orientation); + if (DoGetThreat(me->getVictim())) + DoModifyThreatPercent(target, -100); + Creature* SacrificedTroll; + SacrificedTroll = me->SummonCreature(NPC_SACRIFICED_TROLL, target->GetPositionX()+2, target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); + if (SacrificedTroll) + SacrificedTroll->AI()->AttackStart(target); + SacrificedTroll = me->SummonCreature(NPC_SACRIFICED_TROLL, target->GetPositionX()-2, target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); + if (SacrificedTroll) + SacrificedTroll->AI()->AttackStart(target); + SacrificedTroll = me->SummonCreature(NPC_SACRIFICED_TROLL, target->GetPositionX()+4, target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); + if (SacrificedTroll) + SacrificedTroll->AI()->AttackStart(target); + SacrificedTroll = me->SummonCreature(NPC_SACRIFICED_TROLL, target->GetPositionX()-4, target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); + if (SacrificedTroll) + SacrificedTroll->AI()->AttackStart(target); + SacrificedTroll = me->SummonCreature(NPC_SACRIFICED_TROLL, target->GetPositionX(), target->GetPositionY()+2, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); + if (SacrificedTroll) + SacrificedTroll->AI()->AttackStart(target); + SacrificedTroll = me->SummonCreature(NPC_SACRIFICED_TROLL, target->GetPositionX(), target->GetPositionY()-2, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); + if (SacrificedTroll) + SacrificedTroll->AI()->AttackStart(target); + SacrificedTroll = me->SummonCreature(NPC_SACRIFICED_TROLL, target->GetPositionX(), target->GetPositionY()+4, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); + if (SacrificedTroll) + SacrificedTroll->AI()->AttackStart(target); + SacrificedTroll = me->SummonCreature(NPC_SACRIFICED_TROLL, target->GetPositionX(), target->GetPositionY()-4, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); + if (SacrificedTroll) + SacrificedTroll->AI()->AttackStart(target); + 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: + break; } - - Teleport_Timer = urand(15000, 23000); - } else Teleport_Timer -= diff; + } DoMeleeAttackIfReady(); } @@ -285,4 +284,3 @@ void AddSC_boss_jindo() new mob_healing_ward(); new mob_shade_of_jindo(); } - -- cgit v1.2.3 From 63488f3a866786296c6cb47cb41b2a73c171cad1 Mon Sep 17 00:00:00 2001 From: Malcrom Date: Sun, 13 Jan 2013 17:23:46 -0330 Subject: Core/Scripting: Fix Zul'Grub Instance --- .../EasternKingdoms/ZulGurub/instance_zulgurub.cpp | 25 ++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'src') diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp index 393893495f8..b997d277c95 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp @@ -98,6 +98,31 @@ class instance_zulgurub : public InstanceMapScript return true; } + uint32 GetData(uint32 type) const + { + switch (type) + { + case DATA_JEKLIK: return GetBossState(DATA_JEKLIK); + case DATA_VENOXIS: return GetBossState(DATA_VENOXIS); + case DATA_MARLI: return GetBossState(DATA_MARLI); + case DATA_ARLOKK: return GetBossState(DATA_ARLOKK); + case DATA_HAKKAR: return GetBossState(DATA_HAKKAR); + case DATA_MANDOKIR: return GetBossState(DATA_MANDOKIR); + case DATA_JINDO: return GetBossState(DATA_JINDO); + case DATA_GAHZRANKA: return GetBossState(DATA_GAHZRANKA); + case DATA_EDGE_OF_MADNESS: return GetBossState(DATA_EDGE_OF_MADNESS); + case DATA_THEKAL: return GetBossState(DATA_THEKAL); + case DATA_LORKHAN: return GetBossState(DATA_LORKHAN); + case DATA_ZATH: return GetBossState(DATA_ZATH); + case DATA_OHGAN: return GetBossState(DATA_OHGAN); + break; + default: + break; + } + + return 0; + } + uint64 GetData64(uint32 uiData) const { switch (uiData) -- cgit v1.2.3 From 0a4cfd04bb31eeaeb4843cd74bcfb35cd37f4d19 Mon Sep 17 00:00:00 2001 From: Malcrom Date: Sun, 13 Jan 2013 17:42:16 -0330 Subject: Core/Scripting: Update boss Mar'li script --- .../EasternKingdoms/ZulGurub/boss_marli.cpp | 261 ++++++++++----------- 1 file changed, 130 insertions(+), 131 deletions(-) (limited to 'src') diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_marli.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_marli.cpp index a6c1e014221..4d2a892d305 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_marli.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_marli.cpp @@ -37,13 +37,36 @@ enum Says enum Spells { - SPELL_CHARGE = 22911, - SPELL_ASPECT_OF_MARLI = 24686, // A stun spell - SPELL_ENVOLWINGWEB = 24110, - SPELL_POISONVOLLEY = 24099, - SPELL_SPIDER_FORM = 24084, + SPELL_CHARGE = 22911, + SPELL_ASPECT_OF_MARLI = 24686, // A stun spell + SPELL_ENVOLWINGWEB = 24110, + SPELL_POISON_VOLLEY = 24099, + SPELL_SPIDER_FORM = 24084, // The Spider Spell - SPELL_LEVELUP = 24312 // Not right Spell. + SPELL_LEVELUP = 24312 // Not right Spell. +}; + +enum Events +{ + EVENT_SPAWN_START_SPIDERS = 0, // Phase 1 + EVENT_POISON_VOLLEY = 1, // Phase All + EVENT_SPAWN_SPIDER = 2, // Phase All + EVENT_CHARGE_PLAYER = 3, // Phase 3 + EVENT_ASPECT_OF_MARLI = 4, // Phase 2 + EVENT_TRANSFORM = 5, // Phase 2 + EVENT_TRANSFORM_BACK = 6 // Phase 3 +}; + +enum Phases +{ + PHASE_ONE = 1, + PHASE_TWO = 2, + PHASE_THREE = 3 +}; + +enum ModelId +{ + MODEL_MARLI = 15220 }; class boss_marli : public CreatureScript @@ -54,31 +77,6 @@ class boss_marli : public CreatureScript { boss_marliAI(Creature* creature) : BossAI(creature, DATA_MARLI) {} - uint32 SpawnStartSpiders_Timer; - uint32 PoisonVolley_Timer; - uint32 SpawnSpider_Timer; - uint32 Charge_Timer; - uint32 Aspect_Timer; - uint32 Transform_Timer; - uint32 TransformBack_Timer; - - bool Spawned; - bool PhaseTwo; - - void Reset() - { - SpawnStartSpiders_Timer = 1000; - PoisonVolley_Timer = 15000; - SpawnSpider_Timer = 30000; - Charge_Timer = 1500; - Aspect_Timer = 12000; - Transform_Timer = 45000; - TransformBack_Timer = 25000; - - Spawned = false; - PhaseTwo = false; - } - void JustDied(Unit* /*killer*/) { _JustDied(); @@ -88,123 +86,125 @@ class boss_marli : public CreatureScript void EnterCombat(Unit* /*who*/) { _EnterCombat(); + events.ScheduleEvent(EVENT_SPAWN_START_SPIDERS, 1000, 0, PHASE_ONE); Talk(SAY_AGGRO); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 const diff) { if (!UpdateVictim()) return; - if (me->getVictim() && me->isAlive()) - { - if (PoisonVolley_Timer <= diff) - { - DoCast(me->getVictim(), SPELL_POISONVOLLEY); - PoisonVolley_Timer = urand(10000, 20000); - } else PoisonVolley_Timer -= diff; - - if (!PhaseTwo && Aspect_Timer <= diff) - { - DoCast(me->getVictim(), SPELL_ASPECT_OF_MARLI); - Aspect_Timer = urand(13000, 18000); - } else Aspect_Timer -= diff; - - if (!Spawned && SpawnStartSpiders_Timer <= diff) - { - Talk(SAY_SPIDER_SPAWN); - - Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0); - if (!target) - return; - - Creature* Spider = NULL; + events.Update(diff); - Spider = me->SummonCreature(15041, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - if (Spider) - Spider->AI()->AttackStart(target); - Spider = me->SummonCreature(15041, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - if (Spider) - Spider->AI()->AttackStart(target); - Spider = me->SummonCreature(15041, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - if (Spider) - Spider->AI()->AttackStart(target); - Spider = me->SummonCreature(15041, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - if (Spider) - Spider->AI()->AttackStart(target); - - Spawned = true; - } else SpawnStartSpiders_Timer -= diff; - - if (SpawnSpider_Timer <= diff) - { - Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0); - if (!target) - return; - - Creature* Spider = me->SummonCreature(15041, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - if (Spider) - Spider->AI()->AttackStart(target); - SpawnSpider_Timer = urand(12000, 17000); - } else SpawnSpider_Timer -= diff; + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; - if (!PhaseTwo && Transform_Timer <= diff) + while (uint32 eventId = events.ExecuteEvent()) + { + switch (eventId) { - Talk(SAY_TRANSFORM); - DoCast(me, SPELL_SPIDER_FORM); - const CreatureTemplate* cinfo = me->GetCreatureTemplate(); - me->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, (cinfo->mindmg +((cinfo->mindmg/100) * 35))); - me->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, (cinfo->maxdmg +((cinfo->maxdmg/100) * 35))); - me->UpdateDamagePhysical(BASE_ATTACK); - DoCast(me->getVictim(), SPELL_ENVOLWINGWEB); + case EVENT_SPAWN_START_SPIDERS: - if (DoGetThreat(me->getVictim())) - DoModifyThreatPercent(me->getVictim(), -100); - - PhaseTwo = true; - Transform_Timer = urand(35000, 60000); - } else Transform_Timer -= diff; - - if (PhaseTwo) - { - if (Charge_Timer <= diff) - { - Unit* target = NULL; - int i = 0; - while (i < 3) // max 3 tries to get a random target with power_mana + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) { - ++i; - target = SelectTarget(SELECT_TARGET_RANDOM, 1, 100, true); // not aggro leader - if (target && target->getPowerType() == POWER_MANA) + Talk(SAY_SPIDER_SPAWN); + Creature* Spider = NULL; + Spider = me->SummonCreature(15041, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); + if (Spider) + Spider->AI()->AttackStart(target); + Spider = me->SummonCreature(15041, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); + if (Spider) + Spider->AI()->AttackStart(target); + Spider = me->SummonCreature(15041, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); + if (Spider) + Spider->AI()->AttackStart(target); + Spider = me->SummonCreature(15041, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); + if (Spider) + Spider->AI()->AttackStart(target); + } + events.ScheduleEvent(EVENT_ASPECT_OF_MARLI, 12000, 0, PHASE_TWO); + events.ScheduleEvent(EVENT_TRANSFORM, 45000, 0, PHASE_TWO); + events.ScheduleEvent(EVENT_POISON_VOLLEY, 15000); + events.ScheduleEvent(EVENT_SPAWN_SPIDER, 30000); + events.ScheduleEvent(EVENT_TRANSFORM, 45000, 0, PHASE_TWO); + events.SetPhase(PHASE_TWO); + break; + case EVENT_POISON_VOLLEY: + DoCastVictim(SPELL_POISON_VOLLEY, true); + events.ScheduleEvent(EVENT_POISON_VOLLEY, urand(10000, 20000)); + break; + case EVENT_ASPECT_OF_MARLI: + DoCastVictim(SPELL_ASPECT_OF_MARLI, true); + events.ScheduleEvent(EVENT_ASPECT_OF_MARLI, urand(13000, 18000), 0, PHASE_TWO); + break; + case EVENT_SPAWN_SPIDER: + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) + { + Creature* Spider = me->SummonCreature(15041, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); + if (Spider) + Spider->AI()->AttackStart(target); + } + events.ScheduleEvent(EVENT_SPAWN_SPIDER, urand(12000, 17000)); + break; + case EVENT_TRANSFORM: + { + Talk(SAY_TRANSFORM); + DoCast(me, SPELL_SPIDER_FORM); + const CreatureTemplate* cinfo = me->GetCreatureTemplate(); + me->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, (cinfo->mindmg +((cinfo->mindmg/100) * 35))); + me->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, (cinfo->maxdmg +((cinfo->maxdmg/100) * 35))); + me->UpdateDamagePhysical(BASE_ATTACK); + DoCast(me->getVictim(), SPELL_ENVOLWINGWEB); + if (DoGetThreat(me->getVictim())) + DoModifyThreatPercent(me->getVictim(), -100); + events.ScheduleEvent(EVENT_CHARGE_PLAYER, 1500, 0, PHASE_THREE); + events.ScheduleEvent(EVENT_TRANSFORM_BACK, 25000, 0, PHASE_THREE); + events.SetPhase(PHASE_THREE); + break; + } + case EVENT_CHARGE_PLAYER: + { + Unit* target = NULL; + int i = 0; + while (i < 3) // max 3 tries to get a random target with power_mana + { + ++i; + Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 100, true); // not aggro leader + if (target && target->getPowerType() == POWER_MANA) i = 3; + } + if (target) + { + DoCast(target, SPELL_CHARGE); + //me->SetPosition(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0); + //me->SendMonsterMove(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, true, 1); + AttackStart(target); + } + events.ScheduleEvent(EVENT_CHARGE_PLAYER, 8000, 0, PHASE_THREE); + break; } - if (target) + case EVENT_TRANSFORM_BACK: { - DoCast(target, SPELL_CHARGE); - //me->SetPosition(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0); - //me->SendMonsterMove(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, true, 1); - AttackStart(target); + me->SetDisplayId(MODEL_MARLI); + const CreatureTemplate* cinfo = me->GetCreatureTemplate(); + me->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, (cinfo->mindmg +((cinfo->mindmg/100) * 1))); + me->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, (cinfo->maxdmg +((cinfo->maxdmg/100) * 1))); + me->UpdateDamagePhysical(BASE_ATTACK); + events.ScheduleEvent(EVENT_ASPECT_OF_MARLI, 12000, 0, PHASE_TWO); + events.ScheduleEvent(EVENT_TRANSFORM, 45000, 0, PHASE_TWO); + events.ScheduleEvent(EVENT_POISON_VOLLEY, 15000); + events.ScheduleEvent(EVENT_SPAWN_SPIDER, 30000); + events.ScheduleEvent(EVENT_TRANSFORM, urand(35000, 60000), 0, PHASE_TWO); + events.SetPhase(PHASE_TWO); + break; } - - Charge_Timer = 8000; - } else Charge_Timer -= diff; - - if (TransformBack_Timer <= diff) - { - me->SetDisplayId(15220); - const CreatureTemplate* cinfo = me->GetCreatureTemplate(); - me->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, (cinfo->mindmg +((cinfo->mindmg/100) * 1))); - me->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, (cinfo->maxdmg +((cinfo->maxdmg/100) * 1))); - me->UpdateDamagePhysical(BASE_ATTACK); - - PhaseTwo = false; - TransformBack_Timer = urand(25000, 40000); - } else TransformBack_Timer -= diff; - + default: + break; } - - DoMeleeAttackIfReady(); } + + DoMeleeAttackIfReady(); } }; @@ -262,4 +262,3 @@ void AddSC_boss_marli() new boss_marli(); new mob_spawn_of_marli(); } - -- cgit v1.2.3 From 0759f6c9105317914d85957b83a913c9a0b963c5 Mon Sep 17 00:00:00 2001 From: Malcrom Date: Sun, 13 Jan 2013 19:48:25 -0330 Subject: Core/Scripting: More Zul'Grub updates --- .../EasternKingdoms/ZulGurub/boss_arlokk.cpp | 31 ++- .../EasternKingdoms/ZulGurub/boss_gahzranka.cpp | 5 + .../EasternKingdoms/ZulGurub/boss_grilek.cpp | 5 + .../EasternKingdoms/ZulGurub/boss_hakkar.cpp | 268 ++++++++------------- .../EasternKingdoms/ZulGurub/boss_hazzarah.cpp | 5 + .../EasternKingdoms/ZulGurub/boss_jeklik.cpp | 1 + .../EasternKingdoms/ZulGurub/boss_jindo.cpp | 5 + .../EasternKingdoms/ZulGurub/boss_mandokir.cpp | 5 - .../EasternKingdoms/ZulGurub/boss_marli.cpp | 5 + .../EasternKingdoms/ZulGurub/boss_renataki.cpp | 1 + .../EasternKingdoms/ZulGurub/boss_thekal.cpp | 1 + .../EasternKingdoms/ZulGurub/boss_venoxis.cpp | 19 +- .../EasternKingdoms/ZulGurub/boss_wushoolay.cpp | 5 + .../scripts/EasternKingdoms/ZulGurub/zulgurub.h | 22 +- 14 files changed, 166 insertions(+), 212 deletions(-) (limited to 'src') diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp index 593ee05d951..08b939f136b 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp @@ -36,17 +36,29 @@ enum Says enum Spells { - SPELL_SHADOWWORDPAIN = 23952, + SPELL_SHADOW_WORD_PAIN = 23952, SPELL_GOUGE = 24698, SPELL_MARK = 24210, SPELL_CLEAVE = 26350, //Perhaps not right. Not a red aura... - SPELL_PANTHER_TRANSFORM = 24190, + SPELL_PANTHER_TRANSFORM = 24190 +}; +enum Events +{ + EVENT_SHADOW_WORD_PAIN = 0, + EVENT_GOUGE = 1, + EVENT_MARK = 2, + EVENT_CLEAVE = 3, + EVENT_VANISH = 4, + EVENT_VISIBLE = 5, + EVENT_SUMMON = 6, +}; + +enum ModelIds +{ MODEL_ID_NORMAL = 15218, MODEL_ID_PANTHER = 15215, - MODEL_ID_BLANK = 11686, - - NPC_ZULIAN_PROWLER = 15101 + MODEL_ID_BLANK = 11686 }; class boss_arlokk : public CreatureScript @@ -75,6 +87,7 @@ class boss_arlokk : public CreatureScript void Reset() { + _Reset(); m_uiShadowWordPain_Timer = 8000; m_uiGouge_Timer = 14000; m_uiMark_Timer = 35000; @@ -112,7 +125,6 @@ class boss_arlokk : public CreatureScript { if (instance) instance->SetData(DATA_ARLOKK, NOT_STARTED); - //we should be summoned, so despawn me->DespawnOrUnsummon(); } @@ -143,7 +155,7 @@ class boss_arlokk : public CreatureScript { if (m_uiShadowWordPain_Timer <= uiDiff) { - DoCast(me->getVictim(), SPELL_SHADOWWORDPAIN); + DoCast(me->getVictim(), SPELL_SHADOW_WORD_PAIN); m_uiShadowWordPain_Timer = 15000; } else @@ -253,10 +265,7 @@ class boss_arlokk : public CreatureScript class go_gong_of_bethekk : public GameObjectScript { - public: - go_gong_of_bethekk() : GameObjectScript("go_gong_of_bethekk") - { - } + public: go_gong_of_bethekk() : GameObjectScript("go_gong_of_bethekk") {} bool OnGossipHello(Player* /*player*/, GameObject* go) { diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp index 7943e51a7cd..70399b6934c 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp @@ -49,6 +49,11 @@ class boss_gahzranka : public CreatureScript // gahzranka { boss_gahzrankaAI(Creature* creature) : BossAI(creature, DATA_GAHZRANKA) {} + void Reset() + { + _Reset(); + } + void JustDied(Unit* /*killer*/) { _JustDied(); diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp index 4b7bee5abf1..f06500694a5 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp @@ -47,6 +47,11 @@ class boss_grilek : public CreatureScript // grilek { boss_grilekAI(Creature* creature) : BossAI(creature, DATA_EDGE_OF_MADNESS) {} + void Reset() + { + _Reset(); + } + void JustDied(Unit* /*killer*/) { _JustDied(); diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp index 87a9c02e3ed..7a7296b1cce 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp @@ -1,6 +1,5 @@ /* * Copyright (C) 2008-2013 TrinityCore - * Copyright (C) 2006-2009 ScriptDev2 * * 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 @@ -16,12 +15,12 @@ * with this program. If not, see . */ -/* ScriptData -SDName: Boss_Hakkar -SD%Complete: 95 -SDComment: Blood siphon spell buggy cause of Core Issue. -SDCategory: Zul'Gurub -EndScriptData */ +/* +Name: Boss_Hakkar +%Complete: 95 +Comment: Blood siphon spell buggy cause of Core Issue. +Category: Zul'Gurub +*/ #include "ScriptMgr.h" #include "ScriptedCreature.h" @@ -31,18 +30,18 @@ enum Says { SAY_AGGRO = 0, SAY_FLEEING = 1, - SAY_MINION_DESTROY = 2, //where does it belong? - SAY_PROTECT_ALTAR = 3 //where does it belong? + SAY_MINION_DESTROY = 2, // Where does it belong? + SAY_PROTECT_ALTAR = 3 // Where does it belong? }; enum Spells { - SPELL_BLOODSIPHON = 24322, - SPELL_CORRUPTEDBLOOD = 24328, - SPELL_CAUSEINSANITY = 24327, //Not working disabled. - SPELL_WILLOFHAKKAR = 24178, + SPELL_BLOOD_SIPHON = 24322, // Buggy ? + SPELL_CORRUPTED_BLOOD = 24328, + SPELL_CAUSE_INSANITY = 24327, // Spell needs scripting. + SPELL_WILL_OF_HAKKAR = 24178, SPELL_ENRAGE = 24318, -// The Aspects of all High Priests + // The Aspects of all High Priests spells SPELL_ASPECT_OF_JEKLIK = 24687, SPELL_ASPECT_OF_VENOXIS = 24688, SPELL_ASPECT_OF_MARLI = 24686, @@ -50,7 +49,22 @@ enum Spells SPELL_ASPECT_OF_ARLOKK = 24690 }; -class boss_hakkar : public CreatureScript // hakkar +enum Events +{ + EVENT_BLOOD_SIPHON = 0, + EVENT_CORRUPTED_BLOOD = 1, + EVENT_CAUSE_INSANITY = 2, // Spell needs scripting. Event disabled + EVENT_WILL_OF_HAKKAR = 3, + EVENT_ENRAGE = 4, + // The Aspects of all High Priests events + EVENT_ASPECT_OF_JEKLIK = 5, + EVENT_ASPECT_OF_VENOXIS = 6, + EVENT_ASPECT_OF_MARLI = 7, + EVENT_ASPECT_OF_THEKAL = 8, + EVENT_ASPECT_OF_ARLOKK = 9 +}; + +class boss_hakkar : public CreatureScript { public: boss_hakkar() : CreatureScript("boss_hakkar") {} @@ -58,47 +72,11 @@ class boss_hakkar : public CreatureScript // hakkar { boss_hakkarAI(Creature* creature) : BossAI(creature, DATA_HAKKAR) {} - uint32 BloodSiphon_Timer; - uint32 CorruptedBlood_Timer; - uint32 CauseInsanity_Timer; - uint32 WillOfHakkar_Timer; - uint32 Enrage_Timer; - - uint32 CheckJeklik_Timer; - uint32 CheckVenoxis_Timer; - uint32 CheckMarli_Timer; - uint32 CheckThekal_Timer; - uint32 CheckArlokk_Timer; - - uint32 AspectOfJeklik_Timer; - uint32 AspectOfVenoxis_Timer; - uint32 AspectOfMarli_Timer; - uint32 AspectOfThekal_Timer; - uint32 AspectOfArlokk_Timer; - bool Enraged; void Reset() { - BloodSiphon_Timer = 90000; - CorruptedBlood_Timer = 25000; - CauseInsanity_Timer = 17000; - WillOfHakkar_Timer = 17000; - Enrage_Timer = 600000; - - CheckJeklik_Timer = 1000; - CheckVenoxis_Timer = 2000; - CheckMarli_Timer = 3000; - CheckThekal_Timer = 4000; - CheckArlokk_Timer = 5000; - - AspectOfJeklik_Timer = 4000; - AspectOfVenoxis_Timer = 7000; - AspectOfMarli_Timer = 12000; - AspectOfThekal_Timer = 8000; - AspectOfArlokk_Timer = 18000; - - Enraged = false; + _Reset(); } void JustDied(Unit* /*killer*/) @@ -109,139 +87,83 @@ class boss_hakkar : public CreatureScript // hakkar void EnterCombat(Unit* /*who*/) { _EnterCombat(); + events.ScheduleEvent(EVENT_BLOOD_SIPHON, 90000); + events.ScheduleEvent(EVENT_CORRUPTED_BLOOD, 25000); + events.ScheduleEvent(EVENT_CAUSE_INSANITY, 17000); + events.ScheduleEvent(EVENT_WILL_OF_HAKKAR, 17000); + events.ScheduleEvent(EVENT_ENRAGE, 600000); + if (instance->GetData(DATA_JEKLIK) != DONE) + events.ScheduleEvent(EVENT_ASPECT_OF_JEKLIK, 4000); + if (instance->GetData(DATA_VENOXIS) != DONE) + events.ScheduleEvent(EVENT_ASPECT_OF_VENOXIS, 7000); + if (instance->GetData(DATA_MARLI) != DONE) + events.ScheduleEvent(EVENT_ASPECT_OF_MARLI, 12000); + if (instance->GetData(DATA_THEKAL) != DONE) + events.ScheduleEvent(EVENT_ASPECT_OF_THEKAL, 8000); + if (instance->GetData(DATA_ARLOKK) != DONE) + events.ScheduleEvent(EVENT_ASPECT_OF_ARLOKK, 18000); Talk(SAY_AGGRO); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 const diff) { if (!UpdateVictim()) return; - //BloodSiphon_Timer - if (BloodSiphon_Timer <= diff) - { - DoCast(me->getVictim(), SPELL_BLOODSIPHON); - BloodSiphon_Timer = 90000; - } else BloodSiphon_Timer -= diff; - - //CorruptedBlood_Timer - if (CorruptedBlood_Timer <= diff) - { - DoCast(me->getVictim(), SPELL_CORRUPTEDBLOOD); - CorruptedBlood_Timer = urand(30000, 45000); - } else CorruptedBlood_Timer -= diff; - - //CauseInsanity_Timer - /*if (CauseInsanity_Timer <= diff) - { - if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0)) - DoCast(target, SPELL_CAUSEINSANITY); + events.Update(diff); - CauseInsanity_Timer = urand(35000, 43000); - } else CauseInsanity_Timer -= diff;*/ - - //WillOfHakkar_Timer - if (WillOfHakkar_Timer <= diff) - { - if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) - DoCast(target, SPELL_WILLOFHAKKAR); - - WillOfHakkar_Timer = urand(25000, 35000); - } else WillOfHakkar_Timer -= diff; - - if (!Enraged && Enrage_Timer <= diff) - { - DoCast(me, SPELL_ENRAGE); - Enraged = true; - } else Enrage_Timer -= diff; - - //Checking if Jeklik is dead. If not we cast her Aspect - if (CheckJeklik_Timer <= diff) - { - if (instance) - { - if (instance->GetData(DATA_JEKLIK) != DONE) - { - if (AspectOfJeklik_Timer <= diff) - { - DoCast(me->getVictim(), SPELL_ASPECT_OF_JEKLIK); - AspectOfJeklik_Timer = urand(10000, 14000); - } else AspectOfJeklik_Timer -= diff; - } - } - CheckJeklik_Timer = 1000; - } else CheckJeklik_Timer -= diff; - - //Checking if Venoxis is dead. If not we cast his Aspect - if (CheckVenoxis_Timer <= diff) - { - if (instance) - { - if (instance->GetData(DATA_VENOXIS) != DONE) - { - if (AspectOfVenoxis_Timer <= diff) - { - DoCast(me->getVictim(), SPELL_ASPECT_OF_VENOXIS); - AspectOfVenoxis_Timer = 8000; - } else AspectOfVenoxis_Timer -= diff; - } - } - CheckVenoxis_Timer = 1000; - } else CheckVenoxis_Timer -= diff; - - //Checking if Marli is dead. If not we cast her Aspect - if (CheckMarli_Timer <= diff) - { - if (instance) - { - if (instance->GetData(DATA_MARLI) != DONE) - { - if (AspectOfMarli_Timer <= diff) - { - DoCast(me->getVictim(), SPELL_ASPECT_OF_MARLI); - AspectOfMarli_Timer = 10000; - } else AspectOfMarli_Timer -= diff; - - } - } - CheckMarli_Timer = 1000; - } else CheckMarli_Timer -= diff; - - //Checking if Thekal is dead. If not we cast his Aspect - if (CheckThekal_Timer <= diff) - { - if (instance) - { - if (instance->GetData(DATA_THEKAL) != DONE) - { - if (AspectOfThekal_Timer <= diff) - { - DoCast(me, SPELL_ASPECT_OF_THEKAL); - AspectOfThekal_Timer = 15000; - } else AspectOfThekal_Timer -= diff; - } - } - CheckThekal_Timer = 1000; - } else CheckThekal_Timer -= diff; + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; - //Checking if Arlokk is dead. If yes we cast her Aspect - if (CheckArlokk_Timer <= diff) + while (uint32 eventId = events.ExecuteEvent()) { - if (instance) + switch (eventId) { - if (instance->GetData(DATA_ARLOKK) != DONE) - { - if (AspectOfArlokk_Timer <= diff) - { - DoCast(me, SPELL_ASPECT_OF_ARLOKK); - DoResetThreat(); - - AspectOfArlokk_Timer = urand(10000, 15000); - } else AspectOfArlokk_Timer -= diff; - } + case EVENT_BLOOD_SIPHON: + DoCastVictim(SPELL_BLOOD_SIPHON, true); + events.ScheduleEvent(EVENT_BLOOD_SIPHON, 90000); + break; + case EVENT_CORRUPTED_BLOOD: + DoCastVictim(SPELL_CORRUPTED_BLOOD, true); + events.ScheduleEvent(EVENT_CORRUPTED_BLOOD, urand(30000, 45000)); + break; + case EVENT_CAUSE_INSANITY: + // DoCast(SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true), SPELL_CAUSE_INSANITY); + // events.ScheduleEvent(EVENT_CAUSE_INSANITY, urand(35000, 45000)); + break; + case EVENT_WILL_OF_HAKKAR: + DoCast(SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true), SPELL_WILL_OF_HAKKAR); + events.ScheduleEvent(EVENT_WILL_OF_HAKKAR, urand(25000, 35000)); + break; + case EVENT_ENRAGE: + if (!me->HasAura(SPELL_ENRAGE)) + DoCast(me, SPELL_ENRAGE); + events.ScheduleEvent(EVENT_ENRAGE, 90000); + break; + case EVENT_ASPECT_OF_JEKLIK: + DoCastVictim(SPELL_ASPECT_OF_JEKLIK, true); + events.ScheduleEvent(EVENT_ASPECT_OF_JEKLIK, urand(10000, 14000)); + break; + case EVENT_ASPECT_OF_VENOXIS: + DoCastVictim(SPELL_ASPECT_OF_VENOXIS, true); + events.ScheduleEvent(EVENT_ASPECT_OF_VENOXIS, 8000); + break; + case EVENT_ASPECT_OF_MARLI: + DoCastVictim(SPELL_ASPECT_OF_MARLI, true); + events.ScheduleEvent(EVENT_ASPECT_OF_MARLI, 10000); + break; + case EVENT_ASPECT_OF_THEKAL: + DoCastVictim(SPELL_ASPECT_OF_THEKAL, true); + events.ScheduleEvent(EVENT_ASPECT_OF_THEKAL, 15000); + break; + case EVENT_ASPECT_OF_ARLOKK: + DoCastVictim(SPELL_ASPECT_OF_ARLOKK, true); + events.ScheduleEvent(EVENT_ASPECT_OF_ARLOKK, urand(10000, 15000); + break; + default: + break; } - CheckArlokk_Timer = 1000; - } else CheckArlokk_Timer -= diff; + } DoMeleeAttackIfReady(); } diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp index cd55d648196..15228815d69 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp @@ -48,6 +48,11 @@ class boss_hazzarah : public CreatureScript { boss_hazzarahAI(Creature* creature) : BossAI(creature, DATA_EDGE_OF_MADNESS) {} + void Reset() + { + _Reset(); + } + void JustDied(Unit* /*killer*/) { _JustDied(); diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_jeklik.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_jeklik.cpp index 4d27fd99769..7f19962e719 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_jeklik.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_jeklik.cpp @@ -70,6 +70,7 @@ class boss_jeklik : public CreatureScript //jeklik void Reset() { + _Reset(); Charge_Timer = 20000; SonicBurst_Timer = 8000; Screech_Timer = 13000; diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp index dd1edcb3529..5f7498880ca 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp @@ -71,6 +71,11 @@ class boss_jindo : public CreatureScript { boss_jindoAI(Creature* creature) : BossAI(creature, DATA_JINDO) {} + void Reset() + { + _Reset(); + } + void JustDied(Unit* /*killer*/) { _JustDied(); diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp index 6b527ba45f3..258dda26c11 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp @@ -51,11 +51,6 @@ enum Spells SPELL_SUNDERARMOR = 24317 }; -enum CreatureId -{ - NPC_SPEAKER = 11391 -}; - class boss_mandokir : public CreatureScript { public: boss_mandokir() : CreatureScript("boss_mandokir") {} diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_marli.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_marli.cpp index 4d2a892d305..40850a988e4 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_marli.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_marli.cpp @@ -77,6 +77,11 @@ class boss_marli : public CreatureScript { boss_marliAI(Creature* creature) : BossAI(creature, DATA_MARLI) {} + void Reset() + { + _Reset(); + } + void JustDied(Unit* /*killer*/) { _JustDied(); diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_renataki.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_renataki.cpp index 65730d1baf2..6bf87decf7e 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_renataki.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_renataki.cpp @@ -57,6 +57,7 @@ class boss_renataki : public CreatureScript void Reset() { + _Reset(); Invisible_Timer = urand(8000, 18000); Ambush_Timer = 3000; Visible_Timer = 4000; diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp index 6710ca67863..ab45162fc35 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp @@ -89,6 +89,7 @@ class boss_thekal : public CreatureScript void Reset() { + _Reset(); Enraged = false; WasDead = false; } diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_venoxis.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_venoxis.cpp index f5c10631a9b..11a6e710c3c 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_venoxis.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_venoxis.cpp @@ -54,11 +54,6 @@ enum Spells SPELL_FRENZY = 8269 // 20% health - frenzy }; -enum NPCs -{ - NPC_PARASITIC_SERPENT = 14884 -}; - enum Events { // troll form @@ -83,6 +78,11 @@ enum Phases PHASE_TWO = 2 // snake form }; +enum NPCs +{ + NPC_PARASITIC_SERPENT = 14884 +}; + class boss_venoxis : public CreatureScript { public: boss_venoxis() : CreatureScript("boss_venoxis") {} @@ -93,21 +93,14 @@ class boss_venoxis : public CreatureScript void Reset() { - events.Reset(); - summons.DespawnAll(); - - // make sure this boss is properly reset - instance->SetBossState(DATA_VENOXIS, NOT_STARTED); - + _Reset(); // remove all spells and auras from previous attempts me->RemoveAllAuras(); me->SetReactState(REACT_PASSIVE); - // set some internally used variables to their defaults _inMeleeRange = 0; _transformed = false; _frenzied = false; - events.SetPhase(PHASE_ONE); } diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_wushoolay.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_wushoolay.cpp index 196df2b98b9..d1e7edf0218 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_wushoolay.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_wushoolay.cpp @@ -47,6 +47,11 @@ class boss_wushoolay : public CreatureScript { boss_wushoolayAI(Creature* creature) : BossAI(creature, DATA_EDGE_OF_MADNESS) {} + void Reset() + { + _Reset(); + } + void JustDied(Unit* /*killer*/) { _JustDied(); diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h b/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h index 55bf0e50e3c..ec4981f08be 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h +++ b/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h @@ -26,15 +26,15 @@ enum DataTypes DATA_VENOXIS = 1, // Main boss DATA_MARLI = 2, // Main boss DATA_ARLOKK = 3, // Main boss - DATA_HAKKAR = 4, // Main boss - DATA_MANDOKIR = 5, // Optional boss - DATA_JINDO = 6, // Optional boss - DATA_GAHZRANKA = 7, // Optional boss - DATA_EDGE_OF_MADNESS = 8, // Optional Event Edge of Madness - one of: Gri'lek, Renataki, Hazza'rah, or Wushoolay - DATA_THEKAL = 9, // ?? - DATA_LORKHAN = 10, // ?? - DATA_ZATH = 11, // ?? - DATA_OHGAN = 12 // ?? + DATA_THEKAL = 4, // Main boss + DATA_HAKKAR = 5, // End boss + DATA_MANDOKIR = 6, // Optional boss + DATA_JINDO = 7, // Optional boss + DATA_GAHZRANKA = 8, // Optional boss + DATA_EDGE_OF_MADNESS = 9, // Optional Event Edge of Madness - one of: Gri'lek, Renataki, Hazza'rah, or Wushoolay + DATA_LORKHAN = 10, // Zealot Lor'Khan add to High priest Thekal! + DATA_ZATH = 11, // Zealot Zath add to High priest Thekal! + DATA_OHGAN = 12 // Bloodlord Mandokir's raptor mount }; enum CreatureIds @@ -43,7 +43,9 @@ enum CreatureIds NPC_ZEALOT_ZATH = 11348, NPC_HIGH_PRIEST_THEKAL = 14509, NPC_JINDO_THE_HEXXER = 11380, - NPC_NIGHTMARE_ILLUSION = 15163 + NPC_NIGHTMARE_ILLUSION = 15163, + NPC_ZULIAN_PROWLER = 15101, + NPC_SPEAKER = 11391 }; #endif -- cgit v1.2.3 From 114617fcb0f8b983cfa9f0137fe065496379a56c Mon Sep 17 00:00:00 2001 From: Malcrom Date: Sun, 13 Jan 2013 19:59:09 -0330 Subject: Core/Scripting: Fix build --- src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp | 2 +- src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp index 7a7296b1cce..0fba1c51ad7 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp @@ -158,7 +158,7 @@ class boss_hakkar : public CreatureScript break; case EVENT_ASPECT_OF_ARLOKK: DoCastVictim(SPELL_ASPECT_OF_ARLOKK, true); - events.ScheduleEvent(EVENT_ASPECT_OF_ARLOKK, urand(10000, 15000); + events.ScheduleEvent(EVENT_ASPECT_OF_ARLOKK, urand(10000, 15000)); break; default: break; diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h b/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h index ec4981f08be..5948a191c19 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h +++ b/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h @@ -34,7 +34,7 @@ enum DataTypes DATA_EDGE_OF_MADNESS = 9, // Optional Event Edge of Madness - one of: Gri'lek, Renataki, Hazza'rah, or Wushoolay DATA_LORKHAN = 10, // Zealot Lor'Khan add to High priest Thekal! DATA_ZATH = 11, // Zealot Zath add to High priest Thekal! - DATA_OHGAN = 12 // Bloodlord Mandokir's raptor mount + DATA_OHGAN = 12 // Bloodlord Mandokir's raptor mount }; enum CreatureIds -- cgit v1.2.3 From 83c753f607ba98159ceb2391b4c2fb4aee374516 Mon Sep 17 00:00:00 2001 From: Malcrom Date: Sun, 13 Jan 2013 20:58:48 -0330 Subject: Core/Scripting: more Zul'Grub updates --- .../EasternKingdoms/ZulGurub/boss_arlokk.cpp | 224 ++++++++------------- .../EasternKingdoms/ZulGurub/boss_hakkar.cpp | 2 - .../EasternKingdoms/ZulGurub/boss_jindo.cpp | 6 - .../scripts/EasternKingdoms/ZulGurub/zulgurub.h | 4 +- 4 files changed, 86 insertions(+), 150 deletions(-) (limited to 'src') diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp index 08b939f136b..1334d587464 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp @@ -39,7 +39,7 @@ enum Spells SPELL_SHADOW_WORD_PAIN = 23952, SPELL_GOUGE = 24698, SPELL_MARK = 24210, - SPELL_CLEAVE = 26350, //Perhaps not right. Not a red aura... + SPELL_CLEAVE = 26350, // Perhaps not right. Not a red aura... SPELL_PANTHER_TRANSFORM = 24190 }; @@ -51,7 +51,13 @@ enum Events EVENT_CLEAVE = 3, EVENT_VANISH = 4, EVENT_VISIBLE = 5, - EVENT_SUMMON = 6, + EVENT_SUMMON = 6 +}; + +enum Phases +{ + PHASE_ONE = 1, + PHASE_TWO = 2 }; enum ModelIds @@ -61,6 +67,12 @@ enum ModelIds MODEL_ID_BLANK = 11686 }; +Position const PosSummonProwlers[2] = +{ + { -11532.7998f, -1649.6734f, 41.4800f, 0.0f }, + { -11532.9970f, -1606.4840f, 41.2979f, 0.0f } +}; + class boss_arlokk : public CreatureScript { public: boss_arlokk() : CreatureScript("boss_arlokk") {} @@ -69,40 +81,14 @@ class boss_arlokk : public CreatureScript { boss_arlokkAI(Creature* creature) : BossAI(creature, DATA_ARLOKK) {} - uint32 m_uiShadowWordPain_Timer; - uint32 m_uiGouge_Timer; - uint32 m_uiMark_Timer; - uint32 m_uiCleave_Timer; - uint32 m_uiVanish_Timer; - uint32 m_uiVisible_Timer; - - uint32 m_uiSummon_Timer; - uint32 m_uiSummonCount; - - Unit* m_pMarkedTarget; - uint64 MarkedTargetGUID; - - bool m_bIsPhaseTwo; - bool m_bIsVanished; + uint32 summonCount; + // Unit* markedTarget; + uint64 markedTargetGUID; void Reset() { - _Reset(); - m_uiShadowWordPain_Timer = 8000; - m_uiGouge_Timer = 14000; - m_uiMark_Timer = 35000; - m_uiCleave_Timer = 4000; - m_uiVanish_Timer = 60000; - m_uiVisible_Timer = 6000; - - m_uiSummon_Timer = 5000; - m_uiSummonCount = 0; - - m_bIsPhaseTwo = false; - m_bIsVanished = false; - - MarkedTargetGUID = 0; - + summonCount = 0; + markedTargetGUID = 0; me->SetDisplayId(MODEL_ID_NORMAL); me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); } @@ -118,6 +104,10 @@ class boss_arlokk : public CreatureScript void EnterCombat(Unit* /*who*/) { _EnterCombat(); + events.ScheduleEvent(EVENT_SHADOW_WORD_PAIN, 8000, 0, PHASE_ONE); + events.ScheduleEvent(EVENT_MARK, 35000, 0, PHASE_ONE); + events.ScheduleEvent(EVENT_SUMMON, 5000); + events.ScheduleEvent(EVENT_VANISH, 60000); Talk(SAY_AGGRO); } @@ -125,135 +115,88 @@ class boss_arlokk : public CreatureScript { if (instance) instance->SetData(DATA_ARLOKK, NOT_STARTED); - //we should be summoned, so despawn me->DespawnOrUnsummon(); } void DoSummonPhanters() { - if (MarkedTargetGUID) - Talk(SAY_FEAST_PANTHER, MarkedTargetGUID); - - me->SummonCreature(NPC_ZULIAN_PROWLER, -11532.7998f, -1649.6734f, 41.4800f, 0.0f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - me->SummonCreature(NPC_ZULIAN_PROWLER, -11532.9970f, -1606.4840f, 41.2979f, 0.0f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); + if (markedTargetGUID) + Talk(SAY_FEAST_PANTHER, markedTargetGUID); + me->SummonCreature(NPC_ZULIAN_PROWLER, PosSummonProwlers[0], TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); + me->SummonCreature(NPC_ZULIAN_PROWLER, PosSummonProwlers[1], TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); } void JustSummoned(Creature* summoned) { - if (Unit* pMarkedTarget = Unit::GetUnit(*me, MarkedTargetGUID)) - summoned->AI()->AttackStart(pMarkedTarget); - - ++m_uiSummonCount; + if (Unit* markedTarget = Unit::GetUnit(*me, markedTargetGUID)) + summoned->AI()->AttackStart(markedTarget); + ++summonCount; } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 const diff) { if (!UpdateVictim()) return; - if (!m_bIsPhaseTwo) - { - if (m_uiShadowWordPain_Timer <= uiDiff) - { - DoCast(me->getVictim(), SPELL_SHADOW_WORD_PAIN); - m_uiShadowWordPain_Timer = 15000; - } - else - m_uiShadowWordPain_Timer -= uiDiff; - - if (m_uiMark_Timer <= uiDiff) - { - Unit* pMarkedTarget = SelectTarget(SELECT_TARGET_RANDOM, 0); - - if (pMarkedTarget) - { - DoCast(pMarkedTarget, SPELL_MARK); - MarkedTargetGUID = pMarkedTarget->GetGUID(); - } - else - sLog->outError(LOG_FILTER_TSCR, "boss_arlokk could not accuire pMarkedTarget."); + events.Update(diff); - m_uiMark_Timer = 15000; - } - else - m_uiMark_Timer -= uiDiff; - } - else - { - //Cleave_Timer - if (m_uiCleave_Timer <= uiDiff) - { - DoCast(me->getVictim(), SPELL_CLEAVE); - m_uiCleave_Timer = 16000; - } - else - m_uiCleave_Timer -= uiDiff; - - //Gouge_Timer - if (m_uiGouge_Timer <= uiDiff) - { - DoCast(me->getVictim(), SPELL_GOUGE); - - DoModifyThreatPercent(me->getVictim(), -80); - - m_uiGouge_Timer = 17000+rand()%10000; - } - else - m_uiGouge_Timer -= uiDiff; - } + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; - if (m_uiSummonCount <= 30) + while (uint32 eventId = events.ExecuteEvent()) { - if (m_uiSummon_Timer <= uiDiff) + switch (eventId) { - DoSummonPhanters(); - m_uiSummon_Timer = 5000; + case EVENT_SHADOW_WORD_PAIN: + DoCastVictim(SPELL_SHADOW_WORD_PAIN, true); + events.ScheduleEvent(EVENT_SHADOW_WORD_PAIN, 15000, 0, PHASE_ONE); + break; + case EVENT_MARK: + DoCast(SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true), SPELL_MARK); + events.ScheduleEvent(EVENT_MARK, 15000, 0, PHASE_ONE); + break; + case EVENT_CLEAVE: + DoCastVictim(SPELL_SHADOW_WORD_PAIN, true); + events.ScheduleEvent(EVENT_CLEAVE, 16000, 0, PHASE_TWO); + break; + case EVENT_GOUGE: + DoCastVictim(SPELL_SHADOW_WORD_PAIN, true); + events.ScheduleEvent(EVENT_GOUGE, urand(17000, 27000), 0, PHASE_TWO); + break; + case EVENT_SUMMON: + if (summonCount <= 30) + DoSummonPhanters(); + events.ScheduleEvent(EVENT_SUMMON, 5000); + break; + case EVENT_VANISH: + me->SetDisplayId(MODEL_ID_BLANK); + me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + me->AttackStop(); + DoResetThreat(); + events.ScheduleEvent(EVENT_VISIBLE, 6000); + break; + case EVENT_VISIBLE: + { + me->SetDisplayId(MODEL_ID_PANTHER); + me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + const CreatureTemplate* cinfo = me->GetCreatureTemplate(); + me->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, (cinfo->mindmg +((cinfo->mindmg/100) * 35))); + me->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, (cinfo->maxdmg +((cinfo->maxdmg/100) * 35))); + me->UpdateDamagePhysical(BASE_ATTACK); + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) + AttackStart(target); + events.ScheduleEvent(EVENT_VANISH, 39000); + events.ScheduleEvent(EVENT_CLEAVE, 0, PHASE_TWO); + events.ScheduleEvent(EVENT_GOUGE, 14000, 0, PHASE_TWO); + events.SetPhase(PHASE_TWO); + break; + } + default: + break; } - else - m_uiSummon_Timer -= uiDiff; } - if (m_uiVanish_Timer <= uiDiff) - { - //Invisble Model - me->SetDisplayId(MODEL_ID_BLANK); - me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - - me->AttackStop(); - DoResetThreat(); - - m_bIsVanished = true; - - m_uiVanish_Timer = 45000; - m_uiVisible_Timer = 6000; - } - else - m_uiVanish_Timer -= uiDiff; - - if (m_bIsVanished) - { - if (m_uiVisible_Timer <= uiDiff) - { - //The Panther Model - me->SetDisplayId(MODEL_ID_PANTHER); - me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - - const CreatureTemplate* cinfo = me->GetCreatureTemplate(); - me->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, (cinfo->mindmg +((cinfo->mindmg/100) * 35))); - me->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, (cinfo->maxdmg +((cinfo->maxdmg/100) * 35))); - me->UpdateDamagePhysical(BASE_ATTACK); - - if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) - AttackStart(target); - - m_bIsPhaseTwo = true; - m_bIsVanished = false; - } - else - m_uiVisible_Timer -= uiDiff; - } - else - DoMeleeAttackIfReady(); + DoMeleeAttackIfReady(); } }; @@ -273,7 +216,6 @@ class go_gong_of_bethekk : public GameObjectScript { if (instance->GetData(DATA_ARLOKK) == DONE || instance->GetData(DATA_ARLOKK) == IN_PROGRESS) return true; - instance->SetData(DATA_ARLOKK, IN_PROGRESS); return true; } diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp index 0fba1c51ad7..8003f4a1ed7 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp @@ -72,8 +72,6 @@ class boss_hakkar : public CreatureScript { boss_hakkarAI(Creature* creature) : BossAI(creature, DATA_HAKKAR) {} - bool Enraged; - void Reset() { _Reset(); diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp index 5f7498880ca..005609e88db 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp @@ -55,12 +55,6 @@ enum Events EVENT_TELEPORT = 4 }; -enum CreatureId -{ - NPC_SHADE_OF_JINDO = 14986, - NPC_SACRIFICED_TROLL = 14826 -}; - Position const TeleportLoc = {-11583.7783f, -1249.4278f, 77.5471f, 4.745f}; class boss_jindo : public CreatureScript diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h b/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h index 5948a191c19..2544e4f4d5f 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h +++ b/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h @@ -45,7 +45,9 @@ enum CreatureIds NPC_JINDO_THE_HEXXER = 11380, NPC_NIGHTMARE_ILLUSION = 15163, NPC_ZULIAN_PROWLER = 15101, - NPC_SPEAKER = 11391 + NPC_SPEAKER = 11391, + NPC_SHADE_OF_JINDO = 14986, + NPC_SACRIFICED_TROLL = 14826 }; #endif -- cgit v1.2.3 From a05e78bb18226a16f049e6b01e35597d8a2d30d9 Mon Sep 17 00:00:00 2001 From: kaelima Date: Mon, 14 Jan 2013 02:40:24 +0100 Subject: Script/Ruby Sanctum: Some cleanup and minor fixes Solves #8573 Closes #8490 --- .../RubySanctum/boss_general_zarithrian.cpp | 17 ++++++++++------ .../ChamberOfAspects/RubySanctum/boss_halion.cpp | 23 +++++++++++++--------- .../RubySanctum/instance_ruby_sanctum.cpp | 22 ++++++++++++++++----- 3 files changed, 42 insertions(+), 20 deletions(-) (limited to 'src') 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 ab53351cd6b..94325ca015b 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_general_zarithrian.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_general_zarithrian.cpp @@ -135,13 +135,18 @@ class boss_general_zarithrian : public CreatureScript Talk(SAY_KILL); } + bool CanAIAttack(Unit const* /*target*/) const + { + return (instance->GetBossState(DATA_SAVIANA_RAGEFIRE) == DONE && instance->GetBossState(DATA_BALTHARUS_THE_WARBORN) == DONE); + } + void UpdateAI(uint32 const diff) { if (!UpdateVictim()) return; // Can't use room boundary here, the gameobject is spawned at the same position as the boss. This is just as good anyway. - if (me->GetPositionX() > 3060.0f) + if (me->GetPositionX() > 3058.0f) { EnterEvadeMode(); return; @@ -159,9 +164,11 @@ class boss_general_zarithrian : public CreatureScript case EVENT_SUMMON_ADDS: { if (Creature* stalker1 = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_ZARITHRIAN_SPAWN_STALKER_1))) - stalker1->AI()->DoCast(stalker1, SPELL_SUMMON_FLAMECALLER); + stalker1->CastSpell(stalker1, SPELL_SUMMON_FLAMECALLER, false); + if (Creature* stalker2 = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_ZARITHRIAN_SPAWN_STALKER_2))) - stalker2->AI()->DoCast(stalker2, SPELL_SUMMON_FLAMECALLER); + stalker2->CastSpell(stalker2, SPELL_SUMMON_FLAMECALLER, false); + Talk(SAY_ADDS); events.ScheduleEvent(EVENT_SUMMON_ADDS, 42000); break; @@ -195,9 +202,8 @@ class npc_onyx_flamecaller : public CreatureScript struct npc_onyx_flamecallerAI : public npc_escortAI { - npc_onyx_flamecallerAI(Creature* creature) : npc_escortAI(creature) + npc_onyx_flamecallerAI(Creature* creature) : npc_escortAI(creature), _instance(creature->GetInstanceScript()) { - _instance = creature->GetInstanceScript(); npc_escortAI::SetDespawnAtEnd(false); } @@ -289,7 +295,6 @@ class npc_onyx_flamecaller : public CreatureScript } private: EventMap _events; - bool _movementComplete; InstanceScript* _instance; uint8 _lavaGoutCount; }; diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp index 781dd86cb86..d849e21f01f 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp @@ -226,9 +226,9 @@ struct generic_halionAI : public BossAI { generic_halionAI(Creature* creature, uint32 bossId) : BossAI(creature, bossId), _canEvade(false) { } - void EnterCombat(Unit* who) + void EnterCombat(Unit* /*who*/) { - BossAI::EnterCombat(who); + _EnterCombat(); me->AddAura(SPELL_TWILIGHT_PRECISION, me); _canEvade = false; events.ScheduleEvent(EVENT_CLEAVE, urand(8000, 10000)); @@ -239,12 +239,12 @@ struct generic_halionAI : public BossAI void Reset() { _canEvade = false; - BossAI::Reset(); + _Reset(); } void EnterEvadeMode() { - BossAI::EnterEvadeMode(); + _EnterEvadeMode(); instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me); } @@ -349,15 +349,20 @@ class boss_halion : public CreatureScript controller->AI()->SetData(DATA_FIGHT_PHASE, PHASE_ONE); } - void JustDied(Unit* killer) + void JustDied(Unit* /*killer*/) { - BossAI::JustDied(killer); + _JustDied(); Talk(SAY_DEATH); instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me); + if (Creature* twilightHalion = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_TWILIGHT_HALION))) + if (twilightHalion->isAlive()) + twilightHalion->Kill(twilightHalion); + if (Creature* controller = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_HALION_CONTROLLER))) - me->Kill(controller); + if (controller->isAlive()) + controller->Kill(controller); } Position const* GetMeteorStrikePosition() const { return &_meteorStrikePos; } @@ -515,7 +520,8 @@ class boss_twilight_halion : public CreatureScript } if (Creature* controller = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_HALION_CONTROLLER))) - controller->Kill(controller); + if (controller->isAlive()) + controller->Kill(controller); instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me); } @@ -592,7 +598,6 @@ class npc_halion_controller : public CreatureScript _instance(creature->GetInstanceScript()), _summons(me) { me->SetPhaseMask(me->GetPhaseMask() | 0x20, true); - _events.SetPhase(PHASE_INTRO); } void Reset() diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp index c373c2340ff..abfa2df5c97 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp @@ -60,8 +60,11 @@ class instance_ruby_sanctum : public InstanceMapScript void OnPlayerEnter(Player* /*player*/) { if (!GetData64(DATA_HALION_CONTROLLER) && GetBossState(DATA_HALION) != DONE && GetBossState(DATA_GENERAL_ZARITHRIAN) == DONE) + { + instance->LoadGrid(HalionControllerSpawnPos.GetPositionX(), HalionControllerSpawnPos.GetPositionY()); if (Creature* halionController = instance->SummonCreature(NPC_HALION_CONTROLLER, HalionControllerSpawnPos)) halionController->AI()->DoAction(ACTION_INTRO_HALION); + } } void OnCreatureCreate(Creature* creature) @@ -164,6 +167,20 @@ class instance_ruby_sanctum : public InstanceMapScript } } + void OnUnitDeath(Unit* unit) + { + Creature* creature = unit->ToCreature(); + if (!creature) + return; + + if (creature->GetEntry() == NPC_GENERAL_ZARITHRIAN && GetBossState(DATA_HALION) != DONE) + { + instance->LoadGrid(HalionControllerSpawnPos.GetPositionX(), HalionControllerSpawnPos.GetPositionY()); + if (Creature* halionController = instance->SummonCreature(NPC_HALION_CONTROLLER, HalionControllerSpawnPos)) + halionController->AI()->DoAction(ACTION_INTRO_HALION); + } + } + uint64 GetData64(uint32 type) const { switch (type) @@ -238,11 +255,6 @@ class instance_ruby_sanctum : public InstanceMapScript { if (GetBossState(DATA_SAVIANA_RAGEFIRE) == DONE && GetBossState(DATA_BALTHARUS_THE_WARBORN) == DONE) HandleGameObject(FlameWallsGUID, state != IN_PROGRESS); - - // Not called at instance loading, no big deal. - if (state == DONE && GetBossState(DATA_HALION) != DONE) - if (Creature* halionController = instance->SummonCreature(NPC_HALION_CONTROLLER, HalionControllerSpawnPos)) - halionController->AI()->DoAction(ACTION_INTRO_HALION); break; } case DATA_HALION: -- cgit v1.2.3 From 557fde86e457b8fe337e6916e6573ea8a8ba210c Mon Sep 17 00:00:00 2001 From: kaelima Date: Mon, 14 Jan 2013 04:38:05 +0100 Subject: Script/Ruby Sanctum: Miss in a05e78bb18226a16f049e6b01e35597d8a2d30d9 Thanks joschiwald --- .../scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp index d849e21f01f..7f8108e5e71 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp @@ -242,10 +242,10 @@ struct generic_halionAI : public BossAI _Reset(); } - void EnterEvadeMode() + void JustReachedHome() { - _EnterEvadeMode(); instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me); + _JustReachedHome(); } void ExecuteEvent(uint32 const eventId) -- cgit v1.2.3 From 802657250c20088d7f42ec7c836589a532e66fcc Mon Sep 17 00:00:00 2001 From: Spp Date: Mon, 14 Jan 2013 09:50:59 +0100 Subject: Core/Misc: Apply codestyle to multiple files --- src/server/authserver/Server/AuthSocket.cpp | 2 +- src/server/collision/DynamicTree.cpp | 6 +- src/server/collision/Maps/TileAssembler.cpp | 10 +- src/server/collision/Maps/TileAssembler.h | 4 +- src/server/collision/Models/GameObjectModel.cpp | 2 +- src/server/collision/RegularGrid.h | 2 +- src/server/game/Battlefield/Battlefield.cpp | 8 +- src/server/game/Battlefield/Battlefield.h | 2 +- src/server/game/Battlefield/BattlefieldMgr.cpp | 8 +- src/server/game/Battlefield/BattlefieldMgr.h | 14 +- .../game/Battlefield/Zones/BattlefieldWG.cpp | 2 +- src/server/game/Battlefield/Zones/BattlefieldWG.h | 8 +- src/server/game/Battlegrounds/Battleground.cpp | 2 +- src/server/game/Calendar/CalendarMgr.cpp | 2 +- src/server/game/Combat/ThreatManager.cpp | 2 +- src/server/game/Conditions/ConditionMgr.cpp | 2 +- src/server/game/DataStores/DBCfmt.h | 203 ++++++++++----------- src/server/game/DungeonFinding/LFGMgr.cpp | 2 +- src/server/game/DungeonFinding/LFGMgr.h | 4 +- src/server/game/Entities/GameObject/GameObject.h | 2 +- src/server/game/Entities/Player/Player.cpp | 2 +- src/server/game/Entities/Player/Player.h | 2 +- src/server/game/Entities/Unit/Unit.cpp | 8 +- src/server/game/Entities/Unit/Unit.h | 16 +- src/server/game/Globals/ObjectMgr.cpp | 4 +- src/server/game/Grids/Notifiers/GridNotifiers.h | 2 +- src/server/game/Guilds/Guild.cpp | 2 +- src/server/game/Handlers/BattlefieldHandler.cpp | 2 +- src/server/game/Handlers/GuildHandler.cpp | 2 +- src/server/game/Handlers/MiscHandler.cpp | 2 +- src/server/game/Maps/ZoneScript.h | 8 +- src/server/game/Miscellaneous/SharedDefines.h | 4 +- src/server/game/Movement/MotionMaster.cpp | 28 +-- .../FleeingMovementGenerator.cpp | 16 +- .../MovementGenerators/HomeMovementGenerator.cpp | 4 +- .../MovementGenerators/PointMovementGenerator.cpp | 2 +- .../MovementGenerators/RandomMovementGenerator.cpp | 4 +- .../TargetedMovementGenerator.cpp | 44 ++--- src/server/game/Movement/Spline/MoveSpline.cpp | 6 +- src/server/game/Movement/Spline/MoveSpline.h | 6 +- src/server/game/Movement/Spline/MoveSplineFlag.h | 2 +- src/server/game/Movement/Spline/MoveSplineInit.cpp | 4 +- src/server/game/Movement/Spline/MoveSplineInit.h | 2 +- .../game/Movement/Spline/MoveSplineInitArgs.h | 2 +- .../game/Movement/Spline/MovementPacketBuilder.cpp | 2 +- src/server/game/Movement/Spline/MovementUtil.cpp | 130 ++++++------- src/server/game/Movement/Spline/Spline.cpp | 8 +- src/server/game/Movement/Spline/Spline.h | 18 +- src/server/game/Movement/Spline/SplineImpl.h | 2 +- src/server/game/OutdoorPvP/OutdoorPvP.cpp | 12 +- src/server/game/OutdoorPvP/OutdoorPvP.h | 2 +- src/server/game/Scripting/MapScripts.cpp | 2 +- src/server/game/Server/WorldSession.cpp | 2 +- src/server/game/Spells/Auras/SpellAuraEffects.cpp | 6 +- src/server/game/Spells/Auras/SpellAuras.cpp | 2 +- src/server/game/Spells/Spell.cpp | 6 +- src/server/game/Spells/SpellEffects.cpp | 2 +- src/server/game/Spells/SpellInfo.cpp | 8 +- src/server/game/Warden/Warden.h | 4 +- src/server/game/Warden/WardenMac.cpp | 2 +- src/server/game/Warden/WardenWin.cpp | 4 +- src/server/game/Warden/WardenWin.h | 2 +- src/server/game/World/World.cpp | 2 +- src/server/scripts/Commands/cs_debug.cpp | 6 +- src/server/scripts/Commands/cs_quest.cpp | 2 +- .../Karazhan/boss_prince_malchezaar.cpp | 2 +- .../ScarletEnclave/zone_the_scarlet_enclave.cpp | 2 +- .../Scholomance/boss_darkmaster_gandling.cpp | 8 +- .../Scholomance/boss_illucia_barov.cpp | 4 +- .../Scholomance/boss_instructor_malicia.cpp | 2 +- .../Scholomance/boss_kirtonos_the_herald.cpp | 2 +- .../Scholomance/boss_lord_alexei_barov.cpp | 2 +- .../SunwellPlateau/boss_eredar_twins.cpp | 8 +- .../SunwellPlateau/instance_sunwell_plateau.cpp | 2 +- .../EasternKingdoms/Uldaman/boss_archaedas.cpp | 2 +- .../EasternKingdoms/Uldaman/instance_uldaman.cpp | 2 +- .../scripts/EasternKingdoms/ZulAman/zulaman.cpp | 16 +- src/server/scripts/Events/childrens_week.cpp | 10 +- src/server/scripts/Kalimdor/zone_silithus.cpp | 2 +- src/server/scripts/Kalimdor/zone_the_barrens.cpp | 2 +- .../AzjolNerub/Ahnkahet/boss_amanitar.cpp | 32 ++-- .../AzjolNerub/Ahnkahet/boss_elder_nadox.cpp | 22 +-- .../TrialOfTheCrusader/boss_lord_jaraxxus.cpp | 2 +- .../TrialOfTheCrusader/trial_of_the_crusader.h | 4 +- .../ForgeOfSouls/boss_devourer_of_souls.cpp | 2 +- .../scripts/Northrend/Gundrak/boss_slad_ran.cpp | 2 +- .../scripts/Northrend/Naxxramas/boss_kelthuzad.cpp | 2 +- .../Northrend/Nexus/EyeOfEternity/boss_malygos.cpp | 4 +- .../Northrend/Ulduar/Ulduar/instance_ulduar.cpp | 2 +- .../UtgardeKeep/boss_ingvar_the_plunderer.cpp | 28 +-- .../UtgardeKeep/UtgardeKeep/boss_keleseth.cpp | 16 +- .../UtgardeKeep/UtgardePinnacle/boss_svala.cpp | 6 +- src/server/scripts/Northrend/zone_icecrown.cpp | 102 +++++------ .../scripts/Northrend/zone_sholazar_basin.cpp | 4 +- src/server/scripts/Northrend/zone_storm_peaks.cpp | 2 +- src/server/scripts/Northrend/zone_wintergrasp.cpp | 2 +- .../Outland/BlackTemple/boss_mother_shahraz.cpp | 2 +- .../BloodFurnace/instance_blood_furnace.cpp | 10 +- .../Outland/TempestKeep/Eye/boss_astromancer.cpp | 2 +- .../Mechanar/boss_nethermancer_sepethrea.cpp | 2 +- .../TempestKeep/Mechanar/instance_mechanar.cpp | 2 +- src/server/scripts/Outland/zone_nagrand.cpp | 4 +- src/server/scripts/Spells/spell_generic.cpp | 2 +- src/server/scripts/Spells/spell_item.cpp | 6 +- src/server/scripts/Spells/spell_pet.cpp | 2 +- src/server/scripts/World/npcs_special.cpp | 6 +- .../shared/Cryptography/WardenKeyGeneration.h | 2 +- src/server/shared/Dynamic/HashNamespace.h | 2 +- src/server/shared/Logging/Log.cpp | 2 +- src/server/shared/Logging/Log.h | 12 +- src/server/shared/Packets/ByteBuffer.h | 2 +- src/server/shared/Utilities/Util.h | 2 +- 112 files changed, 521 insertions(+), 522 deletions(-) (limited to 'src') diff --git a/src/server/authserver/Server/AuthSocket.cpp b/src/server/authserver/Server/AuthSocket.cpp index 9145c8413ff..8ab4ab8a1a2 100644 --- a/src/server/authserver/Server/AuthSocket.cpp +++ b/src/server/authserver/Server/AuthSocket.cpp @@ -365,7 +365,7 @@ bool AuthSocket::_HandleLogonChallenge() if (result) { pkt << uint8(WOW_FAIL_BANNED); - sLog->outDebug(LOG_FILTER_AUTHSERVER, "'%s:%d' [AuthChallenge] Banned ip tries to login!",socket().getRemoteAddress().c_str(), socket().getRemotePort()); + sLog->outDebug(LOG_FILTER_AUTHSERVER, "'%s:%d' [AuthChallenge] Banned ip tries to login!", socket().getRemoteAddress().c_str(), socket().getRemotePort()); } else { diff --git a/src/server/collision/DynamicTree.cpp b/src/server/collision/DynamicTree.cpp index 1a2f721a69f..c6754278d17 100644 --- a/src/server/collision/DynamicTree.cpp +++ b/src/server/collision/DynamicTree.cpp @@ -227,7 +227,7 @@ bool DynamicMapTree::getObjectHitPos(const uint32 phasemask, const Vector3& star bool DynamicMapTree::isInLineOfSight(float x1, float y1, float z1, float x2, float y2, float z2, uint32 phasemask) const { - Vector3 v1(x1,y1,z1), v2(x2,y2,z2); + Vector3 v1(x1, y1, z1), v2(x2, y2, z2); float maxDist = (v2 - v1).magnitude(); @@ -243,8 +243,8 @@ bool DynamicMapTree::isInLineOfSight(float x1, float y1, float z1, float x2, flo float DynamicMapTree::getHeight(float x, float y, float z, float maxSearchDist, uint32 phasemask) const { - Vector3 v(x,y,z); - Ray r(v, Vector3(0,0,-1)); + Vector3 v(x, y, z); + Ray r(v, Vector3(0, 0, -1)); DynamicTreeIntersectionCallback callback(phasemask); impl.intersectZAllignedRay(r, callback, maxSearchDist); diff --git a/src/server/collision/Maps/TileAssembler.cpp b/src/server/collision/Maps/TileAssembler.cpp index 380d6b5df21..c087f773630 100644 --- a/src/server/collision/Maps/TileAssembler.cpp +++ b/src/server/collision/Maps/TileAssembler.cpp @@ -380,11 +380,11 @@ namespace VMAP } } - fwrite(&displayId,sizeof(uint32),1,model_list_copy); - fwrite(&name_length,sizeof(uint32),1,model_list_copy); - fwrite(&buff,sizeof(char),name_length,model_list_copy); - fwrite(&bounds.low(),sizeof(Vector3),1,model_list_copy); - fwrite(&bounds.high(),sizeof(Vector3),1,model_list_copy); + fwrite(&displayId, sizeof(uint32), 1, model_list_copy); + fwrite(&name_length, sizeof(uint32), 1, model_list_copy); + fwrite(&buff, sizeof(char), name_length, model_list_copy); + fwrite(&bounds.low(), sizeof(Vector3), 1, model_list_copy); + fwrite(&bounds.high(), sizeof(Vector3), 1, model_list_copy); } fclose(model_list); diff --git a/src/server/collision/Maps/TileAssembler.h b/src/server/collision/Maps/TileAssembler.h index 087c2021b50..a11ce272d62 100644 --- a/src/server/collision/Maps/TileAssembler.h +++ b/src/server/collision/Maps/TileAssembler.h @@ -72,12 +72,12 @@ namespace VMAP uint32 liquidflags; std::vector triangles; std::vector vertexArray; - class WmoLiquid *liquid; + class WmoLiquid* liquid; GroupModel_Raw() : liquid(0) {} ~GroupModel_Raw(); - bool Read(FILE * f); + bool Read(FILE* f); }; struct WorldModel_Raw diff --git a/src/server/collision/Models/GameObjectModel.cpp b/src/server/collision/Models/GameObjectModel.cpp index 237a5b33621..0ecf02648f9 100644 --- a/src/server/collision/Models/GameObjectModel.cpp +++ b/src/server/collision/Models/GameObjectModel.cpp @@ -79,7 +79,7 @@ void LoadGameObjectModelList() model_list.insert ( - ModelList::value_type( displayId, GameobjectModelData(std::string(buff,name_length),AABox(v1,v2)) ) + ModelList::value_type( displayId, GameobjectModelData(std::string(buff, name_length), AABox(v1, v2)) ) ); } diff --git a/src/server/collision/RegularGrid.h b/src/server/collision/RegularGrid.h index 5b7d1d74987..f38bf357a19 100644 --- a/src/server/collision/RegularGrid.h +++ b/src/server/collision/RegularGrid.h @@ -104,7 +104,7 @@ public: { ASSERT(x < CELL_NUMBER && y < CELL_NUMBER); if (!nodes[x][y]) - nodes[x][y] = NodeCreatorFunc::makeNode(x,y); + nodes[x][y] = NodeCreatorFunc::makeNode(x, y); return *nodes[x][y]; } diff --git a/src/server/game/Battlefield/Battlefield.cpp b/src/server/game/Battlefield/Battlefield.cpp index 32f71822737..dffdb2361d5 100644 --- a/src/server/game/Battlefield/Battlefield.cpp +++ b/src/server/game/Battlefield/Battlefield.cpp @@ -469,13 +469,13 @@ void Battlefield::SendWarningToAllInZone(uint32 entry) sCreatureTextMgr->SendChat(stalker, (uint8) entry, 0, CHAT_MSG_BG_SYSTEM_NEUTRAL, LANG_ADDON, TEXT_RANGE_ZONE); } -/*void Battlefield::SendWarningToAllInWar(int32 entry,...) +/*void Battlefield::SendWarningToAllInWar(int32 entry, ...) { const char *format = sObjectMgr->GetTrinityStringForDBCLocale(entry); va_list ap; char str [1024]; va_start(ap, entry); - vsnprintf(str,1024,format, ap); + vsnprintf(str, 1024, format, ap); va_end(ap); std::string msg = (std::string)str; @@ -604,7 +604,7 @@ BfGraveyard* Battlefield::GetGraveyardById(uint32 id) const return NULL; } -WorldSafeLocsEntry const * Battlefield::GetClosestGraveYard(Player* player) +WorldSafeLocsEntry const* Battlefield::GetClosestGraveYard(Player* player) { BfGraveyard* closestGY = NULL; float maxdist = -1; @@ -816,7 +816,7 @@ Creature* Battlefield::SpawnCreature(uint32 entry, Position pos, TeamId team) Creature* Battlefield::SpawnCreature(uint32 entry, float x, float y, float z, float o, TeamId team) { //Get map object - Map* map = const_cast < Map * >(sMapMgr->CreateBaseMap(m_MapId)); + Map* map = const_cast(sMapMgr->CreateBaseMap(m_MapId)); if (!map) { sLog->outError(LOG_FILTER_BATTLEFIELD, "Battlefield::SpawnCreature: Can't create creature entry: %u map not found", entry); diff --git a/src/server/game/Battlefield/Battlefield.h b/src/server/game/Battlefield/Battlefield.h index 0da776b9624..7a8d856aa8e 100644 --- a/src/server/game/Battlefield/Battlefield.h +++ b/src/server/game/Battlefield/Battlefield.h @@ -277,7 +277,7 @@ class Battlefield : public ZoneScript // Graveyard methods // Find which graveyard the player must be teleported to to be resurrected by spiritguide - WorldSafeLocsEntry const * GetClosestGraveYard(Player* player); + WorldSafeLocsEntry const* GetClosestGraveYard(Player* player); virtual void AddPlayerToResurrectQueue(uint64 npc_guid, uint64 player_guid); void RemovePlayerFromResurrectQueue(uint64 player_guid); diff --git a/src/server/game/Battlefield/BattlefieldMgr.cpp b/src/server/game/Battlefield/BattlefieldMgr.cpp index 5aec0458b19..d30a0b17fd7 100644 --- a/src/server/game/Battlefield/BattlefieldMgr.cpp +++ b/src/server/game/Battlefield/BattlefieldMgr.cpp @@ -51,7 +51,7 @@ void BattlefieldMgr::InitBattlefield() /* For Cataclysm: Tol Barad pBf = new BattlefieldTB; // respawn, init variables - if(!pBf->SetupBattlefield()) + if (!pBf->SetupBattlefield()) { sLog->outDebug(LOG_FILTER_BATTLEFIELD, "Battlefield : Tol Barad init failed."); delete pBf; @@ -68,7 +68,7 @@ void BattlefieldMgr::AddZone(uint32 zoneid, Battlefield *handle) m_BattlefieldMap[zoneid] = handle; } -void BattlefieldMgr::HandlePlayerEnterZone(Player * player, uint32 zoneid) +void BattlefieldMgr::HandlePlayerEnterZone(Player* player, uint32 zoneid) { BattlefieldMap::iterator itr = m_BattlefieldMap.find(zoneid); if (itr == m_BattlefieldMap.end()) @@ -81,7 +81,7 @@ void BattlefieldMgr::HandlePlayerEnterZone(Player * player, uint32 zoneid) sLog->outDebug(LOG_FILTER_BATTLEFIELD, "Player %u entered outdoorpvp id %u", player->GetGUIDLow(), itr->second->GetTypeId()); } -void BattlefieldMgr::HandlePlayerLeaveZone(Player * player, uint32 zoneid) +void BattlefieldMgr::HandlePlayerLeaveZone(Player* player, uint32 zoneid) { BattlefieldMap::iterator itr = m_BattlefieldMap.find(zoneid); if (itr == m_BattlefieldMap.end()) @@ -129,7 +129,7 @@ void BattlefieldMgr::Update(uint32 diff) } } -ZoneScript *BattlefieldMgr::GetZoneScript(uint32 zoneId) +ZoneScript* BattlefieldMgr::GetZoneScript(uint32 zoneId) { BattlefieldMap::iterator itr = m_BattlefieldMap.find(zoneId); if (itr != m_BattlefieldMap.end()) diff --git a/src/server/game/Battlefield/BattlefieldMgr.h b/src/server/game/Battlefield/BattlefieldMgr.h index 28b2a3c148a..af1cea763df 100644 --- a/src/server/game/Battlefield/BattlefieldMgr.h +++ b/src/server/game/Battlefield/BattlefieldMgr.h @@ -39,11 +39,11 @@ class BattlefieldMgr // create battlefield events void InitBattlefield(); // called when a player enters an battlefield area - void HandlePlayerEnterZone(Player * player, uint32 areaflag); + void HandlePlayerEnterZone(Player* player, uint32 areaflag); // called when player leaves an battlefield area - void HandlePlayerLeaveZone(Player * player, uint32 areaflag); + void HandlePlayerLeaveZone(Player* player, uint32 areaflag); // called when player resurrects - void HandlePlayerResurrects(Player * player, uint32 areaflag); + void HandlePlayerResurrects(Player* player, uint32 areaflag); // return assigned battlefield Battlefield* GetBattlefieldToZoneId(uint32 zoneid); Battlefield* GetBattlefieldByBattleId(uint32 battleid); @@ -54,14 +54,14 @@ class BattlefieldMgr void Update(uint32 diff); - void HandleGossipOption(Player * player, uint64 guid, uint32 gossipid); + void HandleGossipOption(Player* player, uint64 guid, uint32 gossipid); - bool CanTalkTo(Player * player, Creature * creature, GossipMenuItems gso); + bool CanTalkTo(Player* player, Creature* creature, GossipMenuItems gso); - void HandleDropFlag(Player * player, uint32 spellId); + void HandleDropFlag(Player* player, uint32 spellId); typedef std::vector < Battlefield * >BattlefieldSet; - typedef std::map < uint32 /* zoneid */ , Battlefield * >BattlefieldMap; + typedef std::map < uint32 /* zoneid */, Battlefield * >BattlefieldMap; private: // contains all initiated battlefield events // used when initing / cleaning up diff --git a/src/server/game/Battlefield/Zones/BattlefieldWG.cpp b/src/server/game/Battlefield/Zones/BattlefieldWG.cpp index a36d204a4b7..060aca3e5aa 100644 --- a/src/server/game/Battlefield/Zones/BattlefieldWG.cpp +++ b/src/server/game/Battlefield/Zones/BattlefieldWG.cpp @@ -916,7 +916,7 @@ void BattlefieldWG::UpdatedDestroyedTowerCount(TeamId team) } } -void BattlefieldWG::ProcessEvent(WorldObject *obj, uint32 eventId) +void BattlefieldWG::ProcessEvent(WorldObject* obj, uint32 eventId) { if (!obj || !IsWarTime()) return; diff --git a/src/server/game/Battlefield/Zones/BattlefieldWG.h b/src/server/game/Battlefield/Zones/BattlefieldWG.h index f313357e323..2f750de7b3a 100644 --- a/src/server/game/Battlefield/Zones/BattlefieldWG.h +++ b/src/server/game/Battlefield/Zones/BattlefieldWG.h @@ -405,7 +405,7 @@ class BattlefieldWG : public Battlefield void PromotePlayer(Player* killer); void UpdateTenacity(); - void ProcessEvent(WorldObject *obj, uint32 eventId); + void ProcessEvent(WorldObject* obj, uint32 eventId); bool FindAndRemoveVehicleFromList(Unit* vehicle); @@ -562,7 +562,7 @@ struct WintergraspObjectPositionData }; // ***************************************************** -// ************ Destructible (Wall,Tower..) ************ +// ************ Destructible (Wall, Tower..) ************ // ***************************************************** struct WintergraspBuildingSpawnData @@ -755,7 +755,7 @@ const WintergraspTeleporterData WGPortalDefenderData[WG_MAX_TELEPORTER] = }; // ********************************************************* -// **********Tower Element(GameObject,Creature)************* +// **********Tower Element(GameObject, Creature)************* // ********************************************************* struct WintergraspTowerData @@ -1055,7 +1055,7 @@ const WGWorkshopData WorkshopsData[WG_MAX_WORKSHOP] = }; // ******************************************************************** -// * Structs using for Building,Graveyard,Workshop * +// * Structs using for Building, Graveyard, Workshop * // ******************************************************************** // Structure for different buildings that can be destroyed during battle struct BfWGGameObjectBuilding diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp index e0a3943d70f..e717a10fcd7 100644 --- a/src/server/game/Battlegrounds/Battleground.cpp +++ b/src/server/game/Battlegrounds/Battleground.cpp @@ -1688,7 +1688,7 @@ void Battleground::SendWarningToAll(int32 entry, ...) if (!entry) return; - char const *format = sObjectMgr->GetTrinityStringForDBCLocale(entry); + char const* format = sObjectMgr->GetTrinityStringForDBCLocale(entry); char str[1024]; va_list ap; diff --git a/src/server/game/Calendar/CalendarMgr.cpp b/src/server/game/Calendar/CalendarMgr.cpp index f4dd059846e..763e0132c10 100644 --- a/src/server/game/Calendar/CalendarMgr.cpp +++ b/src/server/game/Calendar/CalendarMgr.cpp @@ -68,7 +68,7 @@ void CalendarMgr::LoadFromDB() if (flags & CALENDAR_FLAG_GUILD_EVENT || flags & CALENDAR_FLAG_WITHOUT_INVITES) guildId = Player::GetGuildIdFromDB(creatorGUID); - CalendarEvent* calendarEvent = new CalendarEvent(eventId, creatorGUID , guildId, type, dungeonId, time_t(eventTime), flags, time_t(timezoneTime), title, description); + CalendarEvent* calendarEvent = new CalendarEvent(eventId, creatorGUID, guildId, type, dungeonId, time_t(eventTime), flags, time_t(timezoneTime), title, description); _events.insert(calendarEvent); _maxEventId = std::max(_maxEventId, eventId); diff --git a/src/server/game/Combat/ThreatManager.cpp b/src/server/game/Combat/ThreatManager.cpp index 0e13019c8a2..6d291ca301f 100644 --- a/src/server/game/Combat/ThreatManager.cpp +++ b/src/server/game/Combat/ThreatManager.cpp @@ -272,7 +272,7 @@ HostileReference* ThreatContainer::getReferenceByTarget(Unit* victim) const uint64 const guid = victim->GetGUID(); for (ThreatContainer::StorageType::const_iterator i = iThreatList.begin(); i != iThreatList.end(); ++i) { - HostileReference *ref = (*i); + HostileReference* ref = (*i); if (ref && ref->getUnitGuid() == guid) return ref; } diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp index d476113edc4..5e1a05669ed 100644 --- a/src/server/game/Conditions/ConditionMgr.cpp +++ b/src/server/game/Conditions/ConditionMgr.cpp @@ -1364,7 +1364,7 @@ bool ConditionMgr::isSourceTypeValid(Condition* cond) if ((cond->SourceGroup > MAX_EFFECT_MASK) || !cond->SourceGroup) { - sLog->outError(LOG_FILTER_SQL, "SourceEntry %u in `condition` table, has incorrect SourceGroup %u (spell effectMask) set , ignoring.", cond->SourceEntry, cond->SourceGroup); + sLog->outError(LOG_FILTER_SQL, "SourceEntry %u in `condition` table, has incorrect SourceGroup %u (spell effectMask) set, ignoring.", cond->SourceEntry, cond->SourceGroup); return false; } diff --git a/src/server/game/DataStores/DBCfmt.h b/src/server/game/DataStores/DBCfmt.h index d0784f05c4d..b7d966757c8 100644 --- a/src/server/game/DataStores/DBCfmt.h +++ b/src/server/game/DataStores/DBCfmt.h @@ -19,111 +19,110 @@ #ifndef TRINITY_DBCSFRM_H #define TRINITY_DBCSFRM_H -char const Achievementfmt[]="niixssssssssssssssssxxxxxxxxxxxxxxxxxxiixixxxxxxxxxxxxxxxxxxii"; -const std::string CustomAchievementfmt="pppaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapapaaaaaaaaaaaaaaaaaapp"; +char const Achievementfmt[] = "niixssssssssssssssssxxxxxxxxxxxxxxxxxxiixixxxxxxxxxxxxxxxxxxii"; +const std::string CustomAchievementfmt = "pppaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapapaaaaaaaaaaaaaaaaaapp"; const std::string CustomAchievementIndex = "ID"; -char const AchievementCriteriafmt[]="niiiiiiiixxxxxxxxxxxxxxxxxiiiix"; -char const AreaTableEntryfmt[]="iiinixxxxxissssssssssssssssxiiiiixxx"; -char const AreaGroupEntryfmt[]="niiiiiii"; -char const AreaPOIEntryfmt[]="niiiiiiiiiiifffixixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxix"; -char const AreaTriggerEntryfmt[]="niffffffff"; -char const AuctionHouseEntryfmt[]="niiixxxxxxxxxxxxxxxxx"; -char const BankBagSlotPricesEntryfmt[]="ni"; -char const BarberShopStyleEntryfmt[]="nixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxiii"; -char const BattlemasterListEntryfmt[]="niiiiiiiiixssssssssssssssssxiixx"; -char const CharStartOutfitEntryfmt[]="xniiiiiiiiiiiiiiiiiiiiiiiixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; -char const CharTitlesEntryfmt[]="nxssssssssssssssssxxxxxxxxxxxxxxxxxxi"; -char const ChatChannelsEntryfmt[]="nixssssssssssssssssxxxxxxxxxxxxxxxxxx"; - // ChatChannelsEntryfmt, index not used (more compact store) -char const ChrClassesEntryfmt[]="nxixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxixii"; -char const ChrRacesEntryfmt[]="nxixiixixxxxixssssssssssssssssxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxi"; -char const CinematicSequencesEntryfmt[]="nxxxxxxxxx"; -char const CreatureDisplayInfofmt[]="nixxfxxxxxxxxxxx"; -char const CreatureFamilyfmt[]="nfifiiiiixssssssssssssssssxx"; -char const CreatureModelDatafmt[]="nxxxfxxxxxxxxxxffxxxxxxxxxxx"; -char const CreatureSpellDatafmt[]="niiiixxxx"; -char const CreatureTypefmt[]="nxxxxxxxxxxxxxxxxxx"; -char const CurrencyTypesfmt[]="xnxi"; -char const DestructibleModelDatafmt[]="nxxixxxixxxixxxixxx"; -char const DungeonEncounterfmt[]="niixissssssssssssssssxx"; -char const DurabilityCostsfmt[]="niiiiiiiiiiiiiiiiiiiiiiiiiiiii"; -char const DurabilityQualityfmt[]="nf"; -char const EmotesEntryfmt[]="nxxiiix"; -char const EmotesTextEntryfmt[]="nxixxxxxxxxxxxxxxxx"; -char const FactionEntryfmt[]="niiiiiiiiiiiiiiiiiiffixssssssssssssssssxxxxxxxxxxxxxxxxxx"; -char const FactionTemplateEntryfmt[]="niiiiiiiiiiiii"; -char const GameObjectDisplayInfofmt[]="nsxxxxxxxxxxffffffx"; -char const GemPropertiesEntryfmt[]="nixxi"; -char const GlyphPropertiesfmt[]="niii"; -char const GlyphSlotfmt[]="nii"; -char const GtBarberShopCostBasefmt[]="f"; -char const GtCombatRatingsfmt[]="f"; -char const GtChanceToMeleeCritBasefmt[]="f"; -char const GtChanceToMeleeCritfmt[]="f"; -char const GtChanceToSpellCritBasefmt[]="f"; -char const GtChanceToSpellCritfmt[]="f"; -char const GtOCTClassCombatRatingScalarfmt[]="df"; -char const GtOCTRegenHPfmt[]="f"; -//char const GtOCTRegenMPfmt[]="f"; -char const GtRegenHPPerSptfmt[]="f"; -char const GtRegenMPPerSptfmt[]="f"; -char const Holidaysfmt[]="niiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiixxsiix"; -char const Itemfmt[]="niiiiiii"; -char const ItemBagFamilyfmt[]="nxxxxxxxxxxxxxxxxx"; -//char const ItemDisplayTemplateEntryfmt[]="nxxxxxxxxxxixxxxxxxxxxx"; -//char const ItemCondExtCostsEntryfmt[]="xiii"; -char const ItemExtendedCostEntryfmt[]="niiiiiiiiiiiiiix"; -char const ItemLimitCategoryEntryfmt[]="nxxxxxxxxxxxxxxxxxii"; -char const ItemRandomPropertiesfmt[]="nxiiixxssssssssssssssssx"; -char const ItemRandomSuffixfmt[]="nssssssssssssssssxxiiixxiiixx"; -char const ItemSetEntryfmt[]="dssssssssssssssssxiiiiiiiiiixxxxxxxiiiiiiiiiiiiiiiiii"; -char const LFGDungeonEntryfmt[]="nssssssssssssssssxiiiiiiiiixxixixxxxxxxxxxxxxxxxx"; -char const LiquidTypefmt[]="nxxixixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; -char const LockEntryfmt[]="niiiiiiiiiiiiiiiiiiiiiiiixxxxxxxx"; -char const MailTemplateEntryfmt[]="nxxxxxxxxxxxxxxxxxssssssssssssssssx"; -char const MapEntryfmt[]="nxixxssssssssssssssssxixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxixiffxiix"; -char const MapDifficultyEntryfmt[]="diisxxxxxxxxxxxxxxxxiix"; -char const MovieEntryfmt[]="nxx"; -char const OverrideSpellDatafmt[]="niiiiiiiiiix"; -char const QuestSortEntryfmt[]="nxxxxxxxxxxxxxxxxx"; -char const QuestXPfmt[]="niiiiiiiiii"; -char const QuestFactionRewardfmt[]="niiiiiiiiii"; -char const PvPDifficultyfmt[]="diiiii"; -char const RandomPropertiesPointsfmt[]="niiiiiiiiiiiiiii"; -char const ScalingStatDistributionfmt[]="niiiiiiiiiiiiiiiiiiiii"; -char const ScalingStatValuesfmt[]="iniiiiiiiiiiiiiiiiiiiiii"; -char const SkillLinefmt[]="nixssssssssssssssssxxxxxxxxxxxxxxxxxxixxxxxxxxxxxxxxxxxi"; -char const SkillLineAbilityfmt[]="niiiixxiiiiixx"; -char const SoundEntriesfmt[]="nxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; -char const SpellCastTimefmt[]="nixx"; -char const SpellDifficultyfmt[]="niiii"; -const std::string CustomSpellDifficultyfmt="ppppp"; -const std::string CustomSpellDifficultyIndex="id"; -char const SpellDurationfmt[]="niii"; -char const SpellEntryfmt[]="niiiiiiiiiiiixixiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiifxiiiiiiiiiiiiiiiiiiiiiiiiiiiifffiiiiiiiiiiiiiiiiiiiiifffiiiiiiiiiiiiiiifffiiiiiiiiiiiiixssssssssssssssssxssssssssssssssssxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxiiiiiiiiiiixfffxxxiiiiixxfffxx"; -const std::string CustomSpellEntryfmt="papppppppppppapapaaaaaaaaaaapaaapapppppppaaaaapaapaaaaaaaaaaaaaaaaaappppppppppppppppppppppppppppppppppppaaaaaapppppppppaaapppppppppaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaappppppppapppaaaaappaaaaaaa"; +char const AchievementCriteriafmt[] = "niiiiiiiixxxxxxxxxxxxxxxxxiiiix"; +char const AreaTableEntryfmt[] = "iiinixxxxxissssssssssssssssxiiiiixxx"; +char const AreaGroupEntryfmt[] = "niiiiiii"; +char const AreaPOIEntryfmt[] = "niiiiiiiiiiifffixixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxix"; +char const AreaTriggerEntryfmt[] = "niffffffff"; +char const AuctionHouseEntryfmt[] = "niiixxxxxxxxxxxxxxxxx"; +char const BankBagSlotPricesEntryfmt[] = "ni"; +char const BarberShopStyleEntryfmt[] = "nixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxiii"; +char const BattlemasterListEntryfmt[] = "niiiiiiiiixssssssssssssssssxiixx"; +char const CharStartOutfitEntryfmt[] = "xniiiiiiiiiiiiiiiiiiiiiiiixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; +char const CharTitlesEntryfmt[] = "nxssssssssssssssssxxxxxxxxxxxxxxxxxxi"; +char const ChatChannelsEntryfmt[] = "nixssssssssssssssssxxxxxxxxxxxxxxxxxx"; +char const ChrClassesEntryfmt[] = "nxixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxixii"; +char const ChrRacesEntryfmt[] = "nxixiixixxxxixssssssssssssssssxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxi"; +char const CinematicSequencesEntryfmt[] = "nxxxxxxxxx"; +char const CreatureDisplayInfofmt[] = "nixxfxxxxxxxxxxx"; +char const CreatureFamilyfmt[] = "nfifiiiiixssssssssssssssssxx"; +char const CreatureModelDatafmt[] = "nxxxfxxxxxxxxxxffxxxxxxxxxxx"; +char const CreatureSpellDatafmt[] = "niiiixxxx"; +char const CreatureTypefmt[] = "nxxxxxxxxxxxxxxxxxx"; +char const CurrencyTypesfmt[] = "xnxi"; +char const DestructibleModelDatafmt[] = "nxxixxxixxxixxxixxx"; +char const DungeonEncounterfmt[] = "niixissssssssssssssssxx"; +char const DurabilityCostsfmt[] = "niiiiiiiiiiiiiiiiiiiiiiiiiiiii"; +char const DurabilityQualityfmt[] = "nf"; +char const EmotesEntryfmt[] = "nxxiiix"; +char const EmotesTextEntryfmt[] = "nxixxxxxxxxxxxxxxxx"; +char const FactionEntryfmt[] = "niiiiiiiiiiiiiiiiiiffixssssssssssssssssxxxxxxxxxxxxxxxxxx"; +char const FactionTemplateEntryfmt[] = "niiiiiiiiiiiii"; +char const GameObjectDisplayInfofmt[] = "nsxxxxxxxxxxffffffx"; +char const GemPropertiesEntryfmt[] = "nixxi"; +char const GlyphPropertiesfmt[] = "niii"; +char const GlyphSlotfmt[] = "nii"; +char const GtBarberShopCostBasefmt[] = "f"; +char const GtCombatRatingsfmt[] = "f"; +char const GtChanceToMeleeCritBasefmt[] = "f"; +char const GtChanceToMeleeCritfmt[] = "f"; +char const GtChanceToSpellCritBasefmt[] = "f"; +char const GtChanceToSpellCritfmt[] = "f"; +char const GtOCTClassCombatRatingScalarfmt[] = "df"; +char const GtOCTRegenHPfmt[] = "f"; +//char const GtOCTRegenMPfmt[] = "f"; +char const GtRegenHPPerSptfmt[] = "f"; +char const GtRegenMPPerSptfmt[] = "f"; +char const Holidaysfmt[] = "niiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiixxsiix"; +char const Itemfmt[] = "niiiiiii"; +char const ItemBagFamilyfmt[] = "nxxxxxxxxxxxxxxxxx"; +//char const ItemDisplayTemplateEntryfmt[] = "nxxxxxxxxxxixxxxxxxxxxx"; +//char const ItemCondExtCostsEntryfmt[] = "xiii"; +char const ItemExtendedCostEntryfmt[] = "niiiiiiiiiiiiiix"; +char const ItemLimitCategoryEntryfmt[] = "nxxxxxxxxxxxxxxxxxii"; +char const ItemRandomPropertiesfmt[] = "nxiiixxssssssssssssssssx"; +char const ItemRandomSuffixfmt[] = "nssssssssssssssssxxiiixxiiixx"; +char const ItemSetEntryfmt[] = "dssssssssssssssssxiiiiiiiiiixxxxxxxiiiiiiiiiiiiiiiiii"; +char const LFGDungeonEntryfmt[] = "nssssssssssssssssxiiiiiiiiixxixixxxxxxxxxxxxxxxxx"; +char const LiquidTypefmt[] = "nxxixixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; +char const LockEntryfmt[] = "niiiiiiiiiiiiiiiiiiiiiiiixxxxxxxx"; +char const MailTemplateEntryfmt[] = "nxxxxxxxxxxxxxxxxxssssssssssssssssx"; +char const MapEntryfmt[] = "nxixxssssssssssssssssxixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxixiffxiix"; +char const MapDifficultyEntryfmt[] = "diisxxxxxxxxxxxxxxxxiix"; +char const MovieEntryfmt[] = "nxx"; +char const OverrideSpellDatafmt[] = "niiiiiiiiiix"; +char const QuestFactionRewardfmt[] = "niiiiiiiiii"; +char const QuestSortEntryfmt[] = "nxxxxxxxxxxxxxxxxx"; +char const QuestXPfmt[] = "niiiiiiiiii"; +char const PvPDifficultyfmt[] = "diiiii"; +char const RandomPropertiesPointsfmt[] = "niiiiiiiiiiiiiii"; +char const ScalingStatDistributionfmt[] = "niiiiiiiiiiiiiiiiiiiii"; +char const ScalingStatValuesfmt[] = "iniiiiiiiiiiiiiiiiiiiiii"; +char const SkillLinefmt[] = "nixssssssssssssssssxxxxxxxxxxxxxxxxxxixxxxxxxxxxxxxxxxxi"; +char const SkillLineAbilityfmt[] = "niiiixxiiiiixx"; +char const SoundEntriesfmt[] = "nxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; +char const SpellCastTimefmt[] = "nixx"; +char const SpellDifficultyfmt[] = "niiii"; +const std::string CustomSpellDifficultyfmt = "ppppp"; +const std::string CustomSpellDifficultyIndex = "id"; +char const SpellDurationfmt[] = "niii"; +char const SpellEntryfmt[] = "niiiiiiiiiiiixixiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiifxiiiiiiiiiiiiiiiiiiiiiiiiiiiifffiiiiiiiiiiiiiiiiiiiiifffiiiiiiiiiiiiiiifffiiiiiiiiiiiiixssssssssssssssssxssssssssssssssssxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxiiiiiiiiiiixfffxxxiiiiixxfffxx"; +const std::string CustomSpellEntryfmt = "papppppppppppapapaaaaaaaaaaapaaapapppppppaaaaapaapaaaaaaaaaaaaaaaaaappppppppppppppppppppppppppppppppppppaaaaaapppppppppaaapppppppppaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaappppppppapppaaaaappaaaaaaa"; const std::string CustomSpellEntryIndex = "Id"; -char const SpellFocusObjectfmt[]="nxxxxxxxxxxxxxxxxx"; -char const SpellItemEnchantmentfmt[]="nxiiiiiixxxiiissssssssssssssssxiiiiiii"; -char const SpellItemEnchantmentConditionfmt[]="nbbbbbxxxxxbbbbbbbbbbiiiiiXXXXX"; -char const SpellRadiusfmt[]="nfff"; -char const SpellRangefmt[]="nffffixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; -char const SpellRuneCostfmt[]="niiii"; -char const SpellShapeshiftfmt[]="nxxxxxxxxxxxxxxxxxxiixiiixxiiiiiiii"; +char const SpellFocusObjectfmt[] = "nxxxxxxxxxxxxxxxxx"; +char const SpellItemEnchantmentfmt[] = "nxiiiiiixxxiiissssssssssssssssxiiiiiii"; +char const SpellItemEnchantmentConditionfmt[] = "nbbbbbxxxxxbbbbbbbbbbiiiiiXXXXX"; +char const SpellRadiusfmt[] = "nfff"; +char const SpellRangefmt[] = "nffffixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; +char const SpellRuneCostfmt[] = "niiii"; +char const SpellShapeshiftfmt[] = "nxxxxxxxxxxxxxxxxxxiixiiixxiiiiiiii"; char const StableSlotPricesfmt[] = "ni"; char const SummonPropertiesfmt[] = "niiiii"; -char const TalentEntryfmt[]="niiiiiiiixxxxixxixxxxxx"; -char const TalentTabEntryfmt[]="nxxxxxxxxxxxxxxxxxxxiiix"; -char const TaxiNodesEntryfmt[]="nifffssssssssssssssssxii"; -char const TaxiPathEntryfmt[]="niii"; -char const TaxiPathNodeEntryfmt[]="diiifffiiii"; -char const TeamContributionPointsfmt[]="df"; -char const TotemCategoryEntryfmt[]="nxxxxxxxxxxxxxxxxxii"; -char const VehicleEntryfmt[]="niffffiiiiiiiifffffffffffffffssssfifiixx"; -char const VehicleSeatEntryfmt[]="niiffffffffffiiiiiifffffffiiifffiiiiiiiffiiiiixxxxxxxxxxxx"; -char const WMOAreaTableEntryfmt[]="niiixxxxxiixxxxxxxxxxxxxxxxx"; -char const WorldMapAreaEntryfmt[]="xinxffffixx"; -char const WorldMapOverlayEntryfmt[]="nxiiiixxxxxxxxxxx"; -char const WorldSafeLocsEntryfmt[]="nifffxxxxxxxxxxxxxxxxx"; +char const TalentEntryfmt[] = "niiiiiiiixxxxixxixxxxxx"; +char const TalentTabEntryfmt[] = "nxxxxxxxxxxxxxxxxxxxiiix"; +char const TaxiNodesEntryfmt[] = "nifffssssssssssssssssxii"; +char const TaxiPathEntryfmt[] = "niii"; +char const TaxiPathNodeEntryfmt[] = "diiifffiiii"; +char const TeamContributionPointsfmt[] = "df"; +char const TotemCategoryEntryfmt[] = "nxxxxxxxxxxxxxxxxxii"; +char const VehicleEntryfmt[] = "niffffiiiiiiiifffffffffffffffssssfifiixx"; +char const VehicleSeatEntryfmt[] = "niiffffffffffiiiiiifffffffiiifffiiiiiiiffiiiiixxxxxxxxxxxx"; +char const WMOAreaTableEntryfmt[] = "niiixxxxxiixxxxxxxxxxxxxxxxx"; +char const WorldMapAreaEntryfmt[] = "xinxffffixx"; +char const WorldMapOverlayEntryfmt[] = "nxiiiixxxxxxxxxxx"; +char const WorldSafeLocsEntryfmt[] = "nifffxxxxxxxxxxxxxxxxx"; #endif diff --git a/src/server/game/DungeonFinding/LFGMgr.cpp b/src/server/game/DungeonFinding/LFGMgr.cpp index 09be64813af..a931d61f740 100644 --- a/src/server/game/DungeonFinding/LFGMgr.cpp +++ b/src/server/game/DungeonFinding/LFGMgr.cpp @@ -1704,7 +1704,7 @@ uint8 LFGMgr::GetKicksLeft(uint64 guid) return kicks; } -void LFGMgr::RestoreState(uint64 guid, char const *debugMsg) +void LFGMgr::RestoreState(uint64 guid, char const* debugMsg) { if (IS_GROUP_GUID(guid)) { diff --git a/src/server/game/DungeonFinding/LFGMgr.h b/src/server/game/DungeonFinding/LFGMgr.h index 33626467486..74c7ca9e3d3 100644 --- a/src/server/game/DungeonFinding/LFGMgr.h +++ b/src/server/game/DungeonFinding/LFGMgr.h @@ -383,8 +383,8 @@ class LFGMgr private: uint8 GetTeam(uint64 guid); - void RestoreState(uint64 guid, char const *debugMsg); - void ClearState(uint64 guid, char const *debugMsg); + void RestoreState(uint64 guid, char const* debugMsg); + void ClearState(uint64 guid, char const* debugMsg); void SetDungeon(uint64 guid, uint32 dungeon); void SetSelectedDungeons(uint64 guid, LfgDungeonSet const& dungeons); void SetLockedDungeons(uint64 guid, LfgLockMap const& lock); diff --git a/src/server/game/Entities/GameObject/GameObject.h b/src/server/game/Entities/GameObject/GameObject.h index 7b1ccbc9015..1049285605e 100644 --- a/src/server/game/Entities/GameObject/GameObject.h +++ b/src/server/game/Entities/GameObject/GameObject.h @@ -790,7 +790,7 @@ class GameObject : public WorldObject, public GridObject void SetDisplayId(uint32 displayid); uint32 GetDisplayId() const { return GetUInt32Value(GAMEOBJECT_DISPLAYID); } - GameObjectModel * m_model; + GameObjectModel* m_model; protected: bool AIM_Initialize(); uint32 m_spellId; diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 14878b078bd..5fee82c5ece 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -2375,7 +2375,7 @@ void Player::ProcessDelayedOperations() if (m_DelayedOperations & DELAYED_BG_GROUP_RESTORE) { - if (Group *g = GetGroup()) + if (Group* g = GetGroup()) g->SendUpdateToPlayer(GetGUID()); } diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index fa82ac6f8c6..52e81d6d0cd 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -2563,7 +2563,7 @@ class Player : public Unit, public GridObject //We allow only one timed quest active at the same time. Below can then be simple value instead of set. typedef std::set QuestSet; typedef std::set SeasonalQuestSet; - typedef UNORDERED_MAP SeasonalEventQuestMap; + typedef UNORDERED_MAP SeasonalEventQuestMap; QuestSet m_timedquests; QuestSet m_weeklyquests; QuestSet m_monthlyquests; diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 3381369b743..fe0a1e88885 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -388,7 +388,7 @@ bool Unit::haveOffhandWeapon() const void Unit::MonsterMoveWithSpeed(float x, float y, float z, float speed) { Movement::MoveSplineInit init(*this); - init.MoveTo(x,y,z); + init.MoveTo(x, y, z); init.SetVelocity(speed); init.Launch(); } @@ -6514,8 +6514,8 @@ bool Unit::HandleDummyAuraProc(Unit* victim, uint32 damage, AuraEffect* triggere RemoveAura(57934); if (!redirectTarget) break; - CastSpell(this,59628,true); - CastSpell(redirectTarget,57933,true); + CastSpell(this, 59628, true); + CastSpell(redirectTarget, 57933, true); break; } } @@ -15228,7 +15228,7 @@ void Unit::UpdateAuraForGroup(uint8 slot) } } -float Unit::CalculateDefaultCoefficient(SpellInfo const *spellInfo, DamageEffectType damagetype) const +float Unit::CalculateDefaultCoefficient(SpellInfo const* spellInfo, DamageEffectType damagetype) const { // Damage over Time spells bonus calculation float DotFactor = 1.0f; diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index c714303e8c7..4bcc9c4b823 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -495,7 +495,7 @@ enum UnitState UNIT_STATE_FOLLOW_MOVE = 0x08000000, UNIT_STATE_UNATTACKABLE = (UNIT_STATE_IN_FLIGHT | UNIT_STATE_ONVEHICLE), // for real move using movegen check and stop (except unstoppable flight) - UNIT_STATE_MOVING = UNIT_STATE_ROAMING_MOVE | UNIT_STATE_CONFUSED_MOVE | UNIT_STATE_FLEEING_MOVE | UNIT_STATE_CHASE_MOVE | UNIT_STATE_FOLLOW_MOVE , + UNIT_STATE_MOVING = UNIT_STATE_ROAMING_MOVE | UNIT_STATE_CONFUSED_MOVE | UNIT_STATE_FLEEING_MOVE | UNIT_STATE_CHASE_MOVE | UNIT_STATE_FOLLOW_MOVE, UNIT_STATE_CONTROLLED = (UNIT_STATE_CONFUSED | UNIT_STATE_STUNNED | UNIT_STATE_FLEEING), UNIT_STATE_LOST_CONTROL = (UNIT_STATE_CONTROLLED | UNIT_STATE_JUMPING | UNIT_STATE_CHARGING), UNIT_STATE_SIGHTLESS = (UNIT_STATE_LOST_CONTROL | UNIT_STATE_EVADE), @@ -2020,15 +2020,15 @@ class Unit : public WorldObject int32 SpellBaseDamageBonusDone(SpellSchoolMask schoolMask); int32 SpellBaseDamageBonusTaken(SpellSchoolMask schoolMask); - uint32 SpellDamageBonusDone(Unit* victim, SpellInfo const *spellProto, uint32 pdamage, DamageEffectType damagetype, uint32 stack = 1); - uint32 SpellDamageBonusTaken(Unit* caster, SpellInfo const *spellProto, uint32 pdamage, DamageEffectType damagetype, uint32 stack = 1); + uint32 SpellDamageBonusDone(Unit* victim, SpellInfo const* spellProto, uint32 pdamage, DamageEffectType damagetype, uint32 stack = 1); + uint32 SpellDamageBonusTaken(Unit* caster, SpellInfo const* spellProto, uint32 pdamage, DamageEffectType damagetype, uint32 stack = 1); int32 SpellBaseHealingBonusDone(SpellSchoolMask schoolMask); int32 SpellBaseHealingBonusTaken(SpellSchoolMask schoolMask); - uint32 SpellHealingBonusDone(Unit* victim, SpellInfo const *spellProto, uint32 healamount, DamageEffectType damagetype, uint32 stack = 1); - uint32 SpellHealingBonusTaken(Unit* caster, SpellInfo const *spellProto, uint32 healamount, DamageEffectType damagetype, uint32 stack = 1); + uint32 SpellHealingBonusDone(Unit* victim, SpellInfo const* spellProto, uint32 healamount, DamageEffectType damagetype, uint32 stack = 1); + uint32 SpellHealingBonusTaken(Unit* caster, SpellInfo const* spellProto, uint32 healamount, DamageEffectType damagetype, uint32 stack = 1); - uint32 MeleeDamageBonusDone(Unit *pVictim, uint32 damage, WeaponAttackType attType, SpellInfo const *spellProto = NULL); - uint32 MeleeDamageBonusTaken(Unit* attacker, uint32 pdamage,WeaponAttackType attType, SpellInfo const *spellProto = NULL); + uint32 MeleeDamageBonusDone(Unit* pVictim, uint32 damage, WeaponAttackType attType, SpellInfo const* spellProto = NULL); + uint32 MeleeDamageBonusTaken(Unit* attacker, uint32 pdamage, WeaponAttackType attType, SpellInfo const* spellProto = NULL); bool isSpellBlocked(Unit* victim, SpellInfo const* spellProto, WeaponAttackType attackType = BASE_ATTACK); @@ -2043,7 +2043,7 @@ class Unit : public WorldObject void SetContestedPvP(Player* attackedPlayer = NULL); uint32 GetCastingTimeForBonus(SpellInfo const* spellProto, DamageEffectType damagetype, uint32 CastingTime) const; - float CalculateDefaultCoefficient(SpellInfo const *spellInfo, DamageEffectType damagetype) const; + float CalculateDefaultCoefficient(SpellInfo const* spellInfo, DamageEffectType damagetype) const; uint32 GetRemainingPeriodicAmount(uint64 caster, uint32 spellId, AuraType auraType, uint8 effectIndex = 0) const; diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 2ba456b5b3c..619d819bf9b 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -3180,10 +3180,10 @@ void ObjectMgr::LoadPlayerInfo() uint32 max_class = current_class ? current_class + 1 : MAX_CLASSES; for (uint32 r = min_race; r < max_race; ++r) for (uint32 c = min_class; c < max_class; ++c) - if (PlayerInfo * info = _playerInfo[r][c]) + if (PlayerInfo* info = _playerInfo[r][c]) info->spell.push_back(fields[2].GetUInt32()); } - else if (PlayerInfo * info = _playerInfo[current_race][current_class]) + else if (PlayerInfo* info = _playerInfo[current_race][current_class]) info->spell.push_back(fields[2].GetUInt32()); else { diff --git a/src/server/game/Grids/Notifiers/GridNotifiers.h b/src/server/game/Grids/Notifiers/GridNotifiers.h index d2069a7f5f4..f52b6443872 100644 --- a/src/server/game/Grids/Notifiers/GridNotifiers.h +++ b/src/server/game/Grids/Notifiers/GridNotifiers.h @@ -968,7 +968,7 @@ namespace Trinity if (u->GetTypeId() == TYPEID_UNIT && ((Creature*)u)->isTotem()) return false; - if (i_funit->_IsValidAttackTarget(u, _spellInfo,i_obj->GetTypeId() == TYPEID_DYNAMICOBJECT ? i_obj : NULL) && i_obj->IsWithinDistInMap(u, i_range)) + if (i_funit->_IsValidAttackTarget(u, _spellInfo, i_obj->GetTypeId() == TYPEID_DYNAMICOBJECT ? i_obj : NULL) && i_obj->IsWithinDistInMap(u, i_range)) return true; return false; diff --git a/src/server/game/Guilds/Guild.cpp b/src/server/game/Guilds/Guild.cpp index fc80a7d7635..376ee011638 100644 --- a/src/server/game/Guilds/Guild.cpp +++ b/src/server/game/Guilds/Guild.cpp @@ -235,7 +235,7 @@ void Guild::BankEventLogEntry::WritePacket(WorldPacket& data) const data << uint8(m_eventType); data << uint64(MAKE_NEW_GUID(m_playerGuid, 0, HIGHGUID_PLAYER)); - switch(m_eventType) + switch (m_eventType) { case GUILD_BANK_LOG_DEPOSIT_ITEM: case GUILD_BANK_LOG_WITHDRAW_ITEM: diff --git a/src/server/game/Handlers/BattlefieldHandler.cpp b/src/server/game/Handlers/BattlefieldHandler.cpp index 0263b64456f..4a29dee4fb0 100644 --- a/src/server/game/Handlers/BattlefieldHandler.cpp +++ b/src/server/game/Handlers/BattlefieldHandler.cpp @@ -60,7 +60,7 @@ void WorldSession::SendBfInvitePlayerToQueue(uint32 BattleId) //Param2:(ZoneId) the zone where the battle is (4197 for wg) //Param3:(CanQueue) if able to queue //Param4:(Full) on log in is full -void WorldSession::SendBfQueueInviteResponse(uint32 BattleId,uint32 ZoneId, bool CanQueue, bool Full) +void WorldSession::SendBfQueueInviteResponse(uint32 BattleId, uint32 ZoneId, bool CanQueue, bool Full) { WorldPacket data(SMSG_BATTLEFIELD_MGR_QUEUE_REQUEST_RESPONSE, 11); data << uint32(BattleId); diff --git a/src/server/game/Handlers/GuildHandler.cpp b/src/server/game/Handlers/GuildHandler.cpp index f57a5ce020f..60749932637 100644 --- a/src/server/game/Handlers/GuildHandler.cpp +++ b/src/server/game/Handlers/GuildHandler.cpp @@ -339,7 +339,7 @@ void WorldSession::HandleGuildBankerActivate(WorldPacket& recvData) sLog->outDebug(LOG_FILTER_GUILD, "CMSG_GUILD_BANKER_ACTIVATE [%s]: Go: [" UI64FMTD "] AllSlots: %u" , GetPlayerInfo().c_str(), guid, sendAllSlots); - Guild * const guild = GetPlayer()->GetGuild(); + Guild* const guild = GetPlayer()->GetGuild(); if (!guild) { Guild::SendCommandResult(this, GUILD_COMMAND_VIEW_TAB, ERR_GUILD_PLAYER_NOT_IN_GUILD); diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp index 3ee14ed429a..c16a33ad97c 100644 --- a/src/server/game/Handlers/MiscHandler.cpp +++ b/src/server/game/Handlers/MiscHandler.cpp @@ -1684,7 +1684,7 @@ void WorldSession::HandleAreaSpiritHealerQueryOpcode(WorldPacket& recvData) sBattlegroundMgr->SendAreaSpiritHealerQueryOpcode(_player, bg, guid); if (Battlefield* bf = sBattlefieldMgr->GetBattlefieldToZoneId(_player->GetZoneId())) - bf->SendAreaSpiritHealerQueryOpcode(_player,guid); + bf->SendAreaSpiritHealerQueryOpcode(_player, guid); } void WorldSession::HandleAreaSpiritHealerQueueOpcode(WorldPacket& recvData) diff --git a/src/server/game/Maps/ZoneScript.h b/src/server/game/Maps/ZoneScript.h index 9cea5fec518..ce7168a4040 100644 --- a/src/server/game/Maps/ZoneScript.h +++ b/src/server/game/Maps/ZoneScript.h @@ -32,11 +32,11 @@ class ZoneScript virtual uint32 GetCreatureEntry(uint32 /*guidlow*/, CreatureData const* data) { return data->id; } virtual uint32 GetGameObjectEntry(uint32 /*guidlow*/, uint32 entry) { return entry; } - virtual void OnCreatureCreate(Creature *) { } - virtual void OnCreatureRemove(Creature *) { } + virtual void OnCreatureCreate(Creature* ) { } + virtual void OnCreatureRemove(Creature* ) { } - virtual void OnGameObjectCreate(GameObject *) { } - virtual void OnGameObjectRemove(GameObject *) { } + virtual void OnGameObjectCreate(GameObject* ) { } + virtual void OnGameObjectRemove(GameObject* ) { } virtual void OnUnitDeath(Unit*) { } diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index 05696694033..19dfb9df20f 100644 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -432,7 +432,7 @@ enum SpellAttr4 SPELL_ATTR4_UNK19 = 0x00080000, // 19 proc dalayed, after damage or don't proc on absorb? SPELL_ATTR4_NOT_CHECK_SELFCAST_POWER = 0x00100000, // 20 supersedes message "More powerful spell applied" for self casts. SPELL_ATTR4_UNK21 = 0x00200000, // 21 Pally aura, dk presence, dudu form, warrior stance, shadowform, hunter track - SPELL_ATTR4_UNK22 = 0x00400000, // 22 Seal of Command (42058,57770) and Gymer's Smash 55426 + SPELL_ATTR4_UNK22 = 0x00400000, // 22 Seal of Command (42058, 57770) and Gymer's Smash 55426 SPELL_ATTR4_UNK23 = 0x00800000, // 23 SPELL_ATTR4_UNK24 = 0x01000000, // 24 some shoot spell SPELL_ATTR4_IS_PET_SCALING = 0x02000000, // 25 pet scaling auras @@ -441,7 +441,7 @@ enum SpellAttr4 SPELL_ATTR4_UNK28 = 0x10000000, // 28 Aimed Shot SPELL_ATTR4_UNK29 = 0x20000000, // 29 SPELL_ATTR4_UNK30 = 0x40000000, // 30 - SPELL_ATTR4_UNK31 = 0x80000000 // 31 Polymorph (chicken) 228 and Sonic Boom (38052,38488) + SPELL_ATTR4_UNK31 = 0x80000000 // 31 Polymorph (chicken) 228 and Sonic Boom (38052, 38488) }; enum SpellAttr5 diff --git a/src/server/game/Movement/MotionMaster.cpp b/src/server/game/Movement/MotionMaster.cpp index ba648c72e26..277a5721c3d 100644 --- a/src/server/game/Movement/MotionMaster.cpp +++ b/src/server/game/Movement/MotionMaster.cpp @@ -207,11 +207,11 @@ void MotionMaster::MoveTargetedHome() else if (_owner->GetTypeId()==TYPEID_UNIT && ((Creature*)_owner)->GetCharmerOrOwnerGUID()) { sLog->outDebug(LOG_FILTER_GENERAL, "Pet or controlled creature (Entry: %u GUID: %u) targeting home", _owner->GetEntry(), _owner->GetGUIDLow()); - Unit *target = ((Creature*)_owner)->GetCharmerOrOwner(); + Unit* target = ((Creature*)_owner)->GetCharmerOrOwner(); if (target) { sLog->outDebug(LOG_FILTER_GENERAL, "Following %s (GUID: %u)", target->GetTypeId() == TYPEID_PLAYER ? "player" : "creature", target->GetTypeId() == TYPEID_PLAYER ? target->GetGUIDLow() : ((Creature*)target)->GetDBTableGUIDLow()); - Mutate(new FollowMovementGenerator(*target,PET_FOLLOW_DIST,PET_FOLLOW_ANGLE), MOTION_SLOT_ACTIVE); + Mutate(new FollowMovementGenerator(*target, PET_FOLLOW_DIST, PET_FOLLOW_ANGLE), MOTION_SLOT_ACTIVE); } } else @@ -248,7 +248,7 @@ void MotionMaster::MoveChase(Unit* target, float dist, float angle) _owner->GetGUIDLow(), target->GetTypeId() == TYPEID_PLAYER ? "player" : "creature", target->GetTypeId() == TYPEID_PLAYER ? target->GetGUIDLow() : target->ToCreature()->GetDBTableGUIDLow()); - Mutate(new ChaseMovementGenerator(*target,dist,angle), MOTION_SLOT_ACTIVE); + Mutate(new ChaseMovementGenerator(*target, dist, angle), MOTION_SLOT_ACTIVE); } else { @@ -256,7 +256,7 @@ void MotionMaster::MoveChase(Unit* target, float dist, float angle) _owner->GetEntry(), _owner->GetGUIDLow(), target->GetTypeId() == TYPEID_PLAYER ? "player" : "creature", target->GetTypeId() == TYPEID_PLAYER ? target->GetGUIDLow() : target->ToCreature()->GetDBTableGUIDLow()); - Mutate(new ChaseMovementGenerator(*target,dist,angle), MOTION_SLOT_ACTIVE); + Mutate(new ChaseMovementGenerator(*target, dist, angle), MOTION_SLOT_ACTIVE); } } @@ -272,7 +272,7 @@ void MotionMaster::MoveFollow(Unit* target, float dist, float angle, MovementSlo sLog->outDebug(LOG_FILTER_GENERAL, "Player (GUID: %u) follow to %s (GUID: %u)", _owner->GetGUIDLow(), target->GetTypeId() == TYPEID_PLAYER ? "player" : "creature", target->GetTypeId() == TYPEID_PLAYER ? target->GetGUIDLow() : target->ToCreature()->GetDBTableGUIDLow()); - Mutate(new FollowMovementGenerator(*target,dist,angle), slot); + Mutate(new FollowMovementGenerator(*target, dist, angle), slot); } else { @@ -280,7 +280,7 @@ void MotionMaster::MoveFollow(Unit* target, float dist, float angle, MovementSlo _owner->GetEntry(), _owner->GetGUIDLow(), target->GetTypeId() == TYPEID_PLAYER ? "player" : "creature", target->GetTypeId() == TYPEID_PLAYER ? target->GetGUIDLow() : target->ToCreature()->GetDBTableGUIDLow()); - Mutate(new FollowMovementGenerator(*target,dist,angle), slot); + Mutate(new FollowMovementGenerator(*target, dist, angle), slot); } } @@ -307,7 +307,7 @@ void MotionMaster::MoveLand(uint32 id, Position const& pos) sLog->outDebug(LOG_FILTER_GENERAL, "Creature (Entry: %u) landing point (ID: %u X: %f Y: %f Z: %f)", _owner->GetEntry(), id, x, y, z); Movement::MoveSplineInit init(*_owner); - init.MoveTo(x,y,z); + init.MoveTo(x, y, z); init.SetAnimation(Movement::ToGround); init.Launch(); Mutate(new EffectMovementGenerator(id), MOTION_SLOT_ACTIVE); @@ -321,7 +321,7 @@ void MotionMaster::MoveTakeoff(uint32 id, Position const& pos) sLog->outDebug(LOG_FILTER_GENERAL, "Creature (Entry: %u) landing point (ID: %u X: %f Y: %f Z: %f)", _owner->GetEntry(), id, x, y, z); Movement::MoveSplineInit init(*_owner); - init.MoveTo(x,y,z); + init.MoveTo(x, y, z); init.SetAnimation(Movement::ToFly); init.Launch(); Mutate(new EffectMovementGenerator(id), MOTION_SLOT_ACTIVE); @@ -336,13 +336,13 @@ void MotionMaster::MoveKnockbackFrom(float srcX, float srcY, float speedXY, floa float x, y, z; float moveTimeHalf = speedZ / Movement::gravity; float dist = 2 * moveTimeHalf * speedXY; - float max_height = -Movement::computeFallElevation(moveTimeHalf,false,-speedZ); + float max_height = -Movement::computeFallElevation(moveTimeHalf, false, -speedZ); _owner->GetNearPoint(_owner, x, y, z, _owner->GetObjectSize(), dist, _owner->GetAngle(srcX, srcY) + M_PI); Movement::MoveSplineInit init(*_owner); - init.MoveTo(x,y,z); - init.SetParabolic(max_height,0); + init.MoveTo(x, y, z); + init.SetParabolic(max_height, 0); init.SetOrientationFixed(true); init.SetVelocity(speedXY); init.Launch(); @@ -368,11 +368,11 @@ void MotionMaster::MoveJump(float x, float y, float z, float speedXY, float spee sLog->outDebug(LOG_FILTER_GENERAL, "Unit (GUID: %u) jump to point (X: %f Y: %f Z: %f)", _owner->GetGUIDLow(), x, y, z); float moveTimeHalf = speedZ / Movement::gravity; - float max_height = -Movement::computeFallElevation(moveTimeHalf,false,-speedZ); + float max_height = -Movement::computeFallElevation(moveTimeHalf, false, -speedZ); Movement::MoveSplineInit init(*_owner); - init.MoveTo(x,y,z); - init.SetParabolic(max_height,0); + init.MoveTo(x, y, z); + init.SetParabolic(max_height, 0); init.SetVelocity(speedXY); init.Launch(); Mutate(new EffectMovementGenerator(id), MOTION_SLOT_CONTROLLED); diff --git a/src/server/game/Movement/MovementGenerators/FleeingMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/FleeingMovementGenerator.cpp index e89d30c56f4..d9050e2b76a 100755 --- a/src/server/game/Movement/MovementGenerators/FleeingMovementGenerator.cpp +++ b/src/server/game/Movement/MovementGenerators/FleeingMovementGenerator.cpp @@ -47,7 +47,7 @@ void FleeingMovementGenerator::_setTargetLocation(T &owner) owner.AddUnitState(UNIT_STATE_FLEEING_MOVE); Movement::MoveSplineInit init(owner); - init.MoveTo(x,y,z); + init.MoveTo(x, y, z); init.SetWalk(false); init.Launch(); } @@ -153,9 +153,9 @@ bool FleeingMovementGenerator::_getPoint(T &owner, float &x, float &y, float Trinity::NormalizeMapCoord(temp_y); if (owner.IsWithinLOS(temp_x, temp_y, z)) { - bool is_water_now = _map->IsInWater(x,y,z); + bool is_water_now = _map->IsInWater(x, y, z); - if (is_water_now && _map->IsInWater(temp_x,temp_y,z)) + if (is_water_now && _map->IsInWater(temp_x, temp_y, z)) { x = temp_x; y = temp_y; @@ -173,8 +173,8 @@ bool FleeingMovementGenerator::_getPoint(T &owner, float &x, float &y, float if (!(new_z - z) || distance / fabs(new_z - z) > 1.0f) { - float new_z_left = _map->GetHeight(owner.GetPhaseMask(), temp_x + 1.0f* std::cos(angle+static_cast(M_PI/2)),temp_y + 1.0f* std::sin(angle+static_cast(M_PI/2)),z,true); - float new_z_right = _map->GetHeight(owner.GetPhaseMask(), temp_x + 1.0f* std::cos(angle-static_cast(M_PI/2)),temp_y + 1.0f* std::sin(angle-static_cast(M_PI/2)),z,true); + float new_z_left = _map->GetHeight(owner.GetPhaseMask(), temp_x + 1.0f * std::cos(angle+static_cast(M_PI/2)), temp_y + 1.0f * std::sin(angle+static_cast(M_PI/2)), z, true); + float new_z_right = _map->GetHeight(owner.GetPhaseMask(), temp_x + 1.0f * std::cos(angle-static_cast(M_PI/2)), temp_y + 1.0f * std::sin(angle-static_cast(M_PI/2)), z, true); if (fabs(new_z_left - new_z) < 1.2f && fabs(new_z_right - new_z) < 1.2f) { x = temp_x; @@ -186,7 +186,7 @@ bool FleeingMovementGenerator::_getPoint(T &owner, float &x, float &y, float } } i_to_distance_from_caster = 0.0f; - i_nextCheckTime.Reset(urand(500,1000)); + i_nextCheckTime.Reset(urand(500, 1000)); return false; } @@ -209,7 +209,7 @@ bool FleeingMovementGenerator::_setMoveData(T &owner) { // we are very far or too close, stopping i_to_distance_from_caster = 0.0f; - i_nextCheckTime.Reset(urand(500,1000)); + i_nextCheckTime.Reset(urand(500, 1000)); return false; } else @@ -293,7 +293,7 @@ void FleeingMovementGenerator::DoInitialize(T &owner) _Init(owner); - if (Unit *fright = ObjectAccessor::GetUnit(owner, i_frightGUID)) + if (Unit* fright = ObjectAccessor::GetUnit(owner, i_frightGUID)) { i_caster_x = fright->GetPositionX(); i_caster_y = fright->GetPositionY(); diff --git a/src/server/game/Movement/MovementGenerators/HomeMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/HomeMovementGenerator.cpp index 358362c9c15..4f0a620c303 100644 --- a/src/server/game/Movement/MovementGenerators/HomeMovementGenerator.cpp +++ b/src/server/game/Movement/MovementGenerators/HomeMovementGenerator.cpp @@ -40,12 +40,12 @@ void HomeMovementGenerator::_setTargetLocation(Creature & owner) Movement::MoveSplineInit init(owner); float x, y, z, o; // at apply we can select more nice return points base at current movegen - //if (owner.GetMotionMaster()->empty() || !owner.GetMotionMaster()->top()->GetResetPosition(owner,x,y,z)) + //if (owner.GetMotionMaster()->empty() || !owner.GetMotionMaster()->top()->GetResetPosition(owner, x, y, z)) //{ owner.GetHomePosition(x, y, z, o); init.SetFacing(o); //} - init.MoveTo(x,y,z); + init.MoveTo(x, y, z); init.SetWalk(false); init.Launch(); diff --git a/src/server/game/Movement/MovementGenerators/PointMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/PointMovementGenerator.cpp index 59c41d841f2..68f62d28899 100644 --- a/src/server/game/Movement/MovementGenerators/PointMovementGenerator.cpp +++ b/src/server/game/Movement/MovementGenerators/PointMovementGenerator.cpp @@ -129,7 +129,7 @@ void EffectMovementGenerator::Finalize(Unit &unit) // Need restore previous movement since we have no proper states system //if (unit.isAlive() && !unit.HasUnitState(UNIT_STATE_CONFUSED|UNIT_STATE_FLEEING)) //{ - // if (Unit * victim = unit.getVictim()) + // if (Unit* victim = unit.getVictim()) // unit.GetMotionMaster()->MoveChase(victim); // else // unit.GetMotionMaster()->Initialize(); diff --git a/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.cpp index f733fa3331c..06521fadb3a 100644 --- a/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.cpp +++ b/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.cpp @@ -165,8 +165,8 @@ bool RandomMovementGenerator::GetResetPosition(Creature &creature, flo creature.GetRespawnPosition(x, y, z, NULL, &radius); // use current if in range - if (creature.IsWithinDist2d(x,y,radius)) - creature.GetPosition(x,y,z); + if (creature.IsWithinDist2d(x, y,radius)) + creature.GetPosition(x, y, z); return true; } diff --git a/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp index ebcb830cf61..a1ac4ccb679 100755 --- a/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp +++ b/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp @@ -29,7 +29,7 @@ #include template -void TargetedMovementGeneratorMedium::_setTargetLocation(T &owner) +void TargetedMovementGeneratorMedium::_setTargetLocation(T &owner) { if (!i_target.isValid() || !i_target->IsInWorld()) return; @@ -41,7 +41,7 @@ void TargetedMovementGeneratorMedium::_setTargetLocation(T &owner) //! Following block of code deleted by MrSmite in issue 4891 //! Code kept for learning and diagnostical purposes // -// if (i_offset && i_target->IsWithinDistInMap(&owner,2*i_offset)) +// if (i_offset && i_target->IsWithinDistInMap(&owner, 2*i_offset)) // { // if (!owner.movespline->Finalized()) // return; @@ -99,7 +99,7 @@ void TargetedMovementGeneratorMedium::_setTargetLocation(T &owner) //We don't update Mob Movement, if the difference between New destination and last destination is < BothObjectSize float bothObjectSize = i_target->GetObjectBoundingRadius() + owner.GetObjectBoundingRadius() + CONTACT_DISTANCE; - if ( i_destinationHolder.HasDestination() && i_destinationHolder.GetDestinationDiff(x,y,z) < bothObjectSize ) + if ( i_destinationHolder.HasDestination() && i_destinationHolder.GetDestinationDiff(x, y,z) < bothObjectSize ) return; */ @@ -109,39 +109,39 @@ void TargetedMovementGeneratorMedium::_setTargetLocation(T &owner) i_recalculateTravel = false; Movement::MoveSplineInit init(owner); - init.MoveTo(x,y,z); + init.MoveTo(x, y, z); init.SetWalk(((D*)this)->EnableWalking()); init.Launch(); } template<> -void TargetedMovementGeneratorMedium >::UpdateFinalDistance(float /*fDistance*/) +void TargetedMovementGeneratorMedium >::UpdateFinalDistance(float /*fDistance*/) { // nothing to do for Player } template<> -void TargetedMovementGeneratorMedium >::UpdateFinalDistance(float /*fDistance*/) +void TargetedMovementGeneratorMedium >::UpdateFinalDistance(float /*fDistance*/) { // nothing to do for Player } template<> -void TargetedMovementGeneratorMedium >::UpdateFinalDistance(float fDistance) +void TargetedMovementGeneratorMedium >::UpdateFinalDistance(float fDistance) { i_offset = fDistance; i_recalculateTravel = true; } template<> -void TargetedMovementGeneratorMedium >::UpdateFinalDistance(float fDistance) +void TargetedMovementGeneratorMedium >::UpdateFinalDistance(float fDistance) { i_offset = fDistance; i_recalculateTravel = true; } template -bool TargetedMovementGeneratorMedium::DoUpdate(T &owner, uint32 time_diff) +bool TargetedMovementGeneratorMedium::DoUpdate(T &owner, uint32 time_diff) { if (!i_target.isValid() || !i_target->IsInWorld()) return false; @@ -176,7 +176,7 @@ bool TargetedMovementGeneratorMedium::DoUpdate(T &owner, uint32 time_diff) i_recheckDistance.Reset(50); //More distance let have better performance, less distance let have more sensitive reaction at target move. float allowed_dist = i_target->GetObjectSize() + owner.GetObjectSize() + MELEE_RANGE - 0.5f; - float dist = (owner.movespline->FinalDestination() - G3D::Vector3(i_target->GetPositionX(),i_target->GetPositionY(),i_target->GetPositionZ())).squaredLength(); + float dist = (owner.movespline->FinalDestination() - G3D::Vector3(i_target->GetPositionX(), i_target->GetPositionY(), i_target->GetPositionZ())).squaredLength(); if (dist >= allowed_dist * allowed_dist) _setTargetLocation(owner); } @@ -206,7 +206,7 @@ template void ChaseMovementGenerator::_reachTarget(T &owner) { if (owner.IsWithinMeleeRange(this->i_target.getTarget())) - owner.Attack(this->i_target.getTarget(),true); + owner.Attack(this->i_target.getTarget(), true); } template<> @@ -275,9 +275,9 @@ void FollowMovementGenerator::_updateSpeed(Creature &u) if (!((Creature&)u).isPet() || !i_target.isValid() || i_target->GetGUID() != u.GetOwnerGUID()) return; - u.UpdateSpeed(MOVE_RUN,true); - u.UpdateSpeed(MOVE_WALK,true); - u.UpdateSpeed(MOVE_SWIM,true); + u.UpdateSpeed(MOVE_RUN, true); + u.UpdateSpeed(MOVE_WALK, true); + u.UpdateSpeed(MOVE_SWIM, true); } template<> @@ -323,14 +323,14 @@ void FollowMovementGenerator::MovementInform(Creature &unit) } //-----------------------------------------------// -template void TargetedMovementGeneratorMedium >::_setTargetLocation(Player &); -template void TargetedMovementGeneratorMedium >::_setTargetLocation(Player &); -template void TargetedMovementGeneratorMedium >::_setTargetLocation(Creature &); -template void TargetedMovementGeneratorMedium >::_setTargetLocation(Creature &); -template bool TargetedMovementGeneratorMedium >::DoUpdate(Player &, uint32); -template bool TargetedMovementGeneratorMedium >::DoUpdate(Player &, uint32); -template bool TargetedMovementGeneratorMedium >::DoUpdate(Creature &, uint32); -template bool TargetedMovementGeneratorMedium >::DoUpdate(Creature &, uint32); +template void TargetedMovementGeneratorMedium >::_setTargetLocation(Player &); +template void TargetedMovementGeneratorMedium >::_setTargetLocation(Player &); +template void TargetedMovementGeneratorMedium >::_setTargetLocation(Creature &); +template void TargetedMovementGeneratorMedium >::_setTargetLocation(Creature &); +template bool TargetedMovementGeneratorMedium >::DoUpdate(Player &, uint32); +template bool TargetedMovementGeneratorMedium >::DoUpdate(Player &, uint32); +template bool TargetedMovementGeneratorMedium >::DoUpdate(Creature &, uint32); +template bool TargetedMovementGeneratorMedium >::DoUpdate(Creature &, uint32); template void ChaseMovementGenerator::_reachTarget(Player &); template void ChaseMovementGenerator::_reachTarget(Creature &); diff --git a/src/server/game/Movement/Spline/MoveSpline.cpp b/src/server/game/Movement/Spline/MoveSpline.cpp index 1e96cd00fd3..f6b1c07a927 100644 --- a/src/server/game/Movement/Spline/MoveSpline.cpp +++ b/src/server/game/Movement/Spline/MoveSpline.cpp @@ -32,7 +32,7 @@ Location MoveSpline::ComputePosition() const ASSERT(Initialized()); float u = 1.f; - int32 seg_time = spline.length(point_Idx,point_Idx+1); + int32 seg_time = spline.length(point_Idx, point_Idx+1); if (seg_time > 0) u = (time_passed - spline.length(point_Idx)) / (float)seg_time; Location c; @@ -103,7 +103,7 @@ struct FallInitializer float start_elevation; inline int32 operator()(Spline& s, int32 i) { - return Movement::computeFallTime(start_elevation - s.getPoint(i+1).z,false) * 1000.f; + return Movement::computeFallTime(start_elevation - s.getPoint(i+1).z, false) * 1000.f; } }; @@ -125,7 +125,7 @@ struct CommonInitializer void MoveSpline::init_spline(const MoveSplineInitArgs& args) { - const SplineBase::EvaluationMode modes[2] = {SplineBase::ModeLinear,SplineBase::ModeCatmullrom}; + const SplineBase::EvaluationMode modes[2] = {SplineBase::ModeLinear, SplineBase::ModeCatmullrom}; if (args.flags.cyclic) { uint32 cyclic_point = 0; diff --git a/src/server/game/Movement/Spline/MoveSpline.h b/src/server/game/Movement/Spline/MoveSpline.h index 46611e58447..8e51e2678dd 100644 --- a/src/server/game/Movement/Spline/MoveSpline.h +++ b/src/server/game/Movement/Spline/MoveSpline.h @@ -27,7 +27,7 @@ namespace Movement struct Location : public Vector3 { Location() : orientation(0) {} - Location(float x, float y, float z, float o) : Vector3(x,y,z), orientation(o) {} + Location(float x, float y, float z, float o) : Vector3(x, y, z), orientation(o) {} Location(const Vector3& v) : Vector3(v), orientation(0) {} Location(const Vector3& v, float o) : Vector3(v), orientation(o) {} @@ -101,14 +101,14 @@ namespace Movement ASSERT(Initialized()); do handler(_updateState(difftime)); - while(difftime > 0); + while (difftime > 0); } void updateState(int32 difftime) { ASSERT(Initialized()); do _updateState(difftime); - while(difftime > 0); + while (difftime > 0); } Location ComputePosition() const; diff --git a/src/server/game/Movement/Spline/MoveSplineFlag.h b/src/server/game/Movement/Spline/MoveSplineFlag.h index f3f436c9d00..ec7eaf7e763 100644 --- a/src/server/game/Movement/Spline/MoveSplineFlag.h +++ b/src/server/game/Movement/Spline/MoveSplineFlag.h @@ -27,7 +27,7 @@ namespace Movement #if defined( __GNUC__ ) #pragma pack(1) #else -#pragma pack(push,1) +#pragma pack(push, 1) #endif class MoveSplineFlag diff --git a/src/server/game/Movement/Spline/MoveSplineInit.cpp b/src/server/game/Movement/Spline/MoveSplineInit.cpp index b327d0d0cd6..32658d8fdc5 100644 --- a/src/server/game/Movement/Spline/MoveSplineInit.cpp +++ b/src/server/game/Movement/Spline/MoveSplineInit.cpp @@ -118,7 +118,7 @@ namespace Movement } PacketBuilder::WriteMonsterMove(move_spline, data); - unit.SendMessageToSet(&data,true); + unit.SendMessageToSet(&data, true); } MoveSplineInit::MoveSplineInit(Unit& m) : unit(m) @@ -130,7 +130,7 @@ namespace Movement args.flags.flying = unit.m_movementInfo.HasMovementFlag((MovementFlags)(MOVEMENTFLAG_CAN_FLY|MOVEMENTFLAG_DISABLE_GRAVITY)); } - void MoveSplineInit::SetFacing(const Unit * target) + void MoveSplineInit::SetFacing(const Unit* target) { args.flags.EnableFacingTarget(); args.facing.target = target->GetGUID(); diff --git a/src/server/game/Movement/Spline/MoveSplineInit.h b/src/server/game/Movement/Spline/MoveSplineInit.h index 8ebac4aec06..2188c05f2f3 100644 --- a/src/server/game/Movement/Spline/MoveSplineInit.h +++ b/src/server/game/Movement/Spline/MoveSplineInit.h @@ -75,7 +75,7 @@ namespace Movement */ void SetFacing(float angle); void SetFacing(Vector3 const& point); - void SetFacing(const Unit * target); + void SetFacing(const Unit* target); /* Initializes movement by path * @param path - array of points, shouldn't be empty diff --git a/src/server/game/Movement/Spline/MoveSplineInitArgs.h b/src/server/game/Movement/Spline/MoveSplineInitArgs.h index 32045629c9f..4a086094c3f 100644 --- a/src/server/game/Movement/Spline/MoveSplineInitArgs.h +++ b/src/server/game/Movement/Spline/MoveSplineInitArgs.h @@ -31,7 +31,7 @@ namespace Movement union FacingInfo { struct{ - float x,y,z; + float x, y, z; }f; uint64 target; float angle; diff --git a/src/server/game/Movement/Spline/MovementPacketBuilder.cpp b/src/server/game/Movement/Spline/MovementPacketBuilder.cpp index d747d6f69a6..7133fc50e9f 100644 --- a/src/server/game/Movement/Spline/MovementPacketBuilder.cpp +++ b/src/server/game/Movement/Spline/MovementPacketBuilder.cpp @@ -141,7 +141,7 @@ namespace Movement void PacketBuilder::WriteCreate(const MoveSpline& move_spline, ByteBuffer& data) { - //WriteClientStatus(mov,data); + //WriteClientStatus(mov, data); //data.append(&mov.m_float_values[SpeedWalk], SpeedMaxCount); //if (mov.SplineEnabled()) { diff --git a/src/server/game/Movement/Spline/MovementUtil.cpp b/src/server/game/Movement/Spline/MovementUtil.cpp index b69d4b39e19..99413384dd8 100644 --- a/src/server/game/Movement/Spline/MovementUtil.cpp +++ b/src/server/game/Movement/Spline/MovementUtil.cpp @@ -103,39 +103,39 @@ namespace Movement char const* g_MovementFlag_names[] = { - STR(Forward ),// 0x00000001, - STR(Backward ),// 0x00000002, - STR(Strafe_Left ),// 0x00000004, - STR(Strafe_Right ),// 0x00000008, - STR(Turn_Left ),// 0x00000010, - STR(Turn_Right ),// 0x00000020, - STR(Pitch_Up ),// 0x00000040, - STR(Pitch_Down ),// 0x00000080, - - STR(Walk ),// 0x00000100, // Walking - STR(Ontransport ),// 0x00000200, - STR(Levitation ),// 0x00000400, - STR(Root ),// 0x00000800, - STR(Falling ),// 0x00001000, - STR(Fallingfar ),// 0x00002000, - STR(Pendingstop ),// 0x00004000, - STR(PendingSTRafestop ),// 0x00008000, - STR(Pendingforward ),// 0x00010000, - STR(Pendingbackward ),// 0x00020000, - STR(PendingSTRafeleft ),// 0x00040000, - STR(PendingSTRaferight ),// 0x00080000, - STR(Pendingroot ),// 0x00100000, - STR(Swimming ),// 0x00200000, // Appears With Fly Flag Also - STR(Ascending ),// 0x00400000, // Swim Up Also - STR(Descending ),// 0x00800000, // Swim Down Also - STR(Can_Fly ),// 0x01000000, // Can Fly In 3.3? - STR(Flying ),// 0x02000000, // Actual Flying Mode - STR(Spline_Elevation ),// 0x04000000, // Used For Flight Paths - STR(Spline_Enabled ),// 0x08000000, // Used For Flight Paths - STR(Waterwalking ),// 0x10000000, // Prevent Unit From Falling Through Water - STR(Safe_Fall ),// 0x20000000, // Active Rogue Safe Fall Spell (Passive) - STR(Hover ),// 0x40000000 - STR(Unknown13 ),// 0x80000000 + STR(Forward ), // 0x00000001, + STR(Backward ), // 0x00000002, + STR(Strafe_Left ), // 0x00000004, + STR(Strafe_Right ), // 0x00000008, + STR(Turn_Left ), // 0x00000010, + STR(Turn_Right ), // 0x00000020, + STR(Pitch_Up ), // 0x00000040, + STR(Pitch_Down ), // 0x00000080, + + STR(Walk ), // 0x00000100, // Walking + STR(Ontransport ), // 0x00000200, + STR(Levitation ), // 0x00000400, + STR(Root ), // 0x00000800, + STR(Falling ), // 0x00001000, + STR(Fallingfar ), // 0x00002000, + STR(Pendingstop ), // 0x00004000, + STR(PendingSTRafestop ), // 0x00008000, + STR(Pendingforward ), // 0x00010000, + STR(Pendingbackward ), // 0x00020000, + STR(PendingSTRafeleft ), // 0x00040000, + STR(PendingSTRaferight ), // 0x00080000, + STR(Pendingroot ), // 0x00100000, + STR(Swimming ), // 0x00200000, // Appears With Fly Flag Also + STR(Ascending ), // 0x00400000, // Swim Up Also + STR(Descending ), // 0x00800000, // Swim Down Also + STR(Can_Fly ), // 0x01000000, // Can Fly In 3.3? + STR(Flying ), // 0x02000000, // Actual Flying Mode + STR(Spline_Elevation ), // 0x04000000, // Used For Flight Paths + STR(Spline_Enabled ), // 0x08000000, // Used For Flight Paths + STR(Waterwalking ), // 0x10000000, // Prevent Unit From Falling Through Water + STR(Safe_Fall ), // 0x20000000, // Active Rogue Safe Fall Spell (Passive) + STR(Hover ), // 0x40000000 + STR(Unknown13 ), // 0x80000000 STR(Unk1 ), STR(Unk2 ), STR(Unk3 ), @@ -156,38 +156,38 @@ namespace Movement char const* g_SplineFlag_names[32] = { - STR(AnimBit1 ),// 0x00000001, - STR(AnimBit2 ),// 0x00000002, - STR(AnimBit3 ),// 0x00000004, - STR(AnimBit4 ),// 0x00000008, - STR(AnimBit5 ),// 0x00000010, - STR(AnimBit6 ),// 0x00000020, - STR(AnimBit7 ),// 0x00000040, - STR(AnimBit8 ),// 0x00000080, - STR(Done ),// 0x00000100, - STR(Falling ),// 0x00000200, // Not Compartible With Trajectory Movement - STR(No_Spline ),// 0x00000400, - STR(Trajectory ),// 0x00000800, // Not Compartible With Fall Movement - STR(Walkmode ),// 0x00001000, - STR(Flying ),// 0x00002000, // Smooth Movement(Catmullrom Interpolation Mode), Flying Animation - STR(Knockback ),// 0x00004000, // Model Orientation Fixed - STR(Final_Point ),// 0x00008000, - STR(Final_Target ),// 0x00010000, - STR(Final_Angle ),// 0x00020000, - STR(Catmullrom ),// 0x00040000, // Used Catmullrom Interpolation Mode - STR(Cyclic ),// 0x00080000, // Movement By Cycled Spline - STR(Enter_Cycle ),// 0x00100000, // Everytime Appears With Cyclic Flag In Monster Move Packet - STR(Animation ),// 0x00200000, // Animationid (0...3), Uint32 Time, Not Compartible With Trajectory And Fall Movement - STR(Unknown4 ),// 0x00400000, // Disables Movement By Path - STR(Unknown5 ),// 0x00800000, - STR(Unknown6 ),// 0x01000000, - STR(Unknown7 ),// 0x02000000, - STR(Unknown8 ),// 0x04000000, - STR(OrientationInversed ),// 0x08000000, // Appears With Runmode Flag, Nodes ),// 1, Handles Orientation - STR(Unknown10 ),// 0x10000000, - STR(Unknown11 ),// 0x20000000, - STR(Unknown12 ),// 0x40000000, - STR(Unknown13 ),// 0x80000000, + STR(AnimBit1 ), // 0x00000001, + STR(AnimBit2 ), // 0x00000002, + STR(AnimBit3 ), // 0x00000004, + STR(AnimBit4 ), // 0x00000008, + STR(AnimBit5 ), // 0x00000010, + STR(AnimBit6 ), // 0x00000020, + STR(AnimBit7 ), // 0x00000040, + STR(AnimBit8 ), // 0x00000080, + STR(Done ), // 0x00000100, + STR(Falling ), // 0x00000200, // Not Compartible With Trajectory Movement + STR(No_Spline ), // 0x00000400, + STR(Trajectory ), // 0x00000800, // Not Compartible With Fall Movement + STR(Walkmode ), // 0x00001000, + STR(Flying ), // 0x00002000, // Smooth Movement(Catmullrom Interpolation Mode), Flying Animation + STR(Knockback ), // 0x00004000, // Model Orientation Fixed + STR(Final_Point ), // 0x00008000, + STR(Final_Target ), // 0x00010000, + STR(Final_Angle ), // 0x00020000, + STR(Catmullrom ), // 0x00040000, // Used Catmullrom Interpolation Mode + STR(Cyclic ), // 0x00080000, // Movement By Cycled Spline + STR(Enter_Cycle ), // 0x00100000, // Everytime Appears With Cyclic Flag In Monster Move Packet + STR(Animation ), // 0x00200000, // Animationid (0...3), Uint32 Time, Not Compartible With Trajectory And Fall Movement + STR(Unknown4 ), // 0x00400000, // Disables Movement By Path + STR(Unknown5 ), // 0x00800000, + STR(Unknown6 ), // 0x01000000, + STR(Unknown7 ), // 0x02000000, + STR(Unknown8 ), // 0x04000000, + STR(OrientationInversed ), // 0x08000000, // Appears With Runmode Flag, Nodes ), // 1, Handles Orientation + STR(Unknown10 ), // 0x10000000, + STR(Unknown11 ), // 0x20000000, + STR(Unknown12 ), // 0x40000000, + STR(Unknown13 ), // 0x80000000, }; template diff --git a/src/server/game/Movement/Spline/Spline.cpp b/src/server/game/Movement/Spline/Spline.cpp index 6970acf5415..887541e2289 100644 --- a/src/server/game/Movement/Spline/Spline.cpp +++ b/src/server/game/Movement/Spline/Spline.cpp @@ -59,7 +59,7 @@ SplineBase::InitMethtod SplineBase::initializers[SplineBase::ModesEnd] = using G3D::Matrix4; static const Matrix4 s_catmullRomCoeffs( - -0.5f, 1.5f,-1.5f, 0.5f, + -0.5f, 1.5f, -1.5f, 0.5f, 1.f, -2.5f, 2.f, -0.5f, -0.5f, 0.f, 0.5f, 0.f, 0.f, 1.f, 0.f, 0.f); @@ -222,7 +222,7 @@ void SplineBase::InitLinear(const Vector3* controls, index_type count, bool cycl points.resize(real_size); - memcpy(&points[0],controls, sizeof(Vector3) * count); + memcpy(&points[0], controls, sizeof(Vector3) * count); // first and last two indexes are space for special 'virtual points' // these points are required for proper C_Evaluate and C_Evaluate_Derivative methtod work @@ -244,7 +244,7 @@ void SplineBase::InitCatmullRom(const Vector3* controls, index_type count, bool int lo_index = 1; int high_index = lo_index + count - 1; - memcpy(&points[lo_index],controls, sizeof(Vector3) * count); + memcpy(&points[lo_index], controls, sizeof(Vector3) * count); // first and last two indexes are space for special 'virtual points' // these points are required for proper C_Evaluate and C_Evaluate_Derivative methtod work @@ -274,7 +274,7 @@ void SplineBase::InitBezier3(const Vector3* controls, index_type count, bool /*c index_type t = c / 3u; points.resize(c); - memcpy(&points[0],controls, sizeof(Vector3) * c); + memcpy(&points[0], controls, sizeof(Vector3) * c); index_lo = 0; index_hi = t-1; diff --git a/src/server/game/Movement/Spline/Spline.h b/src/server/game/Movement/Spline/Spline.h index 63e61b84579..2a2f3fa8f43 100644 --- a/src/server/game/Movement/Spline/Spline.h +++ b/src/server/game/Movement/Spline/Spline.h @@ -61,7 +61,7 @@ protected: void EvaluateLinear(index_type, float, Vector3&) const; void EvaluateCatmullRom(index_type, float, Vector3&) const; void EvaluateBezier3(index_type, float, Vector3&) const; - typedef void (SplineBase::*EvaluationMethtod)(index_type,float,Vector3&) const; + typedef void (SplineBase::*EvaluationMethtod)(index_type, float, Vector3&) const; static EvaluationMethtod evaluators[ModesEnd]; void EvaluateDerivativeLinear(index_type, float, Vector3&) const; @@ -91,13 +91,13 @@ public: @param t - percent of segment length, assumes that t in range [0, 1] @param Idx - spline segment index, should be in range [first, last) */ - void evaluate_percent(index_type Idx, float u, Vector3& c) const {(this->*evaluators[m_mode])(Idx,u,c);} + void evaluate_percent(index_type Idx, float u, Vector3& c) const {(this->*evaluators[m_mode])(Idx, u,c);} /** Caclulates derivation in index Idx, and percent of segment length t @param Idx - spline segment index, should be in range [first, last) @param t - percent of spline segment length, assumes that t in range [0, 1] */ - void evaluate_derivative(index_type Idx, float u, Vector3& hermite) const {(this->*derivative_evaluators[m_mode])(Idx,u,hermite);} + void evaluate_derivative(index_type Idx, float u, Vector3& hermite) const {(this->*derivative_evaluators[m_mode])(Idx, u,hermite);} /** Bounds for spline indexes. All indexes should be in range [first, last). */ index_type first() const { return index_lo;} @@ -119,7 +119,7 @@ public: would be no harm to have some custom initializers. */ template inline void init_spline(Init& initializer) { - initializer(m_mode,cyclic,points,index_lo,index_hi); + initializer(m_mode, cyclic, points, index_lo, index_hi); } void clear(); @@ -156,20 +156,20 @@ public: /** Calculates the position for given segment Idx, and percent of segment length t @param t = partial_segment_length / whole_segment_length @param Idx - spline segment index, should be in range [first, last). */ - void evaluate_percent(index_type Idx, float u, Vector3& c) const { SplineBase::evaluate_percent(Idx,u,c);} + void evaluate_percent(index_type Idx, float u, Vector3& c) const { SplineBase::evaluate_percent(Idx, u,c);} /** Caclulates derivation for index Idx, and percent of segment length t @param Idx - spline segment index, should be in range [first, last) @param t - percent of spline segment length, assumes that t in range [0, 1]. */ - void evaluate_derivative(index_type Idx, float u, Vector3& c) const { SplineBase::evaluate_derivative(Idx,u,c);} + void evaluate_derivative(index_type Idx, float u, Vector3& c) const { SplineBase::evaluate_derivative(Idx, u,c);} // Assumes that t in range [0, 1] index_type computeIndexInBounds(float t) const; void computeIndex(float t, index_type& out_idx, float& out_u) const; /** Initializes spline. Don't call other methods while spline not initialized. */ - void init_spline(const Vector3 * controls, index_type count, EvaluationMode m) { SplineBase::init_spline(controls,count,m);} - void init_cyclic_spline(const Vector3 * controls, index_type count, EvaluationMode m, index_type cyclic_point) { SplineBase::init_cyclic_spline(controls,count,m,cyclic_point);} + void init_spline(const Vector3 * controls, index_type count, EvaluationMode m) { SplineBase::init_spline(controls, count, m);} + void init_cyclic_spline(const Vector3 * controls, index_type count, EvaluationMode m, index_type cyclic_point) { SplineBase::init_cyclic_spline(controls, count, m,cyclic_point);} /** Initializes lengths with SplineBase::SegLength method. */ void initLengths(); @@ -181,7 +181,7 @@ public: index_type i = index_lo; lengths.resize(index_hi+1); length_type prev_length = 0, new_length = 0; - while(i < index_hi) + while (i < index_hi) { new_length = cacher(*this, i); lengths[++i] = new_length; diff --git a/src/server/game/Movement/Spline/SplineImpl.h b/src/server/game/Movement/Spline/SplineImpl.h index eded2d8c903..98f3f5fe079 100644 --- a/src/server/game/Movement/Spline/SplineImpl.h +++ b/src/server/game/Movement/Spline/SplineImpl.h @@ -81,7 +81,7 @@ template void Spline::initLengths() index_type i = index_lo; length_type length = 0; lengths.resize(index_hi+1); - while(i < index_hi ) + while (i < index_hi) { length += SegLength(i); lengths[++i] = length; diff --git a/src/server/game/OutdoorPvP/OutdoorPvP.cpp b/src/server/game/OutdoorPvP/OutdoorPvP.cpp index bb7dea76461..93bf7edc7d5 100644 --- a/src/server/game/OutdoorPvP/OutdoorPvP.cpp +++ b/src/server/game/OutdoorPvP/OutdoorPvP.cpp @@ -392,7 +392,7 @@ void OutdoorPvP::SendUpdateWorldState(uint32 field, uint32 value) if (m_sendUpdate) for (int i = 0; i < 2; ++i) for (PlayerSet::iterator itr = m_players[i].begin(); itr != m_players[i].end(); ++itr) - if (Player * const player = ObjectAccessor::FindPlayer(*itr)) + if (Player* const player = ObjectAccessor::FindPlayer(*itr)) player->SendUpdateWorldState(field, value); } @@ -402,7 +402,7 @@ void OPvPCapturePoint::SendUpdateWorldState(uint32 field, uint32 value) { // send to all players present in the area for (PlayerSet::iterator itr = m_activePlayers[team].begin(); itr != m_activePlayers[team].end(); ++itr) - if (Player * const player = ObjectAccessor::FindPlayer(*itr)) + if (Player* const player = ObjectAccessor::FindPlayer(*itr)) player->SendUpdateWorldState(field, value); } } @@ -424,7 +424,7 @@ void OPvPCapturePoint::SendObjectiveComplete(uint32 id, uint64 guid) // send to all players present in the area for (PlayerSet::iterator itr = m_activePlayers[team].begin(); itr != m_activePlayers[team].end(); ++itr) - if (Player * const player = ObjectAccessor::FindPlayer(*itr)) + if (Player* const player = ObjectAccessor::FindPlayer(*itr)) player->KilledMonsterCredit(id, guid); } @@ -563,7 +563,7 @@ void OutdoorPvP::BroadcastPacket(WorldPacket &data) const // This is faster than sWorld->SendZoneMessage for (uint32 team = 0; team < 2; ++team) for (PlayerSet::const_iterator itr = m_players[team].begin(); itr != m_players[team].end(); ++itr) - if (Player * const player = ObjectAccessor::FindPlayer(*itr)) + if (Player* const player = ObjectAccessor::FindPlayer(*itr)) player->GetSession()->SendPacket(&data); } @@ -583,13 +583,13 @@ void OutdoorPvP::TeamCastSpell(TeamId team, int32 spellId) if (spellId > 0) { for (PlayerSet::iterator itr = m_players[team].begin(); itr != m_players[team].end(); ++itr) - if (Player * const player = ObjectAccessor::FindPlayer(*itr)) + if (Player* const player = ObjectAccessor::FindPlayer(*itr)) player->CastSpell(player, (uint32)spellId, true); } else { for (PlayerSet::iterator itr = m_players[team].begin(); itr != m_players[team].end(); ++itr) - if (Player * const player = ObjectAccessor::FindPlayer(*itr)) + if (Player* const player = ObjectAccessor::FindPlayer(*itr)) player->RemoveAura((uint32)-spellId); // by stack? } } diff --git a/src/server/game/OutdoorPvP/OutdoorPvP.h b/src/server/game/OutdoorPvP/OutdoorPvP.h index 5f1607843fb..1e23f87a52e 100644 --- a/src/server/game/OutdoorPvP/OutdoorPvP.h +++ b/src/server/game/OutdoorPvP/OutdoorPvP.h @@ -285,7 +285,7 @@ class OutdoorPvP : public ZoneScript void RegisterZone(uint32 zoneid); - bool HasPlayer(Player const * player) const; + bool HasPlayer(Player const* player) const; void TeamCastSpell(TeamId team, int32 spellId); }; diff --git a/src/server/game/Scripting/MapScripts.cpp b/src/server/game/Scripting/MapScripts.cpp index 6cd6a72a06a..7cee754bba7 100644 --- a/src/server/game/Scripting/MapScripts.cpp +++ b/src/server/game/Scripting/MapScripts.cpp @@ -476,7 +476,7 @@ void Map::ScriptsProcess() // Source or target must be Creature. if (Creature* cSource = _GetScriptCreatureSourceOrTarget(source, target, step.script)) { - Unit * unit = (Unit*)cSource; + Unit* unit = (Unit*)cSource; if (step.script->MoveTo.TravelTime != 0) { float speed = unit->GetDistance(step.script->MoveTo.DestX, step.script->MoveTo.DestY, step.script->MoveTo.DestZ) / ((float)step.script->MoveTo.TravelTime * 0.001f); diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index 484a382c988..990963b8c4d 100644 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -815,7 +815,7 @@ void WorldSession::ReadMovementInfo(WorldPacket &data, MovementInfo* mi) if (mi->HasMovementFlag(MOVEMENTFLAG_SPLINE_ELEVATION)) data >> mi->splineElevation; - //! Anti-cheat checks. Please keep them in seperate if() blocks to maintain a clear overview. + //! Anti-cheat checks. Please keep them in seperate if () blocks to maintain a clear overview. //! Might be subject to latency, so just remove improper flags. #ifdef TRINITY_DEBUG #define REMOVE_VIOLATING_FLAGS(check, maskToRemove) \ diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index 12551c93346..3b5c6131c5a 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -5077,13 +5077,13 @@ void AuraEffect::HandleAuraDummy(AuraApplication const* aurApp, uint8 mode, bool switch (GetId()) { case 59628: //Tricks of the trade buff on rogue (6sec duration) - target->SetReducedThreatPercent(0,0); + target->SetReducedThreatPercent(0, 0); break; case 57934: //Tricks of the trade buff on rogue (30sec duration) if (aurApp->GetRemoveMode() == AURA_REMOVE_BY_EXPIRE || !caster->GetMisdirectionTarget()) - target->SetReducedThreatPercent(0,0); + target->SetReducedThreatPercent(0, 0); else - target->SetReducedThreatPercent(0,caster->GetMisdirectionTarget()->GetGUID()); + target->SetReducedThreatPercent(0, caster->GetMisdirectionTarget()->GetGUID()); break; } default: diff --git a/src/server/game/Spells/Auras/SpellAuras.cpp b/src/server/game/Spells/Auras/SpellAuras.cpp index b33546ee988..24a83c7990c 100644 --- a/src/server/game/Spells/Auras/SpellAuras.cpp +++ b/src/server/game/Spells/Auras/SpellAuras.cpp @@ -1350,7 +1350,7 @@ void Aura::HandleAuraSpecificMods(AuraApplication const* aurApp, Unit* caster, b if (removeMode == AURA_REMOVE_BY_ENEMY_SPELL && GetSpellInfo()->SpellFamilyFlags[1] & 0x1) { // Shattered Barrier - if (AuraEffect * dummy = caster->GetDummyAuraEffect(SPELLFAMILY_MAGE, 2945, 0)) + if (AuraEffect* dummy = caster->GetDummyAuraEffect(SPELLFAMILY_MAGE, 2945, 0)) if (roll_chance_i(dummy->GetSpellInfo()->ProcChance)) caster->CastSpell(target, 55080, true, NULL, GetEffect(0)); } diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index af6ed55ed58..9bb3eaa31f1 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -1880,7 +1880,7 @@ void Spell::SearchTargets(SEARCHER& searcher, uint32 containerMask, Unit* refere bool searchInWorld = containerMask & (GRID_MAP_TYPE_MASK_CREATURE | GRID_MAP_TYPE_MASK_PLAYER | GRID_MAP_TYPE_MASK_CORPSE); if (searchInGrid || searchInWorld) { - float x,y; + float x, y; x = pos->GetPositionX(); y = pos->GetPositionY(); @@ -1898,7 +1898,7 @@ void Spell::SearchTargets(SEARCHER& searcher, uint32 containerMask, Unit* refere if (searchInGrid) { TypeContainerVisitor grid_object_notifier(searcher); - cell.Visit(p, grid_object_notifier, map, radius, x , y); + cell.Visit(p, grid_object_notifier, map, radius, x, y); } } } @@ -2591,7 +2591,7 @@ SpellMissInfo Spell::DoSpellHitOnUnit(Unit* unit, uint32 effectMask, bool scaleA debuff_resist_chance += unit->GetMaxNegativeAuraModifierByMiscValue(SPELL_AURA_MOD_DEBUFF_RESISTANCE, int32(m_spellInfo->Dispel)); if (debuff_resist_chance > 0) - if (irand(0,10000) <= (debuff_resist_chance * 100)) + if (irand(0, 10000) <= (debuff_resist_chance * 100)) { effectMask &= ~(1 << effectNumber); returnVal = SPELL_MISS_RESIST; diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 4e4698eb01b..1dddb08be0b 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -3283,7 +3283,7 @@ void Spell::EffectWeaponDmg(SpellEffIndex effIndex) } if (m_spellInfo->SpellFamilyFlags[0] & 0x8000000) // Mocking Blow { - if (unitTarget->IsImmunedToSpellEffect(m_spellInfo,EFFECT_1) || unitTarget->GetTypeId() == TYPEID_PLAYER) + if (unitTarget->IsImmunedToSpellEffect(m_spellInfo, EFFECT_1) || unitTarget->GetTypeId() == TYPEID_PLAYER) { m_damage = 0; return; diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp index afbf85a0a13..0c298efd83e 100644 --- a/src/server/game/Spells/SpellInfo.cpp +++ b/src/server/game/Spells/SpellInfo.cpp @@ -232,7 +232,7 @@ SpellImplicitTargetInfo::StaticData SpellImplicitTargetInfo::_data[TOTAL_SPELL_ {TARGET_OBJECT_TYPE_GOBJ, TARGET_REFERENCE_TYPE_TARGET, TARGET_SELECT_CATEGORY_DEFAULT, TARGET_CHECK_DEFAULT, TARGET_DIR_NONE}, // 23 TARGET_GAMEOBJECT_TARGET {TARGET_OBJECT_TYPE_UNIT, TARGET_REFERENCE_TYPE_CASTER, TARGET_SELECT_CATEGORY_CONE, TARGET_CHECK_ENEMY, TARGET_DIR_FRONT}, // 24 TARGET_UNIT_CONE_ENEMY_24 {TARGET_OBJECT_TYPE_UNIT, TARGET_REFERENCE_TYPE_TARGET, TARGET_SELECT_CATEGORY_DEFAULT, TARGET_CHECK_DEFAULT, TARGET_DIR_NONE}, // 25 TARGET_UNIT_TARGET_ANY - {TARGET_OBJECT_TYPE_GOBJ_ITEM, TARGET_REFERENCE_TYPE_TARGET, TARGET_SELECT_CATEGORY_DEFAULT, TARGET_CHECK_DEFAULT, TARGET_DIR_NONE}, // 26 TARGET_GAMEOBJECT_ITEM_TARGET + {TARGET_OBJECT_TYPE_GOBJ_ITEM, TARGET_REFERENCE_TYPE_TARGET, TARGET_SELECT_CATEGORY_DEFAULT, TARGET_CHECK_DEFAULT, TARGET_DIR_NONE}, // 26 TARGET_GAMEOBJECT_ITEM_TARGET {TARGET_OBJECT_TYPE_UNIT, TARGET_REFERENCE_TYPE_CASTER, TARGET_SELECT_CATEGORY_DEFAULT, TARGET_CHECK_DEFAULT, TARGET_DIR_NONE}, // 27 TARGET_UNIT_MASTER {TARGET_OBJECT_TYPE_DEST, TARGET_REFERENCE_TYPE_DEST, TARGET_SELECT_CATEGORY_DEFAULT, TARGET_CHECK_ENEMY, TARGET_DIR_NONE}, // 28 TARGET_DEST_DYNOBJ_ENEMY {TARGET_OBJECT_TYPE_DEST, TARGET_REFERENCE_TYPE_DEST, TARGET_SELECT_CATEGORY_DEFAULT, TARGET_CHECK_ALLY, TARGET_DIR_NONE}, // 29 TARGET_DEST_DYNOBJ_ALLY @@ -267,7 +267,7 @@ SpellImplicitTargetInfo::StaticData SpellImplicitTargetInfo::_data[TOTAL_SPELL_ {TARGET_OBJECT_TYPE_UNIT, TARGET_REFERENCE_TYPE_CASTER, TARGET_SELECT_CATEGORY_NEARBY, TARGET_CHECK_RAID, TARGET_DIR_NONE}, // 58 TARGET_UNIT_NEARBY_RAID {TARGET_OBJECT_TYPE_UNIT, TARGET_REFERENCE_TYPE_CASTER, TARGET_SELECT_CATEGORY_CONE, TARGET_CHECK_ALLY, TARGET_DIR_FRONT}, // 59 TARGET_UNIT_CONE_ALLY {TARGET_OBJECT_TYPE_UNIT, TARGET_REFERENCE_TYPE_CASTER, TARGET_SELECT_CATEGORY_CONE, TARGET_CHECK_ENTRY, TARGET_DIR_FRONT}, // 60 TARGET_UNIT_CONE_ENTRY - {TARGET_OBJECT_TYPE_UNIT, TARGET_REFERENCE_TYPE_TARGET, TARGET_SELECT_CATEGORY_AREA, TARGET_CHECK_RAID_CLASS,TARGET_DIR_NONE}, // 61 TARGET_UNIT_TARGET_AREA_RAID_CLASS + {TARGET_OBJECT_TYPE_UNIT, TARGET_REFERENCE_TYPE_TARGET, TARGET_SELECT_CATEGORY_AREA, TARGET_CHECK_RAID_CLASS, TARGET_DIR_NONE}, // 61 TARGET_UNIT_TARGET_AREA_RAID_CLASS {TARGET_OBJECT_TYPE_NONE, TARGET_REFERENCE_TYPE_NONE, TARGET_SELECT_CATEGORY_NYI, TARGET_CHECK_DEFAULT, TARGET_DIR_NONE}, // 62 TARGET_UNK_62 {TARGET_OBJECT_TYPE_DEST, TARGET_REFERENCE_TYPE_TARGET, TARGET_SELECT_CATEGORY_DEFAULT, TARGET_CHECK_DEFAULT, TARGET_DIR_NONE}, // 63 TARGET_DEST_TARGET_ANY {TARGET_OBJECT_TYPE_DEST, TARGET_REFERENCE_TYPE_TARGET, TARGET_SELECT_CATEGORY_DEFAULT, TARGET_CHECK_DEFAULT, TARGET_DIR_FRONT}, // 64 TARGET_DEST_TARGET_FRONT @@ -299,9 +299,9 @@ SpellImplicitTargetInfo::StaticData SpellImplicitTargetInfo::_data[TOTAL_SPELL_ {TARGET_OBJECT_TYPE_UNIT, TARGET_REFERENCE_TYPE_TARGET, TARGET_SELECT_CATEGORY_DEFAULT, TARGET_CHECK_DEFAULT, TARGET_DIR_NONE}, // 90 TARGET_UNIT_TARGET_MINIPET {TARGET_OBJECT_TYPE_DEST, TARGET_REFERENCE_TYPE_DEST, TARGET_SELECT_CATEGORY_DEFAULT, TARGET_CHECK_DEFAULT, TARGET_DIR_RANDOM}, // 91 TARGET_DEST_DEST_RADIUS {TARGET_OBJECT_TYPE_UNIT, TARGET_REFERENCE_TYPE_CASTER, TARGET_SELECT_CATEGORY_DEFAULT, TARGET_CHECK_DEFAULT, TARGET_DIR_NONE}, // 92 TARGET_UNIT_SUMMONER - {TARGET_OBJECT_TYPE_CORPSE, TARGET_REFERENCE_TYPE_SRC, TARGET_SELECT_CATEGORY_NYI, TARGET_CHECK_ENEMY, TARGET_DIR_NONE}, // 93 TARGET_CORPSE_SRC_AREA_ENEMY + {TARGET_OBJECT_TYPE_CORPSE, TARGET_REFERENCE_TYPE_SRC, TARGET_SELECT_CATEGORY_NYI, TARGET_CHECK_ENEMY, TARGET_DIR_NONE}, // 93 TARGET_CORPSE_SRC_AREA_ENEMY {TARGET_OBJECT_TYPE_UNIT, TARGET_REFERENCE_TYPE_CASTER, TARGET_SELECT_CATEGORY_DEFAULT, TARGET_CHECK_DEFAULT, TARGET_DIR_NONE}, // 94 TARGET_UNIT_VEHICLE - {TARGET_OBJECT_TYPE_UNIT, TARGET_REFERENCE_TYPE_TARGET, TARGET_SELECT_CATEGORY_DEFAULT, TARGET_CHECK_PASSENGER, TARGET_DIR_NONE}, // 95 TARGET_UNIT_TARGET_PASSENGER + {TARGET_OBJECT_TYPE_UNIT, TARGET_REFERENCE_TYPE_TARGET, TARGET_SELECT_CATEGORY_DEFAULT, TARGET_CHECK_PASSENGER, TARGET_DIR_NONE}, // 95 TARGET_UNIT_TARGET_PASSENGER {TARGET_OBJECT_TYPE_UNIT, TARGET_REFERENCE_TYPE_CASTER, TARGET_SELECT_CATEGORY_DEFAULT, TARGET_CHECK_DEFAULT, TARGET_DIR_NONE}, // 96 TARGET_UNIT_PASSENGER_0 {TARGET_OBJECT_TYPE_UNIT, TARGET_REFERENCE_TYPE_CASTER, TARGET_SELECT_CATEGORY_DEFAULT, TARGET_CHECK_DEFAULT, TARGET_DIR_NONE}, // 97 TARGET_UNIT_PASSENGER_1 {TARGET_OBJECT_TYPE_UNIT, TARGET_REFERENCE_TYPE_CASTER, TARGET_SELECT_CATEGORY_DEFAULT, TARGET_CHECK_DEFAULT, TARGET_DIR_NONE}, // 98 TARGET_UNIT_PASSENGER_2 diff --git a/src/server/game/Warden/Warden.h b/src/server/game/Warden/Warden.h index 7a61f3d5723..b9470b0c8a7 100644 --- a/src/server/game/Warden/Warden.h +++ b/src/server/game/Warden/Warden.h @@ -40,7 +40,7 @@ enum WardenOpcodes WARDEN_SMSG_MODULE_CACHE = 1, WARDEN_SMSG_CHEAT_CHECKS_REQUEST = 2, WARDEN_SMSG_MODULE_INITIALIZE = 3, - WARDEN_SMSG_MEM_CHECKS_REQUEST = 4, // byte len; while(!EOF) { byte unk(1); byte index(++); string module(can be 0); int offset; byte len; byte[] bytes_to_compare[len]; } + WARDEN_SMSG_MEM_CHECKS_REQUEST = 4, // byte len; while (!EOF) { byte unk(1); byte index(++); string module(can be 0); int offset; byte len; byte[] bytes_to_compare[len]; } WARDEN_SMSG_HASH_REQUEST = 5 }; @@ -60,7 +60,7 @@ enum WardenCheckType #if defined(__GNUC__) #pragma pack(1) #else -#pragma pack(push,1) +#pragma pack(push, 1) #endif struct WardenModuleUse diff --git a/src/server/game/Warden/WardenMac.cpp b/src/server/game/Warden/WardenMac.cpp index d1df94d7f07..7c2979e0dc6 100644 --- a/src/server/game/Warden/WardenMac.cpp +++ b/src/server/game/Warden/WardenMac.cpp @@ -38,7 +38,7 @@ WardenMac::~WardenMac() { } -void WardenMac::Init(WorldSession *pClient, BigNumber *K) +void WardenMac::Init(WorldSession* pClient, BigNumber* K) { _session = pClient; // Generate Warden Key diff --git a/src/server/game/Warden/WardenWin.cpp b/src/server/game/Warden/WardenWin.cpp index bff12280d89..4da05eded0c 100644 --- a/src/server/game/Warden/WardenWin.cpp +++ b/src/server/game/Warden/WardenWin.cpp @@ -42,7 +42,7 @@ WardenWin::~WardenWin() { } -void WardenWin::Init(WorldSession* session, BigNumber *k) +void WardenWin::Init(WorldSession* session, BigNumber* k) { _session = session; // Generate Warden Key @@ -368,7 +368,7 @@ void WardenWin::HandleData(ByteBuffer &buff) sLog->outDebug(LOG_FILTER_WARDEN, "Ticks diff %u", ourTicks - newClientTicks); } - WardenCheckResult *rs; + WardenCheckResult* rs; WardenCheck *rd; uint8 type; uint16 checkFailed = 0; diff --git a/src/server/game/Warden/WardenWin.h b/src/server/game/Warden/WardenWin.h index 102a64c6895..1b1cc6746f4 100644 --- a/src/server/game/Warden/WardenWin.h +++ b/src/server/game/Warden/WardenWin.h @@ -28,7 +28,7 @@ #if defined(__GNUC__) #pragma pack(1) #else -#pragma pack(push,1) +#pragma pack(push, 1) #endif struct WardenInitModuleRequest diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index d232920418d..068bca2692f 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -2889,7 +2889,7 @@ void World::ResetMonthlyQuests() void World::ResetEventSeasonalQuests(uint16 event_id) { PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_QUEST_STATUS_SEASONAL); - stmt->setUInt16(0,event_id); + stmt->setUInt16(0, event_id); CharacterDatabase.Execute(stmt); for (SessionMap::const_iterator itr = m_sessions.begin(); itr != m_sessions.end(); ++itr) diff --git a/src/server/scripts/Commands/cs_debug.cpp b/src/server/scripts/Commands/cs_debug.cpp index 030bc136333..400e35b705b 100644 --- a/src/server/scripts/Commands/cs_debug.cpp +++ b/src/server/scripts/Commands/cs_debug.cpp @@ -1120,13 +1120,13 @@ public: if (isInt32) { uint32 value = (uint32)atoi(y); - target->SetUInt32Value(opcode , value); + target->SetUInt32Value(opcode, value); handler->PSendSysMessage(LANG_SET_UINT_FIELD, GUID_LOPART(guid), opcode, value); } else { float value = (float)atof(y); - target->SetFloatValue(opcode , value); + target->SetFloatValue(opcode, value); handler->PSendSysMessage(LANG_SET_FLOAT_FIELD, GUID_LOPART(guid), opcode, value); } @@ -1328,7 +1328,7 @@ public: { Player* player = handler->GetSession()->GetPlayer(); - sLog->outInfo(LOG_FILTER_SQL_DEV, "(@PATH, XX, %.3f, %.3f, %.5f, 0,0, 0,100, 0),", player->GetPositionX(), player->GetPositionY(), player->GetPositionZ()); + sLog->outInfo(LOG_FILTER_SQL_DEV, "(@PATH, XX, %.3f, %.3f, %.5f, 0, 0, 0, 100, 0),", player->GetPositionX(), player->GetPositionY(), player->GetPositionZ()); handler->PSendSysMessage("Waypoint SQL written to SQL Developer log"); return true; diff --git a/src/server/scripts/Commands/cs_quest.cpp b/src/server/scripts/Commands/cs_quest.cpp index a8748bc1adf..e10cf883518 100644 --- a/src/server/scripts/Commands/cs_quest.cpp +++ b/src/server/scripts/Commands/cs_quest.cpp @@ -80,7 +80,7 @@ public: // check item starting quest (it can work incorrectly if added without item in inventory) ItemTemplateContainer const* itc = sObjectMgr->GetItemTemplateStore(); - ItemTemplateContainer::const_iterator result = find_if(itc->begin(), itc->end(), Finder(entry, &ItemTemplate::StartQuest)); + ItemTemplateContainer::const_iterator result = find_if (itc->begin(), itc->end(), Finder(entry, &ItemTemplate::StartQuest)); if (result != itc->end()) { diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp index 3a026d23faa..ae4b6197f4c 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp @@ -603,7 +603,7 @@ public: void netherspite_infernal::netherspite_infernalAI::Cleanup() { - Creature *pMalchezaar = Unit::GetCreature(*me, malchezaar); + Creature* pMalchezaar = Unit::GetCreature(*me, malchezaar); if (pMalchezaar && pMalchezaar->isAlive()) CAST_AI(boss_malchezaar::boss_malchezaarAI, pMalchezaar->AI())->Cleanup(me, point); 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 32ce484f715..27e057ce6aa 100644 --- a/src/server/scripts/EasternKingdoms/ScarletEnclave/zone_the_scarlet_enclave.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/zone_the_scarlet_enclave.cpp @@ -104,7 +104,7 @@ public: { me->HandleEmoteCommand(EMOTE_ONESHOT_CUSTOM_SPELL_01); DoCast(player, SPELL_REVIVE, true); - Talk(WHISPER_REVIVE,player->GetGUID()); + Talk(WHISPER_REVIVE, player->GetGUID()); } FlyBackTimer = 5000; break; diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp index b596ad3f609..5d164fbfafa 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp @@ -117,7 +117,7 @@ class boss_darkmaster_gandling : public CreatureScript case EVENT_SHADOW_PORTAL: if (HealthAbovePct(3)) { - DoCast(SelectTarget(SELECT_TARGET_RANDOM,0, 100, true),SPELL_SHADOW_PORTAL,true); + DoCast(SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true), SPELL_SHADOW_PORTAL, true); events.ScheduleEvent(EVENT_SHADOW_PORTAL, urand(17000, 27000)); } } @@ -172,7 +172,7 @@ class spell_shadow_portal : public SpellScriptLoader { if (attempts++ >= 6) break; - switch (urand(0,5)) + switch (urand(0, 5)) { case ROOM_HALL_OF_SECRETS: if (InstanceScript* instance = GetCaster()->GetInstanceScript()) @@ -223,7 +223,7 @@ class spell_shadow_portal : public SpellScriptLoader } }; -// Script for Shadow Portal spells 17863,17939,17943,17944,17946,17948 +// Script for Shadow Portal spells 17863, 17939, 17943, 17944, 17946, 17948 Position const SummonPos[18] = { // Hall of Secrects @@ -331,7 +331,7 @@ class spell_shadow_portal_rooms : public SpellScriptLoader if (Summoned) { Summoned->GetMotionMaster()->MoveRandom(5); - Summoned->AI()->SetData(0,phase_to_set); + Summoned->AI()->SetData(0, phase_to_set); } } diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_illucia_barov.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_illucia_barov.cpp index d09a5ae96c9..617dff17220 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_illucia_barov.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_illucia_barov.cpp @@ -48,7 +48,7 @@ class boss_illucia_barov : public CreatureScript struct boss_illuciabarovAI : public BossAI { - boss_illuciabarovAI(Creature* creature) : BossAI(creature,DATA_LADYILLUCIABAROV) {} + boss_illuciabarovAI(Creature* creature) : BossAI(creature, DATA_LADYILLUCIABAROV) {} void EnterCombat(Unit* /*who*/) { @@ -78,7 +78,7 @@ class boss_illucia_barov : public CreatureScript events.ScheduleEvent(EVENT_CURSEOFAGONY, 30000); break; case EVENT_SHADOWSHOCK: - DoCast(SelectTarget(SELECT_TARGET_RANDOM,0, 100, true),SPELL_SHADOWSHOCK,true); + DoCast(SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true), SPELL_SHADOWSHOCK, true); events.ScheduleEvent(EVENT_SHADOWSHOCK, 12000); break; case EVENT_SILENCE: diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_instructor_malicia.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_instructor_malicia.cpp index 5036158cae2..e2c7287f178 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_instructor_malicia.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_instructor_malicia.cpp @@ -91,7 +91,7 @@ class boss_instructor_malicia : public CreatureScript events.ScheduleEvent(EVENT_CALLOFGRAVES, 65000); break; case EVENT_CORRUPTION: - DoCast(SelectTarget(SELECT_TARGET_RANDOM,0, 100, true),SPELL_CORRUPTION,true); + DoCast(SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true), SPELL_CORRUPTION, true); events.ScheduleEvent(EVENT_CORRUPTION, 24000); break; case EVENT_RENEW: 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 32c16a1c70c..b0a2d48d053 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp @@ -152,7 +152,7 @@ class boss_kirtonos_the_herald : public CreatureScript switch (_introEvent) { case INTRO_1: - me->GetMotionMaster()->MovePath(KIRTONOS_PATH,false); + me->GetMotionMaster()->MovePath(KIRTONOS_PATH, false); _introEvent = 0; break; case INTRO_2: 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 e8fb4324d00..3a7aee0d6c6 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_lord_alexei_barov.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_lord_alexei_barov.cpp @@ -74,7 +74,7 @@ class boss_lord_alexei_barov : public CreatureScript switch (eventId) { case EVENT_IMMOLATE: - DoCast(SelectTarget(SELECT_TARGET_RANDOM,0, 100, true),SPELL_IMMOLATE,true); + DoCast(SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true), SPELL_IMMOLATE, true); events.ScheduleEvent(EVENT_IMMOLATE, 12000); break; case EVENT_VEILOFSHADOW: diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp index 6e3f024ac1d..c186ada72b7 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp @@ -114,7 +114,7 @@ public: if (instance) { - if (Creature *temp = Unit::GetCreature(*me, instance->GetData64(DATA_ALYTHESS))) + if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(DATA_ALYTHESS))) { if (temp->isDead()) temp->Respawn(); @@ -145,7 +145,7 @@ public: if (instance) { - Creature *temp = Unit::GetCreature(*me, instance->GetData64(DATA_ALYTHESS)); + Creature* temp = Unit::GetCreature(*me, instance->GetData64(DATA_ALYTHESS)); if (temp && temp->isAlive() && !temp->getVictim()) temp->AI()->AttackStart(who); } @@ -374,7 +374,7 @@ public: if (instance) { - if (Creature *temp = Unit::GetCreature((*me), instance->GetData64(DATA_SACROLASH))) + if (Creature* temp = Unit::GetCreature((*me), instance->GetData64(DATA_SACROLASH))) { if (temp->isDead()) temp->Respawn(); @@ -406,7 +406,7 @@ public: if (instance) { - Creature *temp = Unit::GetCreature(*me, instance->GetData64(DATA_SACROLASH)); + Creature* temp = Unit::GetCreature(*me, instance->GetData64(DATA_SACROLASH)); if (temp && temp->isAlive() && !temp->getVictim()) temp->AI()->AttackStart(who); } diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/instance_sunwell_plateau.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/instance_sunwell_plateau.cpp index d575b7633cb..57699a34e17 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/instance_sunwell_plateau.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/instance_sunwell_plateau.cpp @@ -122,7 +122,7 @@ public: return false; } - Player const * GetPlayerInMap() const + Player const* GetPlayerInMap() const { Map::PlayerList const& players = instance->GetPlayers(); diff --git a/src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp b/src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp index 22c4da74d44..81f64ce6de0 100644 --- a/src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp +++ b/src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp @@ -102,7 +102,7 @@ class boss_archaedas : public CreatureScript DoCast(minion, SPELL_AWAKEN_VAULT_WALKER, flag); minion->CastSpell(minion, SPELL_ARCHAEDAS_AWAKEN, true); minion->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - minion->RemoveFlag(UNIT_FIELD_FLAGS,UNIT_FLAG_DISABLE_MOVE); + minion->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE); minion->setFaction(14); } } diff --git a/src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp b/src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp index ac26056c6e6..df87eaca5a8 100644 --- a/src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp +++ b/src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp @@ -205,7 +205,7 @@ class instance_uldaman : public InstanceMapScript continue; archaedas->CastSpell(target, SPELL_AWAKEN_VAULT_WALKER, true); target->CastSpell(target, SPELL_ARCHAEDAS_AWAKEN, true); - target->RemoveFlag(UNIT_FIELD_FLAGS,UNIT_FLAG_DISABLE_MOVE); + target->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE); target->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); target->setFaction(14); return; // only want the first one we find diff --git a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp index 59997ebaa31..44fa0f87177 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp @@ -314,7 +314,7 @@ 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); @@ -330,7 +330,7 @@ class npc_harrison_jones : public CreatureScript switch (_gongEvent) { case GONG_EVENT_1: - me->GetMotionMaster()->MovePath(HARRISON_MOVE_1,false); + me->GetMotionMaster()->MovePath(HARRISON_MOVE_1, false); _gongEvent = GONG_EVENT_2; _gongTimer = 12000; break; @@ -345,14 +345,14 @@ class npc_harrison_jones : public CreatureScript break; case GONG_EVENT_3: if (GameObject* gong = me->GetMap()->GetGameObject(instance->GetData64(GO_STRANGE_GONG))) - gong->RemoveFlag(GAMEOBJECT_FLAGS,GO_FLAG_NOT_SELECTABLE); + gong->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); _gongEvent = GONG_EVENT_4; _gongTimer = 105000; break; case GONG_EVENT_4: me->RemoveAura(SPELL_BANGING_THE_GONG); if (GameObject* gong = me->GetMap()->GetGameObject(instance->GetData64(GO_STRANGE_GONG))) - gong->SetFlag(GAMEOBJECT_FLAGS,GO_FLAG_NOT_SELECTABLE); + gong->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); // trigger or gong will need to be scripted to set IN_PROGRESS after enough hits. // This is temp workaround. @@ -362,7 +362,7 @@ class npc_harrison_jones : public CreatureScript if (instance->GetData(DATA_GONGEVENT) == IN_PROGRESS) { // Players are Now Saved to instance at SPECIAL (Player should be notified?) - me->GetMotionMaster()->MovePath(HARRISON_MOVE_2,false); + me->GetMotionMaster()->MovePath(HARRISON_MOVE_2, false); _gongEvent = GONG_EVENT_5; _gongTimer = 5000; } @@ -401,12 +401,12 @@ class npc_harrison_jones : public CreatureScript ptarget->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 0, uint32(WEAPON_SPEAR)); ptarget->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC); ptarget->SetReactState(REACT_PASSIVE); - ptarget->AI()->SetData(0,1); + ptarget->AI()->SetData(0, 1); } else ptarget->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC); ptarget->SetReactState(REACT_PASSIVE); - ptarget->AI()->SetData(0,2); + ptarget->AI()->SetData(0, 2); } } } @@ -421,7 +421,7 @@ class npc_harrison_jones : public CreatureScript DoCast(me, SPELL_STEALTH); me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 0, uint32(0)); me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE); - me->GetMotionMaster()->MovePath(HARRISON_MOVE_3,false); + me->GetMotionMaster()->MovePath(HARRISON_MOVE_3, false); _gongTimer = 1000; _gongEvent = 0; break; diff --git a/src/server/scripts/Events/childrens_week.cpp b/src/server/scripts/Events/childrens_week.cpp index 26f83922f87..9d35b510f6e 100644 --- a/src/server/scripts/Events/childrens_week.cpp +++ b/src/server/scripts/Events/childrens_week.cpp @@ -189,10 +189,10 @@ class npc_winterfin_playmate : public CreatureScript return; } - switch(phase) + switch (phase) { case 1: - orphan->GetMotionMaster()->MovePoint(0, me->GetPositionX() + cos(me->GetOrientation()) * 5,me->GetPositionY() + sin(me->GetOrientation()) * 5, me->GetPositionZ()); + orphan->GetMotionMaster()->MovePoint(0, me->GetPositionX() + cos(me->GetOrientation()) * 5, me->GetPositionY() + sin(me->GetOrientation()) * 5, me->GetPositionZ()); orphan->AI()->Talk(TEXT_ORACLE_ORPHAN_1); timer = 3000; break; @@ -290,7 +290,7 @@ class npc_snowfall_glade_playmate : public CreatureScript switch (phase) { case 1: - orphan->GetMotionMaster()->MovePoint(0, me->GetPositionX() + cos(me->GetOrientation()) * 5,me->GetPositionY() + sin(me->GetOrientation()) * 5, me->GetPositionZ()); + orphan->GetMotionMaster()->MovePoint(0, me->GetPositionX() + cos(me->GetOrientation()) * 5, me->GetPositionY() + sin(me->GetOrientation()) * 5, me->GetPositionZ()); orphan->AI()->Talk(TEXT_WOLVAR_ORPHAN_1); timer = 5000; break; @@ -810,7 +810,7 @@ class npc_alexstraza_the_lifebinder : public CreatureScript timer = 5000; break; case 8: - if(Creature* krasus = me->FindNearestCreature(NPC_KRASUS, 10.0f)) + if (Creature* krasus = me->FindNearestCreature(NPC_KRASUS, 10.0f)) { orphan->SetFacingToObject(krasus); krasus->AI()->Talk(TEXT_KRASUS_8); @@ -974,7 +974,7 @@ class npc_cw_area_trigger : public CreatureScript if (Creature* samuro = me->FindNearestCreature(25151, 20.0f)) { uint32 emote = 0; - switch(urand(1,5)) + switch (urand(1, 5)) { case 1: emote = EMOTE_ONESHOT_WAVE; diff --git a/src/server/scripts/Kalimdor/zone_silithus.cpp b/src/server/scripts/Kalimdor/zone_silithus.cpp index 58665224bdd..a612269eff7 100644 --- a/src/server/scripts/Kalimdor/zone_silithus.cpp +++ b/src/server/scripts/Kalimdor/zone_silithus.cpp @@ -544,7 +544,7 @@ public: switch (AnimationCount) { case 0: - Talk(ANACHRONOS_SAY_1,Fandral->GetGUID()); + Talk(ANACHRONOS_SAY_1, Fandral->GetGUID()); break; case 1: Fandral->SetTarget(me->GetGUID()); diff --git a/src/server/scripts/Kalimdor/zone_the_barrens.cpp b/src/server/scripts/Kalimdor/zone_the_barrens.cpp index 8f7ab09260b..b349de8f083 100644 --- a/src/server/scripts/Kalimdor/zone_the_barrens.cpp +++ b/src/server/scripts/Kalimdor/zone_the_barrens.cpp @@ -146,7 +146,7 @@ public: Talk(SAY_GIL_FREEBOOTERS, player->GetGUID()); break; case 37: - Talk(SAY_GIL_ALMOST,player->GetGUID()); + Talk(SAY_GIL_ALMOST, player->GetGUID()); break; case 47: Talk(SAY_GIL_SWEET, player->GetGUID()); diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_amanitar.cpp b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_amanitar.cpp index 02245c92efd..d484e2a4279 100644 --- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_amanitar.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_amanitar.cpp @@ -89,11 +89,11 @@ public: { _EnterCombat(); - events.ScheduleEvent(EVENT_ROOT, urand(5,9)*IN_MILLISECONDS); - events.ScheduleEvent(EVENT_BASH, urand(10,14)*IN_MILLISECONDS); - events.ScheduleEvent(EVENT_BOLT, urand(15,20)*IN_MILLISECONDS); - events.ScheduleEvent(EVENT_MINI, urand(12,18)*IN_MILLISECONDS); - events.ScheduleEvent(EVENT_SPAWN, 5 *IN_MILLISECONDS); + events.ScheduleEvent(EVENT_ROOT, urand(5, 9) * IN_MILLISECONDS); + events.ScheduleEvent(EVENT_BASH, urand(10, 14) * IN_MILLISECONDS); + events.ScheduleEvent(EVENT_BOLT, urand(15, 20) * IN_MILLISECONDS); + events.ScheduleEvent(EVENT_MINI, urand(12, 18) * IN_MILLISECONDS); + events.ScheduleEvent(EVENT_SPAWN, 5 * IN_MILLISECONDS); me->SetInCombatWithZone(); if (instance) @@ -123,7 +123,7 @@ public: { u = 1 - u; trigger->DisappearAndDie(); - me->SummonCreature(u > 0 ? NPC_POISONOUS_MUSHROOM : NPC_HEALTHY_MUSHROOM, pos, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 60*IN_MILLISECONDS); + me->SummonCreature(u > 0 ? NPC_POISONOUS_MUSHROOM : NPC_HEALTHY_MUSHROOM, pos, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 60 * IN_MILLISECONDS); } } } @@ -145,23 +145,23 @@ public: { case EVENT_SPAWN: SpawnAdds(); - events.ScheduleEvent(EVENT_SPAWN, 20*IN_MILLISECONDS); + events.ScheduleEvent(EVENT_SPAWN, 20 * IN_MILLISECONDS); break; case EVENT_MINI: DoCast(SPELL_MINI); - events.ScheduleEvent(EVENT_MINI, urand(25,30)*IN_MILLISECONDS); + events.ScheduleEvent(EVENT_MINI, urand(25, 30) * IN_MILLISECONDS); break; case EVENT_ROOT: - DoCast(SelectTarget(SELECT_TARGET_RANDOM,0, 100, true),SPELL_ENTANGLING_ROOTS,true); - events.ScheduleEvent(EVENT_ROOT, urand(10,15)*IN_MILLISECONDS); + DoCast(SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true), SPELL_ENTANGLING_ROOTS, true); + events.ScheduleEvent(EVENT_ROOT, urand(10, 15) * IN_MILLISECONDS); break; case EVENT_BASH: DoCastVictim(SPELL_BASH); - events.ScheduleEvent(EVENT_BASH, urand(7,12)*IN_MILLISECONDS); + events.ScheduleEvent(EVENT_BASH, urand(7, 12) * IN_MILLISECONDS); break; case EVENT_BOLT: - DoCast(SelectTarget(SELECT_TARGET_RANDOM,0, 100, true),SPELL_VENOM_BOLT_VOLLEY,true); - events.ScheduleEvent(EVENT_BOLT, urand(18,22)*IN_MILLISECONDS); + DoCast(SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true), SPELL_VENOM_BOLT_VOLLEY, true); + events.ScheduleEvent(EVENT_BOLT, urand(18, 22) * IN_MILLISECONDS); break; default: break; @@ -191,7 +191,7 @@ public: void Reset() { events.Reset(); - events.ScheduleEvent(EVENT_AURA, 1*IN_MILLISECONDS); + events.ScheduleEvent(EVENT_AURA, 1 * IN_MILLISECONDS); me->SetDisplayId(me->GetCreatureTemplate()->Modelid2); DoCast(SPELL_PUTRID_MUSHROOM); @@ -231,7 +231,7 @@ public: DoCast(me, SPELL_POISONOUS_MUSHROOM_VISUAL_AREA, true); DoCast(me, SPELL_POISONOUS_MUSHROOM_POISON_CLOUD); } - events.ScheduleEvent(EVENT_AURA, 7*IN_MILLISECONDS); + events.ScheduleEvent(EVENT_AURA, 7 * IN_MILLISECONDS); break; default: break; @@ -250,4 +250,4 @@ void AddSC_boss_amanitar() { new boss_amanitar(); new mob_amanitar_mushrooms(); -} \ No newline at end of file +} 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 cd583603734..ac668c33874 100644 --- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_elder_nadox.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_elder_nadox.cpp @@ -94,13 +94,13 @@ class boss_elder_nadox : public CreatureScript if (instance) instance->SetData(DATA_ELDER_NADOX_EVENT, IN_PROGRESS); - events.ScheduleEvent(EVENT_PLAGUE, 13*IN_MILLISECONDS); - events.ScheduleEvent(EVENT_SUMMON_SWARMER, 10*IN_MILLISECONDS); + events.ScheduleEvent(EVENT_PLAGUE, 13 * IN_MILLISECONDS); + events.ScheduleEvent(EVENT_SUMMON_SWARMER, 10 * IN_MILLISECONDS); if (IsHeroic()) { - events.ScheduleEvent(EVENT_RAGE, 12*IN_MILLISECONDS); - events.ScheduleEvent(EVENT_CHECK_ENRAGE, 5*IN_MILLISECONDS); + events.ScheduleEvent(EVENT_RAGE, 12 * IN_MILLISECONDS); + events.ScheduleEvent(EVENT_CHECK_ENRAGE, 5 * IN_MILLISECONDS); } } @@ -151,25 +151,25 @@ class boss_elder_nadox : public CreatureScript switch (eventId) { case EVENT_PLAGUE: - DoCast(SelectTarget(SELECT_TARGET_RANDOM,0, 100, true),SPELL_BROOD_PLAGUE,true); - events.ScheduleEvent(EVENT_PLAGUE, 15*IN_MILLISECONDS); + DoCast(SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true), SPELL_BROOD_PLAGUE, true); + events.ScheduleEvent(EVENT_PLAGUE, 15 * IN_MILLISECONDS); break; case EVENT_RAGE: DoCast(H_SPELL_BROOD_RAGE); - events.ScheduleEvent(EVENT_RAGE, urand(10*IN_MILLISECONDS, 50*IN_MILLISECONDS)); + events.ScheduleEvent(EVENT_RAGE, urand(10 * IN_MILLISECONDS, 50 * IN_MILLISECONDS)); break; case EVENT_SUMMON_SWARMER: DoCast(me, SPELL_SUMMON_SWARMERS); if (urand(1, 3) == 3) // 33% chance of dialog Talk(SAY_EGG_SAC); - events.ScheduleEvent(EVENT_SUMMON_SWARMER, 10*IN_MILLISECONDS); + events.ScheduleEvent(EVENT_SUMMON_SWARMER, 10 * IN_MILLISECONDS); break; case EVENT_CHECK_ENRAGE: if (me->HasAura(SPELL_ENRAGE)) return; if (me->GetPositionZ() < 24.0f) DoCast(me, SPELL_ENRAGE, true); - events.ScheduleEvent(EVENT_CHECK_ENRAGE, 5*IN_MILLISECONDS); + events.ScheduleEvent(EVENT_CHECK_ENRAGE, 5 * IN_MILLISECONDS); break; default: break; @@ -209,7 +209,7 @@ class mob_ahnkahar_nerubian : public CreatureScript if (me->GetEntry() == NPC_AHNKAHAR_GUARDIAN) DoCast(me, SPELL_GUARDIAN_AURA, true); - events.ScheduleEvent(EVENT_SPRINT, 13*IN_MILLISECONDS); + events.ScheduleEvent(EVENT_SPRINT, 13 * IN_MILLISECONDS); } void JustDied(Unit* /*killer*/) @@ -234,7 +234,7 @@ class mob_ahnkahar_nerubian : public CreatureScript { case EVENT_SPRINT: DoCast(me, SPELL_SPRINT); - events.ScheduleEvent(EVENT_SPRINT, 20*IN_MILLISECONDS); + events.ScheduleEvent(EVENT_SPRINT, 20 * IN_MILLISECONDS); break; } } 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 ac520968db8..82cff5ff01f 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp @@ -182,7 +182,7 @@ class boss_jaraxxus : public CreatureScript events.ScheduleEvent(EVENT_INCINERATE_FLESH, urand(20*IN_MILLISECONDS, 25*IN_MILLISECONDS)); return; case EVENT_NETHER_POWER: - me->CastCustomSpell(SPELL_NETHER_POWER, SPELLVALUE_AURA_STACK, RAID_MODE(5, 10, 5,10), me, true); + me->CastCustomSpell(SPELL_NETHER_POWER, SPELLVALUE_AURA_STACK, RAID_MODE(5, 10, 5, 10), me, true); events.ScheduleEvent(EVENT_NETHER_POWER, 40*IN_MILLISECONDS); return; case EVENT_LEGION_FLAME: diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.h b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.h index 70fe03c5e0f..f42c985d3e5 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.h +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.h @@ -136,8 +136,8 @@ const Position AnubarakLoc[]= const Position EndSpawnLoc[]= { {648.9167f, 131.0208f, 141.6161f, 0}, // 0 - Highlord Tirion Fordring - {649.1614f, 142.0399f, 141.3057f ,0}, // 1 - Argent Mage - {644.6250f, 149.2743f, 140.6015f ,0} // 2 - Portal to Dalaran + {649.1614f, 142.0399f, 141.3057f, 0}, // 1 - Argent Mage + {644.6250f, 149.2743f, 140.6015f, 0} // 2 - Portal to Dalaran }; enum euiWorldStates 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 caf38fd2418..b3781f89e06 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 @@ -109,7 +109,7 @@ struct outroPosition { { 0, 0 }, { 0.0f, 0.0f, 0.0f, 0.0f } } }; -Position const CrucibleSummonPos = {5672.294f,2520.686f, 713.4386f, 0.9599311f}; +Position const CrucibleSummonPos = {5672.294f, 2520.686f, 713.4386f, 0.9599311f}; #define DATA_THREE_FACED 1 diff --git a/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp b/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp index 4acabc3b2b3..1b5f6e5d426 100644 --- a/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp +++ b/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp @@ -251,7 +251,7 @@ public: if (TempSummon* _me = me->ToTempSummon()) if (Creature* sladran = _me->GetSummoner()->ToCreature()) - sladran->AI()->SetGUID(target->GetGUID() ,DATA_SNAKES_WHYD_IT_HAVE_TO_BE_SNAKES); + sladran->AI()->SetGUID(target->GetGUID(), DATA_SNAKES_WHYD_IT_HAVE_TO_BE_SNAKES); me->DespawnOrUnsummon(); } diff --git a/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp b/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp index 35f703e0563..1b34e2a93a7 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp @@ -603,7 +603,7 @@ public: ThreatContainer::StorageType const &threatList = me->getThreatManager().getThreatList(); for (ThreatContainer::StorageType::const_iterator itr = threatList.begin(); itr != threatList.end(); ++itr) { - Unit * const target = (*itr)->getTarget(); + Unit* const target = (*itr)->getTarget(); if (target->GetTypeId() == TYPEID_PLAYER && target->getPowerType() == POWER_MANA diff --git a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp index 952363c6dcf..1be93dcbaa5 100644 --- a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp +++ b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp @@ -167,7 +167,7 @@ enum Texts #define MAX_HOVER_DISK_WAYPOINTS 18 -// Sniffed data (x, y,z) +// Sniffed data (x, y, z) const Position HoverDiskWaypoints[MAX_HOVER_DISK_WAYPOINTS] = { {782.9821f, 1296.652f, 282.1114f, 0.0f}, @@ -192,7 +192,7 @@ const Position HoverDiskWaypoints[MAX_HOVER_DISK_WAYPOINTS] = #define GROUND_Z 268 -// Source: Sniffs (x,y,z) +// Source: Sniffs (x, y, z) #define MALYGOS_MAX_WAYPOINTS 16 const Position MalygosPhaseTwoWaypoints[MALYGOS_MAX_WAYPOINTS] = { diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp index 7934f6fba72..d3c174841ee 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp @@ -787,7 +787,7 @@ class instance_ulduar : public InstanceMapScript return 0; } - bool CheckAchievementCriteriaMeet(uint32 criteriaId, Player const* , Unit const* /* = NULL */, uint32 /* = 0 */) + bool CheckAchievementCriteriaMeet(uint32 criteriaId, Player const*, Unit const* /* = NULL */, uint32 /* = 0 */) { switch (criteriaId) { 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 1fd84b6f6ce..f579fb2b93c 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 @@ -124,10 +124,10 @@ public: events.Reset(); events.SetPhase(PHASE_HUMAN); - events.ScheduleEvent(EVENT_CLEAVE, urand(6,12)*IN_MILLISECONDS, 0, PHASE_HUMAN); - events.ScheduleEvent(EVENT_STAGGERING_ROAR, urand(18,21)*IN_MILLISECONDS, 0, PHASE_HUMAN); - events.ScheduleEvent(EVENT_ENRAGE, urand(7,14)*IN_MILLISECONDS, 0, PHASE_HUMAN); - events.ScheduleEvent(EVENT_SMASH, urand(12,17)*IN_MILLISECONDS, 0, PHASE_HUMAN); + events.ScheduleEvent(EVENT_CLEAVE, urand(6, 12)*IN_MILLISECONDS, 0, PHASE_HUMAN); + events.ScheduleEvent(EVENT_STAGGERING_ROAR, urand(18, 21)*IN_MILLISECONDS, 0, PHASE_HUMAN); + events.ScheduleEvent(EVENT_ENRAGE, urand(7, 14)*IN_MILLISECONDS, 0, PHASE_HUMAN); + events.ScheduleEvent(EVENT_SMASH, urand(12, 17)*IN_MILLISECONDS, 0, PHASE_HUMAN); if (instance) instance->SetData(DATA_INGVAR_EVENT, NOT_STARTED); @@ -193,9 +193,9 @@ public: void ScheduleSecondPhase() { events.SetPhase(PHASE_UNDEAD); - events.ScheduleEvent(EVENT_DARK_SMASH, urand(14,18)*IN_MILLISECONDS, 0, PHASE_UNDEAD); - events.ScheduleEvent(EVENT_DREADFUL_ROAR, urand(18,22)*IN_MILLISECONDS, 0, PHASE_UNDEAD); - events.ScheduleEvent(EVENT_WOE_STRIKE, urand(10,14)*IN_MILLISECONDS, 0, PHASE_UNDEAD); + events.ScheduleEvent(EVENT_DARK_SMASH, urand(14, 18)*IN_MILLISECONDS, 0, PHASE_UNDEAD); + events.ScheduleEvent(EVENT_DREADFUL_ROAR, urand(18, 22)*IN_MILLISECONDS, 0, PHASE_UNDEAD); + events.ScheduleEvent(EVENT_WOE_STRIKE, urand(10, 14)*IN_MILLISECONDS, 0, PHASE_UNDEAD); events.ScheduleEvent(EVENT_SHADOW_AXE, 30*IN_MILLISECONDS, 0, PHASE_UNDEAD); } @@ -221,19 +221,19 @@ public: // PHASE ONE case EVENT_CLEAVE: DoCastVictim(SPELL_CLEAVE); - events.ScheduleEvent(EVENT_CLEAVE, urand(6,12)*IN_MILLISECONDS, 0, PHASE_HUMAN); + events.ScheduleEvent(EVENT_CLEAVE, urand(6, 12)*IN_MILLISECONDS, 0, PHASE_HUMAN); break; case EVENT_STAGGERING_ROAR: DoCast(me, SPELL_STAGGERING_ROAR); - events.ScheduleEvent(EVENT_STAGGERING_ROAR, urand(18,22)*IN_MILLISECONDS, 0, PHASE_HUMAN); + events.ScheduleEvent(EVENT_STAGGERING_ROAR, urand(18, 22)*IN_MILLISECONDS, 0, PHASE_HUMAN); break; case EVENT_ENRAGE: DoCast(me, SPELL_ENRAGE); - events.ScheduleEvent(EVENT_ENRAGE, urand(7,14)*IN_MILLISECONDS, 0, PHASE_HUMAN); + events.ScheduleEvent(EVENT_ENRAGE, urand(7, 14)*IN_MILLISECONDS, 0, PHASE_HUMAN); break; case EVENT_SMASH: DoCastAOE(SPELL_SMASH); - events.ScheduleEvent(EVENT_SMASH, urand(12,16)*IN_MILLISECONDS, 0, PHASE_HUMAN); + events.ScheduleEvent(EVENT_SMASH, urand(12, 16)*IN_MILLISECONDS, 0, PHASE_HUMAN); break; case EVENT_JUST_TRANSFORMED: me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); @@ -247,15 +247,15 @@ public: // PHASE TWO case EVENT_DARK_SMASH: DoCastVictim(SPELL_DARK_SMASH); - events.ScheduleEvent(EVENT_DARK_SMASH, urand(12,16)*IN_MILLISECONDS, 0, PHASE_UNDEAD); + events.ScheduleEvent(EVENT_DARK_SMASH, urand(12, 16)*IN_MILLISECONDS, 0, PHASE_UNDEAD); break; case EVENT_DREADFUL_ROAR: DoCast(me, SPELL_DREADFUL_ROAR); - events.ScheduleEvent(EVENT_DREADFUL_ROAR, urand(18,22)*IN_MILLISECONDS, 0, PHASE_UNDEAD); + events.ScheduleEvent(EVENT_DREADFUL_ROAR, urand(18, 22)*IN_MILLISECONDS, 0, PHASE_UNDEAD); break; case EVENT_WOE_STRIKE: DoCastVictim(SPELL_WOE_STRIKE); - events.ScheduleEvent(EVENT_WOE_STRIKE, urand(10,14)*IN_MILLISECONDS, 0, PHASE_UNDEAD); + events.ScheduleEvent(EVENT_WOE_STRIKE, urand(10, 14)*IN_MILLISECONDS, 0, PHASE_UNDEAD); break; case EVENT_SHADOW_AXE: if (Unit* target = SelectTarget(SELECT_TARGET_TOPAGGRO, 1)) diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp index d709182bf04..6e532a88396 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp @@ -129,8 +129,8 @@ public: instance->SetData(DATA_PRINCEKELESETH_EVENT, NOT_STARTED); events.Reset(); - events.ScheduleEvent(EVENT_SHADOWBOLT, urand(2,3)*IN_MILLISECONDS); - events.ScheduleEvent(EVENT_FROST_TOMB, urand(14,19)*IN_MILLISECONDS); + events.ScheduleEvent(EVENT_SHADOWBOLT, urand(2, 3)*IN_MILLISECONDS); + events.ScheduleEvent(EVENT_FROST_TOMB, urand(14, 19)*IN_MILLISECONDS); events.ScheduleEvent(EVENT_SUMMON_SKELETONS, 6*IN_MILLISECONDS); summons.DespawnAll(); @@ -213,7 +213,7 @@ public: break; case EVENT_SHADOWBOLT: DoCastVictim(SPELL_SHADOWBOLT); - events.ScheduleEvent(EVENT_SHADOWBOLT, urand(2,3)*IN_MILLISECONDS); + events.ScheduleEvent(EVENT_SHADOWBOLT, urand(2, 3)*IN_MILLISECONDS); break; case EVENT_FROST_TOMB: if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true, -SPELL_FROST_TOMB)) @@ -225,7 +225,7 @@ public: // checked from sniffs - the player casts the spell target->CastSpell(target, SPELL_FROST_TOMB_SUMMON, true); } - events.ScheduleEvent(EVENT_FROST_TOMB, urand(14,19)*IN_MILLISECONDS); + events.ScheduleEvent(EVENT_FROST_TOMB, urand(14, 19)*IN_MILLISECONDS); break; } } @@ -261,7 +261,7 @@ public: void Reset() { events.Reset(); - events.ScheduleEvent(EVENT_DECREPIFY, urand(4,6)*IN_MILLISECONDS); + events.ScheduleEvent(EVENT_DECREPIFY, urand(4, 6)*IN_MILLISECONDS); } @@ -280,7 +280,7 @@ public: me->SetFlag(UNIT_FIELD_BYTES_1, UNIT_STAND_STATE_DEAD); events.Reset(); - events.ScheduleEvent(EVENT_RESURRECT, urand(18,22)*IN_MILLISECONDS); + events.ScheduleEvent(EVENT_RESURRECT, urand(18, 22)*IN_MILLISECONDS); me->GetMotionMaster()->MovementExpired(false); me->GetMotionMaster()->MoveIdle(); @@ -304,7 +304,7 @@ public: { case EVENT_DECREPIFY: DoCast(SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true, -SPELL_DECREPIFY), SPELL_DECREPIFY); - events.ScheduleEvent(EVENT_DECREPIFY, urand(1,5)*IN_MILLISECONDS); + events.ScheduleEvent(EVENT_DECREPIFY, urand(1, 5)*IN_MILLISECONDS); break; case EVENT_RESURRECT: events.ScheduleEvent(EVENT_FULL_HEAL, 1*IN_MILLISECONDS); @@ -325,7 +325,7 @@ public: me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); me->RemoveFlag(UNIT_FIELD_BYTES_1, UNIT_STAND_STATE_DEAD); me->GetMotionMaster()->MoveChase(me->getVictim()); - events.ScheduleEvent(EVENT_DECREPIFY, urand(4,6)*IN_MILLISECONDS); + events.ScheduleEvent(EVENT_DECREPIFY, urand(4, 6)*IN_MILLISECONDS); break; } } diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp index 9468a111db5..dffdadc5b9c 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp @@ -101,8 +101,8 @@ enum SvalaPhase static const float spectatorWP[2][3] = { - {296.95f,-312.76f,86.36f}, - {297.69f,-275.81f,86.36f} + {296.95f, -312.76f, 86.36f}, + {297.69f, -275.81f, 86.36f} }; static Position ArthasPos = { 295.81f, -366.16f, 92.57f, 1.58f }; @@ -517,7 +517,7 @@ public: if (motionType == POINT_MOTION_TYPE) { if (pointId == 1) - me->GetMotionMaster()->MovePoint(2,spectatorWP[1][0],spectatorWP[1][1],spectatorWP[1][2]); + me->GetMotionMaster()->MovePoint(2, spectatorWP[1][0], spectatorWP[1][1], spectatorWP[1][2]); else if (pointId == 2) me->DespawnOrUnsummon(1000); } diff --git a/src/server/scripts/Northrend/zone_icecrown.cpp b/src/server/scripts/Northrend/zone_icecrown.cpp index 2ec5a3e8164..098fa80a3d3 100644 --- a/src/server/scripts/Northrend/zone_icecrown.cpp +++ b/src/server/scripts/Northrend/zone_icecrown.cpp @@ -586,7 +586,7 @@ public: struct npc_blessed_bannerAI : public Scripted_NoMovementAI { - npc_blessed_bannerAI(Creature* creature) : Scripted_NoMovementAI(creature) , Summons(me) + npc_blessed_bannerAI(Creature* creature) : Scripted_NoMovementAI(creature), Summons(me) { HalofSpawned = false; PhaseCount = 0; @@ -611,7 +611,7 @@ public: me->setRegeneratingHealth(false); DoCast(SPELL_THREAT_PULSE); me->AI()->Talk(BANNER_SAY); - events.ScheduleEvent(EVENT_SPAWN,3000); + events.ScheduleEvent(EVENT_SPAWN, 3000); } void EnterCombat(Unit* /*who*/) {} @@ -672,167 +672,167 @@ public: guidMason[2] = Mason3->GetGUID(); Mason3->GetMotionMaster()->MovePoint(0, Mason3Pos[1]); } - events.ScheduleEvent(EVENT_INTRO_1,15000); + events.ScheduleEvent(EVENT_INTRO_1, 15000); } break; case EVENT_INTRO_1: { - if (Creature* Dalfors = me->GetCreature(*me,guidDalfors)) + if (Creature* Dalfors = me->GetCreature(*me, guidDalfors)) Dalfors->AI()->Talk(DALFORS_SAY_PRE_1); - events.ScheduleEvent(EVENT_INTRO_2,5000); + events.ScheduleEvent(EVENT_INTRO_2, 5000); } break; case EVENT_INTRO_2: { - if (Creature* Dalfors = me->GetCreature(*me,guidDalfors)) + if (Creature* Dalfors = me->GetCreature(*me, guidDalfors)) { Dalfors->SetFacingTo(6.215f); Dalfors->AI()->Talk(DALFORS_SAY_PRE_2); } - events.ScheduleEvent(EVENT_INTRO_3,5000); + events.ScheduleEvent(EVENT_INTRO_3, 5000); } break; case EVENT_INTRO_3: { - if (Creature* Dalfors = me->GetCreature(*me,guidDalfors)) + if (Creature* Dalfors = me->GetCreature(*me, guidDalfors)) { Dalfors->GetMotionMaster()->MovePoint(0, DalforsPos[2]); Dalfors->SetHomePosition(DalforsPos[2]); } - if (Creature* Priest1 = me->GetCreature(*me,guidPriest[0])) + if (Creature* Priest1 = me->GetCreature(*me, guidPriest[0])) { Priest1->SetFacingTo(5.7421f); Priest1->SetHomePosition(Priest1Pos[1]); } - if (Creature* Priest2 = me->GetCreature(*me,guidPriest[1])) + if (Creature* Priest2 = me->GetCreature(*me, guidPriest[1])) { Priest2->SetFacingTo(5.7421f); Priest2->SetHomePosition(Priest2Pos[1]); } - if (Creature* Priest3 = me->GetCreature(*me,guidPriest[2])) + if (Creature* Priest3 = me->GetCreature(*me, guidPriest[2])) { Priest3->SetFacingTo(5.7421f); Priest3->SetHomePosition(Priest3Pos[1]); } - if (Creature* Mason1 = me->GetCreature(*me,guidMason[0])) + if (Creature* Mason1 = me->GetCreature(*me, guidMason[0])) { Mason1->GetMotionMaster()->MovePoint(0, Mason1Pos[2]); Mason1->SetHomePosition(Mason1Pos[2]); } - if (Creature* Mason2 = me->GetCreature(*me,guidMason[1])) + if (Creature* Mason2 = me->GetCreature(*me, guidMason[1])) { Mason2->GetMotionMaster()->MovePoint(0, Mason2Pos[2]); Mason2->SetHomePosition(Mason2Pos[2]); } - if (Creature* Mason3 = me->GetCreature(*me,guidMason[2])) + if (Creature* Mason3 = me->GetCreature(*me, guidMason[2])) { Mason3->GetMotionMaster()->MovePoint(0, Mason3Pos[2]); Mason3->SetHomePosition(Mason3Pos[2]); } - events.ScheduleEvent(EVENT_START_FIGHT,5000); - events.ScheduleEvent(EVENT_MASON_ACTION,15000); + events.ScheduleEvent(EVENT_START_FIGHT, 5000); + events.ScheduleEvent(EVENT_MASON_ACTION, 15000); } break; case EVENT_MASON_ACTION: { - if (Creature* Mason1 = me->GetCreature(*me,guidMason[0])) + if (Creature* Mason1 = me->GetCreature(*me, guidMason[0])) { Mason1->SetFacingTo(2.8972f); - Mason1->AI()->SetData(1,1); // triggers SAI actions on npc + Mason1->AI()->SetData(1, 1); // triggers SAI actions on npc } - if (Creature* Mason2 = me->GetCreature(*me,guidMason[1])) + if (Creature* Mason2 = me->GetCreature(*me, guidMason[1])) { Mason2->SetFacingTo(3.1241f); - Mason2->AI()->SetData(1,1); // triggers SAI actions on npc + Mason2->AI()->SetData(1, 1); // triggers SAI actions on npc } - if (Creature* Mason3 = me->GetCreature(*me,guidMason[2])) + if (Creature* Mason3 = me->GetCreature(*me, guidMason[2])) { Mason3->SetFacingTo(3.6651f); - Mason3->AI()->SetData(1,1); // triggers SAI actions on npc + Mason3->AI()->SetData(1, 1); // triggers SAI actions on npc } } break; case EVENT_START_FIGHT: { - if(Creature* LK = GetClosestCreatureWithEntry(me,NPC_LK,100)) + if (Creature* LK = GetClosestCreatureWithEntry(me, NPC_LK, 100)) LK->AI()->Talk(LK_TALK_1); - if (Creature* Dalfors = me->GetCreature(*me,guidDalfors)) + if (Creature* Dalfors = me->GetCreature(*me, guidDalfors)) Dalfors->AI()->Talk(DALFORS_SAY_START); - events.ScheduleEvent(EVENT_WAVE_SPAWN,1000); + events.ScheduleEvent(EVENT_WAVE_SPAWN, 1000); } break; case EVENT_WAVE_SPAWN: { if (PhaseCount == 3) { - if (Creature* LK = GetClosestCreatureWithEntry(me,NPC_LK,100)) + if (Creature* LK = GetClosestCreatureWithEntry(me, NPC_LK, 100)) LK->AI()->Talk(LK_TALK_2); } else if (PhaseCount == 6) { - if (Creature* LK = GetClosestCreatureWithEntry(me,NPC_LK,100)) + if (Creature* LK = GetClosestCreatureWithEntry(me, NPC_LK, 100)) LK->AI()->Talk(LK_TALK_3); } - if (Creature* tempsum = DoSummon(NPC_SCOURGE_DRUDGE,Mason3Pos[0])) + if (Creature* tempsum = DoSummon(NPC_SCOURGE_DRUDGE, Mason3Pos[0])) { tempsum->SetHomePosition(DalforsPos[2]); - tempsum->AI()->AttackStart(GetClosestCreatureWithEntry(me,NPC_BLESSED_BANNER,100)); + tempsum->AI()->AttackStart(GetClosestCreatureWithEntry(me, NPC_BLESSED_BANNER, 100)); } - if (urand(0,1) == 0) + if (urand(0, 1) == 0) { - if (Creature* tempsum = DoSummon(NPC_HIDEOUS_PLAGEBRINGER,Mason1Pos[0])) + if (Creature* tempsum = DoSummon(NPC_HIDEOUS_PLAGEBRINGER, Mason1Pos[0])) { tempsum->SetHomePosition(DalforsPos[2]); - tempsum->AI()->AttackStart(GetClosestCreatureWithEntry(me,NPC_BLESSED_BANNER,100)); + tempsum->AI()->AttackStart(GetClosestCreatureWithEntry(me, NPC_BLESSED_BANNER, 100)); } - if (Creature* tempsum = DoSummon(NPC_HIDEOUS_PLAGEBRINGER,Mason2Pos[0])) + if (Creature* tempsum = DoSummon(NPC_HIDEOUS_PLAGEBRINGER, Mason2Pos[0])) { tempsum->SetHomePosition(DalforsPos[2]); - tempsum->AI()->AttackStart(GetClosestCreatureWithEntry(me,NPC_BLESSED_BANNER,100)); + tempsum->AI()->AttackStart(GetClosestCreatureWithEntry(me, NPC_BLESSED_BANNER, 100)); } } else { - if (Creature* tempsum = DoSummon(NPC_REANIMATED_CAPTAIN,Mason1Pos[0])) + if (Creature* tempsum = DoSummon(NPC_REANIMATED_CAPTAIN, Mason1Pos[0])) { tempsum->SetHomePosition(DalforsPos[2]); - tempsum->AI()->AttackStart(GetClosestCreatureWithEntry(me,NPC_BLESSED_BANNER,100)); + tempsum->AI()->AttackStart(GetClosestCreatureWithEntry(me, NPC_BLESSED_BANNER, 100)); } - if (Creature* tempsum = DoSummon(NPC_REANIMATED_CAPTAIN,Mason2Pos[0])) + if (Creature* tempsum = DoSummon(NPC_REANIMATED_CAPTAIN, Mason2Pos[0])) { tempsum->SetHomePosition(DalforsPos[2]); - tempsum->AI()->AttackStart(GetClosestCreatureWithEntry(me,NPC_BLESSED_BANNER,100)); + tempsum->AI()->AttackStart(GetClosestCreatureWithEntry(me, NPC_BLESSED_BANNER, 100)); } } PhaseCount++; if (PhaseCount < 8) - events.ScheduleEvent(EVENT_WAVE_SPAWN,urand(10000,20000)); + events.ScheduleEvent(EVENT_WAVE_SPAWN, urand(10000, 20000)); else - events.ScheduleEvent(EVENT_HALOF,urand(10000,20000)); + events.ScheduleEvent(EVENT_HALOF, urand(10000, 20000)); } break; case EVENT_HALOF: { - if (Creature* LK = GetClosestCreatureWithEntry(me,NPC_LK,100)) + if (Creature* LK = GetClosestCreatureWithEntry(me, NPC_LK, 100)) LK->AI()->Talk(LK_TALK_4); - if (Creature* tempsum = DoSummon(NPC_SCOURGE_DRUDGE,Mason1Pos[0])) + if (Creature* tempsum = DoSummon(NPC_SCOURGE_DRUDGE, Mason1Pos[0])) { tempsum->SetHomePosition(DalforsPos[2]); - tempsum->AI()->AttackStart(GetClosestCreatureWithEntry(me,NPC_BLESSED_BANNER,100)); + tempsum->AI()->AttackStart(GetClosestCreatureWithEntry(me, NPC_BLESSED_BANNER, 100)); } - if (Creature* tempsum = DoSummon(NPC_SCOURGE_DRUDGE,Mason2Pos[0])) + if (Creature* tempsum = DoSummon(NPC_SCOURGE_DRUDGE, Mason2Pos[0])) { tempsum->SetHomePosition(DalforsPos[2]); - tempsum->AI()->AttackStart(GetClosestCreatureWithEntry(me,NPC_BLESSED_BANNER,100)); + tempsum->AI()->AttackStart(GetClosestCreatureWithEntry(me, NPC_BLESSED_BANNER, 100)); } - if (Creature* tempsum = DoSummon(NPC_HALOF_THE_DEATHBRINGER,DalforsPos[0])) + if (Creature* tempsum = DoSummon(NPC_HALOF_THE_DEATHBRINGER, DalforsPos[0])) { HalofSpawned = true; guidHalof = tempsum->GetGUID(); tempsum->SetHomePosition(DalforsPos[2]); - tempsum->AI()->AttackStart(GetClosestCreatureWithEntry(me,NPC_BLESSED_BANNER,100)); + tempsum->AI()->AttackStart(GetClosestCreatureWithEntry(me, NPC_BLESSED_BANNER, 100)); } } break; @@ -845,17 +845,17 @@ public: } if (PhaseCount == 8) - if (Creature* Halof = me->GetCreature(*me,guidHalof)) + if (Creature* Halof = me->GetCreature(*me, guidHalof)) if (Halof->isDead()) { - DoCast(me,SPELL_CRUSADERS_SPIRE_VICTORY,true); + DoCast(me, SPELL_CRUSADERS_SPIRE_VICTORY, true); Summons.DespawnEntry(NPC_HIDEOUS_PLAGEBRINGER); Summons.DespawnEntry(NPC_REANIMATED_CAPTAIN); Summons.DespawnEntry(NPC_SCOURGE_DRUDGE); Summons.DespawnEntry(NPC_HALOF_THE_DEATHBRINGER); - if (Creature* Dalfors = me->GetCreature(*me,guidDalfors)) + if (Creature* Dalfors = me->GetCreature(*me, guidDalfors)) Dalfors->AI()->Talk(DALFORS_YELL_FINISHED); - events.ScheduleEvent(EVENT_ENDED,10000); + events.ScheduleEvent(EVENT_ENDED, 10000); } } }; diff --git a/src/server/scripts/Northrend/zone_sholazar_basin.cpp b/src/server/scripts/Northrend/zone_sholazar_basin.cpp index 2aa355084a1..f3afc03e68a 100644 --- a/src/server/scripts/Northrend/zone_sholazar_basin.cpp +++ b/src/server/scripts/Northrend/zone_sholazar_basin.cpp @@ -540,13 +540,13 @@ public: Player* player = Player::GetPlayer(*me, playerGUID); Creature* orphan = Creature::GetCreature(*me, orphanGUID); - if(!orphan || !player) + if (!orphan || !player) { Reset(); return; } - switch(phase) + switch (phase) { case 1: orphan->GetMotionMaster()->MovePoint(0, me->GetPositionX() + cos(me->GetOrientation()) * 5, me->GetPositionY() + sin(me->GetOrientation()) * 5, me->GetPositionZ()); diff --git a/src/server/scripts/Northrend/zone_storm_peaks.cpp b/src/server/scripts/Northrend/zone_storm_peaks.cpp index 85ab1dc1127..dae2ffd36f6 100644 --- a/src/server/scripts/Northrend/zone_storm_peaks.cpp +++ b/src/server/scripts/Northrend/zone_storm_peaks.cpp @@ -423,7 +423,7 @@ public: Unit* player = me->GetVehicleKit()->GetPassenger(0); if (player && player->GetTypeId() == TYPEID_PLAYER) { - // for each prisoner on drake,give credit + // for each prisoner on drake, give credit for (uint8 i = 1; i < 4; ++i) if (Unit* prisoner = me->GetVehicleKit()->GetPassenger(i)) { diff --git a/src/server/scripts/Northrend/zone_wintergrasp.cpp b/src/server/scripts/Northrend/zone_wintergrasp.cpp index 8935c77b30e..8c255d49d25 100644 --- a/src/server/scripts/Northrend/zone_wintergrasp.cpp +++ b/src/server/scripts/Northrend/zone_wintergrasp.cpp @@ -271,7 +271,7 @@ class npc_wg_queue : public CreatureScript return true; } - bool OnGossipSelect(Player* player, Creature* /*creature*/ , uint32 /*sender*/ , uint32 /*action*/) + bool OnGossipSelect(Player* player, Creature* /*creature*/, uint32 /*sender*/, uint32 /*action*/) { player->CLOSE_GOSSIP_MENU(); diff --git a/src/server/scripts/Outland/BlackTemple/boss_mother_shahraz.cpp b/src/server/scripts/Outland/BlackTemple/boss_mother_shahraz.cpp index 11569c30f1e..ec85d675225 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_mother_shahraz.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_mother_shahraz.cpp @@ -45,7 +45,7 @@ enum MotherShahraz SPELL_ATTRACTION = 40871, SPELL_SILENCING_SHRIEK = 40823, SPELL_ENRAGE = 23537, - SPELL_SABER_LASH = 40810,//43267 + SPELL_SABER_LASH = 40810, //43267 SPELL_SABER_LASH_IMM = 43690, SPELL_TELEPORT_VISUAL = 40869, SPELL_BERSERK = 45078 diff --git a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/instance_blood_furnace.cpp b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/instance_blood_furnace.cpp index 4eaf7cc2d6c..be51b7922a2 100644 --- a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/instance_blood_furnace.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/instance_blood_furnace.cpp @@ -375,23 +375,23 @@ class instance_blood_furnace : public InstanceMapScript switch (id) { case DATA_PRISON_CELL5: - HandleGameObject(PrisonCell5GUID,true); + HandleGameObject(PrisonCell5GUID, true); ActivatePrisoners(PrisonersCell5); break; case DATA_PRISON_CELL6: - HandleGameObject(PrisonCell6GUID,true); + HandleGameObject(PrisonCell6GUID, true); ActivatePrisoners(PrisonersCell6); break; case DATA_PRISON_CELL7: - HandleGameObject(PrisonCell7GUID,true); + HandleGameObject(PrisonCell7GUID, true); ActivatePrisoners(PrisonersCell7); break; case DATA_PRISON_CELL8: - HandleGameObject(PrisonCell8GUID,true); + HandleGameObject(PrisonCell8GUID, true); ActivatePrisoners(PrisonersCell8); break; case DATA_DOOR5: - HandleGameObject(Door5GUID,true); + HandleGameObject(Door5GUID, true); if (Creature* broggok = instance->GetCreature(BroggokGUID)) broggok->AI()->DoAction(ACTION_ACTIVATE_BROGGOK); break; diff --git a/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp b/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp index 9c4b764fd2a..01ca1636c6b 100644 --- a/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp +++ b/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp @@ -518,7 +518,7 @@ class spell_astromancer_wrath_of_the_astromancer : public SpellScriptLoader return; Unit* target = GetUnitOwner(); - target->CastSpell(target, GetSpellInfo()->Effects[EFFECT_1].CalcValue(),false); + target->CastSpell(target, GetSpellInfo()->Effects[EFFECT_1].CalcValue(), false); } void Register() 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 0b2370e1b17..9bda618b732 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp @@ -65,7 +65,7 @@ class boss_nethermancer_sepethrea : public CreatureScript struct boss_nethermancer_sepethreaAI : public BossAI { - boss_nethermancer_sepethreaAI(Creature* creature) : BossAI(creature,DATA_NETHERMANCER_SEPRETHREA) {} + boss_nethermancer_sepethreaAI(Creature* creature) : BossAI(creature, DATA_NETHERMANCER_SEPRETHREA) {} void EnterCombat(Unit* who) { diff --git a/src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp b/src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp index e6cb05084ad..146569db284 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp @@ -41,7 +41,7 @@ class instance_mechanar : public InstanceMapScript SetBossNumber(EncounterCount); LoadDoorData(doorData); } - + void OnGameObjectCreate(GameObject* gameObject) { diff --git a/src/server/scripts/Outland/zone_nagrand.cpp b/src/server/scripts/Outland/zone_nagrand.cpp index 0a92b985c95..edb7a2642d5 100644 --- a/src/server/scripts/Outland/zone_nagrand.cpp +++ b/src/server/scripts/Outland/zone_nagrand.cpp @@ -639,7 +639,7 @@ public: if (ChainLightningTimer <= diff) { DoCast(me->getVictim(), SPELL_KUR_CHAIN_LIGHTNING); - ChainLightningTimer = urand(7000,14000); + ChainLightningTimer = urand(7000, 14000); } else ChainLightningTimer -= diff; if (HealthBelowPct(30)) @@ -654,7 +654,7 @@ public: if (FrostShockTimer <= diff) { DoCast(me->getVictim(), SPELL_KUR_FROST_SHOCK); - FrostShockTimer = urand(7500,15000); + FrostShockTimer = urand(7500, 15000); } else FrostShockTimer -= diff; DoMeleeAttackIfReady(); diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index 4a1b0d558ff..b5f4312bae5 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -1594,7 +1594,7 @@ class spell_gen_gnomish_transporter : public SpellScriptLoader void HandleDummy(SpellEffIndex /* effIndex */) { Unit* caster = GetCaster(); - caster->CastSpell(caster, roll_chance_i(50) ? SPELL_TRANSPORTER_SUCCESS : SPELL_TRANSPORTER_FAILURE , true); + caster->CastSpell(caster, roll_chance_i(50) ? SPELL_TRANSPORTER_SUCCESS : SPELL_TRANSPORTER_FAILURE, true); } void Register() diff --git a/src/server/scripts/Spells/spell_item.cpp b/src/server/scripts/Spells/spell_item.cpp index ccd8f3f81e7..b4e06cb6b48 100644 --- a/src/server/scripts/Spells/spell_item.cpp +++ b/src/server/scripts/Spells/spell_item.cpp @@ -1350,7 +1350,7 @@ class spell_item_poultryizer : public SpellScriptLoader void HandleDummy(SpellEffIndex /* effIndex */) { if (GetCastItem() && GetHitUnit()) - GetCaster()->CastSpell(GetHitUnit(), roll_chance_i(80) ? SPELL_POULTRYIZER_SUCCESS : SPELL_POULTRYIZER_BACKFIRE , true, GetCastItem()); + GetCaster()->CastSpell(GetHitUnit(), roll_chance_i(80) ? SPELL_POULTRYIZER_SUCCESS : SPELL_POULTRYIZER_BACKFIRE, true, GetCastItem()); } void Register() @@ -1710,7 +1710,7 @@ class spell_item_teach_language : public SpellScriptLoader Player* caster = GetCaster()->ToPlayer(); if (roll_chance_i(34)) - caster->CastSpell(caster,caster->GetTeam() == ALLIANCE ? SPELL_LEARN_GNOMISH_BINARY : SPELL_LEARN_GOBLIN_BINARY, true); + caster->CastSpell(caster, caster->GetTeam() == ALLIANCE ? SPELL_LEARN_GNOMISH_BINARY : SPELL_LEARN_GOBLIN_BINARY, true); } void Register() @@ -2004,7 +2004,7 @@ public: void HandleDummy(SpellEffIndex /*effIndex*/) { if (GetHitUnit()) - GetCaster()->CastSpell(GetCaster(),SPELL_FORCE_CAST_SUMMON_GNOME_SOUL); + GetCaster()->CastSpell(GetCaster(), SPELL_FORCE_CAST_SUMMON_GNOME_SOUL); } void Register() diff --git a/src/server/scripts/Spells/spell_pet.cpp b/src/server/scripts/Spells/spell_pet.cpp index 5198e555ee1..c4d5562ab39 100644 --- a/src/server/scripts/Spells/spell_pet.cpp +++ b/src/server/scripts/Spells/spell_pet.cpp @@ -1451,7 +1451,7 @@ public: if (pet->GetEntry() == ENTRY_ARMY_OF_THE_DEAD_GHOUL) amount = -90; // Night of the dead - else if ( Aura * aur = owner->GetAuraOfRankedSpell(SPELL_NIGHT_OF_THE_DEAD)) + else if (Aura* aur = owner->GetAuraOfRankedSpell(SPELL_NIGHT_OF_THE_DEAD)) amount = aur->GetSpellInfo()->Effects[EFFECT_2].CalcValue(); } } diff --git a/src/server/scripts/World/npcs_special.cpp b/src/server/scripts/World/npcs_special.cpp index aaac8ee4b83..8a3342cf2de 100644 --- a/src/server/scripts/World/npcs_special.cpp +++ b/src/server/scripts/World/npcs_special.cpp @@ -2509,11 +2509,11 @@ public: break; case GOSSIP_ACTION_INFO_DEF + 8: player->CLOSE_GOSSIP_MENU(); - player->AddItem(ITEM_KEY_TO_THE_FOCUSING_IRIS,1); + player->AddItem(ITEM_KEY_TO_THE_FOCUSING_IRIS, 1); break; case GOSSIP_ACTION_INFO_DEF + 9: player->CLOSE_GOSSIP_MENU(); - player->AddItem(ITEM_HC_KEY_TO_THE_FOCUSING_IRIS,1); + player->AddItem(ITEM_HC_KEY_TO_THE_FOCUSING_IRIS, 1); break; } return true; @@ -2828,7 +2828,7 @@ public: { if (!me->FindNearestCreature(NPC_OMEN, 100.0f, false) && me->GetDistance2d(omenSummonPos.GetPositionX(), omenSummonPos.GetPositionY()) <= 100.0f) { - switch (urand(0,9)) + switch (urand(0, 9)) { case 0: case 1: diff --git a/src/server/shared/Cryptography/WardenKeyGeneration.h b/src/server/shared/Cryptography/WardenKeyGeneration.h index 5c04da38dc9..6d5fd563ba3 100644 --- a/src/server/shared/Cryptography/WardenKeyGeneration.h +++ b/src/server/shared/Cryptography/WardenKeyGeneration.h @@ -73,7 +73,7 @@ private: SHA1Hash sh; uint32 taken; - uint8 o0[20],o1[20],o2[20]; + uint8 o0[20], o1[20], o2[20]; }; #endif diff --git a/src/server/shared/Dynamic/HashNamespace.h b/src/server/shared/Dynamic/HashNamespace.h index afb55ae0e00..88fa8c6f00e 100644 --- a/src/server/shared/Dynamic/HashNamespace.h +++ b/src/server/shared/Dynamic/HashNamespace.h @@ -93,7 +93,7 @@ template<> struct hash { size_t operator()(const std::string &__x) const { - return hash()(__x.c_str()); + return hash()(__x.c_str()); } }; diff --git a/src/server/shared/Logging/Log.cpp b/src/server/shared/Logging/Log.cpp index 4048f056f46..60320d049ac 100644 --- a/src/server/shared/Logging/Log.cpp +++ b/src/server/shared/Logging/Log.cpp @@ -82,7 +82,7 @@ void Log::CreateAppenderFromConfig(const char* name) if (!name || *name == '\0') return; - // Format=type,level,flags,optional1,optional2 + // Format=type, level, flags, optional1, optional2 // if type = File. optional1 = file and option2 = mode // if type = Console. optional1 = Color std::string options = "Appender."; diff --git a/src/server/shared/Logging/Log.h b/src/server/shared/Logging/Log.h index 26fcc40c5e0..6d6cfe715e8 100644 --- a/src/server/shared/Logging/Log.h +++ b/src/server/shared/Logging/Log.h @@ -45,12 +45,12 @@ class Log bool ShouldLog(LogFilterType type, LogLevel level) const; bool SetLogLevel(std::string const& name, char const* level, bool isLogger = true); - void outTrace(LogFilterType f, char const* str, ...) ATTR_PRINTF(3,4); - void outDebug(LogFilterType f, char const* str, ...) ATTR_PRINTF(3,4); - void outInfo(LogFilterType f, char const* str, ...) ATTR_PRINTF(3,4); - void outWarn(LogFilterType f, char const* str, ...) ATTR_PRINTF(3,4); - void outError(LogFilterType f, char const* str, ...) ATTR_PRINTF(3,4); - void outFatal(LogFilterType f, char const* str, ...) ATTR_PRINTF(3,4); + void outTrace(LogFilterType f, char const* str, ...) ATTR_PRINTF(3, 4); + void outDebug(LogFilterType f, char const* str, ...) ATTR_PRINTF(3, 4); + void outInfo(LogFilterType f, char const* str, ...) ATTR_PRINTF(3, 4); + void outWarn(LogFilterType f, char const* str, ...) ATTR_PRINTF(3, 4); + void outError(LogFilterType f, char const* str, ...) ATTR_PRINTF(3, 4); + void outFatal(LogFilterType f, char const* str, ...) ATTR_PRINTF(3, 4); void EnableDBAppenders(); void outCommand(uint32 account, const char * str, ...) ATTR_PRINTF(3, 4); diff --git a/src/server/shared/Packets/ByteBuffer.h b/src/server/shared/Packets/ByteBuffer.h index 5553b04f461..22dad8d7dd1 100644 --- a/src/server/shared/Packets/ByteBuffer.h +++ b/src/server/shared/Packets/ByteBuffer.h @@ -52,7 +52,7 @@ class ByteBufferPositionException : public ByteBufferException { ACE_Stack_Trace trace; - sLog->outError(LOG_FILTER_NETWORKIO, "Attempted to %s value with size: "SIZEFMTD" in ByteBuffer (pos: " SIZEFMTD " size: "SIZEFMTD")\n[Stacktrace: %s]" , + sLog->outError(LOG_FILTER_NETWORKIO, "Attempted to %s value with size: "SIZEFMTD" in ByteBuffer (pos: " SIZEFMTD " size: "SIZEFMTD")\n[Stacktrace: %s]", (_add ? "put" : "get"), ValueSize, Pos, Size, trace.c_str()); } diff --git a/src/server/shared/Utilities/Util.h b/src/server/shared/Utilities/Util.h index 10c2e866a7d..e7218d7ba72 100644 --- a/src/server/shared/Utilities/Util.h +++ b/src/server/shared/Utilities/Util.h @@ -39,7 +39,7 @@ template struct Finder class Tokenizer { public: - typedef std::vector StorageType; + typedef std::vector StorageType; typedef StorageType::size_type size_type; -- cgit v1.2.3