mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Scripts/ICC: Fixed some issues with Rotface Oozes (#23845)
This commit is contained in:
@@ -591,13 +591,15 @@ class spell_rotface_little_ooze_combine : public SpellScriptLoader
|
||||
|
||||
void HandleScript(SpellEffIndex /*effIndex*/)
|
||||
{
|
||||
if (!(GetHitCreature() && GetHitUnit()->IsAlive()))
|
||||
Creature* caster = GetCaster()->ToCreature();
|
||||
if (!(GetHitCreature() && GetHitUnit()->IsAlive()) || !caster)
|
||||
return;
|
||||
|
||||
GetCaster()->RemoveAurasDueToSpell(SPELL_LITTLE_OOZE_COMBINE);
|
||||
caster->RemoveAurasDueToSpell(SPELL_LITTLE_OOZE_COMBINE);
|
||||
GetHitCreature()->RemoveAurasDueToSpell(SPELL_LITTLE_OOZE_COMBINE);
|
||||
GetHitCreature()->CastSpell(GetCaster(), SPELL_OOZE_MERGE, true);
|
||||
GetHitCreature()->CastSpell(caster, SPELL_OOZE_MERGE, true);
|
||||
GetHitCreature()->DespawnOrUnsummon();
|
||||
caster->DespawnOrUnsummon();
|
||||
}
|
||||
|
||||
void Register() override
|
||||
@@ -623,23 +625,37 @@ class spell_rotface_large_ooze_combine : public SpellScriptLoader
|
||||
|
||||
void HandleScript(SpellEffIndex /*effIndex*/)
|
||||
{
|
||||
if (!(GetHitCreature() && GetHitCreature()->IsAlive()))
|
||||
Creature* caster = GetCaster()->ToCreature();
|
||||
Creature* target = GetHitCreature();
|
||||
if (!(target && target->IsAlive()) || !caster)
|
||||
return;
|
||||
|
||||
if (Aura* unstable = GetCaster()->GetAura(SPELL_UNSTABLE_OOZE))
|
||||
if (Aura* unstable = caster->GetAura(SPELL_UNSTABLE_OOZE))
|
||||
{
|
||||
if (Aura* targetAura = GetHitCreature()->GetAura(SPELL_UNSTABLE_OOZE))
|
||||
if (Aura* targetAura = target->GetAura(SPELL_UNSTABLE_OOZE))
|
||||
unstable->ModStackAmount(targetAura->GetStackAmount());
|
||||
else
|
||||
unstable->ModStackAmount(1);
|
||||
|
||||
// no idea why, but this does not trigger explosion on retail (only small+large do)
|
||||
}
|
||||
if (unstable->GetStackAmount() >= 5)
|
||||
{
|
||||
caster->RemoveAurasDueToSpell(SPELL_LARGE_OOZE_BUFF_COMBINE);
|
||||
caster->RemoveAurasDueToSpell(SPELL_LARGE_OOZE_COMBINE);
|
||||
if (InstanceScript* instance = caster->GetInstanceScript())
|
||||
{
|
||||
if (Creature* rotface = ObjectAccessor::GetCreature(*caster, instance->GetGuidData(DATA_ROTFACE)))
|
||||
{
|
||||
instance->SetData(DATA_OOZE_DANCE_ACHIEVEMENT, uint32(false));
|
||||
if (rotface->IsAlive())
|
||||
rotface->AI()->Talk(SAY_UNSTABLE_EXPLOSION);
|
||||
}
|
||||
}
|
||||
|
||||
// just for safety
|
||||
GetHitCreature()->RemoveAurasDueToSpell(SPELL_LARGE_OOZE_BUFF_COMBINE);
|
||||
GetHitCreature()->RemoveAurasDueToSpell(SPELL_LARGE_OOZE_COMBINE);
|
||||
GetHitCreature()->DespawnOrUnsummon();
|
||||
caster->AI()->DoAction(EVENT_STICKY_OOZE);
|
||||
caster->CastSpell(caster, SPELL_UNSTABLE_OOZE_EXPLOSION, CastSpellExtraArgs().SetOriginalCaster(caster->GetGUID()));
|
||||
}
|
||||
}
|
||||
target->DespawnOrUnsummon();
|
||||
}
|
||||
|
||||
void Register() override
|
||||
|
||||
Reference in New Issue
Block a user