828 | | struct TRINITY_DLL_DECL npc_steam_tonkAI : public ScriptedAI |
829 | | { |
830 | | npc_steam_tonkAI(Creature *c) : ScriptedAI(c) {Reset();} |
831 | | |
832 | | void Reset() {} |
833 | | void Aggro(Unit *who) {} |
834 | | |
835 | | void OnPossess(bool apply) |
836 | | { |
837 | | if (apply) |
838 | | { |
839 | | // Initialize the action bar without the melee attack command |
840 | | m_creature->InitCharmInfo(m_creature); |
841 | | m_creature->GetCharmInfo()->InitEmptyActionBar(false); |
842 | | |
843 | | m_creature->SetAggressive(false); |
844 | | } |
845 | | else |
846 | | m_creature->SetAggressive(true); |
847 | | } |
848 | | |
849 | | }; |
850 | | |
851 | | CreatureAI* GetAI_npc_steam_tonk(Creature *_Creature) |
852 | | { |
853 | | return new npc_steam_tonkAI(_Creature); |
854 | | } |
855 | | |
856 | | #define SPELL_TONK_MINE_DETONATE 25099 |
857 | | |
858 | | struct TRINITY_DLL_DECL npc_tonk_mineAI : public ScriptedAI |
859 | | { |
860 | | npc_tonk_mineAI(Creature *c) : ScriptedAI(c) |
861 | | { |
862 | | m_creature->SetAggressive(false); |
863 | | Reset(); |
864 | | } |
865 | | |
866 | | uint32 ExplosionTimer; |
867 | | |
868 | | void Reset() |
869 | | { |
870 | | ExplosionTimer = 3000; |
871 | | } |
872 | | |
873 | | void Aggro(Unit *who) {} |
874 | | void AttackStart(Unit *who) {} |
875 | | void MoveInLineOfSight(Unit *who) {} |
876 | | |
877 | | void UpdateAI(const uint32 diff) |
878 | | { |
879 | | if (ExplosionTimer < diff) |
880 | | { |
881 | | m_creature->CastSpell(m_creature, SPELL_TONK_MINE_DETONATE, true); |
882 | | m_creature->setDeathState(DEAD); // unsummon it |
883 | | } else |
884 | | ExplosionTimer -= diff; |
885 | | } |
886 | | }; |
887 | | |
888 | | CreatureAI* GetAI_npc_tonk_mine(Creature *_Creature) |
889 | | { |
890 | | return new npc_tonk_mineAI(_Creature); |
891 | | } |
892 | | |