diff options
| -rw-r--r-- | sql/updates/4030_world.sql | 1 | ||||
| -rw-r--r-- | sql/world_scripts_full.sql | 2 | ||||
| -rw-r--r-- | src/bindings/scripts/scripts/zone/azuremyst_isle/azuremyst_isle.cpp | 79 |
3 files changed, 49 insertions, 33 deletions
diff --git a/sql/updates/4030_world.sql b/sql/updates/4030_world.sql new file mode 100644 index 00000000000..579bfa49d23 --- /dev/null +++ b/sql/updates/4030_world.sql @@ -0,0 +1 @@ +UPDATE creature_template SET ScriptName='npc_nestlewood_owlkin' WHERE entry=16518; diff --git a/sql/world_scripts_full.sql b/sql/world_scripts_full.sql index 728cce3fa69..cec2944c6df 100644 --- a/sql/world_scripts_full.sql +++ b/sql/world_scripts_full.sql @@ -177,7 +177,7 @@ UPDATE `creature_template` SET `ScriptName`='npc_engineer_spark_overgrind' WHERE UPDATE `creature_template` SET `ScriptName`='npc_injured_draenei' WHERE `entry`=16971; UPDATE `creature_template` SET `ScriptName`='npc_magwin' WHERE `entry`=17312; UPDATE `creature_template` SET `ScriptName`='npc_geezle' WHERE `entry`=17318; -UPDATE `creature_template` SET `ScriptName`='mob_nestlewood_owlkin' WHERE `entry`=16518; +UPDATE `creature_template` SET `ScriptName`='npc_nestlewood_owlkin' WHERE `entry`=16518; UPDATE `creature_template` SET `ScriptName`='npc_draenei_survivor' WHERE `entry`=16483; /* BADLANDS */ diff --git a/src/bindings/scripts/scripts/zone/azuremyst_isle/azuremyst_isle.cpp b/src/bindings/scripts/scripts/zone/azuremyst_isle/azuremyst_isle.cpp index 320a1610827..ae2ac22ae71 100644 --- a/src/bindings/scripts/scripts/zone/azuremyst_isle/azuremyst_isle.cpp +++ b/src/bindings/scripts/scripts/zone/azuremyst_isle/azuremyst_isle.cpp @@ -565,56 +565,71 @@ CreatureAI* GetAI_npc_geezleAI(Creature *_Creature) enum { - INOCULATION_CHANNEL = 29528, - INOCULATED_OWLKIN = 16534 + SPELL_INOCULATE_OWLKIN = 29528, + ENTRY_OWLKIN = 16518, + ENTRY_OWLKIN_INOC = 16534 }; -struct TRINITY_DLL_DECL mob_nestlewood_owlkinAI : public ScriptedAI +struct TRINITY_DLL_DECL npc_nestlewood_owlkinAI : public ScriptedAI { - mob_nestlewood_owlkinAI(Creature *c) : ScriptedAI(c) {} + npc_nestlewood_owlkinAI(Creature *c) : ScriptedAI(c) {} - uint32 ChannelTimer; - bool Channeled; - bool Hitted; + uint32 DespawnTimer; void Reset() { - ChannelTimer = 0; - Channeled = false; - Hitted = false; + DespawnTimer = 0; + m_creature->SetVisibility(VISIBILITY_ON); } - void EnterCombat(Unit *who){} + void Aggro(Unit *who) {} - void SpellHit(Unit* caster, const SpellEntry* spell) + void UpdateAI(const uint32 diff) { - if(!caster) - return; - - if(caster->GetTypeId() == TYPEID_PLAYER && spell->Id == INOCULATION_CHANNEL) + //timer gets adjusted by the triggered aura effect + if (DespawnTimer) { - ChannelTimer = 3000; - Hitted = true; + if (DespawnTimer <= diff) + { + //once we are able to, despawn us + m_creature->SetVisibility(VISIBILITY_OFF); + m_creature->setDeathState(JUST_DIED); + m_creature->SetHealth(0); + m_creature->CombatStop(); + m_creature->DeleteThreatList(); + m_creature->RemoveCorpse(); + }else DespawnTimer -= diff; } - } - void UpdateAI(const uint32 diff) - { - if(ChannelTimer < diff && !Channeled && Hitted) - { - m_creature->DealDamage(m_creature, m_creature->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false); - m_creature->RemoveCorpse(); - m_creature->SummonCreature(INOCULATED_OWLKIN, m_creature->GetPositionX(), m_creature->GetPositionY(), m_creature->GetPositionZ(), 0.0f, TEMPSUMMON_TIMED_DESPAWN, 180000); - Channeled = true; - }else ChannelTimer -= diff; + if (!UpdateVictim()) + return; DoMeleeAttackIfReady(); } }; -CreatureAI* GetAI_mob_nestlewood_owlkinAI(Creature *_Creature) +CreatureAI* GetAI_npc_nestlewood_owlkinAI(Creature* pCreature) +{ + return new npc_nestlewood_owlkinAI (pCreature); +} + +bool EffectDummyCreature_npc_nestlewood_owlkin(Unit *pCaster, uint32 spellId, uint32 effIndex, Creature *pCreatureTarget) { - return new mob_nestlewood_owlkinAI (_Creature); + //always check spellid and effectindex + if (spellId == SPELL_INOCULATE_OWLKIN && effIndex == 0) + { + if (pCreatureTarget->GetEntry() != ENTRY_OWLKIN) + return true; + + pCreatureTarget->UpdateEntry(ENTRY_OWLKIN_INOC); + + //set despawn timer, since we want to remove creature after a short time + ((npc_nestlewood_owlkinAI*)pCreatureTarget->AI())->DespawnTimer = 15000; + + //always return true when we are handling this spell and effect + return true; + } + return false; } void AddSC_azuremyst_isle() @@ -650,8 +665,8 @@ void AddSC_azuremyst_isle() newscript->RegisterSelf(); newscript = new Script; - newscript->Name="mob_nestlewood_owlkin"; - newscript->GetAI = &GetAI_mob_nestlewood_owlkinAI; + newscript->Name="npc_nestlewood_owlkin"; + newscript->GetAI = &GetAI_npc_nestlewood_owlkinAI; newscript->RegisterSelf(); } |
