Scripts/Icecrown Citadel
* Lord Marrowgar's Coldflame will now spread slower * Lord Marrowgar will no longer attempt to target tanks with Bone Spike Graveyard * Valithria Dreamwalker will now properly cast Dreamwalker's Rage and kill enemy creatures * Blood-Queen Lana'Thel will now warn the player who is under effects of Frenzied Bloodthirst
This commit is contained in:
@@ -0,0 +1,12 @@
|
|||||||
|
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry`=71189;
|
||||||
|
INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
|
||||||
|
(13,0,71189,0,18,1,37868,0,0, '', 'Remorseless Winter - target Risen Archmage'),
|
||||||
|
(13,0,71189,0,18,1,36791,0,0, '', 'Remorseless Winter - target Blazing Skeleton'),
|
||||||
|
(13,0,71189,0,18,1,37863,0,0, '', 'Remorseless Winter - target Suppresser'),
|
||||||
|
(13,0,71189,0,18,1,37934,0,0, '', 'Remorseless Winter - target Blistering Zombie'),
|
||||||
|
(13,0,71189,0,18,1,37886,0,0, '', 'Remorseless Winter - target Gluttonous Abomination'),
|
||||||
|
(13,0,71189,0,18,1,38186,0,0, '', 'Remorseless Winter - target Dream Portal (Pre-effect)'),
|
||||||
|
(13,0,71189,0,18,1,37945,0,0, '', 'Remorseless Winter - target Dream Portal'),
|
||||||
|
(13,0,71189,0,18,1,38429,0,0, '', 'Remorseless Winter - target Nightmare Portal (Pre-effect)'),
|
||||||
|
(13,0,71189,0,18,1,38430,0,0, '', 'Remorseless Winter - target Nightmare Portal'),
|
||||||
|
(13,0,71189,0,18,1,37907,0,0, '', 'Remorseless Winter - target Rot Worm');
|
||||||
@@ -587,6 +587,7 @@ class spell_blood_queen_frenzied_bloodthirst : public SpellScriptLoader
|
|||||||
|
|
||||||
void Register()
|
void Register()
|
||||||
{
|
{
|
||||||
|
OnEffectApply += AuraEffectApplyFn(spell_blood_queen_frenzied_bloodthirst_AuraScript::OnApply, EFFECT_0, SPELL_AURA_OVERRIDE_SPELLS, AURA_EFFECT_HANDLE_REAL);
|
||||||
AfterEffectRemove += AuraEffectRemoveFn(spell_blood_queen_frenzied_bloodthirst_AuraScript::OnRemove, EFFECT_0, SPELL_AURA_OVERRIDE_SPELLS, AURA_EFFECT_HANDLE_REAL);
|
AfterEffectRemove += AuraEffectRemoveFn(spell_blood_queen_frenzied_bloodthirst_AuraScript::OnRemove, EFFECT_0, SPELL_AURA_OVERRIDE_SPELLS, AURA_EFFECT_HANDLE_REAL);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1138,9 +1138,9 @@ class spell_deathbringer_blood_nova : public SpellScriptLoader
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void HandleScript(SpellEffIndex /*effIndex*/)
|
void HandleScript(SpellEffIndex effIndex)
|
||||||
{
|
{
|
||||||
PreventHitDefaultEffect(EFFECT_1); // make this the default handler
|
PreventHitDefaultEffect(effIndex); // make this the default handler
|
||||||
if (GetCaster()->GetPower(POWER_ENERGY) != GetCaster()->GetMaxPower(POWER_ENERGY))
|
if (GetCaster()->GetPower(POWER_ENERGY) != GetCaster()->GetMaxPower(POWER_ENERGY))
|
||||||
GetHitUnit()->CastCustomSpell(SPELL_BLOOD_LINK_DUMMY, SPELLVALUE_BASE_POINT0, 2, GetCaster(), true);
|
GetHitUnit()->CastCustomSpell(SPELL_BLOOD_LINK_DUMMY, SPELLVALUE_BASE_POINT0, 2, GetCaster(), true);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -221,7 +221,7 @@ class boss_lord_marrowgar : public CreatureScript
|
|||||||
if (me->HasAura(SPELL_BONE_STORM))
|
if (me->HasAura(SPELL_BONE_STORM))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// After 10 seconds since encounter start Bone Slice replaces melee attacks
|
// 10 seconds since encounter start Bone Slice replaces melee attacks
|
||||||
if (_boneSlice && !me->GetCurrentSpell(CURRENT_MELEE_SPELL))
|
if (_boneSlice && !me->GetCurrentSpell(CURRENT_MELEE_SPELL))
|
||||||
DoCastVictim(SPELL_BONE_SLICE);
|
DoCastVictim(SPELL_BONE_SLICE);
|
||||||
|
|
||||||
@@ -290,7 +290,7 @@ class npc_coldflame : public CreatureScript
|
|||||||
}
|
}
|
||||||
|
|
||||||
me->SetOrientation(me->GetAngle(target));
|
me->SetOrientation(me->GetAngle(target));
|
||||||
owner->GetNearPosition(pos, owner->GetObjectSize()/2.0f, 0.0f);
|
owner->GetNearPosition(pos, owner->GetObjectSize() / 2.0f, 0.0f);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -305,7 +305,7 @@ class npc_coldflame : public CreatureScript
|
|||||||
}
|
}
|
||||||
|
|
||||||
me->NearTeleportTo(pos.GetPositionX(), pos.GetPositionY(), me->GetPositionZ(), me->GetOrientation());
|
me->NearTeleportTo(pos.GetPositionX(), pos.GetPositionY(), me->GetPositionZ(), me->GetOrientation());
|
||||||
_events.ScheduleEvent(EVENT_COLDFLAME_TRIGGER, 200);
|
_events.ScheduleEvent(EVENT_COLDFLAME_TRIGGER, 450);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateAI(uint32 const diff)
|
void UpdateAI(uint32 const diff)
|
||||||
@@ -318,7 +318,7 @@ class npc_coldflame : public CreatureScript
|
|||||||
me->GetNearPosition(newPos, 5.5f, 0.0f);
|
me->GetNearPosition(newPos, 5.5f, 0.0f);
|
||||||
me->NearTeleportTo(newPos.GetPositionX(), newPos.GetPositionY(), me->GetPositionZ(), me->GetOrientation());
|
me->NearTeleportTo(newPos.GetPositionX(), newPos.GetPositionY(), me->GetPositionZ(), me->GetOrientation());
|
||||||
DoCast(SPELL_COLDFLAME_SUMMON);
|
DoCast(SPELL_COLDFLAME_SUMMON);
|
||||||
_events.ScheduleEvent(EVENT_COLDFLAME_TRIGGER, 200);
|
_events.ScheduleEvent(EVENT_COLDFLAME_TRIGGER, 450);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -460,33 +460,38 @@ class spell_marrowgar_bone_spike_graveyard : public SpellScriptLoader
|
|||||||
{
|
{
|
||||||
PrepareSpellScript(spell_marrowgar_bone_spike_graveyard_SpellScript);
|
PrepareSpellScript(spell_marrowgar_bone_spike_graveyard_SpellScript);
|
||||||
|
|
||||||
|
SpellCastResult CheckCast()
|
||||||
|
{
|
||||||
|
return GetCaster()->GetAI()->SelectTarget(SELECT_TARGET_TOPAGGRO, 1, 0.0f, true, -SPELL_IMPALED) ? SPELL_CAST_OK : SPELL_FAILED_NO_VALID_TARGETS;
|
||||||
|
}
|
||||||
|
|
||||||
void HandleSpikes(SpellEffIndex effIndex)
|
void HandleSpikes(SpellEffIndex effIndex)
|
||||||
{
|
{
|
||||||
PreventHitDefaultEffect(effIndex);
|
PreventHitDefaultEffect(effIndex);
|
||||||
if (Creature* marrowgar = GetCaster()->ToCreature())
|
if (Creature* marrowgar = GetCaster()->ToCreature())
|
||||||
{
|
{
|
||||||
|
bool didHit = false;
|
||||||
CreatureAI* marrowgarAI = marrowgar->AI();
|
CreatureAI* marrowgarAI = marrowgar->AI();
|
||||||
uint8 boneSpikeCount = uint8(GetCaster()->GetMap()->GetSpawnMode() & 1 ? 3 : 1);
|
uint8 boneSpikeCount = uint8(GetCaster()->GetMap()->GetSpawnMode() & 1 ? 3 : 1);
|
||||||
for (uint8 i = 0; i < boneSpikeCount; ++i)
|
for (uint8 i = 0; i < boneSpikeCount; ++i)
|
||||||
{
|
{
|
||||||
// select any unit but not the tank
|
// select any unit but not the tank
|
||||||
Unit* target = marrowgarAI->SelectTarget(SELECT_TARGET_RANDOM, 1, 150.0f, true, -SPELL_IMPALED);
|
Unit* target = marrowgarAI->SelectTarget(SELECT_TARGET_RANDOM, 1, 150.0f, true, -SPELL_IMPALED);
|
||||||
// try the tank only in first iteration
|
|
||||||
if (!target && !i)
|
|
||||||
target = marrowgarAI->SelectTarget(SELECT_TARGET_RANDOM, 0, 150.0f, true, -SPELL_IMPALED);
|
|
||||||
|
|
||||||
if (!target)
|
if (!target)
|
||||||
return;
|
break;
|
||||||
|
|
||||||
|
didHit = true;
|
||||||
target->CastCustomSpell(boneSpikeSummonId[i], SPELLVALUE_BASE_POINT0, 0, target, true);
|
target->CastCustomSpell(boneSpikeSummonId[i], SPELLVALUE_BASE_POINT0, 0, target, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
marrowgarAI->Talk(SAY_BONESPIKE);
|
if (didHit)
|
||||||
|
marrowgarAI->Talk(SAY_BONESPIKE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Register()
|
void Register()
|
||||||
{
|
{
|
||||||
|
OnCheckCast += SpellCheckCastFn(spell_marrowgar_bone_spike_graveyard_SpellScript::CheckCast);
|
||||||
OnEffect += SpellEffectFn(spell_marrowgar_bone_spike_graveyard_SpellScript::HandleSpikes, EFFECT_1, SPELL_EFFECT_APPLY_AURA);
|
OnEffect += SpellEffectFn(spell_marrowgar_bone_spike_graveyard_SpellScript::HandleSpikes, EFFECT_1, SPELL_EFFECT_APPLY_AURA);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -345,7 +345,9 @@ class boss_valithria_dreamwalker : public CreatureScript
|
|||||||
_instance->SendEncounterUnit(ENCOUNTER_FRAME_REMOVE, me);
|
_instance->SendEncounterUnit(ENCOUNTER_FRAME_REMOVE, me);
|
||||||
me->RemoveAurasDueToSpell(SPELL_CORRUPTION_VALITHRIA);
|
me->RemoveAurasDueToSpell(SPELL_CORRUPTION_VALITHRIA);
|
||||||
DoCast(me, SPELL_ACHIEVEMENT_CHECK);
|
DoCast(me, SPELL_ACHIEVEMENT_CHECK);
|
||||||
DoCast(me, SPELL_DREAMWALKERS_RAGE);
|
float x, y, z;
|
||||||
|
me->GetPosition(x, y, z);
|
||||||
|
me->CastSpell(x, y, z, SPELL_DREAMWALKERS_RAGE, false);
|
||||||
_events.ScheduleEvent(EVENT_DREAM_SLIP, 3500);
|
_events.ScheduleEvent(EVENT_DREAM_SLIP, 3500);
|
||||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_VALITHRIA_LICH_KING)))
|
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_VALITHRIA_LICH_KING)))
|
||||||
lichKing->AI()->EnterEvadeMode();
|
lichKing->AI()->EnterEvadeMode();
|
||||||
|
|||||||
Reference in New Issue
Block a user