diff options
-rw-r--r-- | sql/updates/world/master/2021_06_19_01_world_2018_01_28_03_world.sql | 7 | ||||
-rw-r--r-- | src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp | 66 |
2 files changed, 54 insertions, 19 deletions
diff --git a/sql/updates/world/master/2021_06_19_01_world_2018_01_28_03_world.sql b/sql/updates/world/master/2021_06_19_01_world_2018_01_28_03_world.sql new file mode 100644 index 00000000000..a157bb23aa8 --- /dev/null +++ b/sql/updates/world/master/2021_06_19_01_world_2018_01_28_03_world.sql @@ -0,0 +1,7 @@ +DELETE FROM `creature_text` WHERE `CreatureID`=36627 AND `GroupID`=4; +DELETE FROM `creature_text` WHERE `CreatureID`=36899; +INSERT INTO `creature_text` (`CreatureID`,`GroupID`,`ID`,`Text`,`Type`,`Language`,`Probability`,`Emote`,`Duration`,`Sound`,`BroadcastTextId`,`TextRange`,`comment`) VALUES +(36899,0,0,'%s grows more unstable!',16,0,0,0,0,0,36950,0,'Big Ooze - EMOTE_UNSTABLE_2'), +(36899,1,0,'%s is growing volatile!',16,0,0,0,0,0,36952,0,'Big Ooze - EMOTE_UNSTABLE_3'), +(36899,2,0,'%s can barely maintain its form!',16,0,0,0,0,0,36956,0,'Big Ooze - EMOTE_UNSTABLE_4'), +(36899,3,0,'|TInterface\\Icons\\spell_shadow_unstableaffliction_2.blp:16|t%s begins to cast |cFFFF0000Unstable Ooze Explosion!|r',41,0,0,0,0,0,37064,0,'Big Ooze - EMOTE_UNSTABLE_EXPLOSION'); diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp index 0b2f6a8f7bc..f15e751157d 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp @@ -34,13 +34,17 @@ enum Texts SAY_AGGRO = 1, EMOTE_SLIME_SPRAY = 2, SAY_SLIME_SPRAY = 3, - EMOTE_UNSTABLE_EXPLOSION = 4, SAY_UNSTABLE_EXPLOSION = 5, SAY_KILL = 6, SAY_BERSERK = 7, SAY_DEATH = 8, EMOTE_MUTATED_INFECTION = 9, + EMOTE_UNSTABLE_2 = 0, + EMOTE_UNSTABLE_3 = 1, + EMOTE_UNSTABLE_4 = 2, + EMOTE_UNSTABLE_EXPLOSION = 3, + EMOTE_PRECIOUS_ZOMBIES = 0, }; @@ -63,6 +67,9 @@ enum Spells SPELL_UNSTABLE_OOZE_EXPLOSION = 69839, SPELL_STICKY_OOZE = 69774, SPELL_UNSTABLE_OOZE_EXPLOSION_TRIGGER = 69832, + SPELL_VERTEX_COLOR_PINK = 53213, + SPELL_VERTEX_COLOR_BRIGHT_RED = 69844, + SPELL_VERTEX_COLOR_DARK_RED = 44773, // Precious SPELL_MORTAL_WOUND = 71127, @@ -653,34 +660,55 @@ class spell_rotface_large_ooze_buff_combine : public SpellScriptLoader { PrepareSpellScript(spell_rotface_large_ooze_buff_combine_SpellScript); + bool Load() override + { + return GetCaster()->GetTypeId() == TYPEID_UNIT; + } + void HandleScript(SpellEffIndex /*effIndex*/) { if (!(GetHitCreature() && GetHitCreature()->IsAlive())) return; - if (Aura* unstable = GetCaster()->GetAura(SPELL_UNSTABLE_OOZE)) + Creature* caster = GetCaster()->ToCreature(); + if (Aura* unstable = caster->GetAura(SPELL_UNSTABLE_OOZE)) { uint8 newStack = uint8(unstable->GetStackAmount()+1); unstable->SetStackAmount(newStack); - // explode! - if (newStack >= 5) + switch (newStack) { - GetCaster()->RemoveAurasDueToSpell(SPELL_LARGE_OOZE_BUFF_COMBINE); - GetCaster()->RemoveAurasDueToSpell(SPELL_LARGE_OOZE_COMBINE); - if (InstanceScript* instance = GetCaster()->GetInstanceScript()) - if (Creature* rotface = ObjectAccessor::GetCreature(*GetCaster(), instance->GetGuidData(DATA_ROTFACE))) - if (rotface->IsAlive()) - { - rotface->AI()->Talk(EMOTE_UNSTABLE_EXPLOSION); - rotface->AI()->Talk(SAY_UNSTABLE_EXPLOSION); - } - - if (Creature* cre = GetCaster()->ToCreature()) - cre->AI()->DoAction(EVENT_STICKY_OOZE); - GetCaster()->CastSpell(GetCaster(), SPELL_UNSTABLE_OOZE_EXPLOSION, CastSpellExtraArgs().SetOriginalCaster(GetCaster()->GetGUID())); - if (InstanceScript* instance = GetCaster()->GetInstanceScript()) - instance->SetData(DATA_OOZE_DANCE_ACHIEVEMENT, uint32(false)); + case 2: + caster->AI()->Talk(EMOTE_UNSTABLE_2, caster); + caster->CastSpell(caster, SPELL_VERTEX_COLOR_PINK, true); + break; + case 3: + caster->AI()->Talk(EMOTE_UNSTABLE_3, caster); + caster->CastSpell(caster, SPELL_VERTEX_COLOR_BRIGHT_RED, true); + break; + case 4: + caster->AI()->Talk(EMOTE_UNSTABLE_4, caster); + caster->CastSpell(caster, SPELL_VERTEX_COLOR_DARK_RED, true); + break; + case 5: + { + caster->AI()->Talk(EMOTE_UNSTABLE_EXPLOSION); + caster->RemoveAurasDueToSpell(SPELL_LARGE_OOZE_BUFF_COMBINE); + caster->RemoveAurasDueToSpell(SPELL_LARGE_OOZE_COMBINE); + if (InstanceScript* instance = caster->GetInstanceScript()) + { + instance->SetData(DATA_OOZE_DANCE_ACHIEVEMENT, uint32(false)); + if (Creature* rotface = ObjectAccessor::GetCreature(*caster, instance->GetGuidData(DATA_ROTFACE))) + if (rotface->IsAlive()) + rotface->AI()->Talk(SAY_UNSTABLE_EXPLOSION); + } + + caster->AI()->DoAction(EVENT_STICKY_OOZE); + caster->CastSpell(caster, SPELL_UNSTABLE_OOZE_EXPLOSION, CastSpellExtraArgs().SetOriginalCaster(caster->GetGUID())); + break; + } + default: + break; } } |