diff options
author | kaelima <kaelima@live.se> | 2011-09-07 09:35:30 +0200 |
---|---|---|
committer | kaelima <kaelima@live.se> | 2011-09-07 09:35:30 +0200 |
commit | 5e81be4fec837b8a6e7f5f79dbda27f16acdce8c (patch) | |
tree | 84c1afde7c874598df5ce6b47f5fd9abe9febf40 /src/server | |
parent | 784415bb8e4bd1c94548ac593a1287185662852e (diff) |
Scripts/Ruby Sanctum: Remove unneeded spellscript for Baltharus.
Also let his clone cast enervating brand.
Thanks Shauren.
Diffstat (limited to 'src/server')
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, |