diff options
-rw-r--r-- | sql/FULL/world_scripts_full.sql | 3 | ||||
-rw-r--r-- | sql/updates/7780_world_scriptname.sql | 1 | ||||
-rw-r--r-- | src/scripts/northrend/borean_tundra.cpp | 104 |
3 files changed, 107 insertions, 1 deletions
diff --git a/sql/FULL/world_scripts_full.sql b/sql/FULL/world_scripts_full.sql index b2cfd9dacf1..ad4ef6954a2 100644 --- a/sql/FULL/world_scripts_full.sql +++ b/sql/FULL/world_scripts_full.sql @@ -407,7 +407,8 @@ UPDATE `creature_template` SET `ScriptName`='npc_fezzix_geartwist' WHERE `entry` UPDATE `creature_template` SET `scriptname`='npc_trapped_mammoth_calf' WHERE `entry`=25850; UPDATE `item_template` SET `scriptname`='item_dehta_trap_smasher' WHERE `entry`=35228; UPDATE `creature_template` SET `ScriptName`='npc_magmoth_crusher' WHERE `entry`=25434; - +UPDATE `creature_template` SET `ScriptName`='npc_valiance_keep_cannoneer' WHERE `entry`=25306; +UPDATE `creature_template` SET `ScriptName`='npc_warmage_coldarra' WHERE `entry` IN (27173,27904,27906); /* BURNING STEPPES */ UPDATE `creature_template` SET `ScriptName`='npc_ragged_john' WHERE `entry`=9563; diff --git a/sql/updates/7780_world_scriptname.sql b/sql/updates/7780_world_scriptname.sql new file mode 100644 index 00000000000..25cdec2b229 --- /dev/null +++ b/sql/updates/7780_world_scriptname.sql @@ -0,0 +1 @@ +UPDATE `creature_template` SET `ScriptName`= 'npc_warmage_coldarra' WHERE `entry` IN (27173,27904,27906); diff --git a/src/scripts/northrend/borean_tundra.cpp b/src/scripts/northrend/borean_tundra.cpp index baf739f691b..b4cdc906f57 100644 --- a/src/scripts/northrend/borean_tundra.cpp +++ b/src/scripts/northrend/borean_tundra.cpp @@ -2240,6 +2240,105 @@ CreatureAI* GetAI_npc_valiance_keep_cannoneer(Creature* pCreature) return new npc_valiance_keep_cannoneerAI(pCreature); } +/******************************************************* + * npc_warmage_coldarra + *******************************************************/ + +enum Spells +{ + SPELL_TRANSITUS_SHIELD_BEAM = 48310 +}; + +enum NPCs +{ + NPC_TRANSITUS_SHIELD_DUMMY = 27306, + NPC_WARMAGE_HOLLISTER = 27906, + NPC_WARMAGE_CALANDRA = 27173, + NPC_WARMAGE_WATKINS = 27904 +}; + +struct npc_warmage_coldarraAI : public Scripted_NoMovementAI +{ + npc_warmage_coldarraAI(Creature* pCreature) : Scripted_NoMovementAI(pCreature){} + + uint32 m_uiTimer; //Timer until recast + + void Reset() + { + m_uiTimer = 0; + } + + void Aggro(Unit* pWho){} + + void AttackStart(Unit* pWho){} + + void UpdateAI(const uint32 uiDiff) + { + if (m_uiTimer <= uiDiff) + { + std::list<Creature*> orbList; + GetCreatureListWithEntryInGrid(orbList, m_creature, NPC_TRANSITUS_SHIELD_DUMMY, 32.0f); + + switch(me->GetEntry()) + { + case NPC_WARMAGE_HOLLISTER: + { + if (!orbList.empty()) + { + for (std::list<Creature*>::const_iterator itr = orbList.begin(); itr != orbList.end(); ++itr) + { + if (Creature* pOrb = *itr) + if (pOrb->GetPositionY() > 6680) + DoCast(pOrb,SPELL_TRANSITUS_SHIELD_BEAM); + } + } + m_uiTimer = urand(90000,120000); + } + break; + case NPC_WARMAGE_CALANDRA: + { + if (!orbList.empty()) + { + for (std::list<Creature*>::const_iterator itr = orbList.begin(); itr != orbList.end(); ++itr) + { + if (Creature* pOrb = *itr) + if ((pOrb->GetPositionY() < 6680) && (pOrb->GetPositionY() > 6630)) + DoCast(pOrb,SPELL_TRANSITUS_SHIELD_BEAM); + } + } + m_uiTimer = urand(90000,120000); + } + break; + case NPC_WARMAGE_WATKINS: + { + if (!orbList.empty()) + { + for (std::list<Creature*>::const_iterator itr = orbList.begin(); itr != orbList.end(); ++itr) + { + if (Creature* pOrb = *itr) + if (pOrb->GetPositionY() < 6630) + DoCast(pOrb,SPELL_TRANSITUS_SHIELD_BEAM); + } + } + m_uiTimer = urand(90000,120000); + } + break; + } + } + else m_uiTimer -= uiDiff; + + ScriptedAI::UpdateAI(uiDiff); + + if (!UpdateVictim()) + return; + } +}; + +CreatureAI* GetAI_npc_warmage_coldarra(Creature* pCreature) +{ + return new npc_warmage_coldarraAI(pCreature); +} + void AddSC_borean_tundra() { Script *newscript; @@ -2395,4 +2494,9 @@ void AddSC_borean_tundra() newscript->Name = "npc_valiance_keep_cannoneer"; newscript->GetAI = &GetAI_npc_valiance_keep_cannoneer; newscript->RegisterSelf(); + + newscript = new Script; + newscript->Name = "npc_warmage_coldarra"; + newscript->GetAI = &GetAI_npc_warmage_coldarra; + newscript->RegisterSelf(); } |