aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOvahlord <dreadkiller@gmx.de>2023-12-04 21:31:24 +0100
committerOvahlord <dreadkiller@gmx.de>2023-12-04 21:31:24 +0100
commit21d6e598a5f817a141e4cac704d2da3fd05449ed (patch)
tree7a861eff81728de31d372fe30568a553204fa118
parent281d946c40c2263394b91abdaea76f94ff31dd97 (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
-rw-r--r--sql/updates/world/3.4.x/2023_12_04_00_world.sql49
-rw-r--r--src/server/game/Achievements/CriteriaHandler.cpp2
-rw-r--r--src/server/game/DataStores/DB2Stores.cpp2
-rw-r--r--src/server/game/DataStores/DB2Stores.h2
-rw-r--r--src/server/game/DungeonFinding/LFGMgr.cpp2
-rw-r--r--src/server/game/DungeonFinding/LFGMgr.h2
-rw-r--r--src/server/game/Entities/AreaTrigger/AreaTrigger.cpp3
-rw-r--r--src/server/game/Entities/Item/Item.cpp1
-rw-r--r--src/server/game/Entities/Pet/Pet.cpp3
-rw-r--r--src/server/game/Entities/Player/Player.cpp2
-rw-r--r--src/server/game/Entities/Unit/StatSystem.cpp8
-rw-r--r--src/server/game/Handlers/LFGHandler.cpp2
-rw-r--r--src/server/game/Handlers/SkillHandler.cpp8
-rw-r--r--src/server/game/Handlers/TraitHandler.cpp139
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp16
-rw-r--r--src/server/game/Server/WorldSession.h21
-rw-r--r--src/server/game/Spells/Auras/SpellAuraEffects.cpp6
-rw-r--r--src/server/game/Spells/Auras/SpellAuraEffects.h3
-rw-r--r--src/server/game/Spells/Spell.cpp2
-rw-r--r--src/server/scripts/Spells/spell_paladin.cpp634
-rw-r--r--src/server/scripts/Spells/spell_shaman.cpp911
21 files changed, 71 insertions, 1747 deletions
diff --git a/sql/updates/world/3.4.x/2023_12_04_00_world.sql b/sql/updates/world/3.4.x/2023_12_04_00_world.sql
new file mode 100644
index 00000000000..f0760a008a3
--- /dev/null
+++ b/sql/updates/world/3.4.x/2023_12_04_00_world.sql
@@ -0,0 +1,49 @@
+DELETE FROM `spell_script_names` WHERE `ScriptName` IN
+('spell_pal_light_hammer_init_summon',
+'spell_pal_light_hammer_periodic',
+'spell_pal_righteous_protector',
+'spell_pal_righteous_verdict',
+'spell_pal_selfless_healer',
+'spell_pal_shield_of_vengeance',
+'spell_pal_templar_s_verdict',
+'spell_pal_t30_2p_protection_bonus',
+'spell_pal_t30_2p_protection_bonus_heal',
+'spell_pal_zeal',
+'spell_pal_art_of_war',
+'spell_pal_awakening',
+'spell_pal_blinding_light',
+'spell_pal_crusader_might',
+'spell_pal_crusading_strikes',
+'spell_pal_divine_purpose',
+'spell_pal_divine_steed',
+'spell_pal_eye_for_an_eye',
+'spell_pal_fist_of_justice',
+'spell_pal_moment_of_glory',
+'spell_pal_holy_prism',
+'spell_pal_holy_prism_selector',
+'spell_sha_aftershock',
+'spell_sha_ancestral_guidance',
+'spell_sha_ascendance_restoration',
+'spell_sha_chain_lightning',
+'spell_sha_crash_lightning',
+'spell_sha_deeply_rooted_elements',
+'spell_sha_doom_winds_legendary',
+'spell_sha_downpour',
+'spell_sha_earth_shield',
+'spell_sha_earthen_rage_passive',
+'spell_sha_earthen_rage_proc_aura',
+'spell_sha_elemental_blast',
+'spell_sha_flametongue_weapon',
+'spell_sha_flametongue_weapon_aura',
+'spell_sha_icefury',
+'spell_sha_item_t18_elemental_4p_bonus',
+'spell_sha_lava_crit_chance',
+'spell_sha_lightning_bolt',
+'spell_sha_liquid_magma_totem',
+'spell_sha_mastery_elemental_overload',
+'spell_sha_path_of_flames_spread',
+'spell_sha_restorative_mists',
+'spell_sha_unlimited_power',
+'spell_sha_undulation_passive',
+'spell_sha_windfury_weapon_proc',
+'spell_sha_windspeakers_lava_resurgence');
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);
}