aboutsummaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
authorkaelima <kaelima@live.se>2011-09-07 09:35:30 +0200
committerkaelima <kaelima@live.se>2011-09-07 09:35:30 +0200
commit5e81be4fec837b8a6e7f5f79dbda27f16acdce8c (patch)
tree84c1afde7c874598df5ce6b47f5fd9abe9febf40 /src/server
parent784415bb8e4bd1c94548ac593a1287185662852e (diff)
Scripts/Ruby Sanctum: Remove unneeded spellscript for Baltharus.
Also let his clone cast enervating brand. Thanks Shauren.
Diffstat (limited to 'src/server')
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp79
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp1
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp10
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.h2
4 files changed, 31 insertions, 61 deletions
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp
index 3bbe7b125af..2558b03beb6 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp
@@ -116,6 +116,7 @@ class boss_baltharus_the_warborn : public CreatureScript
{
me->InterruptNonMeleeSpells(false);
_EnterCombat();
+ events.Reset();
events.SetPhase(PHASE_COMBAT);
events.ScheduleEvent(EVENT_CLEAVE, 11000, 0, PHASE_COMBAT);
events.ScheduleEvent(EVENT_ENERVATING_BRAND, 13000, 0, PHASE_COMBAT);
@@ -228,16 +229,18 @@ class npc_baltharus_the_warborn_clone : public CreatureScript
struct npc_baltharus_the_warborn_cloneAI : public ScriptedAI
{
- npc_baltharus_the_warborn_cloneAI(Creature* creature) : ScriptedAI(creature)
+ npc_baltharus_the_warborn_cloneAI(Creature* creature) : ScriptedAI(creature),
+ _instance(creature->GetInstanceScript())
{
- _instance = (InstanceScript*)creature->GetInstanceScript();
}
void EnterCombat(Unit* /*who*/)
{
DoZoneInCombat();
+ _events.Reset();
_events.ScheduleEvent(EVENT_CLEAVE, urand(5000, 10000));
_events.ScheduleEvent(EVENT_BLADE_TEMPEST, urand(18000, 25000));
+ _events.ScheduleEvent(EVENT_ENERVATING_BRAND, urand(10000, 15000));
}
void DamageTaken(Unit* /*attacker*/, uint32& damage)
@@ -280,6 +283,12 @@ class npc_baltharus_the_warborn_clone : public CreatureScript
DoCastVictim(SPELL_BLADE_TEMPEST);
_events.ScheduleEvent(EVENT_BLADE_TEMPEST, 24000);
break;
+ case EVENT_ENERVATING_BRAND:
+ for (uint8 i = 0; i < RAID_MODE<uint8>(4, 8, 8, 10); i++)
+ if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 45.0f, true))
+ DoCast(target, SPELL_ENERVATING_BRAND);
+ _events.ScheduleEvent(EVENT_ENERVATING_BRAND, 26000);
+ break;
default:
break;
}
@@ -299,59 +308,6 @@ class npc_baltharus_the_warborn_clone : public CreatureScript
}
};
-class spell_baltharus_enervating_brand : public SpellScriptLoader
-{
- public:
- spell_baltharus_enervating_brand() : SpellScriptLoader("spell_baltharus_enervating_brand") { }
-
- class spell_baltharus_enervating_brand_AuraScript : public AuraScript
- {
- PrepareAuraScript(spell_baltharus_enervating_brand_AuraScript);
-
- void HandleTriggerSpell(AuraEffect const* aurEff)
- {
- PreventDefaultAction();
- Unit* target = GetTarget();
- uint32 triggerSpellId = GetSpellInfo()->Effects[aurEff->GetEffIndex()].TriggerSpell;
- target->CastSpell(target, triggerSpellId, true);
-
- if (Unit* caster = GetCaster())
- if (target->GetDistance(caster) <= 12.0f)
- target->CastSpell(caster, SPELL_SIPHONED_MIGHT, true);
- }
-
- void Register()
- {
- OnEffectPeriodic += AuraEffectPeriodicFn(spell_baltharus_enervating_brand_AuraScript::HandleTriggerSpell, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL);
- }
- };
-
- AuraScript* GetAuraScript() const
- {
- return new spell_baltharus_enervating_brand_AuraScript();
- }
-};
-
-class EnervatingBrandSelector
-{
- public:
- explicit EnervatingBrandSelector(Unit* caster) : _caster(caster) {}
-
- bool operator()(Unit* unit)
- {
- if (_caster->GetDistance(unit) > 12.0f)
- return true;
-
- if (unit->GetTypeId() != TYPEID_PLAYER)
- return true;
-
- return false;
- }
-
- private:
- Unit* _caster;
-};
-
class spell_baltharus_enervating_brand_trigger : public SpellScriptLoader
{
public:
@@ -361,16 +317,18 @@ class spell_baltharus_enervating_brand_trigger : public SpellScriptLoader
{
PrepareSpellScript(spell_baltharus_enervating_brand_trigger_SpellScript);
- void FilterTargets(std::list<Unit*>& unitList)
+ void CheckDistance()
{
- unitList.remove_if(EnervatingBrandSelector(GetCaster()));
- unitList.push_back(GetCaster());
+ if (Unit* caster = GetOriginalCaster())
+ {
+ if (Unit* target = GetHitUnit())
+ target->CastSpell(caster, SPELL_SIPHONED_MIGHT, true);
+ }
}
void Register()
{
- OnUnitTargetSelect += SpellUnitTargetFn(spell_baltharus_enervating_brand_trigger_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ALLY);
- OnUnitTargetSelect += SpellUnitTargetFn(spell_baltharus_enervating_brand_trigger_SpellScript::FilterTargets, EFFECT_1, TARGET_UNIT_SRC_AREA_ALLY);
+ OnHit += SpellHitFn(spell_baltharus_enervating_brand_trigger_SpellScript::CheckDistance);
}
};
@@ -384,6 +342,5 @@ void AddSC_boss_baltharus_the_warborn()
{
new boss_baltharus_the_warborn();
new npc_baltharus_the_warborn_clone();
- new spell_baltharus_enervating_brand();
new spell_baltharus_enervating_brand_trigger();
}
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp
index cc1e4051bbc..d0c59627be7 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp
@@ -81,6 +81,7 @@ class boss_saviana_ragefire : public CreatureScript
{
_EnterCombat();
Talk(SAY_AGGRO);
+ events.Reset();
events.ScheduleEvent(EVENT_ENRAGE, 20000, EVENT_GROUP_LAND_PHASE);
events.ScheduleEvent(EVENT_FLAME_BREATH, 14000, EVENT_GROUP_LAND_PHASE);
events.ScheduleEvent(EVENT_FLIGHT, 60000);
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp
index ca6509060c3..c68058f1994 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp
@@ -190,6 +190,7 @@ class instance_ruby_sanctum : public InstanceMapScript
HandleGameObject(FlameWallsGUID, true);
if (Creature* zarithrian = instance->GetCreature(GeneralZarithrianGUID))
zarithrian->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
+ SaveToDB();
}
break;
}
@@ -200,15 +201,24 @@ class instance_ruby_sanctum : public InstanceMapScript
HandleGameObject(FlameWallsGUID, true);
if (Creature* zarithrian = instance->GetCreature(GeneralZarithrianGUID))
zarithrian->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
+ SaveToDB();
}
break;
}
case DATA_GENERAL_ZARITHRIAN:
if (GetBossState(DATA_SAVIANA_RAGEFIRE) == DONE && GetBossState(DATA_BALTHARUS_THE_WARBORN) == DONE)
HandleGameObject(FlameWallsGUID, state != IN_PROGRESS);
+ /*
if (state == DONE)
if (Creature* halionController = instance->SummonCreature(NPC_HALION_CONTROLLER, HalionControllerSpawnPos))
halionController->AI()->DoAction(ACTION_INTRO_HALION);
+ */
+ break;
+ case DATA_HALION:
+ /*
+ if (state != IN_PROGRESS)
+ HandleGameObject(FlameRingGUID, true);
+ */
break;
default:
break;
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.h b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.h
index 0acffc50272..52a4c67e544 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.h
+++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.h
@@ -81,11 +81,13 @@ enum CreaturesIds
NPC_ORB_ROTATION_FOCUS = 40091,
NPC_SHADOW_ORB_N = 40083,
NPC_SHADOW_ORB_S = 40100,
+ NPC_METEOR_STRIKE_MARK = 40029,
NPC_METEOR_STRIKE_NORTH = 40041,
NPC_METEOR_STRIKE_EAST = 40042,
NPC_METEOR_STRIKE_WEST = 40043,
NPC_METEOR_STRIKE_SOUTH = 40044,
NPC_METEOR_STRIKE_FLAME = 40055,
+ NPC_COMBUSTION = 40001,
// Xerestrasza
NPC_XERESTRASZA = 40429,