fix(Core/SSC): Rancid Mushroom mechanic (#18008)
* fix(Core/SSC): Rancid Mushroom mechanic * missing clear smart_scripts * build * build again
This commit is contained in:
@@ -0,0 +1,8 @@
|
|||||||
|
--
|
||||||
|
UPDATE `creature_template` SET `scale` = 0.5, `unit_flags` = `unit_flags`|2048|524288, `mechanic_immune_mask` = 1073741823, `AIName` = '', `ScriptName` = 'npc_rancid_mushroom' WHERE `entry` = 22250;
|
||||||
|
|
||||||
|
DELETE FROM `spell_script_names` WHERE `spell_id` = 38652 AND `ScriptName` = 'spell_rancid_spore_cloud';
|
||||||
|
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
|
||||||
|
(38652, 'spell_rancid_spore_cloud');
|
||||||
|
|
||||||
|
DELETE FROM `smart_scripts` WHERE `entryorguid` = 22250 AND `source_type` = 0;
|
||||||
+49
@@ -22,6 +22,7 @@
|
|||||||
#include "SpellScriptLoader.h"
|
#include "SpellScriptLoader.h"
|
||||||
#include "TemporarySummon.h"
|
#include "TemporarySummon.h"
|
||||||
#include "serpent_shrine.h"
|
#include "serpent_shrine.h"
|
||||||
|
#include "ScriptedCreature.h"
|
||||||
|
|
||||||
DoorData const doorData[] =
|
DoorData const doorData[] =
|
||||||
{
|
{
|
||||||
@@ -308,6 +309,52 @@ class spell_serpentshrine_cavern_coilfang_water : public AuraScript
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct npc_rancid_mushroom : public ScriptedAI
|
||||||
|
{
|
||||||
|
npc_rancid_mushroom(Creature* creature) : ScriptedAI(creature) { }
|
||||||
|
|
||||||
|
enum Spells : uint32
|
||||||
|
{
|
||||||
|
SPELL_GROW = 31698,
|
||||||
|
SPELL_SPORE_CLOUD = 38652
|
||||||
|
};
|
||||||
|
|
||||||
|
void InitializeAI() override
|
||||||
|
{
|
||||||
|
scheduler.Schedule(1150ms, [this](TaskContext context)
|
||||||
|
{
|
||||||
|
DoCastSelf(SPELL_GROW);
|
||||||
|
context.Repeat(1200ms, 3400ms);
|
||||||
|
})
|
||||||
|
.Schedule(22950ms, [this](TaskContext /*context*/)
|
||||||
|
{
|
||||||
|
DoCastSelf(SPELL_SPORE_CLOUD);
|
||||||
|
me->KillSelf();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
void UpdateAI(uint32 diff) override
|
||||||
|
{
|
||||||
|
scheduler.Update(diff);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class spell_rancid_spore_cloud : public AuraScript
|
||||||
|
{
|
||||||
|
PrepareAuraScript(spell_rancid_spore_cloud);
|
||||||
|
|
||||||
|
void HandlePeriodic(AuraEffect const* /*aurEff*/)
|
||||||
|
{
|
||||||
|
PreventDefaultAction();
|
||||||
|
GetCaster()->CastSpell((Unit*)nullptr, GetSpellInfo()->Effects[EFFECT_0].TriggerSpell, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Register() override
|
||||||
|
{
|
||||||
|
OnEffectPeriodic += AuraEffectPeriodicFn(spell_rancid_spore_cloud::HandlePeriodic, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
void AddSC_instance_serpentshrine_cavern()
|
void AddSC_instance_serpentshrine_cavern()
|
||||||
{
|
{
|
||||||
new instance_serpent_shrine();
|
new instance_serpent_shrine();
|
||||||
@@ -315,5 +362,7 @@ void AddSC_instance_serpentshrine_cavern()
|
|||||||
RegisterSpellAndAuraScriptPair(spell_serpentshrine_cavern_serpentshrine_parasite_trigger, spell_serpentshrine_cavern_serpentshrine_parasite_trigger_aura);
|
RegisterSpellAndAuraScriptPair(spell_serpentshrine_cavern_serpentshrine_parasite_trigger, spell_serpentshrine_cavern_serpentshrine_parasite_trigger_aura);
|
||||||
RegisterSpellScript(spell_serpentshrine_cavern_infection);
|
RegisterSpellScript(spell_serpentshrine_cavern_infection);
|
||||||
RegisterSpellScript(spell_serpentshrine_cavern_coilfang_water);
|
RegisterSpellScript(spell_serpentshrine_cavern_coilfang_water);
|
||||||
|
RegisterSerpentShrineAI(npc_rancid_mushroom);
|
||||||
|
RegisterSpellScript(spell_rancid_spore_cloud);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user