diff options
author | Ovahlord <dreadkiller@gmx.de> | 2023-12-04 21:31:24 +0100 |
---|---|---|
committer | Ovahlord <dreadkiller@gmx.de> | 2023-12-04 21:31:24 +0100 |
commit | 21d6e598a5f817a141e4cac704d2da3fd05449ed (patch) | |
tree | 7a861eff81728de31d372fe30568a553204fa118 /src | |
parent | 281d946c40c2263394b91abdaea76f94ff31dd97 (diff) |
Core/Misc:
* removed various unused opcode and aura effect handlers
* removed a bunch of deprecated spell scripts
* dropped TraitHandler
* fixed several warnings which have emerged as a result of downgrading the systems
Diffstat (limited to 'src')
20 files changed, 22 insertions, 1747 deletions
diff --git a/src/server/game/Achievements/CriteriaHandler.cpp b/src/server/game/Achievements/CriteriaHandler.cpp index 8b4ac6a4349..b5159e144b3 100644 --- a/src/server/game/Achievements/CriteriaHandler.cpp +++ b/src/server/game/Achievements/CriteriaHandler.cpp @@ -1696,7 +1696,7 @@ bool CriteriaHandler::ModifierSatisfied(ModifierTreeEntry const* modifier, uint6 { uint32 reqValue = modifier->Asset; uint32 secondaryAsset = modifier->SecondaryAsset; - int32 tertiaryAsset = modifier->TertiaryAsset; + //int32 tertiaryAsset = modifier->TertiaryAsset; switch (ModifierTreeType(modifier->Type)) { diff --git a/src/server/game/DataStores/DB2Stores.cpp b/src/server/game/DataStores/DB2Stores.cpp index bae0ec127b6..d1369d0024a 100644 --- a/src/server/game/DataStores/DB2Stores.cpp +++ b/src/server/game/DataStores/DB2Stores.cpp @@ -2101,7 +2101,7 @@ EmotesTextSoundEntry const* DB2Manager::GetTextSoundEmoteFor(uint32 emote, uint8 } -float DB2Manager::EvaluateExpectedStat(ExpectedStatType stat, uint32 level, int32 expansion, uint32 contentTuningId, Classes unitClass, int32 mythicPlusMilestoneSeason) const +float DB2Manager::EvaluateExpectedStat(ExpectedStatType stat, uint32 level, int32 expansion, uint32 contentTuningId, Classes unitClass) const { auto expectedStatItr = _expectedStatsByLevel.find(std::make_pair(level, expansion)); if (expectedStatItr == _expectedStatsByLevel.end()) diff --git a/src/server/game/DataStores/DB2Stores.h b/src/server/game/DataStores/DB2Stores.h index bedaf63f05b..7365fa00ff0 100644 --- a/src/server/game/DataStores/DB2Stores.h +++ b/src/server/game/DataStores/DB2Stores.h @@ -436,7 +436,7 @@ public: float GetCurveValueAt(uint32 curveId, float x) const; float GetCurveValueAt(CurveInterpolationMode mode, std::span<DBCPosition2D const> points, float x) const; EmotesTextSoundEntry const* GetTextSoundEmoteFor(uint32 emote, uint8 race, uint8 gender, uint8 class_) const; - float EvaluateExpectedStat(ExpectedStatType stat, uint32 level, int32 expansion, uint32 contentTuningId, Classes unitClass, int32 mythicPlusMilestoneSeason) const; + float EvaluateExpectedStat(ExpectedStatType stat, uint32 level, int32 expansion, uint32 contentTuningId, Classes unitClass) const; std::vector<uint32> const* GetFactionTeamList(uint32 faction) const; FriendshipRepReactionSet const* GetFriendshipRepReactions(uint32 friendshipRepID) const; std::vector<uint32> const* GetGlyphBindableSpells(uint32 glyphPropertiesId) const; diff --git a/src/server/game/DungeonFinding/LFGMgr.cpp b/src/server/game/DungeonFinding/LFGMgr.cpp index 07c80a9c41d..dd5a0b647dd 100644 --- a/src/server/game/DungeonFinding/LFGMgr.cpp +++ b/src/server/game/DungeonFinding/LFGMgr.cpp @@ -2195,7 +2195,7 @@ uint32 LFGMgr::GetLFGDungeonEntry(uint32 id) return 0; } -LfgDungeonSet LFGMgr::GetRandomAndSeasonalDungeons(uint8 level, uint8 expansion, uint32 contentTuningReplacementConditionMask) +LfgDungeonSet LFGMgr::GetRandomAndSeasonalDungeons(uint8 level, uint8 expansion) { LfgDungeonSet randomDungeons; for (lfg::LFGDungeonContainer::const_iterator itr = LfgDungeonStore.begin(); itr != LfgDungeonStore.end(); ++itr) diff --git a/src/server/game/DungeonFinding/LFGMgr.h b/src/server/game/DungeonFinding/LFGMgr.h index 51098031414..e16800327ca 100644 --- a/src/server/game/DungeonFinding/LFGMgr.h +++ b/src/server/game/DungeonFinding/LFGMgr.h @@ -408,7 +408,7 @@ class TC_GAME_API LFGMgr /// Gets the random dungeon reward corresponding to given dungeon and player level LfgReward const* GetRandomDungeonReward(uint32 dungeon, uint8 level); /// Returns all random and seasonal dungeons for given level and expansion - LfgDungeonSet GetRandomAndSeasonalDungeons(uint8 level, uint8 expansion, uint32 contentTuningReplacementConditionMask); + LfgDungeonSet GetRandomAndSeasonalDungeons(uint8 level, uint8 expansion); /// Teleport a player to/from selected dungeon void TeleportPlayer(Player* player, bool out, bool fromOpcode = false); /// Inits new proposal to boot a player diff --git a/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp b/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp index 0afd85c2c83..f6bcb29ad3b 100644 --- a/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp +++ b/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp @@ -290,10 +290,7 @@ bool AreaTrigger::CreateServer(Map* map, AreaTriggerTemplate const* areaTriggerT auto areaTriggerData = m_values.ModifyValue(&AreaTrigger::m_areaTriggerData); if (position.SpellForVisuals) - { - SpellInfo const* spellInfo = sSpellMgr->AssertSpellInfo(*position.SpellForVisuals, DIFFICULTY_NONE); SetUpdateFieldValue(areaTriggerData.ModifyValue(&UF::AreaTriggerData::SpellForVisuals), *position.SpellForVisuals); - } SetUpdateFieldValue(areaTriggerData.ModifyValue(&UF::AreaTriggerData::BoundsRadius2D), _shape.GetMaxSearchRadius()); if (IsServerSide()) diff --git a/src/server/game/Entities/Item/Item.cpp b/src/server/game/Entities/Item/Item.cpp index 700c841b398..1250d3c95c1 100644 --- a/src/server/game/Entities/Item/Item.cpp +++ b/src/server/game/Entities/Item/Item.cpp @@ -1583,7 +1583,6 @@ bool Item::IsValidTransmogrificationTarget() const bool Item::HasStats() const { ItemTemplate const* proto = GetTemplate(); - Player const* owner = GetOwner(); for (uint8 i = 0; i < MAX_ITEM_PROTO_STATS; ++i) if (proto->GetStatModifierBonusAmount(i) != 0) return true; diff --git a/src/server/game/Entities/Pet/Pet.cpp b/src/server/game/Entities/Pet/Pet.cpp index 490cab96296..8389edbab1a 100644 --- a/src/server/game/Entities/Pet/Pet.cpp +++ b/src/server/game/Entities/Pet/Pet.cpp @@ -910,7 +910,8 @@ bool Guardian::InitStatsForLevel(uint8 petlevel) uint32 health = uint32(basehp * healthmod); uint32 mana = stats->GenerateMana(m_creatureDifficulty); - SetCreateMana(stats->BaseMana); + SetCreateHealth(health); + SetCreateMana(mana); SetCreateStat(STAT_STRENGTH, 22); SetCreateStat(STAT_AGILITY, 22); SetCreateStat(STAT_STAMINA, 25); diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 691aa758912..e6080957e6a 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -25117,7 +25117,7 @@ void Player::AtExitCombat() float Player::GetBlockPercent(uint8 attackerLevel) const { float blockArmor = float(*m_activePlayerData->ShieldBlock); - float armorConstant = sDB2Manager.EvaluateExpectedStat(ExpectedStatType::ArmorConstant, attackerLevel, -2, 0, CLASS_NONE, 0); + float armorConstant = sDB2Manager.EvaluateExpectedStat(ExpectedStatType::ArmorConstant, attackerLevel, -2, 0, CLASS_NONE); if (!(blockArmor + armorConstant)) return 0; diff --git a/src/server/game/Entities/Unit/StatSystem.cpp b/src/server/game/Entities/Unit/StatSystem.cpp index a2a353aead8..1b00f4bd425 100644 --- a/src/server/game/Entities/Unit/StatSystem.cpp +++ b/src/server/game/Entities/Unit/StatSystem.cpp @@ -260,7 +260,6 @@ void Player::UpdateArmor() value += GetFlatModifierValue(unitMod, TOTAL_VALUE); // bonus armor from auras and items //add dynamic flat mods - AuraEffectList const& mResbyIntellect = GetAuraEffectsByType(SPELL_AURA_MOD_RESISTANCE_OF_STAT_PERCENT); for (AuraEffect const* aurEff : GetAuraEffectsByType(SPELL_AURA_MOD_RESISTANCE_OF_STAT_PERCENT)) if (aurEff->GetMiscValue() & SPELL_SCHOOL_MASK_NORMAL) value += CalculatePct(GetStat(Stats(aurEff->GetMiscValueB())), aurEff->GetAmount()); @@ -1119,14 +1118,13 @@ void Guardian::UpdateResistances(uint32 school) { if (school > SPELL_SCHOOL_NORMAL) { - float baseValue = GetFlatModifierValue(UnitMods(UNIT_MOD_RESISTANCE_START + school), BASE_VALUE); - float bonusValue = GetTotalAuraModValue(UnitMods(UNIT_MOD_RESISTANCE_START + school)) - baseValue; + float value = GetTotalAuraModValue(UnitMods(UNIT_MOD_RESISTANCE_START + school)); // hunter and warlock pets gain 40% of owner's resistance if (IsPet()) - baseValue += float(CalculatePct(m_owner->GetResistance(SpellSchools(school)), 40)); + value += float(CalculatePct(m_owner->GetResistance(SpellSchools(school)), 40)); - SetResistance(SpellSchools(school), int32(baseValue)); + SetResistance(SpellSchools(school), int32(value)); } else UpdateArmor(); diff --git a/src/server/game/Handlers/LFGHandler.cpp b/src/server/game/Handlers/LFGHandler.cpp index 578db5d938e..b917b119262 100644 --- a/src/server/game/Handlers/LFGHandler.cpp +++ b/src/server/game/Handlers/LFGHandler.cpp @@ -143,7 +143,7 @@ void WorldSession::SendLfgPlayerLockInfo() // Get Random dungeons that can be done at a certain level and expansion uint8 level = GetPlayer()->GetLevel(); - lfg::LfgDungeonSet const& randomDungeons = sLFGMgr->GetRandomAndSeasonalDungeons(level, GetExpansion(), 0); + lfg::LfgDungeonSet const& randomDungeons = sLFGMgr->GetRandomAndSeasonalDungeons(level, GetExpansion()); WorldPackets::LFG::LfgPlayerInfo lfgPlayerInfo; diff --git a/src/server/game/Handlers/SkillHandler.cpp b/src/server/game/Handlers/SkillHandler.cpp index 15dcfc8083c..9d8f598548e 100644 --- a/src/server/game/Handlers/SkillHandler.cpp +++ b/src/server/game/Handlers/SkillHandler.cpp @@ -26,10 +26,6 @@ #include "SpellPackets.h" #include "TalentPackets.h" -void WorldSession::HandleLearnTalentsOpcode(WorldPackets::Talent::LearnTalents& packet) -{ -} - void WorldSession::HandleLearnTalentOpcode(WorldPackets::Talent::LearnTalent& packet) { if (_player->LearnTalent(packet.TalentID, packet.RequestedRank)) @@ -44,10 +40,6 @@ void WorldSession::HandleLearnPreviewTalentsOpcode(WorldPackets::Talent::LearnPr _player->SendTalentsInfoData(); } -void WorldSession::HandleLearnPvpTalentsOpcode(WorldPackets::Talent::LearnPvpTalents& /*packet*/) -{ -} - void WorldSession::HandleConfirmRespecWipeOpcode(WorldPackets::Talent::ConfirmRespecWipe& confirmRespecWipe) { Creature* unit = GetPlayer()->GetNPCIfCanInteractWith(confirmRespecWipe.RespecMaster, UNIT_NPC_FLAG_TRAINER, UNIT_NPC_FLAG_2_NONE); diff --git a/src/server/game/Handlers/TraitHandler.cpp b/src/server/game/Handlers/TraitHandler.cpp deleted file mode 100644 index 05eb3ce4d21..00000000000 --- a/src/server/game/Handlers/TraitHandler.cpp +++ /dev/null @@ -1,139 +0,0 @@ -/* - * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation; either version 2 of the License, or (at your - * option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#include "WorldSession.h" -#include "Battleground.h" -#include "DB2Stores.h" -#include "Player.h" -#include "SpellHistory.h" -#include "TraitMgr.h" -#include "TraitPackets.h" - -void WorldSession::HandleTraitsCommitConfig(WorldPackets::Traits::TraitsCommitConfig const& traitsCommitConfig) -{ -} - -void WorldSession::HandleClassTalentsRequestNewConfig(WorldPackets::Traits::ClassTalentsRequestNewConfig& classTalentsRequestNewConfig) -{ - if (classTalentsRequestNewConfig.Config.Type != TraitConfigType::Combat) - return; - - if ((classTalentsRequestNewConfig.Config.CombatConfigFlags & TraitCombatConfigFlags::ActiveForSpec) != TraitCombatConfigFlags::None) - return; - - int64 configCount = std::count_if(_player->m_activePlayerData->TraitConfigs.begin(), _player->m_activePlayerData->TraitConfigs.end(), [](UF::TraitConfig const& traitConfig) - { - return static_cast<TraitConfigType>(*traitConfig.Type) == TraitConfigType::Combat - && (static_cast<TraitCombatConfigFlags>(*traitConfig.CombatConfigFlags) & TraitCombatConfigFlags::ActiveForSpec) == TraitCombatConfigFlags::None; - }); - if (configCount >= TraitMgr::MAX_COMBAT_TRAIT_CONFIGS) - return; - - auto findFreeLocalIdentifier = [&]() - { - int32 index = 1; - while (_player->m_activePlayerData->TraitConfigs.FindIndexIf([&](UF::TraitConfig const& traitConfig) - { - return static_cast<TraitConfigType>(*traitConfig.Type) == TraitConfigType::Combat - && traitConfig.ChrSpecializationID == int32(_player->GetPrimarySpecialization()) - && traitConfig.LocalIdentifier == index; - }) >= 0) - ++index; - - return index; - }; - - classTalentsRequestNewConfig.Config.ChrSpecializationID = AsUnderlyingType(_player->GetPrimarySpecialization()); - classTalentsRequestNewConfig.Config.LocalIdentifier = findFreeLocalIdentifier(); - - for (UF::TraitEntry const& grantedEntry : TraitMgr::GetGrantedTraitEntriesForConfig(classTalentsRequestNewConfig.Config, _player)) - { - auto entryItr = std::find_if(classTalentsRequestNewConfig.Config.Entries.begin(), classTalentsRequestNewConfig.Config.Entries.end(), - [&](WorldPackets::Traits::TraitEntry const& entry) { return entry.TraitNodeID == grantedEntry.TraitNodeID && entry.TraitNodeEntryID == grantedEntry.TraitNodeEntryID; }); - - WorldPackets::Traits::TraitEntry& newEntry = entryItr != classTalentsRequestNewConfig.Config.Entries.end() ? *entryItr : classTalentsRequestNewConfig.Config.Entries.emplace_back(); - newEntry.TraitNodeID = grantedEntry.TraitNodeID; - newEntry.TraitNodeEntryID = grantedEntry.TraitNodeEntryID; - newEntry.Rank = grantedEntry.Rank; - newEntry.GrantedRanks = grantedEntry.GrantedRanks; - if (TraitNodeEntryEntry const* traitNodeEntry = sTraitNodeEntryStore.LookupEntry(grantedEntry.TraitNodeEntryID)) - if (newEntry.Rank + newEntry.GrantedRanks > traitNodeEntry->MaxRanks) - newEntry.Rank = std::max(0, traitNodeEntry->MaxRanks - newEntry.GrantedRanks); - } - - TraitMgr::LearnResult validationResult = TraitMgr::ValidateConfig(classTalentsRequestNewConfig.Config, _player); - if (validationResult != TraitMgr::LearnResult::Ok) - return; - - _player->CreateTraitConfig(classTalentsRequestNewConfig.Config); -} - -void WorldSession::HandleClassTalentsRenameConfig(WorldPackets::Traits::ClassTalentsRenameConfig& classTalentsRenameConfig) -{ - _player->RenameTraitConfig(classTalentsRenameConfig.ConfigID, classTalentsRenameConfig.Name.Move()); -} - -void WorldSession::HandleClassTalentsDeleteConfig(WorldPackets::Traits::ClassTalentsDeleteConfig const& classTalentsDeleteConfig) -{ - _player->DeleteTraitConfig(classTalentsDeleteConfig.ConfigID); -} - -void WorldSession::HandleClassTalentsSetStarterBuildActive(WorldPackets::Traits::ClassTalentsSetStarterBuildActive const& classTalentsSetStarterBuildActive) -{ - UF::TraitConfig const* traitConfig = _player->GetTraitConfig(classTalentsSetStarterBuildActive.ConfigID); - if (!traitConfig) - return; - - if (static_cast<TraitConfigType>(*traitConfig->Type) != TraitConfigType::Combat) - return; - - if (!EnumFlag(static_cast<TraitCombatConfigFlags>(*traitConfig->CombatConfigFlags)).HasFlag(TraitCombatConfigFlags::ActiveForSpec)) - return; - - if (classTalentsSetStarterBuildActive.Active) - { - WorldPackets::Traits::TraitConfig newConfigState(*traitConfig); - - auto findFreeLocalIdentifier = [&]() - { - int32 index = 1; - while (_player->m_activePlayerData->TraitConfigs.FindIndexIf([&](UF::TraitConfig const& traitConfig) - { - return static_cast<TraitConfigType>(*traitConfig.Type) == TraitConfigType::Combat - && traitConfig.ChrSpecializationID == int32(_player->GetPrimarySpecialization()) - && traitConfig.LocalIdentifier == index; - }) >= 0) - ++index; - - return index; - }; - - TraitMgr::InitializeStarterBuildTraitConfig(newConfigState, _player); - newConfigState.CombatConfigFlags |= TraitCombatConfigFlags::StarterBuild; - newConfigState.LocalIdentifier = findFreeLocalIdentifier(); - - _player->UpdateTraitConfig(std::move(newConfigState), 0, true); - } - else - _player->SetTraitConfigUseStarterBuild(classTalentsSetStarterBuildActive.ConfigID, false); -} - -void WorldSession::HandleClassTalentsSetUsesSharedActionBars(WorldPackets::Traits::ClassTalentsSetUsesSharedActionBars const& classTalentsSetUsesSharedActionBars) -{ - _player->SetTraitConfigUseSharedActionBars(classTalentsSetUsesSharedActionBars.ConfigID, classTalentsSetUsesSharedActionBars.UsesShared, - classTalentsSetUsesSharedActionBars.IsLastSelectedSavedConfig); -} diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index 6ee3b9b353f..8d8f9e94669 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -340,13 +340,13 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_CHOICE_RESPONSE, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandlePlayerChoiceResponse); DEFINE_HANDLER(CMSG_CHROMIE_TIME_SELECT_EXPANSION, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_CLAIM_WEEKLY_REWARD, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); - DEFINE_HANDLER(CMSG_CLASS_TALENTS_DELETE_CONFIG, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleClassTalentsDeleteConfig); + DEFINE_HANDLER(CMSG_CLASS_TALENTS_DELETE_CONFIG, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_CLASS_TALENTS_NOTIFY_EMPTY_CONFIG, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_CLASS_TALENTS_NOTIFY_VALIDATION_FAILED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); - DEFINE_HANDLER(CMSG_CLASS_TALENTS_RENAME_CONFIG, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleClassTalentsRenameConfig); - DEFINE_HANDLER(CMSG_CLASS_TALENTS_REQUEST_NEW_CONFIG, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleClassTalentsRequestNewConfig); - DEFINE_HANDLER(CMSG_CLASS_TALENTS_SET_STARTER_BUILD_ACTIVE, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleClassTalentsSetStarterBuildActive); - DEFINE_HANDLER(CMSG_CLASS_TALENTS_SET_USES_SHARED_ACTION_BARS, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleClassTalentsSetUsesSharedActionBars); + DEFINE_HANDLER(CMSG_CLASS_TALENTS_RENAME_CONFIG, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_CLASS_TALENTS_REQUEST_NEW_CONFIG, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_CLASS_TALENTS_SET_STARTER_BUILD_ACTIVE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_CLASS_TALENTS_SET_USES_SHARED_ACTION_BARS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_CLEAR_NEW_APPEARANCE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_CLEAR_RAID_MARKER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleClearRaidMarker); DEFINE_HANDLER(CMSG_CLEAR_TRADE_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleClearTradeItemOpcode); @@ -553,8 +553,8 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_KEEP_ALIVE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_EarlyProccess); DEFINE_HANDLER(CMSG_KEYBOUND_OVERRIDE, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleKeyboundOverride); DEFINE_HANDLER(CMSG_LATENCY_REPORT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); - DEFINE_HANDLER(CMSG_LEARN_PVP_TALENTS, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleLearnPvpTalentsOpcode); - DEFINE_HANDLER(CMSG_LEARN_TALENTS, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleLearnTalentsOpcode); + DEFINE_HANDLER(CMSG_LEARN_PVP_TALENTS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_LEARN_TALENTS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_LEARN_PREVIEW_TALENTS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleLearnPreviewTalentsOpcode); DEFINE_HANDLER(CMSG_LEARN_PREVIEW_TALENTS_PET, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_LEARN_TALENT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleLearnTalentOpcode); @@ -976,7 +976,7 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_TRADE_SKILL_SET_FAVORITE, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleTradeSkillSetFavorite); DEFINE_HANDLER(CMSG_TRAINER_BUY_SPELL, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleTrainerBuySpellOpcode); DEFINE_HANDLER(CMSG_TRAINER_LIST, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleTrainerListOpcode); - DEFINE_HANDLER(CMSG_TRAITS_COMMIT_CONFIG, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleTraitsCommitConfig); + DEFINE_HANDLER(CMSG_TRAITS_COMMIT_CONFIG, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_TRAITS_TALENT_TEST_UNLEARN_SPELLS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_TRANSMOGRIFY_ITEMS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleTransmogrifyItems); DEFINE_HANDLER(CMSG_TURN_IN_PETITION, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleTurnInPetition); diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index bf297c185d4..4d98e0380ce 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -720,9 +720,7 @@ namespace WorldPackets namespace Talent { class LearnTalent; - class LearnTalents; class LearnPreviewTalents; - class LearnPvpTalents; class ConfirmRespecWipe; class RemoveGlyph; } @@ -774,16 +772,6 @@ namespace WorldPackets class TradeStatus; } - namespace Traits - { - class TraitsCommitConfig; - class ClassTalentsRequestNewConfig; - class ClassTalentsRenameConfig; - class ClassTalentsDeleteConfig; - class ClassTalentsSetStarterBuildActive; - class ClassTalentsSetUsesSharedActionBars; - } - namespace Transmogrification { class TransmogrifyItems; @@ -1505,8 +1493,6 @@ class TC_GAME_API WorldSession void HandleMissileTrajectoryCollision(WorldPackets::Spells::MissileTrajectoryCollision& packet); void HandleUpdateMissileTrajectory(WorldPackets::Spells::UpdateMissileTrajectory& packet); - void HandleLearnPvpTalentsOpcode(WorldPackets::Talent::LearnPvpTalents& packet); - void HandleLearnTalentsOpcode(WorldPackets::Talent::LearnTalents& packet); void HandleLearnTalentOpcode(WorldPackets::Talent::LearnTalent& packet); void HandleLearnPreviewTalentsOpcode(WorldPackets::Talent::LearnPreviewTalents& packet); void HandleConfirmRespecWipeOpcode(WorldPackets::Talent::ConfirmRespecWipe& confirmRespecWipe); @@ -1514,13 +1500,6 @@ class TC_GAME_API WorldSession void HandleTradeSkillSetFavorite(WorldPackets::Spells::TradeSkillSetFavorite const& tradeSkillSetFavorite); void HandleRemoveGlyphOpcode(WorldPackets::Talent::RemoveGlyph& packet); - void HandleTraitsCommitConfig(WorldPackets::Traits::TraitsCommitConfig const& traitsCommitConfig); - void HandleClassTalentsRequestNewConfig(WorldPackets::Traits::ClassTalentsRequestNewConfig& classTalentsRequestNewConfig); - void HandleClassTalentsRenameConfig(WorldPackets::Traits::ClassTalentsRenameConfig& classTalentsRenameConfig); - void HandleClassTalentsDeleteConfig(WorldPackets::Traits::ClassTalentsDeleteConfig const& classTalentsDeleteConfig); - void HandleClassTalentsSetStarterBuildActive(WorldPackets::Traits::ClassTalentsSetStarterBuildActive const& classTalentsSetStarterBuildActive); - void HandleClassTalentsSetUsesSharedActionBars(WorldPackets::Traits::ClassTalentsSetUsesSharedActionBars const& classTalentsSetUsesSharedActionBars); - void HandleQuestgiverStatusQueryOpcode(WorldPackets::Quest::QuestGiverStatusQuery& packet); void HandleQuestgiverStatusMultipleQuery(WorldPackets::Quest::QuestGiverStatusMultipleQuery& packet); void HandleQuestgiverStatusTrackedQueryOpcode(WorldPackets::Quest::QuestGiverStatusTrackedQuery& questGiverStatusTrackedQuery); diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index d386b7a3c0f..4802d085019 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -186,7 +186,7 @@ NonDefaultConstructible<pAuraEffectHandler> AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleNoImmediateEffect, //116 SPELL_AURA_MOD_REGEN_DURING_COMBAT &AuraEffect::HandleNoImmediateEffect, //117 SPELL_AURA_MOD_MECHANIC_RESISTANCE implemented in Unit::MagicSpellHitResult &AuraEffect::HandleNoImmediateEffect, //118 SPELL_AURA_MOD_HEALING_PCT implemented in Unit::SpellHealingBonus - &AuraEffect::HandleAuraPvpTalents, //119 SPELL_AURA_PVP_TALENTS + &AuraEffect::HandleNULL, //119 SPELL_AURA_PVP_TALENTS &AuraEffect::HandleAuraUntrackable, //120 SPELL_AURA_UNTRACKABLE &AuraEffect::HandleAuraEmpathy, //121 SPELL_AURA_EMPATHY &AuraEffect::HandleModOffhandDamagePercent, //122 SPELL_AURA_MOD_OFFHAND_DAMAGE_PCT @@ -6123,10 +6123,6 @@ void AuraEffect::HandleCreateAreaTrigger(AuraApplication const* aurApp, uint8 mo } } -void AuraEffect::HandleAuraPvpTalents(AuraApplication const* auraApp, uint8 mode, bool apply) const -{ -} - void AuraEffect::HandleLinkedSummon(AuraApplication const* aurApp, uint8 mode, bool apply) const { if (!(mode & AURA_EFFECT_HANDLE_REAL)) diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.h b/src/server/game/Spells/Auras/SpellAuraEffects.h index 11d26f00731..d234ceed557 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.h +++ b/src/server/game/Spells/Auras/SpellAuraEffects.h @@ -358,9 +358,6 @@ class TC_GAME_API AuraEffect void HandleProcTriggerSpellAuraProc(AuraApplication* aurApp, ProcEventInfo& eventInfo); void HandleProcTriggerSpellWithValueAuraProc(AuraApplication* aurApp, ProcEventInfo& eventInfo); void HandleProcTriggerDamageAuraProc(AuraApplication* aurApp, ProcEventInfo& eventInfo); - - // pvp talents - void HandleAuraPvpTalents(AuraApplication const* auraApp, uint8 mode, bool apply) const; }; namespace Trinity diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index dae21c41307..e7ad468e0ff 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -6072,8 +6072,6 @@ SpellCastResult Spell::CheckCast(bool strict, int32* param1 /*= nullptr*/, int32 if (m_caster->GetTypeId() != TYPEID_PLAYER) return SPELL_FAILED_GLYPH_NO_SPEC; - Player* caster = m_caster->ToPlayer(); - if (uint32 glyphId = spellEffectInfo.MiscValue) { GlyphPropertiesEntry const* glyphProperties = sGlyphPropertiesStore.LookupEntry(glyphId); diff --git a/src/server/scripts/Spells/spell_paladin.cpp b/src/server/scripts/Spells/spell_paladin.cpp index 5150b674434..53cda732603 100644 --- a/src/server/scripts/Spells/spell_paladin.cpp +++ b/src/server/scripts/Spells/spell_paladin.cpp @@ -172,32 +172,6 @@ class spell_pal_ardent_defender : public AuraScript } }; -// 267344 - Art of War -class spell_pal_art_of_war : public AuraScript -{ - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo({ SPELL_PALADIN_ART_OF_WAR_TRIGGERED, SPELL_PALADIN_BLADE_OF_JUSTICE }); - } - - bool CheckProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/) - { - return roll_chance_i(aurEff->GetAmount()); - } - - void HandleProc(AuraEffect* /*aurEff*/, ProcEventInfo& /*eventInfo*/) - { - GetTarget()->GetSpellHistory()->ResetCooldown(SPELL_PALADIN_BLADE_OF_JUSTICE, true); - GetTarget()->CastSpell(GetTarget(), SPELL_PALADIN_ART_OF_WAR_TRIGGERED, TRIGGERED_IGNORE_CAST_IN_PROGRESS); - } - - void Register() override - { - DoCheckEffectProc += AuraCheckEffectProcFn(spell_pal_art_of_war::CheckProc, EFFECT_0, SPELL_AURA_DUMMY); - OnEffectProc += AuraEffectProcFn(spell_pal_art_of_war::HandleProc, EFFECT_0, SPELL_AURA_DUMMY); - } -}; - // 19042 - Ashen Hallow struct areatrigger_pal_ashen_hallow : AreaTriggerAI { @@ -253,47 +227,7 @@ private: Milliseconds _period; }; -// 248033 - Awakening -class spell_pal_awakening : public AuraScript -{ - bool Validate(SpellInfo const* spellInfo) override - { - return ValidateSpellInfo({ SPELL_PALADIN_AVENGING_WRATH }) - && ValidateSpellEffect({ { spellInfo->Id, EFFECT_1 } }); - } - - bool CheckProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/) - { - return roll_chance_i(aurEff->GetAmount()); - } - - void HandleProc(AuraEffect* /*aurEff*/, ProcEventInfo& eventInfo) - { - Milliseconds extraDuration = 0ms; - if (AuraEffect const* durationEffect = GetEffect(EFFECT_1)) - extraDuration = Seconds(durationEffect->GetAmount()); - - if (Aura* avengingWrath = GetTarget()->GetAura(SPELL_PALADIN_AVENGING_WRATH)) - { - avengingWrath->SetDuration(avengingWrath->GetDuration() + extraDuration.count()); - avengingWrath->SetMaxDuration(avengingWrath->GetMaxDuration() + extraDuration.count()); - } - else - GetTarget()->CastSpell(GetTarget(), SPELL_PALADIN_AVENGING_WRATH, - CastSpellExtraArgs(TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_IGNORE_SPELL_AND_CATEGORY_CD) - .SetTriggeringSpell(eventInfo.GetProcSpell()) - .AddSpellMod(SPELLVALUE_DURATION, extraDuration.count())); - } - - void Register() override - { - DoCheckEffectProc += AuraCheckEffectProcFn(spell_pal_awakening::CheckProc, EFFECT_0, SPELL_AURA_DUMMY); - OnEffectProc += AuraEffectProcFn(spell_pal_awakening::HandleProc, EFFECT_0, SPELL_AURA_DUMMY); - } -}; - // 1022 - Blessing of Protection -// 204018 - Blessing of Spellwarding class spell_pal_blessing_of_protection : public SpellScript { bool Validate(SpellInfo const* spellInfo) override @@ -331,26 +265,6 @@ class spell_pal_blessing_of_protection : public SpellScript } }; -// 115750 - Blinding Light -class spell_pal_blinding_light : public SpellScript -{ - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo({ SPELL_PALADIN_BLINDING_LIGHT_EFFECT }); - } - - void HandleDummy(SpellEffIndex /*effIndex*/) - { - if (Unit* target = GetHitUnit()) - GetCaster()->CastSpell(target, SPELL_PALADIN_BLINDING_LIGHT_EFFECT, true); - } - - void Register() override - { - OnEffectHitTarget += SpellEffectFn(spell_pal_blinding_light::HandleDummy, EFFECT_0, SPELL_EFFECT_APPLY_AURA); - } -}; - // 26573 - Consecration class spell_pal_consecration : public AuraScript { @@ -407,80 +321,6 @@ struct areatrigger_pal_consecration : AreaTriggerAI } }; -// 196926 - Crusader Might -class spell_pal_crusader_might : public AuraScript -{ - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo({ SPELL_PALADIN_HOLY_SHOCK }); - } - - void HandleEffectProc(AuraEffect* aurEff, ProcEventInfo& /*eventInfo*/) - { - GetTarget()->GetSpellHistory()->ModifyCooldown(SPELL_PALADIN_HOLY_SHOCK, Seconds(aurEff->GetAmount())); - } - - void Register() override - { - OnEffectProc += AuraEffectProcFn(spell_pal_crusader_might::HandleEffectProc, EFFECT_0, SPELL_AURA_DUMMY); - } -}; - -// 406833 - Crusading Strikes -class spell_pal_crusading_strikes : public AuraScript -{ - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo({ SPELL_PALADIN_CRUSADING_STRIKES_ENERGIZE }); - } - - void HandleEffectProc(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/) - { - if (GetStackAmount() == 2) - { - GetTarget()->CastSpell(GetTarget(), SPELL_PALADIN_CRUSADING_STRIKES_ENERGIZE, aurEff); - - // this spell has weird proc order dependency set up in db2 data so we do removal manually - Remove(); - } - } - - void Register() override - { - AfterEffectApply += AuraEffectApplyFn(spell_pal_crusading_strikes::HandleEffectProc, EFFECT_0, SPELL_AURA_PROC_TRIGGER_SPELL, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK); - } -}; - -// 223817 - Divine Purpose -class spell_pal_divine_purpose : public AuraScript -{ - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo({ SPELL_PALADIN_DIVINE_PURPOSE_TRIGGERED }); - } - - bool CheckProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo) - { - Spell const* procSpell = eventInfo.GetProcSpell(); - if (!procSpell) - return false; - - return roll_chance_i(aurEff->GetAmount()); - } - - void HandleProc(AuraEffect* /*aurEff*/, ProcEventInfo& eventInfo) - { - eventInfo.GetActor()->CastSpell(eventInfo.GetActor(), SPELL_PALADIN_DIVINE_PURPOSE_TRIGGERED, - CastSpellExtraArgs(TRIGGERED_IGNORE_CAST_IN_PROGRESS).SetTriggeringSpell(eventInfo.GetProcSpell())); - } - - void Register() override - { - DoCheckEffectProc += AuraCheckEffectProcFn(spell_pal_divine_purpose::CheckProc, EFFECT_0, SPELL_AURA_DUMMY); - OnEffectProc += AuraEffectProcFn(spell_pal_divine_purpose::HandleProc, EFFECT_0, SPELL_AURA_DUMMY); - } -}; - // 642 - Divine Shield class spell_pal_divine_shield : public SpellScript { @@ -525,68 +365,6 @@ class spell_pal_divine_shield : public SpellScript } }; -// 190784 - Divine Steed -class spell_pal_divine_steed : public SpellScript -{ - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo( - { - SPELL_PALADIN_DIVINE_STEED_HUMAN, - SPELL_PALADIN_DIVINE_STEED_DWARF, - SPELL_PALADIN_DIVINE_STEED_DRAENEI, - SPELL_PALADIN_DIVINE_STEED_DARK_IRON_DWARF, - SPELL_PALADIN_DIVINE_STEED_BLOODELF, - SPELL_PALADIN_DIVINE_STEED_TAUREN, - SPELL_PALADIN_DIVINE_STEED_ZANDALARI_TROLL, - SPELL_PALADIN_DIVINE_STEED_LF_DRAENEI - }); - } - - void HandleOnCast() - { - Unit* caster = GetCaster(); - - uint32 spellId = SPELL_PALADIN_DIVINE_STEED_HUMAN; - switch (caster->GetRace()) - { - case RACE_HUMAN: - spellId = SPELL_PALADIN_DIVINE_STEED_HUMAN; - break; - case RACE_DWARF: - spellId = SPELL_PALADIN_DIVINE_STEED_DWARF; - break; - case RACE_DRAENEI: - spellId = SPELL_PALADIN_DIVINE_STEED_DRAENEI; - break; - case RACE_LIGHTFORGED_DRAENEI: - spellId = SPELL_PALADIN_DIVINE_STEED_LF_DRAENEI; - break; - case RACE_DARK_IRON_DWARF: - spellId = SPELL_PALADIN_DIVINE_STEED_DARK_IRON_DWARF; - break; - case RACE_BLOODELF: - spellId = SPELL_PALADIN_DIVINE_STEED_BLOODELF; - break; - case RACE_TAUREN: - spellId = SPELL_PALADIN_DIVINE_STEED_TAUREN; - break; - case RACE_ZANDALARI_TROLL: - spellId = SPELL_PALADIN_DIVINE_STEED_ZANDALARI_TROLL; - break; - default: - break; - } - - caster->CastSpell(caster, spellId, true); - } - - void Register() override - { - OnCast += SpellCastFn(spell_pal_divine_steed::HandleOnCast); - } -}; - // 53385 - Divine Storm class spell_pal_divine_storm : public SpellScript { @@ -606,46 +384,6 @@ class spell_pal_divine_storm : public SpellScript } }; -// 205191 - Eye for an Eye -class spell_pal_eye_for_an_eye : public AuraScript -{ - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo({ SPELL_PALADIN_EYE_FOR_AN_EYE_TRIGGERED }); - } - - void HandleEffectProc(AuraEffect* /*aurEff*/, ProcEventInfo& eventInfo) - { - GetTarget()->CastSpell(eventInfo.GetActor(), SPELL_PALADIN_EYE_FOR_AN_EYE_TRIGGERED, true); - } - - void Register() override - { - OnEffectProc += AuraEffectProcFn(spell_pal_eye_for_an_eye::HandleEffectProc, EFFECT_0, SPELL_AURA_DUMMY); - } -}; - -// 234299 - Fist of Justice -class spell_pal_fist_of_justice : public AuraScript -{ - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo({ SPELL_PALADIN_HAMMER_OF_JUSTICE }); - } - - void HandleEffectProc(AuraEffect* aurEff, ProcEventInfo& /*procInfo*/) - { - int32 value = aurEff->GetAmount() / 10; - - GetTarget()->GetSpellHistory()->ModifyCooldown(SPELL_PALADIN_HAMMER_OF_JUSTICE, Seconds(-value)); - } - - void Register() override - { - OnEffectProc += AuraEffectProcFn(spell_pal_fist_of_justice::HandleEffectProc, EFFECT_0, SPELL_AURA_DUMMY); - } -}; - // -85043 - Grand Crusader class spell_pal_grand_crusader : public AuraScript { @@ -789,26 +527,7 @@ class spell_pal_infusion_of_light : public AuraScript } }; -// 327193 - Moment of Glory -class spell_pal_moment_of_glory : public SpellScript -{ - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo({ SPELL_PALADIN_AVENGERS_SHIELD }); - } - - void HandleOnHit() - { - GetCaster()->GetSpellHistory()->ResetCooldown(SPELL_PALADIN_AVENGERS_SHIELD); - } - - void Register() override - { - OnHit += SpellHitFn(spell_pal_moment_of_glory::HandleOnHit); - } -}; - -// 20271/275779/275773 - Judgement (Retribution/Protection/Holy) +// 20271 - Judgement (Retribution/Protection/Holy) class spell_pal_judgment : public SpellScript { bool Validate(SpellInfo const* /*spellInfo*/) override @@ -839,91 +558,6 @@ class spell_pal_judgment : public SpellScript } }; -// 114165 - Holy Prism -class spell_pal_holy_prism : public SpellScript -{ - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo ({ SPELL_PALADIN_HOLY_PRISM_TARGET_ALLY, SPELL_PALADIN_HOLY_PRISM_TARGET_ENEMY, SPELL_PALADIN_HOLY_PRISM_TARGET_BEAM_VISUAL }); - } - - void HandleDummy(SpellEffIndex /*effIndex*/) - { - if (GetCaster()->IsFriendlyTo(GetHitUnit())) - GetCaster()->CastSpell(GetHitUnit(), SPELL_PALADIN_HOLY_PRISM_TARGET_ALLY, true); - else - GetCaster()->CastSpell(GetHitUnit(), SPELL_PALADIN_HOLY_PRISM_TARGET_ENEMY , true); - - GetCaster()->CastSpell(GetHitUnit(), SPELL_PALADIN_HOLY_PRISM_TARGET_BEAM_VISUAL, true); - } - - void Register() override - { - OnEffectHitTarget += SpellEffectFn(spell_pal_holy_prism::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); - } -}; - -// 114852 - Holy Prism (Damage) -// 114871 - Holy Prism (Heal) -class spell_pal_holy_prism_selector : public SpellScript -{ - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo ({ SPELL_PALADIN_HOLY_PRISM_TARGET_ALLY, SPELL_PALADIN_HOLY_PRISM_AREA_BEAM_VISUAL }); - } - - void SaveTargetGuid(SpellEffIndex /*effIndex*/) - { - _targetGUID = GetHitUnit()->GetGUID(); - } - - void FilterTargets(std::list<WorldObject*>& targets) - { - uint8 const maxTargets = 5; - - if (targets.size() > maxTargets) - { - if (GetSpellInfo()->Id == SPELL_PALADIN_HOLY_PRISM_TARGET_ALLY) - { - targets.sort(Trinity::HealthPctOrderPred()); - targets.resize(maxTargets); - } - else - Trinity::Containers::RandomResize(targets, maxTargets); - } - - _sharedTargets = targets; - } - - void ShareTargets(std::list<WorldObject*>& targets) - { - targets = _sharedTargets; - } - - void HandleScript(SpellEffIndex /*effIndex*/) - { - if (Unit* initialTarget = ObjectAccessor::GetUnit(*GetCaster(), _targetGUID)) - initialTarget->CastSpell(GetHitUnit(), SPELL_PALADIN_HOLY_PRISM_AREA_BEAM_VISUAL, true); - } - - void Register() override - { - if (m_scriptSpellId == SPELL_PALADIN_HOLY_PRISM_TARGET_ENEMY) - OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_pal_holy_prism_selector::FilterTargets, EFFECT_1, TARGET_UNIT_DEST_AREA_ALLY); - else if (m_scriptSpellId == SPELL_PALADIN_HOLY_PRISM_TARGET_ALLY) - OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_pal_holy_prism_selector::FilterTargets, EFFECT_1, TARGET_UNIT_DEST_AREA_ENEMY); - - OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_pal_holy_prism_selector::ShareTargets, EFFECT_2, TARGET_UNIT_DEST_AREA_ENTRY); - - OnEffectHitTarget += SpellEffectFn(spell_pal_holy_prism_selector::SaveTargetGuid, EFFECT_0, SPELL_EFFECT_ANY); - OnEffectHitTarget += SpellEffectFn(spell_pal_holy_prism_selector::HandleScript, EFFECT_2, SPELL_EFFECT_SCRIPT_EFFECT); - } - -private: - std::list<WorldObject*> _sharedTargets; - ObjectGuid _targetGUID; -}; - // 20473 - Holy Shock class spell_pal_holy_shock : public SpellScript { @@ -1175,174 +809,6 @@ class spell_pal_light_s_beacon : public AuraScript } }; -// 122773 - Light's Hammer -class spell_pal_light_hammer_init_summon : public SpellScript -{ - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo - ({ - SPELL_PALADIN_LIGHT_HAMMER_COSMETIC, - SPELL_PALADIN_LIGHT_HAMMER_PERIODIC - }); - } - - void InitSummon() - { - for (SpellLogEffectGenericVictimParams const& summonedObject : GetSpell()->GetExecuteLogEffectTargets(SPELL_EFFECT_SUMMON, &SpellLogEffect::GenericVictimTargets)) - { - if (Unit* hammer = ObjectAccessor::GetUnit(*GetCaster(), summonedObject.Victim)) - { - hammer->CastSpell(hammer, SPELL_PALADIN_LIGHT_HAMMER_COSMETIC, - CastSpellExtraArgs(TRIGGERED_IGNORE_CAST_IN_PROGRESS).SetTriggeringSpell(GetSpell())); - hammer->CastSpell(hammer, SPELL_PALADIN_LIGHT_HAMMER_PERIODIC, - CastSpellExtraArgs(TRIGGERED_IGNORE_CAST_IN_PROGRESS).SetTriggeringSpell(GetSpell())); - } - } - } - - void Register() override - { - AfterCast += SpellCastFn(spell_pal_light_hammer_init_summon::InitSummon); - } -}; - -// 114918 - Light's Hammer (Periodic) -class spell_pal_light_hammer_periodic : public AuraScript -{ - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo - ({ - SPELL_PALADIN_LIGHT_HAMMER_HEALING, - SPELL_PALADIN_LIGHT_HAMMER_DAMAGE - }); - } - - void HandleEffectPeriodic(AuraEffect const* /*aurEff*/) - { - Unit* lightHammer = GetTarget(); - if (Unit* originalCaster = lightHammer->GetOwner()) - { - originalCaster->CastSpell(lightHammer->GetPosition(), SPELL_PALADIN_LIGHT_HAMMER_DAMAGE, TRIGGERED_IGNORE_CAST_IN_PROGRESS); - originalCaster->CastSpell(lightHammer->GetPosition(), SPELL_PALADIN_LIGHT_HAMMER_HEALING, TRIGGERED_IGNORE_CAST_IN_PROGRESS); - } - } - - void Register() override - { - OnEffectPeriodic += AuraEffectPeriodicFn(spell_pal_light_hammer_periodic::HandleEffectPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY); - } -}; - -// 204074 - Righteous Protector -class spell_pal_righteous_protector : public AuraScript -{ - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo({ SPELL_PALADIN_AVENGING_WRATH, SPELL_PALADIN_GUARDIAN_OF_ANCIENT_KINGS }); - } - - void HandleEffectProc(AuraEffect* aurEff, ProcEventInfo& /*eventInfo*/) - { - int32 value = aurEff->GetAmount() * 100 * _baseHolyPowerCost->Amount; - - GetTarget()->GetSpellHistory()->ModifyCooldown(SPELL_PALADIN_AVENGING_WRATH, Milliseconds(-value)); - GetTarget()->GetSpellHistory()->ModifyCooldown(SPELL_PALADIN_GUARDIAN_OF_ANCIENT_KINGS, Milliseconds(-value)); - } - - void Register() override - { - OnEffectProc += AuraEffectProcFn(spell_pal_righteous_protector::HandleEffectProc, EFFECT_0, SPELL_AURA_DUMMY); - } - - Optional<SpellPowerCost> _baseHolyPowerCost; -}; - -// 267610 - Righteous Verdict -class spell_pal_righteous_verdict : public AuraScript -{ - bool Validate(SpellInfo const* /*spellEntry*/) override - { - return ValidateSpellInfo({ SPELL_PALADIN_RIGHTEOUS_VERDICT_AURA }); - } - - void HandleEffectProc(AuraEffect* /*aurEff*/, ProcEventInfo& procInfo) - { - procInfo.GetActor()->CastSpell(procInfo.GetActor(), SPELL_PALADIN_RIGHTEOUS_VERDICT_AURA, true); - } - - void Register() override - { - OnEffectProc += AuraEffectProcFn(spell_pal_righteous_verdict::HandleEffectProc, EFFECT_0, SPELL_AURA_DUMMY); - } -}; - -// 85804 - Selfless Healer -class spell_pal_selfless_healer : public AuraScript -{ - bool CheckEffectProc(AuraEffect const* /*aurEff*/, ProcEventInfo& eventInfo) - { - return false; - } - - void Register() override - { - DoCheckEffectProc += AuraCheckEffectProcFn(spell_pal_selfless_healer::CheckEffectProc, EFFECT_0, SPELL_AURA_PROC_TRIGGER_SPELL); - } -}; - -// 184662 - Shield of Vengeance -class spell_pal_shield_of_vengeance : public AuraScript -{ - bool Validate(SpellInfo const* spellInfo) override - { - return ValidateSpellInfo({ SPELL_PALADIN_SHIELD_OF_VENGEANCE_DAMAGE }) && ValidateSpellEffect({ { spellInfo->Id, EFFECT_1 } }); - } - - void CalculateAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& /*canBeRecalculated*/) - { - amount = CalculatePct(GetUnitOwner()->GetMaxHealth(), GetEffectInfo(EFFECT_1).CalcValue()); - //if (Player const* player = GetUnitOwner()->ToPlayer()) - // AddPct(amount, player->GetRatingBonusValue(CR_VERSATILITY_DAMAGE_DONE) + player->GetTotalAuraModifier(SPELL_AURA_MOD_VERSATILITY)); - - _initialAmount = amount; - } - - void HandleRemove(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/) - { - GetTarget()->CastSpell(GetTarget(), SPELL_PALADIN_SHIELD_OF_VENGEANCE_DAMAGE, - CastSpellExtraArgs(TRIGGERED_FULL_MASK).AddSpellMod(SPELLVALUE_BASE_POINT0, _initialAmount - aurEff->GetAmount())); - } - - void Register() override - { - DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_pal_shield_of_vengeance::CalculateAmount, EFFECT_0, SPELL_AURA_SCHOOL_ABSORB); - OnEffectRemove += AuraEffectApplyFn(spell_pal_shield_of_vengeance::HandleRemove, EFFECT_0, SPELL_AURA_SCHOOL_ABSORB, AURA_EFFECT_HANDLE_REAL); - } - - int32 _initialAmount = 0; -}; - -// 85256 - Templar's Verdict -class spell_pal_templar_s_verdict : public SpellScript -{ - bool Validate(SpellInfo const* /*spellEntry*/) override - { - return ValidateSpellInfo({ SPELL_PALADIN_TEMPLAR_VERDICT_DAMAGE }); - } - - void HandleHitTarget(SpellEffIndex /*effIndex*/) - { - GetCaster()->CastSpell(GetHitUnit(), SPELL_PALADIN_TEMPLAR_VERDICT_DAMAGE, true); - } - - void Register() override - { - OnEffectHitTarget += SpellEffectFn(spell_pal_templar_s_verdict::HandleHitTarget, EFFECT_0, SPELL_EFFECT_DUMMY); - } -}; - // 28789 - Holy Power class spell_pal_t3_6p_bonus : public AuraScript { @@ -1433,109 +899,21 @@ class spell_pal_t8_2p_bonus : public AuraScript } }; -// 405547 - Paladin Protection 10.1 Class Set 2pc -class spell_pal_t30_2p_protection_bonus : public AuraScript -{ - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo({ SPELL_PALADIN_T30_2P_HEARTFIRE_DAMAGE }); - } - - void HandleProc(AuraEffect* aurEff, ProcEventInfo& procInfo) - { - PreventDefaultAction(); - - Unit* caster = procInfo.GetActor(); - uint32 ticks = sSpellMgr->AssertSpellInfo(SPELL_PALADIN_T30_2P_HEARTFIRE_DAMAGE, DIFFICULTY_NONE)->GetMaxTicks(); - uint32 damage = CalculatePct(procInfo.GetDamageInfo()->GetOriginalDamage(), aurEff->GetAmount()) / ticks; - - caster->CastSpell(procInfo.GetActionTarget(), SPELL_PALADIN_T30_2P_HEARTFIRE_DAMAGE, CastSpellExtraArgs(aurEff) - .SetTriggeringSpell(procInfo.GetProcSpell()) - .AddSpellMod(SPELLVALUE_BASE_POINT0, damage)); - } - - void Register() override - { - OnEffectProc += AuraEffectProcFn(spell_pal_t30_2p_protection_bonus::HandleProc, EFFECT_1, SPELL_AURA_DUMMY); - } -}; - -// 408461 - Heartfire -class spell_pal_t30_2p_protection_bonus_heal : public AuraScript -{ - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo({ SPELL_PALADIN_T30_2P_HEARTFIRE_HEAL }); - } - - bool CheckProc(AuraEffect const* /*aurEff*/, ProcEventInfo& procInfo) - { - return procInfo.GetDamageInfo() && procInfo.GetSpellInfo() && procInfo.GetSpellInfo()->HasLabel(SPELL_LABEL_PALADIN_T30_2P_HEARTFIRE); - } - - void HandleProc(AuraEffect* aurEff, ProcEventInfo& procInfo) - { - GetTarget()->CastSpell(GetTarget(), SPELL_PALADIN_T30_2P_HEARTFIRE_HEAL, CastSpellExtraArgs(aurEff) - .SetTriggeringSpell(procInfo.GetProcSpell()) - .AddSpellMod(SPELLVALUE_BASE_POINT0, procInfo.GetDamageInfo()->GetOriginalDamage())); - } - - void Register() override - { - DoCheckEffectProc += AuraCheckEffectProcFn(spell_pal_t30_2p_protection_bonus_heal::CheckProc, EFFECT_0, SPELL_AURA_DUMMY); - OnEffectProc += AuraEffectProcFn(spell_pal_t30_2p_protection_bonus_heal::HandleProc, EFFECT_0, SPELL_AURA_DUMMY); - } -}; - -// 269569 - Zeal -class spell_pal_zeal : public AuraScript -{ - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo({ SPELL_PALADIN_ZEAL_AURA }); - } - - void HandleEffectProc(AuraEffect* aurEff, ProcEventInfo& /*procInfo*/) - { - Unit* target = GetTarget(); - target->CastSpell(target, SPELL_PALADIN_ZEAL_AURA, CastSpellExtraArgs(TRIGGERED_FULL_MASK).AddSpellMod(SPELLVALUE_AURA_STACK, aurEff->GetAmount())); - - PreventDefaultAction(); - } - - void Register() override - { - OnEffectProc += AuraEffectProcFn(spell_pal_zeal::HandleEffectProc, EFFECT_0, SPELL_AURA_PROC_TRIGGER_SPELL); - } -}; - void AddSC_paladin_spell_scripts() { RegisterSpellScript(spell_pal_ardent_defender); - RegisterSpellScript(spell_pal_art_of_war); RegisterAreaTriggerAI(areatrigger_pal_ashen_hallow); - RegisterSpellScript(spell_pal_awakening); RegisterSpellScript(spell_pal_blessing_of_protection); - RegisterSpellScript(spell_pal_blinding_light); - RegisterSpellScript(spell_pal_crusader_might); - RegisterSpellScript(spell_pal_crusading_strikes); RegisterSpellScript(spell_pal_consecration); RegisterAreaTriggerAI(areatrigger_pal_consecration); - RegisterSpellScript(spell_pal_divine_purpose); RegisterSpellScript(spell_pal_divine_shield); - RegisterSpellScript(spell_pal_divine_steed); RegisterSpellScript(spell_pal_divine_storm); - RegisterSpellScript(spell_pal_eye_for_an_eye); - RegisterSpellScript(spell_pal_fist_of_justice); RegisterSpellScript(spell_pal_glyph_of_holy_light); RegisterSpellScript(spell_pal_grand_crusader); RegisterSpellScript(spell_pal_hammer_of_the_righteous); RegisterSpellScript(spell_pal_hand_of_sacrifice); RegisterSpellScript(spell_pal_infusion_of_light); - RegisterSpellScript(spell_pal_moment_of_glory); RegisterSpellScript(spell_pal_judgment); - RegisterSpellScript(spell_pal_holy_prism); - RegisterSpellScript(spell_pal_holy_prism_selector); RegisterSpellScript(spell_pal_holy_shock); RegisterSpellScript(spell_pal_holy_shock_damage_visual); RegisterSpellScript(spell_pal_holy_shock_heal_visual); @@ -1543,16 +921,6 @@ void AddSC_paladin_spell_scripts() RegisterSpellScript(spell_pal_item_t6_trinket); RegisterSpellScript(spell_pal_lay_on_hands); RegisterSpellScript(spell_pal_light_s_beacon); - RegisterSpellScript(spell_pal_light_hammer_init_summon); - RegisterSpellScript(spell_pal_light_hammer_periodic); - RegisterSpellScript(spell_pal_righteous_protector); - RegisterSpellScript(spell_pal_righteous_verdict); - RegisterSpellScript(spell_pal_selfless_healer); - RegisterSpellScript(spell_pal_shield_of_vengeance); - RegisterSpellScript(spell_pal_templar_s_verdict); RegisterSpellScript(spell_pal_t3_6p_bonus); RegisterSpellScript(spell_pal_t8_2p_bonus); - RegisterSpellScript(spell_pal_t30_2p_protection_bonus); - RegisterSpellScript(spell_pal_t30_2p_protection_bonus_heal); - RegisterSpellScript(spell_pal_zeal); } diff --git a/src/server/scripts/Spells/spell_shaman.cpp b/src/server/scripts/Spells/spell_shaman.cpp index 408c3b71319..8d4bdfe0540 100644 --- a/src/server/scripts/Spells/spell_shaman.cpp +++ b/src/server/scripts/Spells/spell_shaman.cpp @@ -133,149 +133,6 @@ enum MiscNpcs NPC_HEALING_RAIN_INVISIBLE_STALKER = 73400 }; -// 273221 - Aftershock -class spell_sha_aftershock : public AuraScript -{ - bool Validate(SpellInfo const* /*spellEntry*/) override - { - return ValidateSpellInfo({ SPELL_SHAMAN_AFTERSHOCK_ENERGIZE }); - } - - bool CheckProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo) - { - return false; - } - - void HandleEffectProc(AuraEffect* /*aurEff*/, ProcEventInfo& eventInfo) - { - } - - void Register() override - { - DoCheckEffectProc += AuraCheckEffectProcFn(spell_sha_aftershock::CheckProc, EFFECT_0, SPELL_AURA_DUMMY); - OnEffectProc += AuraEffectProcFn(spell_sha_aftershock::HandleEffectProc, EFFECT_0, SPELL_AURA_DUMMY); - } -}; - -// 108281 - Ancestral Guidance -class spell_sha_ancestral_guidance : public AuraScript -{ - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo({ SPELL_SHAMAN_ANCESTRAL_GUIDANCE_HEAL }); - } - - bool CheckProc(ProcEventInfo& eventInfo) - { - if (eventInfo.GetHealInfo() && eventInfo.GetSpellInfo() && eventInfo.GetSpellInfo()->Id == SPELL_SHAMAN_ANCESTRAL_GUIDANCE_HEAL) - return false; - - if (!eventInfo.GetHealInfo() && !eventInfo.GetDamageInfo()) - return false; - - return true; - } - - void HandleEffectProc(AuraEffect* aurEff, ProcEventInfo& eventInfo) - { - PreventDefaultAction(); - int32 bp0 = CalculatePct(int32(eventInfo.GetDamageInfo() ? eventInfo.GetDamageInfo()->GetDamage() : eventInfo.GetHealInfo()->GetHeal()), aurEff->GetAmount()); - if (bp0) - { - CastSpellExtraArgs args(aurEff); - args.AddSpellMod(SPELLVALUE_BASE_POINT0, bp0); - eventInfo.GetActor()->CastSpell(eventInfo.GetActor(), SPELL_SHAMAN_ANCESTRAL_GUIDANCE_HEAL, args); - } - } - - void Register() override - { - DoCheckProc += AuraCheckProcFn(spell_sha_ancestral_guidance::CheckProc); - OnEffectProc += AuraEffectProcFn(spell_sha_ancestral_guidance::HandleEffectProc, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY); - } -}; - -// 114911 - Ancestral Guidance Heal -class spell_sha_ancestral_guidance_heal : public SpellScript -{ - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo({ SPELL_SHAMAN_ANCESTRAL_GUIDANCE }); - } - - static void ResizeTargets(std::list<WorldObject*>& targets) - { - Trinity::SelectRandomInjuredTargets(targets, 3, true); - } - - void Register() override - { - OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_sha_ancestral_guidance_heal::ResizeTargets, EFFECT_0, TARGET_UNIT_DEST_AREA_ALLY); - } -}; - -// 114052 - Ascendance (Restoration) -class spell_sha_ascendance_restoration : public AuraScript -{ - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo({ SPELL_SHAMAN_RESTORATIVE_MISTS }); - } - - bool CheckProc(ProcEventInfo& procInfo) - { - return procInfo.GetHealInfo() && procInfo.GetHealInfo()->GetOriginalHeal() && procInfo.GetSpellInfo()->Id != SPELL_SHAMAN_RESTORATIVE_MISTS_INITIAL; - } - - void OnProcHeal(AuraEffect* /*aurEff*/, ProcEventInfo& procInfo) - { - _healToDistribute += procInfo.GetHealInfo()->GetOriginalHeal(); - } - - void HandleEffectPeriodic(AuraEffect const* aurEff) - { - if (!_healToDistribute) - return; - - CastSpellExtraArgs args(aurEff); - args.AddSpellBP0(_healToDistribute); - GetTarget()->CastSpell(nullptr, SPELL_SHAMAN_RESTORATIVE_MISTS, args); - _healToDistribute = 0; - } - - void Register() override - { - DoCheckProc += AuraCheckProcFn(spell_sha_ascendance_restoration::CheckProc); - OnEffectProc += AuraEffectProcFn(spell_sha_ascendance_restoration::OnProcHeal, EFFECT_1, SPELL_AURA_PERIODIC_DUMMY); - OnEffectPeriodic += AuraEffectPeriodicFn(spell_sha_ascendance_restoration::HandleEffectPeriodic, EFFECT_1, SPELL_AURA_PERIODIC_DUMMY); - } - -private: - uint32 _healToDistribute = 0; -}; - -// 188443 - Chain Lightning -class spell_sha_chain_lightning : public SpellScript -{ - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo({ SPELL_SHAMAN_CHAIN_LIGHTNING_ENERGIZE, SPELL_SHAMAN_MAELSTROM_CONTROLLER }) - && ValidateSpellEffect({ { SPELL_SHAMAN_MAELSTROM_CONTROLLER, EFFECT_4 } }); - } - - void HandleScript(SpellEffIndex /*effIndex*/) - { - if (AuraEffect const* energizeAmount = GetCaster()->GetAuraEffect(SPELL_SHAMAN_MAELSTROM_CONTROLLER, EFFECT_4)) - GetCaster()->CastSpell(GetCaster(), SPELL_SHAMAN_CHAIN_LIGHTNING_ENERGIZE, CastSpellExtraArgs(energizeAmount) - .AddSpellMod(SPELLVALUE_BASE_POINT0, energizeAmount->GetAmount() * GetUnitTargetCountForEffect(EFFECT_0))); - } - - void Register() override - { - OnEffectLaunch += SpellEffectFn(spell_sha_chain_lightning::HandleScript, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE); - } -}; - // 45297 - Chain Lightning Overload class spell_sha_chain_lightning_overload : public SpellScript { @@ -298,203 +155,6 @@ class spell_sha_chain_lightning_overload : public SpellScript } }; -// 187874 - Crash Lightning -class spell_sha_crash_lightning : public SpellScript -{ - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo({ SPELL_SHAMAN_CRASH_LIGHTNING_CLEAVE, SPELL_SHAMAN_GATHERING_STORMS, SPELL_SHAMAN_GATHERING_STORMS_BUFF }); - } - - void CountTargets(std::list<WorldObject*>& targets) - { - _targetsHit = targets.size(); - } - - void TriggerCleaveBuff() - { - if (_targetsHit >= 2) - GetCaster()->CastSpell(GetCaster(), SPELL_SHAMAN_CRASH_LIGHTNING_CLEAVE, true); - - if (AuraEffect const* gatheringStorms = GetCaster()->GetAuraEffect(SPELL_SHAMAN_GATHERING_STORMS, EFFECT_0)) - { - CastSpellExtraArgs args(TRIGGERED_FULL_MASK); - args.AddSpellMod(SPELLVALUE_BASE_POINT0, int32(gatheringStorms->GetAmount() * _targetsHit)); - GetCaster()->CastSpell(GetCaster(), SPELL_SHAMAN_GATHERING_STORMS_BUFF, args); - } - } - - void Register() override - { - OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_sha_crash_lightning::CountTargets, EFFECT_0, TARGET_UNIT_CONE_CASTER_TO_DEST_ENEMY); - AfterCast += SpellCastFn(spell_sha_crash_lightning::TriggerCleaveBuff); - } - - size_t _targetsHit = 0; -}; - -// 378270 - Deeply Rooted Elements -class spell_sha_deeply_rooted_elements : public AuraScript -{ - bool Validate(SpellInfo const* spellInfo) override - { - return ValidateSpellInfo({ SPELL_SHAMAN_LAVA_BURST, SPELL_SHAMAN_STORMSTRIKE, SPELL_SHAMAN_RIPTIDE, - SPELL_SHAMAN_ASCENDANCE_ELEMENTAL, SPELL_SHAMAN_ASCENDANCE_ENHANCEMENT, SPELL_SHAMAN_ASCENDANCE_RESTORATION }) - && ValidateSpellEffect({ { spellInfo->Id, EFFECT_0 } }) - && spellInfo->GetEffect(EFFECT_0).IsAura(); - } - - bool Load() override - { - return GetUnitOwner()->IsPlayer(); - } - - template<uint32 requiredSpellId> - bool CheckProc(AuraEffect const* /*aurEff*/, ProcEventInfo& procInfo) - { - if (!procInfo.GetSpellInfo()) - return false; - - if (procInfo.GetSpellInfo()->Id != requiredSpellId) - return false; - - return roll_chance_i(_procAttempts++ - 2); - } - - template<uint32 ascendanceSpellId> - void HandleProc(AuraEffect* aurEff, ProcEventInfo& eventInfo) - { - _procAttempts = 0; - - Unit* target = eventInfo.GetActor(); - - int32 duration = GetEffect(EFFECT_0)->GetAmount(); - if (Aura const* ascendanceAura = target->GetAura(ascendanceSpellId)) - duration += ascendanceAura->GetDuration(); - - target->CastSpell(target, ascendanceSpellId, - CastSpellExtraArgs(TRIGGERED_IGNORE_GCD | TRIGGERED_IGNORE_SPELL_AND_CATEGORY_CD | TRIGGERED_IGNORE_CAST_IN_PROGRESS) - .SetTriggeringAura(aurEff) - .SetTriggeringSpell(eventInfo.GetProcSpell()) - .AddSpellMod(SPELLVALUE_DURATION, duration)); - } - - void Register() override - { - if (!GetAura() || GetUnitOwner()->ToPlayer()->GetPrimarySpecialization() == ChrSpecialization::ShamanElemental) - { - DoCheckEffectProc += AuraCheckEffectProcFn(spell_sha_deeply_rooted_elements::CheckProc<SPELL_SHAMAN_LAVA_BURST>, EFFECT_1, SPELL_AURA_DUMMY); - OnEffectProc += AuraEffectProcFn(spell_sha_deeply_rooted_elements::HandleProc<SPELL_SHAMAN_ASCENDANCE_ELEMENTAL>, EFFECT_1, SPELL_AURA_DUMMY); - } - - if (!GetAura() || GetUnitOwner()->ToPlayer()->GetPrimarySpecialization() == ChrSpecialization::ShamanEnhancement) - { - DoCheckEffectProc += AuraCheckEffectProcFn(spell_sha_deeply_rooted_elements::CheckProc<SPELL_SHAMAN_STORMSTRIKE>, EFFECT_2, SPELL_AURA_DUMMY); - OnEffectProc += AuraEffectProcFn(spell_sha_deeply_rooted_elements::HandleProc<SPELL_SHAMAN_ASCENDANCE_ENHANCEMENT>, EFFECT_2, SPELL_AURA_DUMMY); - } - - if (!GetAura() || GetUnitOwner()->ToPlayer()->GetPrimarySpecialization() == ChrSpecialization::ShamanRestoration) - { - DoCheckEffectProc += AuraCheckEffectProcFn(spell_sha_deeply_rooted_elements::CheckProc<SPELL_SHAMAN_RIPTIDE>, EFFECT_3, SPELL_AURA_DUMMY); - OnEffectProc += AuraEffectProcFn(spell_sha_deeply_rooted_elements::HandleProc<SPELL_SHAMAN_ASCENDANCE_RESTORATION>, EFFECT_3, SPELL_AURA_DUMMY); - } - } - - int32 _procAttempts = 0; -}; - -// 335902 - Doom Winds -class spell_sha_doom_winds_legendary : public AuraScript -{ - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo({ SPELL_SHAMAN_DOOM_WINDS_LEGENDARY_COOLDOWN }); - } - - bool CheckProc(AuraEffect const* /*aurEff*/, ProcEventInfo& procInfo) - { - if (GetTarget()->HasAura(SPELL_SHAMAN_DOOM_WINDS_LEGENDARY_COOLDOWN)) - return false; - - SpellInfo const* spellInfo = procInfo.GetSpellInfo(); - if (!spellInfo) - return false; - - return spellInfo->HasLabel(SPELL_LABEL_SHAMAN_WINDFURY_TOTEM); - } - - void Register() override - { - DoCheckEffectProc += AuraCheckEffectProcFn(spell_sha_doom_winds_legendary::CheckProc, EFFECT_0, SPELL_AURA_PROC_TRIGGER_SPELL); - } -}; - -// 207778 - Downpour -class spell_sha_downpour : public SpellScript -{ - bool Validate(SpellInfo const* spellInfo) override - { - return ValidateSpellEffect({ { spellInfo->Id, EFFECT_1 } }); - } - - void FilterTargets(std::list<WorldObject*>& targets) - { - Trinity::SelectRandomInjuredTargets(targets, 6, true); - } - - void CountEffectivelyHealedTarget() - { - // Cooldown increased for each target effectively healed - if (GetHitHeal()) - ++_healedTargets; - } - - void HandleCooldown() - { - SpellHistory::Duration cooldown = Milliseconds(GetSpellInfo()->RecoveryTime) + Seconds(GetEffectInfo(EFFECT_1).CalcValue() * _healedTargets); - GetCaster()->GetSpellHistory()->StartCooldown(GetSpellInfo(), 0, GetSpell(), false, cooldown); - } - - void Register() override - { - OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_sha_downpour::FilterTargets, EFFECT_0, TARGET_UNIT_DEST_AREA_ALLY); - AfterHit += SpellHitFn(spell_sha_downpour::CountEffectivelyHealedTarget); - AfterCast += SpellCastFn(spell_sha_downpour::HandleCooldown); - } - - int32 _healedTargets = 0; -}; - -// 204288 - Earth Shield -class spell_sha_earth_shield : public AuraScript -{ - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo({ SPELL_SHAMAN_EARTH_SHIELD_HEAL }); - } - - bool CheckProc(ProcEventInfo& eventInfo) - { - if (!eventInfo.GetDamageInfo() || !HasEffect(EFFECT_1) || eventInfo.GetDamageInfo()->GetDamage() < GetTarget()->CountPctFromMaxHealth(GetEffect(EFFECT_1)->GetAmount())) - return false; - return true; - } - - void HandleProc(AuraEffect* aurEff, ProcEventInfo& /*eventInfo*/) - { - PreventDefaultAction(); - - GetTarget()->CastSpell(GetTarget(), SPELL_SHAMAN_EARTH_SHIELD_HEAL, CastSpellExtraArgs(aurEff) - .SetOriginalCaster(GetCasterGUID())); - } - - void Register() override - { - DoCheckProc += AuraCheckProcFn(spell_sha_earth_shield::CheckProc); - OnEffectProc += AuraEffectProcFn(spell_sha_earth_shield::HandleProc, EFFECT_1, SPELL_AURA_DUMMY); - } -}; - // 8042 - Earth Shock class spell_sha_earth_shock : public SpellScript { @@ -518,64 +178,6 @@ class spell_sha_earth_shock : public SpellScript } }; -// 170374 - Earthen Rage (Passive) -class spell_sha_earthen_rage_passive : public AuraScript -{ - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo({ SPELL_SHAMAN_EARTHEN_RAGE_PERIODIC, SPELL_SHAMAN_EARTHEN_RAGE_DAMAGE }); - } - - bool CheckProc(ProcEventInfo& procInfo) - { - return procInfo.GetSpellInfo() && procInfo.GetSpellInfo()->Id != SPELL_SHAMAN_EARTHEN_RAGE_DAMAGE; - } - - void HandleEffectProc(AuraEffect* /*aurEff*/, ProcEventInfo& eventInfo) - { - PreventDefaultAction(); - _procTargetGuid = eventInfo.GetProcTarget()->GetGUID(); - eventInfo.GetActor()->CastSpell(eventInfo.GetActor(), SPELL_SHAMAN_EARTHEN_RAGE_PERIODIC, true); - } - - void Register() override - { - DoCheckProc += AuraCheckProcFn(spell_sha_earthen_rage_passive::CheckProc); - OnEffectProc += AuraEffectProcFn(spell_sha_earthen_rage_passive::HandleEffectProc, EFFECT_0, SPELL_AURA_DUMMY); - } - - ObjectGuid _procTargetGuid; - -public: - ObjectGuid const& GetProcTargetGuid() const - { - return _procTargetGuid; - } -}; - -// 170377 - Earthen Rage (Proc Aura) -class spell_sha_earthen_rage_proc_aura : public AuraScript -{ - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo({ SPELL_SHAMAN_EARTHEN_RAGE_PASSIVE, SPELL_SHAMAN_EARTHEN_RAGE_DAMAGE }); - } - - void HandleEffectPeriodic(AuraEffect const* /*aurEff*/) - { - PreventDefaultAction(); - if (Aura const* aura = GetCaster()->GetAura(SPELL_SHAMAN_EARTHEN_RAGE_PASSIVE)) - if (spell_sha_earthen_rage_passive* script = aura->GetScript<spell_sha_earthen_rage_passive>()) - if (Unit* procTarget = ObjectAccessor::GetUnit(*GetCaster(), script->GetProcTargetGuid())) - GetTarget()->CastSpell(procTarget, SPELL_SHAMAN_EARTHEN_RAGE_DAMAGE, true); - } - - void Register() override - { - OnEffectPeriodic += AuraEffectPeriodicFn(spell_sha_earthen_rage_proc_aura::HandleEffectPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY); - } -}; - // 61882 - Earthquake // 8382 - AreaTriggerId struct areatrigger_sha_earthquake : AreaTriggerAI @@ -691,119 +293,6 @@ class spell_sha_earthquake_tick : public SpellScript } }; -// 117014 - Elemental Blast -// 120588 - Elemental Blast Overload -class spell_sha_elemental_blast : public SpellScript -{ - static constexpr uint32 BuffSpells[] = { SPELL_SHAMAN_ELEMENTAL_BLAST_CRIT, SPELL_SHAMAN_ELEMENTAL_BLAST_HASTE, SPELL_SHAMAN_ELEMENTAL_BLAST_MASTERY }; - - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo( - { - SPELL_SHAMAN_ELEMENTAL_BLAST_CRIT, - SPELL_SHAMAN_ELEMENTAL_BLAST_HASTE, - SPELL_SHAMAN_ELEMENTAL_BLAST_MASTERY, - SPELL_SHAMAN_ELEMENTAL_BLAST_ENERGIZE, - SPELL_SHAMAN_MAELSTROM_CONTROLLER - }) && ValidateSpellEffect({ - { SPELL_SHAMAN_MAELSTROM_CONTROLLER, EFFECT_10 }, - { SPELL_SHAMAN_T29_2P_ELEMENTAL_DAMAGE_BUFF, EFFECT_0 } - }); - } - - void HandleEnergize(SpellEffIndex /*effIndex*/) - { - if (AuraEffect const* energizeAmount = GetCaster()->GetAuraEffect(SPELL_SHAMAN_MAELSTROM_CONTROLLER, GetSpellInfo()->Id == SPELL_SHAMAN_ELEMENTAL_BLAST ? EFFECT_9 : EFFECT_10)) - GetCaster()->CastSpell(GetCaster(), SPELL_SHAMAN_ELEMENTAL_BLAST_ENERGIZE, CastSpellExtraArgs(energizeAmount) - .AddSpellMod(SPELLVALUE_BASE_POINT0, energizeAmount->GetAmount())); - } - - void TriggerBuff() - { - Unit* caster = GetCaster(); - uint32 spellId = *Trinity::Containers::SelectRandomWeightedContainerElement(BuffSpells, [caster](uint32 buffSpellId) - { - return !caster->HasAura(buffSpellId) ? 1.0 : 0.0; - }); - - GetCaster()->CastSpell(GetCaster(), spellId, TRIGGERED_FULL_MASK); - } - - void AddScriptedDamageMods() - { - if (AuraEffect* t29 = GetCaster()->GetAuraEffect(SPELL_SHAMAN_T29_2P_ELEMENTAL_DAMAGE_BUFF, EFFECT_0)) - { - SetHitDamage(CalculatePct(GetHitDamage(), 100 + t29->GetAmount())); - t29->GetBase()->Remove(); - } - } - - void Register() override - { - OnEffectLaunch += SpellEffectFn(spell_sha_elemental_blast::HandleEnergize, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE); - AfterCast += SpellCastFn(spell_sha_elemental_blast::TriggerBuff); - OnHit += SpellHitFn(spell_sha_elemental_blast::AddScriptedDamageMods); - } -}; - -// 318038 - Flametongue Weapon -class spell_sha_flametongue_weapon : public SpellScript -{ - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo({ SPELL_SHAMAN_FLAMETONGUE_WEAPON_ENCHANT }); - } - - bool Load() override - { - return GetCaster()->GetTypeId() == TYPEID_PLAYER; - } - - void HandleEffectHitTarget(SpellEffIndex /*effIndex*/) - { - Player* player = GetCaster()->ToPlayer(); - uint8 slot = EQUIPMENT_SLOT_MAINHAND; - if (player->GetPrimarySpecialization() == ChrSpecialization::ShamanEnhancement) - slot = EQUIPMENT_SLOT_OFFHAND; - - Item* targetItem = player->GetItemByPos(INVENTORY_SLOT_BAG_0, slot); - if (!targetItem || !targetItem->GetTemplate()->IsWeapon()) - return; - - player->CastSpell(targetItem, SPELL_SHAMAN_FLAMETONGUE_WEAPON_ENCHANT, true); - } - - void Register() override - { - OnEffectHitTarget += SpellEffectFn(spell_sha_flametongue_weapon::HandleEffectHitTarget, EFFECT_0, SPELL_EFFECT_DUMMY); - } -}; - -// 319778 - Flametongue - SPELL_SHAMAN_FLAMETONGUE_WEAPON_AURA -class spell_sha_flametongue_weapon_aura : public AuraScript -{ - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo({ SPELL_SHAMAN_FLAMETONGUE_ATTACK }); - } - - void HandleEffectProc(AuraEffect* aurEff, ProcEventInfo& eventInfo) - { - PreventDefaultAction(); - - Unit* attacker = eventInfo.GetActor(); - CastSpellExtraArgs args(aurEff); - args.AddSpellMod(SPELLVALUE_BASE_POINT0, std::max(1, int32(attacker->GetTotalAttackPowerValue(BASE_ATTACK) * 0.0264f))); - attacker->CastSpell(eventInfo.GetActionTarget(), SPELL_SHAMAN_FLAMETONGUE_ATTACK, args); - } - - void Register() override - { - OnEffectProc += AuraEffectProcFn(spell_sha_flametongue_weapon_aura::HandleEffectProc, EFFECT_0, SPELL_AURA_DUMMY); - } -}; - // 73920 - Healing Rain (Aura) class spell_sha_healing_rain_aura : public AuraScript { @@ -892,26 +381,6 @@ class spell_sha_healing_stream_totem_heal : public SpellScript } }; -// 210714 - Icefury -class spell_sha_icefury : public AuraScript -{ - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo({ SPELL_SHAMAN_FROST_SHOCK_ENERGIZE }); - } - - void HandleEffectProc(AuraEffect* /*aurEff*/, ProcEventInfo& /*eventInfo*/) - { - if (Unit* caster = GetCaster()) - caster->CastSpell(caster, SPELL_SHAMAN_FROST_SHOCK_ENERGIZE, TRIGGERED_IGNORE_CAST_IN_PROGRESS); - } - - void Register() override - { - OnEffectProc += AuraEffectProcFn(spell_sha_icefury::HandleEffectProc, EFFECT_1, SPELL_AURA_ADD_PCT_MODIFIER); - } -}; - // 23551 - Lightning Shield T2 Bonus class spell_sha_item_lightning_shield : public AuraScript { @@ -1064,22 +533,6 @@ class spell_sha_item_t10_elemental_2p_bonus : public AuraScript } }; -// 189063 - Lightning Vortex (proc 185881 Item - Shaman T18 Elemental 4P Bonus) -class spell_sha_item_t18_elemental_4p_bonus : public AuraScript -{ - void DiminishHaste(AuraEffect const* aurEff) - { - PreventDefaultAction(); - if (AuraEffect* hasteBuff = GetEffect(EFFECT_0)) - hasteBuff->ChangeAmount(hasteBuff->GetAmount() - aurEff->GetAmount()); - } - - void Register() override - { - OnEffectPeriodic += AuraEffectPeriodicFn(spell_sha_item_t18_elemental_4p_bonus::DiminishHaste, EFFECT_1, SPELL_AURA_PERIODIC_DUMMY); - } -}; - // 51505 - Lava burst class spell_sha_lava_burst : public SpellScript { @@ -1119,33 +572,6 @@ class spell_sha_lava_burst : public SpellScript } }; -// 285452 - Lava Burst damage -// 285466 - Lava Burst Overload damage -class spell_sha_lava_crit_chance : public SpellScript -{ - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo({ SPELL_SHAMAN_FLAME_SHOCK }); - } - - void CalcCritChance(Unit const* victim, float& chance) - { - Unit* caster = GetCaster(); - - if (!caster || !victim) - return; - - if (victim->HasAura(SPELL_SHAMAN_FLAME_SHOCK, caster->GetGUID())) - if (victim->GetTotalAuraModifier(SPELL_AURA_MOD_ATTACKER_SPELL_AND_WEAPON_CRIT_CHANCE) > -100) - chance = 100.f; - } - - void Register() override - { - OnCalcCritChance += SpellOnCalcCritChanceFn(spell_sha_lava_crit_chance::CalcCritChance); - } -}; - // 77756 - Lava Surge class spell_sha_lava_surge : public AuraScript { @@ -1200,28 +626,6 @@ class spell_sha_lava_surge_proc : public SpellScript } }; -// 188196 - Lightning Bolt -class spell_sha_lightning_bolt : public SpellScript -{ - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo({ SPELL_SHAMAN_LIGHTNING_BOLT_ENERGIZE, SPELL_SHAMAN_MAELSTROM_CONTROLLER }) - && ValidateSpellEffect({ { SPELL_SHAMAN_MAELSTROM_CONTROLLER, EFFECT_0 } }); - } - - void HandleScript(SpellEffIndex /*effIndex*/) - { - if (AuraEffect const* energizeAmount = GetCaster()->GetAuraEffect(SPELL_SHAMAN_MAELSTROM_CONTROLLER, EFFECT_0)) - GetCaster()->CastSpell(GetCaster(), SPELL_SHAMAN_LIGHTNING_BOLT_ENERGIZE, CastSpellExtraArgs(energizeAmount) - .AddSpellMod(SPELLVALUE_BASE_POINT0, energizeAmount->GetAmount())); - } - - void Register() override - { - OnEffectLaunch += SpellEffectFn(spell_sha_lightning_bolt::HandleScript, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE); - } -}; - // 45284 - Lightning Bolt Overload class spell_sha_lightning_bolt_overload : public SpellScript { @@ -1244,133 +648,8 @@ class spell_sha_lightning_bolt_overload : public SpellScript } }; -// 192223 - Liquid Magma Totem (erupting hit spell) -class spell_sha_liquid_magma_totem : public SpellScript -{ - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo({ SPELL_SHAMAN_LIQUID_MAGMA_HIT }); - } - - void HandleEffectHitTarget(SpellEffIndex /*effIndex*/) - { - if (Unit* hitUnit = GetHitUnit()) - GetCaster()->CastSpell(hitUnit, SPELL_SHAMAN_LIQUID_MAGMA_HIT, true); - } - - void HandleTargetSelect(std::list<WorldObject*>& targets) - { - // choose one random target from targets - if (targets.size() > 1) - { - WorldObject* selected = Trinity::Containers::SelectRandomContainerElement(targets); - targets.clear(); - targets.push_back(selected); - } - } - - void Register() override - { - OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_sha_liquid_magma_totem::HandleTargetSelect, EFFECT_0, TARGET_UNIT_DEST_AREA_ENEMY); - OnEffectHitTarget += SpellEffectFn(spell_sha_liquid_magma_totem::HandleEffectHitTarget, EFFECT_0, SPELL_EFFECT_DUMMY); - } -}; - -// 168534 - Mastery: Elemental Overload (passive) -class spell_sha_mastery_elemental_overload : public AuraScript -{ - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo - ({ - SPELL_SHAMAN_LIGHTNING_BOLT, - SPELL_SHAMAN_LIGHTNING_BOLT_OVERLOAD, - SPELL_SHAMAN_ELEMENTAL_BLAST, - SPELL_SHAMAN_ELEMENTAL_BLAST_OVERLOAD, - SPELL_SHAMAN_ICEFURY, - SPELL_SHAMAN_ICEFURY_OVERLOAD, - SPELL_SHAMAN_LAVA_BURST, - SPELL_SHAMAN_LAVA_BURST_OVERLOAD, - SPELL_SHAMAN_CHAIN_LIGHTNING, - SPELL_SHAMAN_CHAIN_LIGHTNING_OVERLOAD, - SPELL_SHAMAN_LAVA_BEAM, - SPELL_SHAMAN_LAVA_BEAM_OVERLOAD, - SPELL_SHAMAN_STORMKEEPER - }); - } - - bool CheckProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo) - { - SpellInfo const* spellInfo = eventInfo.GetSpellInfo(); - if (!spellInfo || !eventInfo.GetProcSpell()) - return false; - - if (!GetTriggeredSpellId(spellInfo->Id)) - return false; - - float chance = aurEff->GetAmount(); // Mastery % amount - - if (spellInfo->Id == SPELL_SHAMAN_CHAIN_LIGHTNING) - chance /= 3.0f; - - if (Aura* stormkeeper = eventInfo.GetActor()->GetAura(SPELL_SHAMAN_STORMKEEPER)) - if (eventInfo.GetProcSpell()->m_appliedMods.find(stormkeeper) != eventInfo.GetProcSpell()->m_appliedMods.end()) - chance = 100.0f; - - return roll_chance_f(chance); - } - - void HandleProc(AuraEffect* /*aurEff*/, ProcEventInfo& procInfo) - { - PreventDefaultAction(); - - Unit* caster = procInfo.GetActor(); - - caster->m_Events.AddEventAtOffset([caster, - targets = CastSpellTargetArg(procInfo.GetProcTarget()), - overloadSpellId = GetTriggeredSpellId(procInfo.GetSpellInfo()->Id), - originalCastId = procInfo.GetProcSpell()->m_castId]() mutable - { - if (!targets.Targets) - return; - - targets.Targets->Update(caster); - - CastSpellExtraArgs args; - args.OriginalCastId = originalCastId; - caster->CastSpell(targets, overloadSpellId, args); - }, 400ms); - } - - void Register() override - { - DoCheckEffectProc += AuraCheckEffectProcFn(spell_sha_mastery_elemental_overload::CheckProc, EFFECT_0, SPELL_AURA_DUMMY); - OnEffectProc += AuraEffectProcFn(spell_sha_mastery_elemental_overload::HandleProc, EFFECT_0, SPELL_AURA_DUMMY); - } - - uint32 GetTriggeredSpellId(uint32 triggeringSpellId) - { - switch (triggeringSpellId) - { - case SPELL_SHAMAN_LIGHTNING_BOLT: return SPELL_SHAMAN_LIGHTNING_BOLT_OVERLOAD; - case SPELL_SHAMAN_ELEMENTAL_BLAST: return SPELL_SHAMAN_ELEMENTAL_BLAST_OVERLOAD; - case SPELL_SHAMAN_ICEFURY: return SPELL_SHAMAN_ICEFURY_OVERLOAD; - case SPELL_SHAMAN_LAVA_BURST: return SPELL_SHAMAN_LAVA_BURST_OVERLOAD; - case SPELL_SHAMAN_CHAIN_LIGHTNING: return SPELL_SHAMAN_CHAIN_LIGHTNING_OVERLOAD; - case SPELL_SHAMAN_LAVA_BEAM: return SPELL_SHAMAN_LAVA_BEAM_OVERLOAD; - default: - break; - } - return 0; - } -}; - // 45284 - Lightning Bolt Overload // 45297 - Chain Lightning Overload -// 114738 - Lava Beam Overload -// 120588 - Elemental Blast Overload -// 219271 - Icefury Overload -// 285466 - Lava Burst Overload class spell_sha_mastery_elemental_overload_proc : public SpellScript { bool Validate(SpellInfo const* /*spellInfo*/) override @@ -1404,72 +683,7 @@ class spell_sha_natures_guardian : public AuraScript } }; -// 210621 - Path of Flames Spread -class spell_sha_path_of_flames_spread : public SpellScript -{ - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo({ SPELL_SHAMAN_FLAME_SHOCK }); - } - - void FilterTargets(std::list<WorldObject*>& targets) - { - targets.remove(GetExplTargetUnit()); - Trinity::Containers::RandomResize(targets, [this](WorldObject* target) - { - return target->GetTypeId() == TYPEID_UNIT && !target->ToUnit()->HasAura(SPELL_SHAMAN_FLAME_SHOCK, GetCaster()->GetGUID()); - }, 1); - } - - void HandleScript(SpellEffIndex /*effIndex*/) - { - if (Unit* mainTarget = GetExplTargetUnit()) - { - if (Aura* flameShock = mainTarget->GetAura(SPELL_SHAMAN_FLAME_SHOCK, GetCaster()->GetGUID())) - { - if (Aura* newAura = GetCaster()->AddAura(SPELL_SHAMAN_FLAME_SHOCK, GetHitUnit())) - { - newAura->SetDuration(flameShock->GetDuration()); - newAura->SetMaxDuration(flameShock->GetDuration()); - } - } - } - } - - void Register() override - { - OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_sha_path_of_flames_spread::FilterTargets, EFFECT_1, TARGET_UNIT_DEST_AREA_ENEMY); - OnEffectHitTarget += SpellEffectFn(spell_sha_path_of_flames_spread::HandleScript, EFFECT_1, SPELL_EFFECT_DUMMY); - } -}; - -// 114083 - Restorative Mists -// 294020 - Restorative Mists -class spell_sha_restorative_mists : public SpellScript -{ - void FilterTargets(std::list<WorldObject*>& targets) - { - _targetCount = uint32(targets.size()); - } - - void HandleHeal(SpellEffIndex /*effIndex*/) - { - if (_targetCount) - SetHitHeal(GetHitHeal() / _targetCount); - } - - void Register() override - { - OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_sha_restorative_mists::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ALLY); - OnEffectHitTarget += SpellEffectFn(spell_sha_restorative_mists::HandleHeal, EFFECT_0, SPELL_EFFECT_HEAL); - } - -private: - uint32 _targetCount = 0; -}; - // 2645 - Ghost Wolf -// 260878 - Spirit Wolf class spell_sha_spirit_wolf : public AuraScript { bool Validate(SpellInfo const* /*spellInfo*/) override @@ -1733,54 +947,6 @@ class spell_sha_t10_restoration_4p_bonus : public AuraScript } }; -// 260895 - Unlimited Power -class spell_sha_unlimited_power : public AuraScript -{ - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo({ SPELL_SHAMAN_UNLIMITED_POWER_BUFF }); - } - - void HandleProc(AuraEffect* /*aurEff*/, ProcEventInfo& procInfo) - { - Unit* caster = procInfo.GetActor(); - if (Aura* aura = caster->GetAura(SPELL_SHAMAN_UNLIMITED_POWER_BUFF)) - aura->SetStackAmount(aura->GetStackAmount() + 1); - else - caster->CastSpell(caster, SPELL_SHAMAN_UNLIMITED_POWER_BUFF, procInfo.GetProcSpell()); - } - - void Register() override - { - OnEffectProc += AuraEffectProcFn(spell_sha_unlimited_power::HandleProc, EFFECT_0, SPELL_AURA_DUMMY); - } -}; - -// 200071 - Undulation -class spell_sha_undulation_passive : public AuraScript -{ - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo({ SPELL_SHAMAN_UNDULATION_PROC }); - } - - void HandleProc(AuraEffect* /*aurEff*/, ProcEventInfo& /*eventInfo*/) - { - if (++_castCounter == 3) - { - GetTarget()->CastSpell(GetTarget(), SPELL_SHAMAN_UNDULATION_PROC, true); - _castCounter = 0; - } - } - - void Register() override - { - OnEffectProc += AuraEffectProcFn(spell_sha_undulation_passive::HandleProc, EFFECT_0, SPELL_AURA_DUMMY); - } - - uint8 _castCounter = 1; // first proc happens after two casts, then one every 3 casts -}; - // 33757 - Windfury Weapon class spell_sha_windfury_weapon : public SpellScript { @@ -1808,56 +974,6 @@ class spell_sha_windfury_weapon : public SpellScript } }; -// 319773 - Windfury Weapon (proc) -class spell_sha_windfury_weapon_proc : public AuraScript -{ - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo({ SPELL_SHAMAN_WINDFURY_ATTACK }); - } - - void HandleEffectProc(AuraEffect* aurEff, ProcEventInfo& eventInfo) - { - PreventDefaultAction(); - - for (uint32 i = 0; i < 2; ++i) - eventInfo.GetActor()->CastSpell(eventInfo.GetProcTarget(), SPELL_SHAMAN_WINDFURY_ATTACK, aurEff); - } - - void Register() override - { - OnEffectProc += AuraEffectProcFn(spell_sha_windfury_weapon_proc::HandleEffectProc, EFFECT_0, SPELL_AURA_DUMMY); - } -}; - -// 378269 - Windspeaker's Lava Resurgence -class spell_sha_windspeakers_lava_resurgence : public SpellScript -{ - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo({ SPELL_SHAMAN_VOLCANIC_SURGE }); - } - - void PreventLavaSurge(SpellEffIndex effIndex) - { - if (GetCaster()->HasAura(SPELL_SHAMAN_VOLCANIC_SURGE)) - PreventHitDefaultEffect(effIndex); - } - - void PreventVolcanicSurge(SpellEffIndex effIndex) - { - if (!GetCaster()->HasAura(SPELL_SHAMAN_VOLCANIC_SURGE)) - PreventHitDefaultEffect(effIndex); - } - - void Register() override - { - OnEffectLaunch += SpellEffectFn(spell_sha_windspeakers_lava_resurgence::PreventLavaSurge, EFFECT_1, SPELL_EFFECT_TRIGGER_SPELL); - OnEffectLaunch += SpellEffectFn(spell_sha_windspeakers_lava_resurgence::PreventVolcanicSurge, EFFECT_2, SPELL_EFFECT_TRIGGER_SPELL); - } -}; - -// 192078 - Wind Rush Totem (Spell) // 12676 - AreaTriggerId struct areatrigger_sha_wind_rush_totem : AreaTriggerAI { @@ -1903,48 +1019,25 @@ private: void AddSC_shaman_spell_scripts() { - RegisterSpellScript(spell_sha_aftershock); - RegisterSpellScript(spell_sha_ancestral_guidance); - RegisterSpellScript(spell_sha_ancestral_guidance_heal); - RegisterSpellScript(spell_sha_ascendance_restoration); - RegisterSpellScript(spell_sha_chain_lightning); RegisterSpellScript(spell_sha_chain_lightning_overload); - RegisterSpellScript(spell_sha_crash_lightning); - RegisterSpellScript(spell_sha_deeply_rooted_elements); - RegisterSpellScript(spell_sha_doom_winds_legendary); - RegisterSpellScript(spell_sha_downpour); - RegisterSpellScript(spell_sha_earth_shield); RegisterSpellScript(spell_sha_earth_shock); - RegisterSpellScript(spell_sha_earthen_rage_passive); - RegisterSpellScript(spell_sha_earthen_rage_proc_aura); RegisterAreaTriggerAI(areatrigger_sha_earthquake); RegisterSpellScript(spell_sha_earthquake); RegisterSpellScript(spell_sha_earthquake_tick); - RegisterSpellScript(spell_sha_elemental_blast); - RegisterSpellScript(spell_sha_flametongue_weapon); - RegisterSpellScript(spell_sha_flametongue_weapon_aura); RegisterSpellAndAuraScriptPair(spell_sha_healing_rain, spell_sha_healing_rain_aura); RegisterSpellScript(spell_sha_healing_rain_target_limit); RegisterSpellScript(spell_sha_healing_stream_totem_heal); - RegisterSpellScript(spell_sha_icefury); RegisterSpellScript(spell_sha_item_lightning_shield); RegisterSpellScript(spell_sha_item_lightning_shield_trigger); RegisterSpellScript(spell_sha_item_mana_surge); RegisterSpellScript(spell_sha_item_t6_trinket); RegisterSpellScript(spell_sha_item_t10_elemental_2p_bonus); - RegisterSpellScript(spell_sha_item_t18_elemental_4p_bonus); RegisterSpellScript(spell_sha_lava_burst); - RegisterSpellScript(spell_sha_lava_crit_chance); RegisterSpellScript(spell_sha_lava_surge); RegisterSpellScript(spell_sha_lava_surge_proc); - RegisterSpellScript(spell_sha_lightning_bolt); RegisterSpellScript(spell_sha_lightning_bolt_overload); - RegisterSpellScript(spell_sha_liquid_magma_totem); - RegisterSpellScript(spell_sha_mastery_elemental_overload); RegisterSpellScript(spell_sha_mastery_elemental_overload_proc); RegisterSpellScript(spell_sha_natures_guardian); - RegisterSpellScript(spell_sha_path_of_flames_spread); - RegisterSpellScript(spell_sha_restorative_mists); RegisterSpellScript(spell_sha_spirit_wolf); RegisterSpellScript(spell_sha_tidal_waves); RegisterSpellScript(spell_sha_t3_6p_bonus); @@ -1953,10 +1046,6 @@ void AddSC_shaman_spell_scripts() RegisterSpellScript(spell_sha_t9_elemental_4p_bonus); RegisterSpellScript(spell_sha_t10_elemental_4p_bonus); RegisterSpellScript(spell_sha_t10_restoration_4p_bonus); - RegisterSpellScript(spell_sha_unlimited_power); - RegisterSpellScript(spell_sha_undulation_passive); RegisterSpellScript(spell_sha_windfury_weapon); - RegisterSpellScript(spell_sha_windfury_weapon_proc); - RegisterSpellScript(spell_sha_windspeakers_lava_resurgence); RegisterAreaTriggerAI(areatrigger_sha_wind_rush_totem); } |