From 681cf8f27c341a8fadbadf1851b55b7b8a7e524a Mon Sep 17 00:00:00 2001 From: joschiwald Date: Sun, 31 Aug 2014 20:33:46 +0200 Subject: Core/Scripts: rename files, remove whitespace and some other small changes after recent pull requests --- .../UtgardeKeep/boss_skarvald_dalronn.cpp | 67 +++---- .../SethekkHalls/boss_tailonking_ikiss.cpp | 219 --------------------- .../SethekkHalls/boss_talon_king_ikiss.cpp | 211 ++++++++++++++++++++ src/server/scripts/Outland/CMakeLists.txt | 2 +- 4 files changed, 242 insertions(+), 257 deletions(-) delete mode 100644 src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_tailonking_ikiss.cpp create mode 100644 src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_talon_king_ikiss.cpp (limited to 'src/server/scripts') diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_skarvald_dalronn.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_skarvald_dalronn.cpp index 539f1c4abfb..c6a91e3ff33 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_skarvald_dalronn.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_skarvald_dalronn.cpp @@ -44,6 +44,7 @@ enum Spells SPELL_STONE_STRIKE = 48583, SPELL_ENRAGE = 48193, SPELL_SUMMON_SKARVALD_GHOST = 48613, + // Spells of Dalronn and his Ghost SPELL_SHADOW_BOLT = 43649, SPELL_SUMMON_SKELETONS = 52611, @@ -76,31 +77,30 @@ enum Actions class SkarvaldChargePredicate { - public: - SkarvaldChargePredicate(Unit* unit) : me(unit) { } + public: + SkarvaldChargePredicate(Unit* unit) : _me(unit) { } - bool operator() (WorldObject* object) const - { - return object->GetDistance2d(me) >= 5.0f && object->GetDistance2d(me) <= 30.0f; - } + bool operator() (WorldObject* target) const + { + return target->GetDistance2d(_me) >= 5.0f && target->GetDistance2d(_me) <= 30.0f; + } private: - Unit* me; + Unit* _me; }; struct generic_boss_controllerAI : public BossAI { - generic_boss_controllerAI(Creature* creature) : BossAI(creature, DATA_SKARVALD_DALRONN) - { + generic_boss_controllerAI(Creature* creature) : BossAI(creature, DATA_SKARVALD_DALRONN) + { OtherBossData = 0; - IsInGhostForm = false; + IsInGhostForm = me->GetEntry() == NPC_SKARVALD_GHOST || me->GetEntry() == NPC_DALRONN_GHOST; } void Reset() override { - if (me->GetEntry() == NPC_SKARVALD_GHOST || me->GetEntry() == NPC_DALRONN_GHOST) + if (IsInGhostForm) { - IsInGhostForm = true; // Call this here since ghosts aren't set in combat as they spawn. DoZoneInCombat(me, 50.0f); } @@ -160,7 +160,7 @@ struct generic_boss_controllerAI : public BossAI if (!IsInGhostForm && who->GetTypeId() == TYPEID_PLAYER) Talk(SAY_KILL); } - + protected: uint32 OtherBossData; bool IsInGhostForm; @@ -173,26 +173,27 @@ class boss_skarvald_the_constructor : public CreatureScript struct boss_skarvald_the_constructorAI : public generic_boss_controllerAI { - boss_skarvald_the_constructorAI(Creature* creature) : generic_boss_controllerAI(creature) - { + boss_skarvald_the_constructorAI(Creature* creature) : generic_boss_controllerAI(creature) + { + OtherBossData = DATA_DALRONN; Enraged = false; } void Reset() override { - OtherBossData = DATA_DALRONN; Enraged = false; generic_boss_controllerAI::Reset(); } void EnterCombat(Unit* who) override { + generic_boss_controllerAI::EnterCombat(who); + if (!IsInGhostForm) Talk(SAY_AGGRO); events.ScheduleEvent(EVENT_SKARVALD_CHARGE, 5000); events.ScheduleEvent(EVENT_STONE_STRIKE, 10000); - generic_boss_controllerAI::EnterCombat(who); } void ExecuteEvent(uint32 eventId) override @@ -239,26 +240,23 @@ class boss_dalronn_the_controller : public CreatureScript struct boss_dalronn_the_controllerAI : public generic_boss_controllerAI { - boss_dalronn_the_controllerAI(Creature* creature) : generic_boss_controllerAI(creature) { } - - void Reset() override + boss_dalronn_the_controllerAI(Creature* creature) : generic_boss_controllerAI(creature) { OtherBossData = DATA_SKARVALD; - generic_boss_controllerAI::Reset(); } void EnterCombat(Unit* who) override { + generic_boss_controllerAI::EnterCombat(who); + events.ScheduleEvent(EVENT_SHADOW_BOLT, 1000); events.ScheduleEvent(EVENT_DEBILITATE, 5000); - - if (!IsInGhostForm) + + if (!IsInGhostForm) events.ScheduleEvent(EVENT_DELAYED_AGGRO_SAY, 5000); - - if (IsHeroic()) + + if (IsHeroic()) events.ScheduleEvent(EVENT_SUMMON_SKELETONS, 10000); - - generic_boss_controllerAI::EnterCombat(who); } void ExecuteEvent(uint32 eventId) override @@ -266,22 +264,17 @@ class boss_dalronn_the_controller : public CreatureScript switch (eventId) { case EVENT_SHADOW_BOLT: - if (!me->IsNonMeleeSpellCast(false)) - if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true)) - DoCast(target, SPELL_SHADOW_BOLT); + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 45.0f, true)) + DoCast(target, SPELL_SHADOW_BOLT); events.ScheduleEvent(EVENT_SHADOW_BOLT, 2100); //give a 100ms pause to try cast other spells break; case EVENT_DEBILITATE: - if (!me->IsNonMeleeSpellCast(false)) - { - if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true)) - DoCast(target, SPELL_DEBILITATE); - } + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 50.0f, true)) + DoCast(target, SPELL_DEBILITATE); events.ScheduleEvent(EVENT_DEBILITATE, urand(5000, 10000)); break; case EVENT_SUMMON_SKELETONS: - if (!me->IsNonMeleeSpellCast(false)) - DoCast(SPELL_SUMMON_SKELETONS); + DoCast(me, SPELL_SUMMON_SKELETONS); events.ScheduleEvent(EVENT_SUMMON_SKELETONS, urand(10000, 30000)); break; case EVENT_DELAYED_AGGRO_SAY: diff --git a/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_tailonking_ikiss.cpp b/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_tailonking_ikiss.cpp deleted file mode 100644 index 1776cccb6cc..00000000000 --- a/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_tailonking_ikiss.cpp +++ /dev/null @@ -1,219 +0,0 @@ -/* - * Copyright (C) 2008-2014 TrinityCore - * - * 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 . - */ - -#include "ScriptMgr.h" -#include "ScriptedCreature.h" -#include "SpellScript.h" -#include "sethekk_halls.h" - -enum Says -{ - SAY_INTRO = 0, - SAY_AGGRO = 1, - SAY_SLAY = 2, - SAY_DEATH = 3, - EMOTE_ARCANE_EXPLOSION = 4 -}; - -enum Spells -{ - SPELL_BLINK = 38194, - SPELL_BLINK_TELEPORT = 38203, - SPELL_MANA_SHIELD = 38151, - SPELL_ARCANE_BUBBLE = 9438, - SPELL_SLOW = 35032, - SPELL_POLYMORPH = 38245, - SPELL_ARCANE_VOLLEY = 35059, - SPELL_ARCANE_EXPLOSION = 38197, -}; - -enum Events -{ - EVENT_POLYMORPH = 1, - EVENT_BLINK, - EVENT_SLOW, - EVENT_ARCANE_VOLLEY, - EVENT_ARCANE_EXPLOSION -}; - -class boss_talon_king_ikiss : public CreatureScript -{ -public: - boss_talon_king_ikiss() : CreatureScript("boss_talon_king_ikiss") { } - - struct boss_talon_king_ikissAI : public BossAI - { - boss_talon_king_ikissAI(Creature* creature) : BossAI(creature, DATA_TALON_KING_IKISS) - { - Intro = false; - ManaShield = false; - } - - void Reset() override - { - _Reset(); - Intro = false; - ManaShield = false; - } - - void MoveInLineOfSight(Unit* who) override - { - if (!me->GetVictim() && me->CanCreatureAttack(who)) - { - if (!Intro && me->IsWithinDistInMap(who, 100)) - { - Intro = true; - Talk(SAY_INTRO); - } - - if (!me->CanFly() && me->GetDistanceZ(who) > CREATURE_Z_ATTACK_RANGE) - return; - - float attackRadius = me->GetAttackDistance(who); - if (me->IsWithinDistInMap(who, attackRadius) && me->IsWithinLOSInMap(who)) - AttackStart(who); - } - } - - void EnterCombat(Unit* /*who*/) override - { - _EnterCombat(); - Talk(SAY_AGGRO); - events.ScheduleEvent(EVENT_ARCANE_VOLLEY, 5000); - events.ScheduleEvent(EVENT_POLYMORPH, 8000); - events.ScheduleEvent(EVENT_BLINK, 35000); - if (IsHeroic()) - events.ScheduleEvent(EVENT_SLOW, urand(15000, 30000)); - } - - void ExecuteEvent(uint32 eventId) override - { - switch (eventId) - { - case EVENT_POLYMORPH: - // Second top aggro in normal, random target in heroic. - if (IsHeroic()) - DoCast(SelectTarget(SELECT_TARGET_RANDOM, 0), SPELL_POLYMORPH); - else - DoCast(SelectTarget(SELECT_TARGET_TOPAGGRO, 1), SPELL_POLYMORPH); - events.ScheduleEvent(EVENT_POLYMORPH, urand(15000, 17500)); - break; - case EVENT_ARCANE_VOLLEY: - DoCast(me, SPELL_ARCANE_VOLLEY); - events.ScheduleEvent(EVENT_ARCANE_VOLLEY, urand(7000, 12000)); - break; - case EVENT_SLOW: - DoCast(me, SPELL_SLOW); - events.ScheduleEvent(EVENT_SLOW, urand(15000, 40000)); - break; - case EVENT_BLINK: - if (me->IsNonMeleeSpellCast(false)) - me->InterruptNonMeleeSpells(false); - Talk(EMOTE_ARCANE_EXPLOSION); - DoCastAOE(SPELL_BLINK); - events.ScheduleEvent(EVENT_BLINK, urand(35000, 40000)); - events.ScheduleEvent(EVENT_ARCANE_EXPLOSION, 1000); - break; - case EVENT_ARCANE_EXPLOSION: - DoCast(me, SPELL_ARCANE_EXPLOSION); - DoCast(me, SPELL_ARCANE_BUBBLE, true); - break; - default: - break; - } - } - - void DamageTaken(Unit* /*who*/, uint32& damage) override - { - if (!ManaShield && me->HealthBelowPctDamaged(20, damage)) - { - DoCast(me, SPELL_MANA_SHIELD); - ManaShield = true; - } - } - - void JustDied(Unit* /*killer*/) override - { - _JustDied(); - Talk(SAY_DEATH); - } - - void KilledUnit(Unit* who) override - { - if (who->GetTypeId() == TYPEID_PLAYER) - Talk(SAY_SLAY); - } - - private: - bool ManaShield; - bool Intro; - }; - - CreatureAI* GetAI(Creature* creature) const override - { - return GetSethekkHallsAI(creature); - } -}; - -// 38194 - Blink -class spell_talon_king_ikiss_blink : public SpellScriptLoader -{ - public: - spell_talon_king_ikiss_blink() : SpellScriptLoader("spell_talon_king_ikiss_blink") { } - - class spell_talon_king_ikiss_blink_SpellScript : public SpellScript - { - PrepareSpellScript(spell_talon_king_ikiss_blink_SpellScript); - - bool Validate(SpellInfo const* /*spellInfo*/) override - { - if (!sSpellMgr->GetSpellInfo(SPELL_BLINK)) - return false; - return true; - } - - void FilterTargets(std::list& targets) - { - uint8 maxSize = 1; - if (targets.size() > maxSize) - Trinity::Containers::RandomResizeList(targets, maxSize); - } - - void HandleDummyHitTarget(SpellEffIndex effIndex) - { - PreventHitDefaultEffect(effIndex); - GetHitUnit()->CastSpell(GetCaster(), SPELL_BLINK_TELEPORT, true); - } - - void Register() override - { - OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_talon_king_ikiss_blink_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ENEMY); - OnEffectHitTarget += SpellEffectFn(spell_talon_king_ikiss_blink_SpellScript::HandleDummyHitTarget, EFFECT_0, SPELL_EFFECT_DUMMY); - } - }; - - SpellScript* GetSpellScript() const override - { - return new spell_talon_king_ikiss_blink_SpellScript(); - } -}; - -void AddSC_boss_talon_king_ikiss() -{ - new boss_talon_king_ikiss(); - new spell_talon_king_ikiss_blink(); -} diff --git a/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_talon_king_ikiss.cpp b/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_talon_king_ikiss.cpp new file mode 100644 index 00000000000..22914ca9094 --- /dev/null +++ b/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_talon_king_ikiss.cpp @@ -0,0 +1,211 @@ +/* + * Copyright (C) 2008-2014 TrinityCore + * + * 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 . + */ + +#include "ScriptMgr.h" +#include "ScriptedCreature.h" +#include "SpellScript.h" +#include "sethekk_halls.h" + +enum Says +{ + SAY_INTRO = 0, + SAY_AGGRO = 1, + SAY_SLAY = 2, + SAY_DEATH = 3, + EMOTE_ARCANE_EXPLOSION = 4 +}; + +enum Spells +{ + SPELL_BLINK = 38194, + SPELL_BLINK_TELEPORT = 38203, + SPELL_MANA_SHIELD = 38151, + SPELL_ARCANE_BUBBLE = 9438, + SPELL_SLOW = 35032, + SPELL_POLYMORPH = 38245, + SPELL_ARCANE_VOLLEY = 35059, + SPELL_ARCANE_EXPLOSION = 38197, +}; + +enum Events +{ + EVENT_POLYMORPH = 1, + EVENT_BLINK, + EVENT_SLOW, + EVENT_ARCANE_VOLLEY, + EVENT_ARCANE_EXPLOSION +}; + +class boss_talon_king_ikiss : public CreatureScript +{ +public: + boss_talon_king_ikiss() : CreatureScript("boss_talon_king_ikiss") { } + + struct boss_talon_king_ikissAI : public BossAI + { + boss_talon_king_ikissAI(Creature* creature) : BossAI(creature, DATA_TALON_KING_IKISS) + { + Intro = false; + ManaShield = false; + } + + void Reset() override + { + _Reset(); + Intro = false; + ManaShield = false; + } + + void MoveInLineOfSight(Unit* who) override + { + if (!Intro && who->GetTypeId() == TYPEID_PLAYER && me->IsWithinDistInMap(who, 100.0f)) + { + Intro = true; + Talk(SAY_INTRO); + } + + BossAI::MoveInLineOfSight(who); + } + + void EnterCombat(Unit* /*who*/) override + { + _EnterCombat(); + Talk(SAY_AGGRO); + events.ScheduleEvent(EVENT_ARCANE_VOLLEY, 5000); + events.ScheduleEvent(EVENT_POLYMORPH, 8000); + events.ScheduleEvent(EVENT_BLINK, 35000); + if (IsHeroic()) + events.ScheduleEvent(EVENT_SLOW, urand(15000, 30000)); + } + + void ExecuteEvent(uint32 eventId) override + { + switch (eventId) + { + case EVENT_POLYMORPH: + // Second top aggro in normal, random target in heroic. + if (IsHeroic()) + DoCast(SelectTarget(SELECT_TARGET_RANDOM, 0), SPELL_POLYMORPH); + else + DoCast(SelectTarget(SELECT_TARGET_TOPAGGRO, 1), SPELL_POLYMORPH); + events.ScheduleEvent(EVENT_POLYMORPH, urand(15000, 17500)); + break; + case EVENT_ARCANE_VOLLEY: + DoCast(me, SPELL_ARCANE_VOLLEY); + events.ScheduleEvent(EVENT_ARCANE_VOLLEY, urand(7000, 12000)); + break; + case EVENT_SLOW: + DoCast(me, SPELL_SLOW); + events.ScheduleEvent(EVENT_SLOW, urand(15000, 40000)); + break; + case EVENT_BLINK: + if (me->IsNonMeleeSpellCast(false)) + me->InterruptNonMeleeSpells(false); + Talk(EMOTE_ARCANE_EXPLOSION); + DoCastAOE(SPELL_BLINK); + events.ScheduleEvent(EVENT_BLINK, urand(35000, 40000)); + events.ScheduleEvent(EVENT_ARCANE_EXPLOSION, 1000); + break; + case EVENT_ARCANE_EXPLOSION: + DoCast(me, SPELL_ARCANE_EXPLOSION); + DoCast(me, SPELL_ARCANE_BUBBLE, true); + break; + default: + break; + } + } + + void DamageTaken(Unit* /*who*/, uint32& damage) override + { + if (!ManaShield && me->HealthBelowPctDamaged(20, damage)) + { + DoCast(me, SPELL_MANA_SHIELD); + ManaShield = true; + } + } + + void JustDied(Unit* /*killer*/) override + { + _JustDied(); + Talk(SAY_DEATH); + } + + void KilledUnit(Unit* who) override + { + if (who->GetTypeId() == TYPEID_PLAYER) + Talk(SAY_SLAY); + } + + private: + bool ManaShield; + bool Intro; + }; + + CreatureAI* GetAI(Creature* creature) const override + { + return GetSethekkHallsAI(creature); + } +}; + +// 38194 - Blink +class spell_talon_king_ikiss_blink : public SpellScriptLoader +{ + public: + spell_talon_king_ikiss_blink() : SpellScriptLoader("spell_talon_king_ikiss_blink") { } + + class spell_talon_king_ikiss_blink_SpellScript : public SpellScript + { + PrepareSpellScript(spell_talon_king_ikiss_blink_SpellScript); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + if (!sSpellMgr->GetSpellInfo(SPELL_BLINK_TELEPORT)) + return false; + return true; + } + + void FilterTargets(std::list& targets) + { + WorldObject* target = Trinity::Containers::SelectRandomContainerElement(targets); + targets.clear(); + targets.push_back(target); + } + + void HandleDummyHitTarget(SpellEffIndex effIndex) + { + PreventHitDefaultEffect(effIndex); + GetHitUnit()->CastSpell(GetCaster(), SPELL_BLINK_TELEPORT, true); + } + + void Register() override + { + OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_talon_king_ikiss_blink_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ENEMY); + OnEffectHitTarget += SpellEffectFn(spell_talon_king_ikiss_blink_SpellScript::HandleDummyHitTarget, EFFECT_0, SPELL_EFFECT_DUMMY); + } + }; + + SpellScript* GetSpellScript() const override + { + return new spell_talon_king_ikiss_blink_SpellScript(); + } +}; + +void AddSC_boss_talon_king_ikiss() +{ + new boss_talon_king_ikiss(); + new spell_talon_king_ikiss_blink(); +} diff --git a/src/server/scripts/Outland/CMakeLists.txt b/src/server/scripts/Outland/CMakeLists.txt index 0c69a236ef8..ffc9b514abf 100644 --- a/src/server/scripts/Outland/CMakeLists.txt +++ b/src/server/scripts/Outland/CMakeLists.txt @@ -88,7 +88,7 @@ set(scripts_STAT_SRCS Outland/Auchindoun/ManaTombs/instance_mana_tombs.cpp Outland/Auchindoun/ManaTombs/mana_tombs.h Outland/Auchindoun/SethekkHalls/boss_darkweaver_syth.cpp - Outland/Auchindoun/SethekkHalls/boss_tailonking_ikiss.cpp + Outland/Auchindoun/SethekkHalls/boss_talon_king_ikiss.cpp Outland/Auchindoun/SethekkHalls/boss_anzu.cpp Outland/Auchindoun/SethekkHalls/instance_sethekk_halls.cpp Outland/Auchindoun/SethekkHalls/sethekk_halls.h -- cgit v1.2.3