Merge branch 'master' into Playerbot
This commit is contained in:
@@ -259,12 +259,12 @@ struct boss_kiljaeden : public BossAI
|
||||
ScheduleHealthCheckEvent(85, [&]{
|
||||
_phase = PHASE_DARKNESS;
|
||||
if (Creature* kalec = instance->GetCreature(DATA_KALECGOS_KJ))
|
||||
kalec->AI()->Talk(SAY_KALECGOS_AWAKEN, 16s);
|
||||
kalec->AI()->Talk(SAY_KALECGOS_AWAKEN, 21s);
|
||||
|
||||
if (Creature* anveena = instance->GetCreature(DATA_ANVEENA))
|
||||
anveena->AI()->Talk(SAY_ANVEENA_IMPRISONED, 22s);
|
||||
anveena->AI()->Talk(SAY_ANVEENA_IMPRISONED, 26s);
|
||||
|
||||
Talk(SAY_KJ_PHASE3, 28s);
|
||||
Talk(SAY_KJ_PHASE3, 32s);
|
||||
|
||||
scheduler.CancelAll();
|
||||
|
||||
@@ -274,7 +274,7 @@ struct boss_kiljaeden : public BossAI
|
||||
if (Creature* kalec = instance->GetCreature(DATA_KALECGOS_KJ))
|
||||
kalec->AI()->Talk(SAY_KALECGOS_READY1);
|
||||
EmpowerOrb(false);
|
||||
}, 35s);
|
||||
}, 38s);
|
||||
|
||||
me->m_Events.AddEventAtOffset([&] {
|
||||
Talk(SAY_KJ_REFLECTION);
|
||||
@@ -286,11 +286,11 @@ struct boss_kiljaeden : public BossAI
|
||||
DoCastSelf(SPELL_SHADOW_SPIKE);
|
||||
});
|
||||
|
||||
ScheduleTimedEvent(3s, [&] {
|
||||
ScheduleTimedEvent(31s, [&] {
|
||||
DoCastSelf(SPELL_FLAME_DART);
|
||||
}, 10s);
|
||||
}, 20s);
|
||||
|
||||
ScheduleTimedEvent(16s, [&] {
|
||||
ScheduleTimedEvent(55s, [&] {
|
||||
Talk(EMOTE_KJ_DARKNESS);
|
||||
DoCastAOE(SPELL_DARKNESS_OF_A_THOUSAND_SOULS);
|
||||
}, 45s);
|
||||
@@ -299,12 +299,12 @@ struct boss_kiljaeden : public BossAI
|
||||
ScheduleHealthCheckEvent(55, [&] {
|
||||
_phase = PHASE_ARMAGEDDON;
|
||||
if (Creature* kalec = instance->GetCreature(DATA_KALECGOS_KJ))
|
||||
kalec->AI()->Talk(SAY_KALECGOS_LETGO, 16s);
|
||||
kalec->AI()->Talk(SAY_KALECGOS_LETGO, 18s);
|
||||
|
||||
if (Creature* anveena = instance->GetCreature(DATA_ANVEENA))
|
||||
anveena->AI()->Talk(SAY_ANVEENA_LOST, 22s);
|
||||
anveena->AI()->Talk(SAY_ANVEENA_LOST, 25s);
|
||||
|
||||
Talk(SAY_KJ_PHASE4, 28s);
|
||||
Talk(SAY_KJ_PHASE4, 32s);
|
||||
|
||||
scheduler.CancelAll();
|
||||
|
||||
@@ -312,7 +312,7 @@ struct boss_kiljaeden : public BossAI
|
||||
if (Creature* kalec = instance->GetCreature(DATA_KALECGOS_KJ))
|
||||
kalec->AI()->Talk(SAY_KALECGOS_READY2);
|
||||
EmpowerOrb(false);
|
||||
}, 35s);
|
||||
}, 38s);
|
||||
|
||||
scheduler.Schedule(1s, [this](TaskContext)
|
||||
{
|
||||
@@ -326,7 +326,11 @@ struct boss_kiljaeden : public BossAI
|
||||
ScheduleBasicAbilities();
|
||||
});
|
||||
|
||||
ScheduleTimedEvent(15s, [&] {
|
||||
ScheduleTimedEvent(28s, [&] {
|
||||
DoCastSelf(SPELL_FLAME_DART);
|
||||
}, 20s);
|
||||
|
||||
ScheduleTimedEvent(64s, [&] {
|
||||
me->RemoveAurasDueToSpell(SPELL_ARMAGEDDON_PERIODIC);
|
||||
Talk(EMOTE_KJ_DARKNESS);
|
||||
DoCastAOE(SPELL_DARKNESS_OF_A_THOUSAND_SOULS);
|
||||
@@ -362,14 +366,14 @@ struct boss_kiljaeden : public BossAI
|
||||
|
||||
if (Creature* kalec = instance->GetCreature(DATA_KALECGOS_KJ))
|
||||
{
|
||||
kalec->AI()->Talk(SAY_KALECGOS_FOCUS, 8s);
|
||||
kalec->AI()->Talk(SAY_KALECGOS_FATE, 20s + 200ms);
|
||||
kalec->AI()->Talk(SAY_KALECGOS_FOCUS, 9s);
|
||||
kalec->AI()->Talk(SAY_KALECGOS_FATE, 22s + 200ms);
|
||||
}
|
||||
|
||||
if (Creature* anveena = instance->GetCreature(DATA_ANVEENA))
|
||||
{
|
||||
anveena->AI()->Talk(SAY_ANVEENA_KALEC, 18s);
|
||||
anveena->AI()->Talk(SAY_ANVEENA_GOODBYE, 25s);
|
||||
anveena->AI()->Talk(SAY_ANVEENA_KALEC, 20s);
|
||||
anveena->AI()->Talk(SAY_ANVEENA_GOODBYE, 29s);
|
||||
}
|
||||
|
||||
me->m_Events.AddEventAtOffset([&] {
|
||||
@@ -378,7 +382,7 @@ struct boss_kiljaeden : public BossAI
|
||||
anveena->RemoveAllAuras();
|
||||
anveena->DespawnOrUnsummon(3500);
|
||||
}
|
||||
}, 28s);
|
||||
}, 34s);
|
||||
|
||||
me->m_Events.AddEventAtOffset([&] {
|
||||
if (Creature* anveena = instance->GetCreature(DATA_ANVEENA))
|
||||
@@ -394,7 +398,11 @@ struct boss_kiljaeden : public BossAI
|
||||
|
||||
ScheduleBasicAbilities();
|
||||
|
||||
ScheduleTimedEvent(25s, [&] {
|
||||
ScheduleTimedEvent(16s, [&] {
|
||||
DoCastSelf(SPELL_FLAME_DART);
|
||||
}, 20s);
|
||||
|
||||
ScheduleTimedEvent(15s, [&] {
|
||||
me->RemoveAurasDueToSpell(SPELL_ARMAGEDDON_PERIODIC);
|
||||
Talk(EMOTE_KJ_DARKNESS);
|
||||
DoCastAOE(SPELL_DARKNESS_OF_A_THOUSAND_SOULS);
|
||||
@@ -411,13 +419,13 @@ struct boss_kiljaeden : public BossAI
|
||||
}, 7s);
|
||||
}
|
||||
Talk(SAY_KJ_PHASE5);
|
||||
}, 30s);
|
||||
}, 36s);
|
||||
|
||||
me->m_Events.AddEventAtOffset([&] {
|
||||
if (Creature* kalec = instance->GetCreature(DATA_KALECGOS_KJ))
|
||||
kalec->AI()->Talk(SAY_KALECGOS_READY_ALL);
|
||||
EmpowerOrb(true);
|
||||
}, 61s);
|
||||
}, 48s);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
@@ -336,6 +336,22 @@ private:
|
||||
TaskScheduler scheduler;
|
||||
};
|
||||
|
||||
class spell_spell_fury_aura : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_spell_fury_aura);
|
||||
|
||||
void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
|
||||
{
|
||||
if (GetUnitOwner()->ToPlayer())
|
||||
ModStackAmount(5);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectApply += AuraEffectApplyFn(spell_spell_fury_aura::OnApply, EFFECT_0, SPELL_AURA_MOD_CASTING_SPEED_NOT_STACK, AURA_EFFECT_HANDLE_REAL);
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_instance_sunwell_plateau()
|
||||
{
|
||||
new instance_sunwell_plateau();
|
||||
@@ -345,4 +361,5 @@ void AddSC_instance_sunwell_plateau()
|
||||
RegisterSpellScriptWithArgs(spell_sunwell_teleport, "spell_teleport_to_apex_point", SPELL_TELEPORT_TO_APEX_POINT);
|
||||
RegisterSpellScriptWithArgs(spell_sunwell_teleport, "spell_teleport_to_witchs_sanctum", SPELL_TELEPORT_TO_WITCHS_SANCTUM);
|
||||
RegisterSpellScriptWithArgs(spell_sunwell_teleport, "spell_teleport_to_sunwell_plateau", SPELL_TELEPORT_TO_SUNWELL_PLATEAU);
|
||||
RegisterSpellScript(spell_spell_fury_aura);
|
||||
}
|
||||
|
||||
@@ -473,7 +473,7 @@ public:
|
||||
{
|
||||
if (spell->Id == SPELL_KODO_KOMBO_ITEM)
|
||||
{
|
||||
if (!caster->HasAnyAuras(SPELL_KODO_KOMBO_PLAYER_BUFF, SPELL_KODO_KOMBO_DESPAWN_BUFF)
|
||||
if (!(caster->HasAura(SPELL_KODO_KOMBO_PLAYER_BUFF) || me->HasAura(SPELL_KODO_KOMBO_DESPAWN_BUFF))
|
||||
&& (me->GetEntry() == NPC_AGED_KODO || me->GetEntry() == NPC_DYING_KODO || me->GetEntry() == NPC_ANCIENT_KODO))
|
||||
{
|
||||
me->UpdateEntry(NPC_TAMED_KODO, nullptr, false);
|
||||
@@ -494,7 +494,7 @@ public:
|
||||
|
||||
bool OnGossipHello(Player* player, Creature* creature) override
|
||||
{
|
||||
if (player->HasAllAuras(SPELL_KODO_KOMBO_PLAYER_BUFF, SPELL_KODO_KOMBO_DESPAWN_BUFF))
|
||||
if (player->HasAura(SPELL_KODO_KOMBO_PLAYER_BUFF) && creature->HasAura(SPELL_KODO_KOMBO_DESPAWN_BUFF))
|
||||
{
|
||||
player->TalkedToCreature(creature->GetEntry(), ObjectGuid::Empty);
|
||||
player->RemoveAurasDueToSpell(SPELL_KODO_KOMBO_PLAYER_BUFF);
|
||||
|
||||
@@ -1150,6 +1150,36 @@ class spell_pal_seal_of_vengeance : public SpellScript
|
||||
}
|
||||
};
|
||||
|
||||
// 1022 - Hand of Protection
|
||||
class spell_pal_hand_of_protection : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_pal_hand_of_protection);
|
||||
|
||||
SpellCastResult CheckCast()
|
||||
{
|
||||
Unit* caster = GetCaster();
|
||||
|
||||
if (!caster->GetTarget() || caster->GetTarget() == caster->GetGUID())
|
||||
return SPELL_CAST_OK;
|
||||
|
||||
if (caster->HasStunAura())
|
||||
return SPELL_FAILED_STUNNED;
|
||||
|
||||
if (caster->HasConfuseAura())
|
||||
return SPELL_FAILED_CONFUSED;
|
||||
|
||||
if (caster->GetUnitFlags() & UNIT_FLAG_FLEEING)
|
||||
return SPELL_FAILED_FLEEING;
|
||||
|
||||
return SPELL_CAST_OK;
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnCheckCast += SpellCheckCastFn(spell_pal_hand_of_protection::CheckCast);
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_paladin_spell_scripts()
|
||||
{
|
||||
RegisterSpellAndAuraScriptPair(spell_pal_seal_of_command, spell_pal_seal_of_command_aura);
|
||||
@@ -1178,4 +1208,5 @@ void AddSC_paladin_spell_scripts()
|
||||
RegisterSpellScript(spell_pal_righteous_defense);
|
||||
RegisterSpellScript(spell_pal_seal_of_righteousness);
|
||||
RegisterSpellScript(spell_pal_seal_of_vengeance);
|
||||
RegisterSpellScript(spell_pal_hand_of_protection);
|
||||
}
|
||||
|
||||
@@ -458,7 +458,8 @@ public:
|
||||
####*/
|
||||
enum L70ETCMusic
|
||||
{
|
||||
MUSIC_L70_ETC_MUSIC = 11803
|
||||
MUSIC_L70_ETC_MUSIC = 11803,
|
||||
MUSIC_L70_ETC_MUSIC_LOUD = 12868
|
||||
};
|
||||
|
||||
enum L70ETCMusicEvents
|
||||
@@ -486,7 +487,10 @@ public:
|
||||
switch (eventId)
|
||||
{
|
||||
case EVENT_ETC_START_MUSIC:
|
||||
me->PlayDirectMusic(MUSIC_L70_ETC_MUSIC);
|
||||
if (me->GetMapId() == MAP_BLACKROCK_DEPTHS)
|
||||
me->PlayDirectMusic(MUSIC_L70_ETC_MUSIC_LOUD);
|
||||
else
|
||||
me->PlayDirectMusic(MUSIC_L70_ETC_MUSIC);
|
||||
_events.ScheduleEvent(EVENT_ETC_START_MUSIC, 1600); // Every 1.6 seconds SMSG_PLAY_MUSIC packet (PlayDirectMusic) is pushed to the client (sniffed value)
|
||||
break;
|
||||
default:
|
||||
|
||||
Reference in New Issue
Block a user