diff options
author | Subv <subv2112@gmail.com> | 2014-07-13 16:52:38 -0500 |
---|---|---|
committer | Subv <subv2112@gmail.com> | 2014-07-13 16:52:38 -0500 |
commit | dfdc19f3bc57757965d1d3b760a27622e411eb05 (patch) | |
tree | 08025cfd4bbdef881149291e926eaf1d4676f441 /src/server/scripts | |
parent | f14399d7887b221eb61378863c9c314adbcdebc1 (diff) |
Merge branch `master` into `boost`
Conflicts:
BattlegroundMgr.h
Diffstat (limited to 'src/server/scripts')
20 files changed, 310 insertions, 409 deletions
diff --git a/src/server/scripts/Commands/cs_account.cpp b/src/server/scripts/Commands/cs_account.cpp index 1121e4d0a2f..4b7aa8ecad3 100644 --- a/src/server/scripts/Commands/cs_account.cpp +++ b/src/server/scripts/Commands/cs_account.cpp @@ -51,8 +51,8 @@ public: }; static ChatCommand accountLockCommandTable[] = { - { "country", rbac::RBAC_PERM_COMMAND_ACCOUNT_LOCK_COUNTRY, true, &HandleAccountLockCountryCommand, "", NULL }, - { "ip", rbac::RBAC_PERM_COMMAND_ACCOUNT_LOCK_IP, true, &HandleAccountLockIpCommand, "", NULL }, + { "country", rbac::RBAC_PERM_COMMAND_ACCOUNT_LOCK_COUNTRY, false, &HandleAccountLockCountryCommand, "", NULL }, + { "ip", rbac::RBAC_PERM_COMMAND_ACCOUNT_LOCK_IP, false, &HandleAccountLockIpCommand, "", NULL }, { NULL, 0, false, NULL, "", NULL } }; static ChatCommand accountCommandTable[] = diff --git a/src/server/scripts/Commands/cs_learn.cpp b/src/server/scripts/Commands/cs_learn.cpp index 03d10149ae5..88acd491427 100644 --- a/src/server/scripts/Commands/cs_learn.cpp +++ b/src/server/scripts/Commands/cs_learn.cpp @@ -112,9 +112,9 @@ public: } if (allRanks) - targetPlayer->learnSpellHighRank(spell); + targetPlayer->LearnSpellHighestRank(spell); else - targetPlayer->learnSpell(spell, false); + targetPlayer->LearnSpell(spell, false); if (GetTalentSpellCost(spellInfo->GetFirstRankSpell()->Id)) targetPlayer->SendTalentsInfoData(false); @@ -133,7 +133,7 @@ public: if (!spellInfo->IsAbilityOfSkillType(SKILL_INTERNAL)) continue; - handler->GetSession()->GetPlayer()->learnSpell(i, false); + handler->GetSession()->GetPlayer()->LearnSpell(i, false); } handler->SendSysMessage(LANG_LEARNING_GM_SKILLS); @@ -184,7 +184,7 @@ public: if (!SpellMgr::IsSpellValid(spellInfo, handler->GetSession()->GetPlayer(), false)) continue; - handler->GetSession()->GetPlayer()->learnSpell(spellInfo->Id, false); + handler->GetSession()->GetPlayer()->LearnSpell(spellInfo->Id, false); } handler->SendSysMessage(LANG_COMMAND_LEARN_CLASS_SPELLS); @@ -228,7 +228,7 @@ public: continue; // learn highest rank of talent and learn all non-talent spell ranks (recursive by tree) - player->learnSpellHighRank(spellId); + player->LearnSpellHighestRank(spellId); player->AddTalent(spellId, player->GetActiveSpec(), true); } @@ -320,7 +320,7 @@ public: { // skipping UNIVERSAL language (0) for (uint8 i = 1; i < LANGUAGES_COUNT; ++i) - handler->GetSession()->GetPlayer()->learnSpell(lang_description[i].spell_id, false); + handler->GetSession()->GetPlayer()->LearnSpell(lang_description[i].spell_id, false); handler->SendSysMessage(LANG_COMMAND_LEARN_ALL_LANG); return true; @@ -334,7 +334,7 @@ public: target->LearnDefaultSkills(); target->LearnCustomSpells(); - target->learnQuestRewardedSpells(); + target->LearnQuestRewardedSpells(); handler->PSendSysMessage(LANG_COMMAND_LEARN_ALL_DEFAULT_AND_QUEST, handler->GetNameLink(target).c_str()); return true; @@ -470,7 +470,7 @@ public: if (!spellInfo || !SpellMgr::IsSpellValid(spellInfo, player, false)) continue; - player->learnSpell(skillLine->spellId, false); + player->LearnSpell(skillLine->spellId, false); } } @@ -499,7 +499,7 @@ public: spellId = sSpellMgr->GetFirstSpellInChain(spellId); if (target->HasSpell(spellId)) - target->removeSpell(spellId, false, !allRanks); + target->RemoveSpell(spellId, false, !allRanks); else handler->SendSysMessage(LANG_FORGET_SPELL); diff --git a/src/server/scripts/Commands/cs_reload.cpp b/src/server/scripts/Commands/cs_reload.cpp index 89dc08d5737..f39dd0f0616 100644 --- a/src/server/scripts/Commands/cs_reload.cpp +++ b/src/server/scripts/Commands/cs_reload.cpp @@ -25,6 +25,7 @@ EndScriptData */ #include "AccountMgr.h" #include "AchievementMgr.h" #include "AuctionHouseMgr.h" +#include "BattlegroundMgr.h" #include "Chat.h" #include "CreatureTextMgr.h" #include "DisableMgr.h" @@ -74,6 +75,7 @@ public: { "areatrigger_tavern", rbac::RBAC_PERM_COMMAND_RELOAD_AREATRIGGER_TAVERN, true, &HandleReloadAreaTriggerTavernCommand, "", NULL }, { "areatrigger_teleport", rbac::RBAC_PERM_COMMAND_RELOAD_AREATRIGGER_TELEPORT, true, &HandleReloadAreaTriggerTeleportCommand, "", NULL }, { "autobroadcast", rbac::RBAC_PERM_COMMAND_RELOAD_AUTOBROADCAST, true, &HandleReloadAutobroadcastCommand, "", NULL }, + { "battleground_template", rbac::RBAC_PERM_COMMAND_RELOAD_BATTLEGROUND_TEMPLATE, true, &HandleReloadBattlegroundTemplate, "", NULL }, { "broadcast_text", rbac::RBAC_PERM_COMMAND_RELOAD_BROADCAST_TEXT, true, &HandleReloadBroadcastTextCommand, "", NULL }, { "command", rbac::RBAC_PERM_COMMAND_RELOAD_COMMAND, true, &HandleReloadCommandCommand, "", NULL }, { "conditions", rbac::RBAC_PERM_COMMAND_RELOAD_CONDITIONS, true, &HandleReloadConditions, "", NULL }, @@ -200,6 +202,7 @@ public: HandleReloadVehicleTemplateAccessoryCommand(handler, ""); HandleReloadAutobroadcastCommand(handler, ""); + HandleReloadBattlegroundTemplate(handler, ""); return true; } @@ -376,6 +379,14 @@ public: return true; } + static bool HandleReloadBattlegroundTemplate(ChatHandler* handler, char const* /*args*/) + { + TC_LOG_INFO("misc", "Re-Loading Battleground Templates..."); + sBattlegroundMgr->LoadBattlegroundTemplates(); + handler->SendGlobalGMSysMessage("DB table `battleground_template` reloaded."); + return true; + } + static bool HandleReloadBroadcastTextCommand(ChatHandler* handler, const char* /*args*/) { TC_LOG_INFO("misc", "Re-Loading Broadcast texts..."); diff --git a/src/server/scripts/Commands/cs_reset.cpp b/src/server/scripts/Commands/cs_reset.cpp index 279f9c2ef4c..00a669609f9 100644 --- a/src/server/scripts/Commands/cs_reset.cpp +++ b/src/server/scripts/Commands/cs_reset.cpp @@ -165,7 +165,7 @@ public: if (target) { - target->resetSpells(/* bool myClassOnly */); + target->ResetSpells(/* bool myClassOnly */); ChatHandler(target->GetSession()).SendSysMessage(LANG_RESET_SPELLS); if (!handler->GetSession() || handler->GetSession()->GetPlayer() != target) @@ -233,7 +233,7 @@ public: if (target) { - target->resetTalents(true); + target->ResetTalents(true); target->SendTalentsInfoData(false); ChatHandler(target->GetSession()).SendSysMessage(LANG_RESET_TALENTS); if (!handler->GetSession() || handler->GetSession()->GetPlayer() != target) diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_pyroguard_emberseer.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_pyroguard_emberseer.cpp index 4be139c2ee9..2bd43e7283c 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_pyroguard_emberseer.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_pyroguard_emberseer.cpp @@ -212,13 +212,12 @@ public: std::list<Creature*> creatureList; GetCreatureListWithEntryInGrid(creatureList, me, NPC_BLACKHAND_INCARCERATOR, 35.0f); for (std::list<Creature*>::iterator itr = creatureList.begin(); itr != creatureList.end(); ++itr) - if (Creature* creatureList = *itr) + if (Creature* creature = *itr) { - if (!creatureList->IsAlive()) - { - creatureList->Respawn(); - } - creatureList->AI()->SetData(1, 1); + if (!creature->IsAlive()) + creature->Respawn(); + + creature->AI()->SetData(1, 1); } me->AddAura(SPELL_ENCAGED_EMBERSEER, me); instance->SetBossState(DATA_PYROGAURD_EMBERSEER, NOT_STARTED); @@ -231,8 +230,8 @@ public: GetCreatureListWithEntryInGrid(creatureList, me, NPC_BLACKHAND_INCARCERATOR, 35.0f); for (std::list<Creature*>::iterator itr = creatureList.begin(); itr != creatureList.end(); ++itr) { - if (Creature* creatureList = *itr) - creatureList->AI()->SetData(1, 1); + if (Creature* creature = *itr) + creature->AI()->SetData(1, 1); } events.ScheduleEvent(EVENT_PRE_FIGHT_2, 32000); break; @@ -355,9 +354,7 @@ public: } if (data == 1 && value == 2) - { _events.ScheduleEvent(EVENT_ENCAGED_EMBERSEER, 1000); - } } void EnterCombat(Unit* /*who*/) override @@ -371,8 +368,8 @@ public: GetCreatureListWithEntryInGrid(creatureList, me, NPC_BLACKHAND_INCARCERATOR, 60.0f); for (std::list<Creature*>::iterator itr = creatureList.begin(); itr != creatureList.end(); ++itr) { - if (Creature* creatureList = *itr) - creatureList->SetInCombatWithZone(); // AI()->AttackStart(me->GetVictim()); + if (Creature* creature = *itr) + creature->SetInCombatWithZone(); // AI()->AttackStart(me->GetVictim()); } _events.ScheduleEvent(EVENT_STRIKE, urand(8000, 16000)); diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/instance_blackrock_spire.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/instance_blackrock_spire.cpp index b3a55e1fe4a..555eac21c43 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/instance_blackrock_spire.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/instance_blackrock_spire.cpp @@ -410,24 +410,24 @@ public: void Dragonspireroomstore() { - uint8 creaturecount; + uint8 creatureCount; for (uint8 i = 0; i < 7; ++i) { - creaturecount = 0; + creatureCount = 0; if (GameObject* rune = instance->GetGameObject(go_roomrunes[i])) { - for (uint8 ii = 0; ii < 3; ++ii) + for (uint8 j = 0; j < 3; ++j) { std::list<Creature*> creatureList; - GetCreatureListWithEntryInGrid(creatureList, rune, DragonspireMobs[ii], 15.0f); + GetCreatureListWithEntryInGrid(creatureList, rune, DragonspireMobs[j], 15.0f); for (std::list<Creature*>::iterator itr = creatureList.begin(); itr != creatureList.end(); ++itr) { - if (Creature* creatureList = *itr) + if (Creature* creature = *itr) { - runecreaturelist[i] [creaturecount] = creatureList->GetGUID(); - ++creaturecount; + runecreaturelist[i][creatureCount] = creature->GetGUID(); + ++creatureCount; } } } diff --git a/src/server/scripts/EasternKingdoms/CMakeLists.txt b/src/server/scripts/EasternKingdoms/CMakeLists.txt index 4adb087921b..ef2e9fceb21 100644 --- a/src/server/scripts/EasternKingdoms/CMakeLists.txt +++ b/src/server/scripts/EasternKingdoms/CMakeLists.txt @@ -85,7 +85,6 @@ set(scripts_STAT_SRCS EasternKingdoms/Scholomance/boss_ras_frostwhisper.cpp EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp EasternKingdoms/zone_isle_of_queldanas.cpp - EasternKingdoms/boss_kruul.cpp EasternKingdoms/ZulGurub/boss_hakkar.cpp EasternKingdoms/ZulGurub/boss_mandokir.cpp EasternKingdoms/ZulGurub/boss_marli.cpp diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_terestian_illhoof.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_terestian_illhoof.cpp index 3b499b649cf..256ab06a7b7 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_terestian_illhoof.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_terestian_illhoof.cpp @@ -84,29 +84,20 @@ public: InstanceScript* instance; - uint64 TerestianGUID; - uint32 AmplifyTimer; void Reset() override { - TerestianGUID = 0; AmplifyTimer = 2000; } - void EnterCombat(Unit* /*who*/) override - { - } + void EnterCombat(Unit* /*who*/) override { } void JustDied(Unit* /*killer*/) override { - uint64 TerestianGUID = instance->GetData64(DATA_TERESTIAN); - if (TerestianGUID) - { - Unit* Terestian = ObjectAccessor::GetUnit(*me, TerestianGUID); - if (Terestian && Terestian->IsAlive()) - DoCast(Terestian, SPELL_BROKEN_PACT, true); - } + Creature* Terestian = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_TERESTIAN)); + if (Terestian && Terestian->IsAlive()) + DoCast(Terestian, SPELL_BROKEN_PACT, true); } void UpdateAI(uint32 diff) override diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_arcanist_doan.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_arcanist_doan.cpp index 787bf7584e5..f18c0aac8bb 100644 --- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_arcanist_doan.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_arcanist_doan.cpp @@ -1,6 +1,5 @@ /* * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/> - * Copyright (C) 2006-2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/> * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the @@ -16,15 +15,9 @@ * with this program. If not, see <http://www.gnu.org/licenses/>. */ -/* ScriptData -SDName: Boss_Arcanist_Doan -SD%Complete: 100 -SDComment: -SDCategory: Scarlet Monastery -EndScriptData */ - #include "ScriptMgr.h" #include "ScriptedCreature.h" +#include "scarlet_monastery.h" enum Yells { @@ -34,103 +27,100 @@ enum Yells enum Spells { - SPELL_POLYMORPH = 13323, - SPELL_AOESILENCE = 8988, - SPELL_ARCANEEXPLOSION = 9433, - SPELL_FIREAOE = 9435, - SPELL_ARCANEBUBBLE = 9438 + SPELL_SILENCE = 8988, + SPELL_ARCANE_EXPLOSION = 9433, + SPELL_DETONATION = 9435, + SPELL_ARCANE_BUBBLE = 9438, + SPELL_POLYMORPH = 13323 }; -class boss_arcanist_doan : public CreatureScript +enum Events { -public: - boss_arcanist_doan() : CreatureScript("boss_arcanist_doan") { } - - CreatureAI* GetAI(Creature* creature) const override - { - return new boss_arcanist_doanAI(creature); - } - - struct boss_arcanist_doanAI : public ScriptedAI - { - boss_arcanist_doanAI(Creature* creature) : ScriptedAI(creature) { } - - uint32 Polymorph_Timer; - uint32 AoESilence_Timer; - uint32 ArcaneExplosion_Timer; - bool bCanDetonate; - bool bShielded; - - void Reset() override - { - Polymorph_Timer = 20000; - AoESilence_Timer = 15000; - ArcaneExplosion_Timer = 3000; - bCanDetonate = false; - bShielded = false; - } + EVENT_SILENCE = 1, + EVENT_ARCANE_EXPLOSION = 2, + EVENT_ARCANE_BUBBLE = 3, + EVENT_POLYMORPH = 4 +}; - void EnterCombat(Unit* /*who*/) override - { - Talk(SAY_AGGRO); - } +class boss_arcanist_doan : public CreatureScript +{ + public: + boss_arcanist_doan() : CreatureScript("boss_arcanist_doan") { } - void UpdateAI(uint32 diff) override + struct boss_arcanist_doanAI : public BossAI { - if (!UpdateVictim()) - return; - - if (bShielded && bCanDetonate) + boss_arcanist_doanAI(Creature* creature) : BossAI(creature, DATA_ARCANIST_DOAN) { - DoCast(me, SPELL_FIREAOE); - bCanDetonate = false; + _healthAbove50Pct = true; } - if (me->HasAura(SPELL_ARCANEBUBBLE)) - return; - - //If we are <50% hp cast Arcane Bubble - if (!bShielded && !HealthAbovePct(50)) + void Reset() override { - //wait if we already casting - if (me->IsNonMeleeSpellCast(false)) - return; - - Talk(SAY_SPECIALAE); - DoCast(me, SPELL_ARCANEBUBBLE); - - bCanDetonate = true; - bShielded = true; + _Reset(); + _healthAbove50Pct = true; } - if (Polymorph_Timer <= diff) + void EnterCombat(Unit* /*who*/) override { - if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1)) - DoCast(target, SPELL_POLYMORPH); + _EnterCombat(); + Talk(SAY_AGGRO); - Polymorph_Timer = 20000; + events.ScheduleEvent(EVENT_SILENCE, 15 * IN_MILLISECONDS); + events.ScheduleEvent(EVENT_ARCANE_EXPLOSION, 3 * IN_MILLISECONDS); + events.ScheduleEvent(EVENT_POLYMORPH, 30 * IN_MILLISECONDS); } - else Polymorph_Timer -= diff; - //AoESilence_Timer - if (AoESilence_Timer <= diff) + void UpdateAI(uint32 diff) override { - DoCastVictim(SPELL_AOESILENCE); - AoESilence_Timer = urand(15000, 20000); - } - else AoESilence_Timer -= diff; + if (!UpdateVictim()) + return; - //ArcaneExplosion_Timer - if (ArcaneExplosion_Timer <= diff) - { - DoCastVictim(SPELL_ARCANEEXPLOSION); - ArcaneExplosion_Timer = 8000; + events.Update(diff); + + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; + + while (uint32 eventId = events.ExecuteEvent()) + { + switch (eventId) + { + case EVENT_SILENCE: + DoCastVictim(SPELL_SILENCE); + events.ScheduleEvent(EVENT_SILENCE, urand(15, 20) * IN_MILLISECONDS); + break; + case EVENT_ARCANE_EXPLOSION: + DoCastVictim(SPELL_ARCANE_EXPLOSION); + events.ScheduleEvent(EVENT_SILENCE, 8 * IN_MILLISECONDS); + break; + case EVENT_POLYMORPH: + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 30.0f, true)) + DoCast(target, SPELL_POLYMORPH); + events.ScheduleEvent(EVENT_POLYMORPH, 20 * IN_MILLISECONDS); + break; + default: + break; + } + } + + if (_healthAbove50Pct && HealthBelowPct(50)) + { + _healthAbove50Pct = false; + Talk(SAY_SPECIALAE); + DoCast(me, SPELL_ARCANE_BUBBLE); + DoCastAOE(SPELL_DETONATION); + } + + DoMeleeAttackIfReady(); } - else ArcaneExplosion_Timer -= diff; - DoMeleeAttackIfReady(); + private: + bool _healthAbove50Pct; + }; + + CreatureAI* GetAI(Creature* creature) const override + { + return new boss_arcanist_doanAI(creature); } - }; }; void AddSC_boss_arcanist_doan() diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/scarlet_monastery.h b/src/server/scripts/EasternKingdoms/ScarletMonastery/scarlet_monastery.h index cd5a74ee478..bdac6b089fd 100644 --- a/src/server/scripts/EasternKingdoms/ScarletMonastery/scarlet_monastery.h +++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/scarlet_monastery.h @@ -30,7 +30,8 @@ enum DataTypes DATA_HORSEMAN_EVENT = 5, GAMEOBJECT_PUMPKIN_SHRINE = 6, - DATA_VORREL = 7 + DATA_VORREL = 7, + DATA_ARCANIST_DOAN = 8 }; #endif // SCARLET_M_ diff --git a/src/server/scripts/EasternKingdoms/boss_kruul.cpp b/src/server/scripts/EasternKingdoms/boss_kruul.cpp deleted file mode 100644 index 13f9f76532e..00000000000 --- a/src/server/scripts/EasternKingdoms/boss_kruul.cpp +++ /dev/null @@ -1,163 +0,0 @@ -/* - * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/> - * Copyright (C) 2006-2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/> - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation; either version 2 of the License, or (at your - * option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -/* ScriptData -SDName: Boss_Kruul -SD%Complete: 100 -SDComment: Highlord Kruul are presumably no longer in-game on regular bases, however future events could bring him back. -SDCategory: Bosses -EndScriptData */ - -#include "ScriptMgr.h" -#include "ScriptedCreature.h" - -enum Spells -{ - SPELL_SHADOWVOLLEY = 21341, - SPELL_CLEAVE = 20677, - SPELL_THUNDERCLAP = 23931, - SPELL_TWISTEDREFLECTION = 21063, - SPELL_VOIDBOLT = 21066, - SPELL_RAGE = 21340, - SPELL_CAPTURESOUL = 21054 -}; - -class boss_kruul : public CreatureScript -{ -public: - boss_kruul() : CreatureScript("boss_kruul") { } - - CreatureAI* GetAI(Creature* creature) const override - { - return new boss_kruulAI(creature); - } - - struct boss_kruulAI : public ScriptedAI - { - boss_kruulAI(Creature* creature) : ScriptedAI(creature) { } - - uint32 ShadowVolley_Timer; - uint32 Cleave_Timer; - uint32 ThunderClap_Timer; - uint32 TwistedReflection_Timer; - uint32 VoidBolt_Timer; - uint32 Rage_Timer; - uint32 Hound_Timer; - - void Reset() override - { - ShadowVolley_Timer = 10000; - Cleave_Timer = 14000; - ThunderClap_Timer = 20000; - TwistedReflection_Timer = 25000; - VoidBolt_Timer = 30000; - Rage_Timer = 60000; //Cast rage after 1 minute - Hound_Timer = 8000; - } - - void EnterCombat(Unit* /*who*/) override - { - } - - void KilledUnit(Unit* /*victim*/) override - { - // When a player, pet or totem gets killed, Lord Kazzak casts this spell to instantly regenerate 70, 000 health. - DoCast(me, SPELL_CAPTURESOUL); - } - - void SummonHounds(Unit* victim) - { - if (Creature* Hound = DoSpawnCreature(19207, float(irand(-9, 9)), float(irand(-9, 9)), 0, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 300000)) - Hound->AI()->AttackStart(victim); - } - - void UpdateAI(uint32 diff) override - { - //Return since we have no target - if (!UpdateVictim()) - return; - - //ShadowVolley_Timer - if (ShadowVolley_Timer <= diff) - { - if (urand(0, 99) < 45) - DoCastVictim(SPELL_SHADOWVOLLEY); - - ShadowVolley_Timer = 5000; - } else ShadowVolley_Timer -= diff; - - //Cleave_Timer - if (Cleave_Timer <= diff) - { - if (urand(0, 1)) - DoCastVictim(SPELL_CLEAVE); - - Cleave_Timer = 10000; - } else Cleave_Timer -= diff; - - //ThunderClap_Timer - if (ThunderClap_Timer <= diff) - { - if (urand(0, 9) < 2) - DoCastVictim(SPELL_THUNDERCLAP); - - ThunderClap_Timer = 12000; - } else ThunderClap_Timer -= diff; - - //TwistedReflection_Timer - if (TwistedReflection_Timer <= diff) - { - DoCastVictim(SPELL_TWISTEDREFLECTION); - TwistedReflection_Timer = 30000; - } else TwistedReflection_Timer -= diff; - - //VoidBolt_Timer - if (VoidBolt_Timer <= diff) - { - if (urand(0, 9) < 4) - DoCastVictim(SPELL_VOIDBOLT); - - VoidBolt_Timer = 18000; - } else VoidBolt_Timer -= diff; - - //Rage_Timer - if (Rage_Timer <= diff) - { - DoCast(me, SPELL_RAGE); - Rage_Timer = 70000; - } else Rage_Timer -= diff; - - //Hound_Timer - if (Hound_Timer <= diff) - { - SummonHounds(me->GetVictim()); - SummonHounds(me->GetVictim()); - SummonHounds(me->GetVictim()); - - Hound_Timer = 45000; - } else Hound_Timer -= diff; - - DoMeleeAttackIfReady(); - } - }; -}; - -void AddSC_boss_kruul() -{ - new boss_kruul(); -} diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp index 14f9bfb2e2f..da40ec333a6 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp @@ -283,8 +283,6 @@ public: InstanceScript* instance; - uint64 TarethaGUID; - bool LowHp; bool HadMount; @@ -400,11 +398,8 @@ public: me->SummonCreature(NPC_INN_GUARDSMAN, 2656.39f, 659.77f, 61.93f, 2.61f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000); break; case 94: - if (uint64 TarethaGUID = instance->GetData64(DATA_TARETHA)) - { - if (Creature* Taretha = ObjectAccessor::GetCreature(*me, TarethaGUID)) - Taretha->AI()->Talk(SAY_TA_ESCAPED, me); - } + if (Creature* Taretha = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_TARETHA))) + Taretha->AI()->Talk(SAY_TA_ESCAPED, me); break; case 95: Talk(SAY_TH_MEET_TARETHA); diff --git a/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.cpp b/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.cpp index ecb28a5b0cb..04be688d8aa 100644 --- a/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.cpp +++ b/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.cpp @@ -148,9 +148,9 @@ public: if (Player* target = ObjectAccessor::GetPlayer(*me, PlayerGUID)) AttackStart(target); - switchFactionIfAlive(instance, ENTRY_RAVEN); - switchFactionIfAlive(instance, ENTRY_ORO); - switchFactionIfAlive(instance, ENTRY_MURTA); + switchFactionIfAlive(ENTRY_RAVEN); + switchFactionIfAlive(ENTRY_ORO); + switchFactionIfAlive(ENTRY_MURTA); } postGossipStep++; } @@ -185,9 +185,9 @@ public: Text_Timer = 0; } - void switchFactionIfAlive(InstanceScript* instance, uint32 entry) + void switchFactionIfAlive(uint32 entry) { - if (Creature* crew = instance->instance->GetCreature(instance->GetData64(entry))) + if (Creature* crew = ObjectAccessor::GetCreature(*me, instance->GetData64(entry))) if (crew->IsAlive()) crew->setFaction(FACTION_HOSTILE); } diff --git a/src/server/scripts/Outland/BlackTemple/black_temple.cpp b/src/server/scripts/Outland/BlackTemple/black_temple.cpp index 5edae14d47a..3a33561e998 100644 --- a/src/server/scripts/Outland/BlackTemple/black_temple.cpp +++ b/src/server/scripts/Outland/BlackTemple/black_temple.cpp @@ -95,32 +95,34 @@ public: { npc_wrathbone_flayerAI(Creature* creature) : ScriptedAI(creature) { - instance = creature->GetInstanceScript(); + _instance = creature->GetInstanceScript(); } void Reset() override { - events.ScheduleEvent(EVENT_GET_CHANNELERS, 3000); - enteredCombat = false; + _events.ScheduleEvent(EVENT_GET_CHANNELERS, 3000); + _enteredCombat = false; + _bloodmageList.clear(); + _deathshaperList.clear(); } void JustDied(Unit* /*killer*/) override { } void EnterCombat(Unit* /*who*/) override { - events.ScheduleEvent(EVENT_CLEAVE, 5000); - events.ScheduleEvent(EVENT_IGNORED, 7000); - enteredCombat = true; + _events.ScheduleEvent(EVENT_CLEAVE, 5000); + _events.ScheduleEvent(EVENT_IGNORED, 7000); + _enteredCombat = true; } void UpdateAI(uint32 diff) override { - if (!enteredCombat) + if (!_enteredCombat) { - events.Update(diff); + _events.Update(diff); - while (uint32 eventId = events.ExecuteEvent()) + while (uint32 eventId = _events.ExecuteEvent()) { switch (eventId) { @@ -132,7 +134,7 @@ public: if (!BloodMageList.empty()) for (std::list<Creature*>::const_iterator itr = BloodMageList.begin(); itr != BloodMageList.end(); ++itr) { - bloodmage.push_back((*itr)->GetGUID()); + _bloodmageList.push_back((*itr)->GetGUID()); if ((*itr)->isDead()) (*itr)->Respawn(); } @@ -143,26 +145,26 @@ public: if (!DeathShaperList.empty()) for (std::list<Creature*>::const_iterator itr = DeathShaperList.begin(); itr != DeathShaperList.end(); ++itr) { - deathshaper.push_back((*itr)->GetGUID()); + _deathshaperList.push_back((*itr)->GetGUID()); if ((*itr)->isDead()) (*itr)->Respawn(); } - events.ScheduleEvent(EVENT_SET_CHANNELERS, 3000); + _events.ScheduleEvent(EVENT_SET_CHANNELERS, 3000); break; } case EVENT_SET_CHANNELERS: { - for (std::list<uint64>::const_iterator itr = bloodmage.begin(); itr != bloodmage.end(); ++itr) - if (Creature* bloodmage = (ObjectAccessor::GetCreature(*me, *itr))) + for (uint64 guid : _bloodmageList) + if (Creature* bloodmage = ObjectAccessor::GetCreature(*me, guid)) bloodmage->CastSpell((Unit*)NULL, SPELL_SUMMON_CHANNEL); - for (std::list<uint64>::const_iterator itr = deathshaper.begin(); itr != deathshaper.end(); ++itr) - if (Creature* deathshaper = (ObjectAccessor::GetCreature(*me, *itr))) + for (uint64 guid : _deathshaperList) + if (Creature* deathshaper = ObjectAccessor::GetCreature(*me, guid)) deathshaper->CastSpell((Unit*)NULL, SPELL_SUMMON_CHANNEL); - events.ScheduleEvent(EVENT_SET_CHANNELERS, 12000); + _events.ScheduleEvent(EVENT_SET_CHANNELERS, 12000); break; } @@ -175,20 +177,20 @@ public: if (!UpdateVictim()) return; - events.Update(diff); + _events.Update(diff); - while (uint32 eventId = events.ExecuteEvent()) + while (uint32 eventId = _events.ExecuteEvent()) { switch (eventId) { case EVENT_CLEAVE: DoCastVictim(SPELL_CLEAVE); - events.ScheduleEvent(EVENT_CLEAVE, urand (1000, 2000)); + _events.ScheduleEvent(EVENT_CLEAVE, urand (1000, 2000)); break; case EVENT_IGNORED: if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) DoCast(target, SPELL_IGNORED); - events.ScheduleEvent(EVENT_IGNORED, 10000); + _events.ScheduleEvent(EVENT_IGNORED, 10000); break; default: break; @@ -198,12 +200,12 @@ public: } private: - InstanceScript* instance; - EventMap events; - std::list<uint64> bloodmage; - std::list<uint64> deathshaper; - bool enteredCombat; - }; + InstanceScript* _instance; + EventMap _events; + std::list<uint64> _bloodmageList; + std::list<uint64> _deathshaperList; + bool _enteredCombat; + }; CreatureAI* GetAI(Creature* creature) const override { diff --git a/src/server/scripts/Spells/spell_druid.cpp b/src/server/scripts/Spells/spell_druid.cpp index e466c15d417..5f432bb8b61 100644 --- a/src/server/scripts/Spells/spell_druid.cpp +++ b/src/server/scripts/Spells/spell_druid.cpp @@ -578,11 +578,11 @@ class spell_dru_rip : public SpellScriptLoader uint8 cp = caster->ToPlayer()->GetComboPoints(); // Idol of Feral Shadows. Can't be handled as SpellMod due its dependency from CPs - if (AuraEffect const* idol = caster->GetAuraEffect(SPELL_DRUID_IDOL_OF_FERAL_SHADOWS, EFFECT_0)) - amount += cp * idol->GetAmount(); + if (AuraEffect const* auraEffIdolOfFeralShadows = caster->GetAuraEffect(SPELL_DRUID_IDOL_OF_FERAL_SHADOWS, EFFECT_0)) + amount += cp * auraEffIdolOfFeralShadows->GetAmount(); // Idol of Worship. Can't be handled as SpellMod due its dependency from CPs - else if (AuraEffect const* idol = caster->GetAuraEffect(SPELL_DRUID_IDOL_OF_WORSHIP, EFFECT_0)) - amount += cp * idol->GetAmount(); + else if (AuraEffect const* auraEffIdolOfWorship = caster->GetAuraEffect(SPELL_DRUID_IDOL_OF_WORSHIP, EFFECT_0)) + amount += cp * auraEffIdolOfWorship->GetAmount(); amount += int32(CalculatePct(caster->GetTotalAttackPowerValue(BASE_ATTACK), cp)); } diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index 4c72d790059..a8a73310592 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -449,9 +449,9 @@ class spell_gen_bonked : public SpellScriptLoader target->CastSpell(target, SPELL_FOAM_SWORD_DEFEAT, true); target->RemoveAurasDueToSpell(SPELL_BONKED); - if (Aura const* aura = target->GetAura(SPELL_ON_GUARD)) + if (Aura const* auraOnGuard = target->GetAura(SPELL_ON_GUARD)) { - if (Item* item = target->GetItemByGuid(aura->GetCastItemGUID())) + if (Item* item = target->GetItemByGuid(auraOnGuard->GetCastItemGUID())) target->DestroyItemCount(item->GetEntry(), 1, true); } } @@ -2912,7 +2912,7 @@ class spell_gen_profession_research : public SpellScriptLoader // learn random explicit discovery recipe (if any) if (uint32 discoveredSpellId = GetExplicitDiscoverySpell(spellId, caster)) - caster->learnSpell(discoveredSpellId, false); + caster->LearnSpell(discoveredSpellId, false); caster->UpdateCraftSkill(spellId); } diff --git a/src/server/scripts/Spells/spell_item.cpp b/src/server/scripts/Spells/spell_item.cpp index a17d7dce2ea..7139c9ecfba 100644 --- a/src/server/scripts/Spells/spell_item.cpp +++ b/src/server/scripts/Spells/spell_item.cpp @@ -383,6 +383,45 @@ class spell_item_echoes_of_light : public SpellScriptLoader } }; +// 7434 - Fate Rune of Unsurpassed Vigor +enum FateRuneOfUnsurpassedVigor +{ + SPELL_UNSURPASSED_VIGOR = 25733 +}; + +class spell_item_fate_rune_of_unsurpassed_vigor : public SpellScriptLoader +{ + public: + spell_item_fate_rune_of_unsurpassed_vigor() : SpellScriptLoader("spell_item_fate_rune_of_unsurpassed_vigor") { } + + class spell_item_fate_rune_of_unsurpassed_vigor_AuraScript : public AuraScript + { + PrepareAuraScript(spell_item_fate_rune_of_unsurpassed_vigor_AuraScript); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + if (!sSpellMgr->GetSpellInfo(SPELL_UNSURPASSED_VIGOR)) + return false; + return true; + } + + void HandleProc(AuraEffect const* /*aurEff*/, ProcEventInfo& /*eventInfo*/) + { + GetTarget()->CastSpell(GetTarget(), SPELL_UNSURPASSED_VIGOR, true); + } + + void Register() override + { + OnEffectProc += AuraEffectProcFn(spell_item_fate_rune_of_unsurpassed_vigor_AuraScript::HandleProc, EFFECT_0, SPELL_AURA_DUMMY); + } + }; + + AuraScript* GetAuraScript() const override + { + return new spell_item_fate_rune_of_unsurpassed_vigor_AuraScript(); + } +}; + // http://www.wowhead.com/item=47499 Flask of the North // 67019 Flask of the North enum FlaskOfTheNorthSpells @@ -1413,7 +1452,7 @@ class spell_item_book_of_glyph_mastery : public SpellScriptLoader // learn random explicit discovery recipe (if any) if (uint32 discoveredSpellId = GetExplicitDiscoverySpell(spellId, caster)) - caster->learnSpell(discoveredSpellId, false); + caster->LearnSpell(discoveredSpellId, false); } void Register() override @@ -2607,6 +2646,7 @@ void AddSC_item_spell_scripts() new spell_item_desperate_defense(); new spell_item_deviate_fish(); new spell_item_echoes_of_light(); + new spell_item_fate_rune_of_unsurpassed_vigor(); new spell_item_flask_of_the_north(); new spell_item_gnomish_death_ray(); new spell_item_make_a_wish(); diff --git a/src/server/scripts/Spells/spell_paladin.cpp b/src/server/scripts/Spells/spell_paladin.cpp index 447cb645e76..53af04c2e98 100644 --- a/src/server/scripts/Spells/spell_paladin.cpp +++ b/src/server/scripts/Spells/spell_paladin.cpp @@ -1211,11 +1211,11 @@ class spell_pal_sacred_shield : public SpellScriptLoader amount += int32(bonus); // Arena - Dampening - if (AuraEffect const* dampening = caster->GetAuraEffect(SPELL_GENERIC_ARENA_DAMPENING, EFFECT_0)) - AddPct(amount, dampening->GetAmount()); + if (AuraEffect const* auraEffArenaDampening = caster->GetAuraEffect(SPELL_GENERIC_ARENA_DAMPENING, EFFECT_0)) + AddPct(amount, auraEffArenaDampening->GetAmount()); // Battleground - Dampening - else if (AuraEffect const* dampening = caster->GetAuraEffect(SPELL_GENERIC_BATTLEGROUND_DAMPENING, EFFECT_0)) - AddPct(amount, dampening->GetAmount()); + else if (AuraEffect const* auraEffBattlegroudDampening = caster->GetAuraEffect(SPELL_GENERIC_BATTLEGROUND_DAMPENING, EFFECT_0)) + AddPct(amount, auraEffBattlegroudDampening->GetAmount()); } } diff --git a/src/server/scripts/Spells/spell_shaman.cpp b/src/server/scripts/Spells/spell_shaman.cpp index 61ff79c505e..a1c2d0e1d1c 100644 --- a/src/server/scripts/Spells/spell_shaman.cpp +++ b/src/server/scripts/Spells/spell_shaman.cpp @@ -34,6 +34,7 @@ enum ShamanSpells SPELL_SHAMAN_BIND_SIGHT = 6277, SPELL_SHAMAN_CLEANSING_TOTEM_EFFECT = 52025, SPELL_SHAMAN_EARTH_SHIELD_HEAL = 379, + SPELL_SHAMAN_ELEMENTAL_MASTERY = 16166, SPELL_SHAMAN_EXHAUSTION = 57723, SPELL_SHAMAN_FIRE_NOVA_R1 = 1535, SPELL_SHAMAN_FIRE_NOVA_TRIGGERED_R1 = 8349, @@ -767,6 +768,42 @@ class spell_sha_item_mana_surge : public SpellScriptLoader } }; +// 70811 - Item - Shaman T10 Elemental 2P Bonus +class spell_sha_item_t10_elemental_2p_bonus : public SpellScriptLoader +{ + public: + spell_sha_item_t10_elemental_2p_bonus() : SpellScriptLoader("spell_sha_item_t10_elemental_2p_bonus") { } + + class spell_sha_item_t10_elemental_2p_bonus_AuraScript : public AuraScript + { + PrepareAuraScript(spell_sha_item_t10_elemental_2p_bonus_AuraScript); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + if (!sSpellMgr->GetSpellInfo(SPELL_SHAMAN_ELEMENTAL_MASTERY)) + return false; + return true; + } + + void HandleEffectProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/) + { + PreventDefaultAction(); + if (Player* target = GetTarget()->ToPlayer()) + target->ModifySpellCooldown(SPELL_SHAMAN_ELEMENTAL_MASTERY, -aurEff->GetAmount()); + } + + void Register() override + { + OnEffectProc += AuraEffectProcFn(spell_sha_item_t10_elemental_2p_bonus_AuraScript::HandleEffectProc, EFFECT_0, SPELL_AURA_DUMMY); + } + }; + + AuraScript* GetAuraScript() const override + { + return new spell_sha_item_t10_elemental_2p_bonus_AuraScript(); + } +}; + // 60103 - Lava Lash class spell_sha_lava_lash : public SpellScriptLoader { @@ -989,6 +1026,7 @@ void AddSC_shaman_spell_scripts() new spell_sha_item_lightning_shield(); new spell_sha_item_lightning_shield_trigger(); new spell_sha_item_mana_surge(); + new spell_sha_item_t10_elemental_2p_bonus(); new spell_sha_lava_lash(); new spell_sha_mana_spring_totem(); new spell_sha_mana_tide_totem(); diff --git a/src/server/scripts/World/npc_professions.cpp b/src/server/scripts/World/npc_professions.cpp index 21489c714e2..083105b6aa4 100644 --- a/src/server/scripts/World/npc_professions.cpp +++ b/src/server/scripts/World/npc_professions.cpp @@ -260,90 +260,90 @@ void ProfessionUnlearnSpells(Player* player, uint32 type) switch (type) { case S_UNLEARN_WEAPON: // S_UNLEARN_WEAPON - player->removeSpell(36125); // Light Earthforged Blade - player->removeSpell(36128); // Light Emberforged Hammer - player->removeSpell(36126); // Light Skyforged Axe + player->RemoveSpell(36125); // Light Earthforged Blade + player->RemoveSpell(36128); // Light Emberforged Hammer + player->RemoveSpell(36126); // Light Skyforged Axe break; case S_UNLEARN_ARMOR: // S_UNLEARN_ARMOR - player->removeSpell(36122); // Earthforged Leggings - player->removeSpell(36129); // Heavy Earthforged Breastplate - player->removeSpell(36130); // Stormforged Hauberk - player->removeSpell(34533); // Breastplate of Kings - player->removeSpell(34529); // Nether Chain Shirt - player->removeSpell(34534); // Bulwark of Kings - player->removeSpell(36257); // Bulwark of the Ancient Kings - player->removeSpell(36256); // Embrace of the Twisting Nether - player->removeSpell(34530); // Twisting Nether Chain Shirt - player->removeSpell(36124); // Windforged Leggings + player->RemoveSpell(36122); // Earthforged Leggings + player->RemoveSpell(36129); // Heavy Earthforged Breastplate + player->RemoveSpell(36130); // Stormforged Hauberk + player->RemoveSpell(34533); // Breastplate of Kings + player->RemoveSpell(34529); // Nether Chain Shirt + player->RemoveSpell(34534); // Bulwark of Kings + player->RemoveSpell(36257); // Bulwark of the Ancient Kings + player->RemoveSpell(36256); // Embrace of the Twisting Nether + player->RemoveSpell(34530); // Twisting Nether Chain Shirt + player->RemoveSpell(36124); // Windforged Leggings break; case S_UNLEARN_HAMMER: // S_UNLEARN_HAMMER - player->removeSpell(36262); // Dragonstrike - player->removeSpell(34546); // Dragonmaw - player->removeSpell(34545); // Drakefist Hammer - player->removeSpell(36136); // Lavaforged Warhammer - player->removeSpell(34547); // Thunder - player->removeSpell(34567); // Deep Thunder - player->removeSpell(36263); // Stormherald - player->removeSpell(36137); // Great Earthforged Hammer + player->RemoveSpell(36262); // Dragonstrike + player->RemoveSpell(34546); // Dragonmaw + player->RemoveSpell(34545); // Drakefist Hammer + player->RemoveSpell(36136); // Lavaforged Warhammer + player->RemoveSpell(34547); // Thunder + player->RemoveSpell(34567); // Deep Thunder + player->RemoveSpell(36263); // Stormherald + player->RemoveSpell(36137); // Great Earthforged Hammer break; case S_UNLEARN_AXE: // S_UNLEARN_AXE - player->removeSpell(36260); // Wicked Edge of the Planes - player->removeSpell(34562); // Black Planar Edge - player->removeSpell(34541); // The Planar Edge - player->removeSpell(36134); // Stormforged Axe - player->removeSpell(36135); // Skyforged Great Axe - player->removeSpell(36261); // Bloodmoon - player->removeSpell(34543); // Lunar Crescent - player->removeSpell(34544); // Mooncleaver + player->RemoveSpell(36260); // Wicked Edge of the Planes + player->RemoveSpell(34562); // Black Planar Edge + player->RemoveSpell(34541); // The Planar Edge + player->RemoveSpell(36134); // Stormforged Axe + player->RemoveSpell(36135); // Skyforged Great Axe + player->RemoveSpell(36261); // Bloodmoon + player->RemoveSpell(34543); // Lunar Crescent + player->RemoveSpell(34544); // Mooncleaver break; case S_UNLEARN_SWORD: // S_UNLEARN_SWORD - player->removeSpell(36258); // Blazefury - player->removeSpell(34537); // Blazeguard - player->removeSpell(34535); // Fireguard - player->removeSpell(36131); // Windforged Rapier - player->removeSpell(36133); // Stoneforged Claymore - player->removeSpell(34538); // Lionheart Blade - player->removeSpell(34540); // Lionheart Champion - player->removeSpell(36259); // Lionheart Executioner + player->RemoveSpell(36258); // Blazefury + player->RemoveSpell(34537); // Blazeguard + player->RemoveSpell(34535); // Fireguard + player->RemoveSpell(36131); // Windforged Rapier + player->RemoveSpell(36133); // Stoneforged Claymore + player->RemoveSpell(34538); // Lionheart Blade + player->RemoveSpell(34540); // Lionheart Champion + player->RemoveSpell(36259); // Lionheart Executioner break; case S_UNLEARN_DRAGON: // S_UNLEARN_DRAGON - player->removeSpell(36076); // Dragonstrike Leggings - player->removeSpell(36079); // Golden Dragonstrike Breastplate - player->removeSpell(35576); // Ebon Netherscale Belt - player->removeSpell(35577); // Ebon Netherscale Bracers - player->removeSpell(35575); // Ebon Netherscale Breastplate - player->removeSpell(35582); // Netherstrike Belt - player->removeSpell(35584); // Netherstrike Bracers - player->removeSpell(35580); // Netherstrike Breastplate + player->RemoveSpell(36076); // Dragonstrike Leggings + player->RemoveSpell(36079); // Golden Dragonstrike Breastplate + player->RemoveSpell(35576); // Ebon Netherscale Belt + player->RemoveSpell(35577); // Ebon Netherscale Bracers + player->RemoveSpell(35575); // Ebon Netherscale Breastplate + player->RemoveSpell(35582); // Netherstrike Belt + player->RemoveSpell(35584); // Netherstrike Bracers + player->RemoveSpell(35580); // Netherstrike Breastplate break; case S_UNLEARN_ELEMENTAL: // S_UNLEARN_ELEMENTAL - player->removeSpell(36074); // Blackstorm Leggings - player->removeSpell(36077); // Primalstorm Breastplate - player->removeSpell(35590); // Primalstrike Belt - player->removeSpell(35591); // Primalstrike Bracers - player->removeSpell(35589); // Primalstrike Vest + player->RemoveSpell(36074); // Blackstorm Leggings + player->RemoveSpell(36077); // Primalstorm Breastplate + player->RemoveSpell(35590); // Primalstrike Belt + player->RemoveSpell(35591); // Primalstrike Bracers + player->RemoveSpell(35589); // Primalstrike Vest break; case S_UNLEARN_TRIBAL: // S_UNLEARN_TRIBAL - player->removeSpell(35585); // Windhawk Hauberk - player->removeSpell(35587); // Windhawk Belt - player->removeSpell(35588); // Windhawk Bracers - player->removeSpell(36075); // Wildfeather Leggings - player->removeSpell(36078); // Living Crystal Breastplate + player->RemoveSpell(35585); // Windhawk Hauberk + player->RemoveSpell(35587); // Windhawk Belt + player->RemoveSpell(35588); // Windhawk Bracers + player->RemoveSpell(36075); // Wildfeather Leggings + player->RemoveSpell(36078); // Living Crystal Breastplate break; case S_UNLEARN_SPELLFIRE: // S_UNLEARN_SPELLFIRE - player->removeSpell(26752); // Spellfire Belt - player->removeSpell(26753); // Spellfire Gloves - player->removeSpell(26754); // Spellfire Robe + player->RemoveSpell(26752); // Spellfire Belt + player->RemoveSpell(26753); // Spellfire Gloves + player->RemoveSpell(26754); // Spellfire Robe break; case S_UNLEARN_MOONCLOTH: // S_UNLEARN_MOONCLOTH - player->removeSpell(26760); // Primal Mooncloth Belt - player->removeSpell(26761); // Primal Mooncloth Shoulders - player->removeSpell(26762); // Primal Mooncloth Robe + player->RemoveSpell(26760); // Primal Mooncloth Belt + player->RemoveSpell(26761); // Primal Mooncloth Shoulders + player->RemoveSpell(26762); // Primal Mooncloth Robe break; case S_UNLEARN_SHADOWEAVE: // S_UNLEARN_SHADOWEAVE - player->removeSpell(26756); // Frozen Shadoweave Shoulders - player->removeSpell(26757); // Frozen Shadoweave Boots - player->removeSpell(26758); // Frozen Shadoweave Robe + player->RemoveSpell(26756); // Frozen Shadoweave Shoulders + player->RemoveSpell(26757); // Frozen Shadoweave Boots + player->RemoveSpell(26758); // Frozen Shadoweave Robe break; } } |