mirror of
https://github.com/liyunfan1223/azerothcore-wotlk.git
synced 2026-08-08 07:48:02 +00:00
fix(Scripts/ObsidianSanctum): Lava Strike (#26864)
This commit is contained in:
@@ -0,0 +1,2 @@
|
|||||||
|
DELETE FROM `spell_script_names` WHERE `spell_id` = 57572 AND `ScriptName` = 'spell_sartharion_lava_strike';
|
||||||
|
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES (57572, 'spell_sartharion_lava_strike');
|
||||||
@@ -1778,18 +1778,6 @@ void SpellMgr::LoadSpellInfoCorrections()
|
|||||||
spellInfo->Effects[EFFECT_0].TargetB = SpellImplicitTargetInfo(TARGET_UNIT_SRC_AREA_ALLY);
|
spellInfo->Effects[EFFECT_0].TargetB = SpellImplicitTargetInfo(TARGET_UNIT_SRC_AREA_ALLY);
|
||||||
});
|
});
|
||||||
|
|
||||||
// Lava Strike damage
|
|
||||||
ApplySpellFix({ 57697 }, [](SpellInfo* spellInfo)
|
|
||||||
{
|
|
||||||
spellInfo->Effects[EFFECT_0].TargetA = SpellImplicitTargetInfo(TARGET_DEST_DEST);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Lava Strike trigger
|
|
||||||
ApplySpellFix({ 57578 }, [](SpellInfo* spellInfo)
|
|
||||||
{
|
|
||||||
spellInfo->MaxAffectedTargets = 1;
|
|
||||||
});
|
|
||||||
|
|
||||||
// Gift of Twilight Shadow/Fire
|
// Gift of Twilight Shadow/Fire
|
||||||
ApplySpellFix({ 57835, 58766 }, [](SpellInfo* spellInfo)
|
ApplySpellFix({ 57835, 58766 }, [](SpellInfo* spellInfo)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -84,6 +84,7 @@ enum Spells
|
|||||||
SPELL_SARTHARION_FLAME_BREATH = 56908,
|
SPELL_SARTHARION_FLAME_BREATH = 56908,
|
||||||
SPELL_SARTHARION_TAIL_LASH = 56910,
|
SPELL_SARTHARION_TAIL_LASH = 56910,
|
||||||
SPELL_CYCLONE_AURA_PERIODIC = 57598,
|
SPELL_CYCLONE_AURA_PERIODIC = 57598,
|
||||||
|
SPELL_LAVA_STRIKE = 57571,
|
||||||
SPELL_LAVA_STRIKE_DUMMY = 57578,
|
SPELL_LAVA_STRIKE_DUMMY = 57578,
|
||||||
SPELL_LAVA_STRIKE_DUMMY_TRIGGER = 57697,
|
SPELL_LAVA_STRIKE_DUMMY_TRIGGER = 57697,
|
||||||
SPELL_LAVA_STRIKE_SUMMON = 57572,
|
SPELL_LAVA_STRIKE_SUMMON = 57572,
|
||||||
@@ -213,11 +214,11 @@ const Position TenebronEggsPos[2][MAX_TENEBORN_EGGS_SUMMONS] =
|
|||||||
|
|
||||||
const Position CycloneSummonPos[MAX_CYCLONE_COUNT] =
|
const Position CycloneSummonPos[MAX_CYCLONE_COUNT] =
|
||||||
{
|
{
|
||||||
{ 3235.28f, 591.180f, 57.0833f, 0.59037f },
|
{ 3238.55f, 589.14f, 57.0f, 0.59037f },
|
||||||
{ 3200.97f, 480.929f, 57.0833f, 5.86197f },
|
{ 3209.70f, 475.85f, 57.0f, 5.86197f },
|
||||||
{ 3281.57f, 507.984f, 57.0833f, 5.54346f },
|
{ 3282.10f, 504.02f, 57.0f, 5.54346f },
|
||||||
{ 3210.11f, 531.957f, 57.0833f, 3.76777f },
|
{ 3209.42f, 532.55f, 57.0f, 3.76777f },
|
||||||
{ 3286.42f, 585.010f, 57.0833f, 4.10307f },
|
{ 3283.50f, 581.75f, 57.0f, 4.10307f },
|
||||||
};
|
};
|
||||||
|
|
||||||
const Position AreaTriggerSummonPos[MAX_AREA_TRIGGER_COUNT] =
|
const Position AreaTriggerSummonPos[MAX_AREA_TRIGGER_COUNT] =
|
||||||
@@ -1380,20 +1381,23 @@ class spell_sartharion_lava_strike : public SpellScript
|
|||||||
bool Load() override
|
bool Load() override
|
||||||
{
|
{
|
||||||
_spawned = false;
|
_spawned = false;
|
||||||
|
_dummyFired = false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void HandleDummy(SpellEffIndex /*effIndex*/)
|
void HandleDummy(SpellEffIndex /*effIndex*/)
|
||||||
{
|
{
|
||||||
if (!GetCaster() || !GetHitUnit())
|
if (!GetCaster() || !GetHitUnit() || _dummyFired)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
GetCaster()->CastSpell(GetHitUnit()->GetPositionX(), GetHitUnit()->GetPositionY(), GetHitUnit()->GetPositionZ(), SPELL_LAVA_STRIKE_DUMMY_TRIGGER, true);
|
_dummyFired = true;
|
||||||
|
|
||||||
|
GetCaster()->CastSpell(GetHitUnit(), SPELL_LAVA_STRIKE, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void HandleSchoolDamage(SpellEffIndex /*effIndex*/)
|
void HandleSchoolDamage(SpellEffIndex /*effIndex*/)
|
||||||
{
|
{
|
||||||
if (!GetCaster() || !GetHitUnit() || _spawned)
|
if (!GetCaster() || !GetHitUnit() || !GetHitUnit()->IsPlayer() || _spawned)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (InstanceScript* instance = GetCaster()->GetInstanceScript())
|
if (InstanceScript* instance = GetCaster()->GetInstanceScript())
|
||||||
@@ -1402,21 +1406,31 @@ class spell_sartharion_lava_strike : public SpellScript
|
|||||||
{
|
{
|
||||||
sarth->AI()->SetData(DATA_VOLCANO_BLOWS, GetHitUnit()->GetGUID().GetCounter());
|
sarth->AI()->SetData(DATA_VOLCANO_BLOWS, GetHitUnit()->GetGUID().GetCounter());
|
||||||
sarth->CastSpell(GetHitUnit(), SPELL_LAVA_STRIKE_SUMMON, true);
|
sarth->CastSpell(GetHitUnit(), SPELL_LAVA_STRIKE_SUMMON, true);
|
||||||
_spawned = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_spawned = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void HandleSummon(SpellEffIndex effIndex)
|
||||||
|
{
|
||||||
|
if (GetCaster()->GetEntry() != NPC_SARTHARION)
|
||||||
|
PreventHitEffect(effIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Register() override
|
void Register() override
|
||||||
{
|
{
|
||||||
if (m_scriptSpellId == SPELL_LAVA_STRIKE_DUMMY)
|
if (m_scriptSpellId == SPELL_LAVA_STRIKE_DUMMY)
|
||||||
OnEffectHitTarget += SpellEffectFn(spell_sartharion_lava_strike::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
|
OnEffectHitTarget += SpellEffectFn(spell_sartharion_lava_strike::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
|
||||||
|
else if (m_scriptSpellId == SPELL_LAVA_STRIKE_SUMMON)
|
||||||
|
OnEffectHit += SpellEffectFn(spell_sartharion_lava_strike::HandleSummon, EFFECT_0, SPELL_EFFECT_SUMMON);
|
||||||
else
|
else
|
||||||
OnEffectHitTarget += SpellEffectFn(spell_sartharion_lava_strike::HandleSchoolDamage, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE);
|
OnEffectHitTarget += SpellEffectFn(spell_sartharion_lava_strike::HandleSchoolDamage, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool _spawned{false};
|
bool _spawned{false};
|
||||||
|
bool _dummyFired{false};
|
||||||
};
|
};
|
||||||
|
|
||||||
// 57491 - Flame Tsunami
|
// 57491 - Flame Tsunami
|
||||||
|
|||||||
Reference in New Issue
Block a user