aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/2014_08_31_02_world_spell_script_names.sql (renamed from sql/updates/world/2014_08_30_04_world_spell_script_names.sql)0
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_skarvald_dalronn.cpp67
-rw-r--r--src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_talon_king_ikiss.cpp (renamed from src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_tailonking_ikiss.cpp)76
-rw-r--r--src/server/scripts/Outland/CMakeLists.txt2
4 files changed, 65 insertions, 80 deletions
diff --git a/sql/updates/world/2014_08_30_04_world_spell_script_names.sql b/sql/updates/world/2014_08_31_02_world_spell_script_names.sql
index 128364bf4e7..128364bf4e7 100644
--- a/sql/updates/world/2014_08_30_04_world_spell_script_names.sql
+++ b/sql/updates/world/2014_08_31_02_world_spell_script_names.sql
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_talon_king_ikiss.cpp
index 1776cccb6cc..22914ca9094 100644
--- a/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_tailonking_ikiss.cpp
+++ b/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_talon_king_ikiss.cpp
@@ -72,21 +72,13 @@ public:
void MoveInLineOfSight(Unit* who) override
{
- if (!me->GetVictim() && me->CanCreatureAttack(who))
+ if (!Intro && who->GetTypeId() == TYPEID_PLAYER && me->IsWithinDistInMap(who, 100.0f))
{
- 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);
+ Intro = true;
+ Talk(SAY_INTRO);
}
+
+ BossAI::MoveInLineOfSight(who);
}
void EnterCombat(Unit* /*who*/) override
@@ -175,41 +167,41 @@ 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
+ class spell_talon_king_ikiss_blink_SpellScript : public SpellScript
{
- if (!sSpellMgr->GetSpellInfo(SPELL_BLINK))
- return false;
- return true;
- }
+ PrepareSpellScript(spell_talon_king_ikiss_blink_SpellScript);
- void FilterTargets(std::list<WorldObject*>& targets)
- {
- uint8 maxSize = 1;
- if (targets.size() > maxSize)
- Trinity::Containers::RandomResizeList(targets, maxSize);
- }
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ if (!sSpellMgr->GetSpellInfo(SPELL_BLINK_TELEPORT))
+ return false;
+ return true;
+ }
- void HandleDummyHitTarget(SpellEffIndex effIndex)
- {
- PreventHitDefaultEffect(effIndex);
- GetHitUnit()->CastSpell(GetCaster(), SPELL_BLINK_TELEPORT, true);
- }
+ void FilterTargets(std::list<WorldObject*>& 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
+ 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
{
- 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);
+ return new spell_talon_king_ikiss_blink_SpellScript();
}
- };
-
- SpellScript* GetSpellScript() const override
- {
- return new spell_talon_king_ikiss_blink_SpellScript();
- }
};
void AddSC_boss_talon_king_ikiss()
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