diff options
-rw-r--r-- | src/server/scripts/EasternKingdoms/ScarletMonastery/boss_interrogator_vishas.cpp | 141 |
1 files changed, 66 insertions, 75 deletions
diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_interrogator_vishas.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_interrogator_vishas.cpp index c05de1bb800..5d7c3afcc4f 100644 --- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_interrogator_vishas.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_interrogator_vishas.cpp @@ -1,6 +1,5 @@ /* * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/> - * Copyright (C) 2006-2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/> * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the @@ -16,13 +15,6 @@ * with this program. If not, see <http://www.gnu.org/licenses/>. */ -/* ScriptData -SDName: Boss_Interrogator_Vishas -SD%Complete: 100 -SDComment: -SDCategory: Scarlet Monastery -EndScriptData */ - #include "ScriptMgr.h" #include "ScriptedCreature.h" #include "scarlet_monastery.h" @@ -38,94 +30,93 @@ enum Says enum Spells { - SPELL_SHADOWWORDPAIN = 2767 + SPELL_SHADOW_WORD_PAIN = 2767 }; -class boss_interrogator_vishas : public CreatureScript +enum Events { -public: - boss_interrogator_vishas() : CreatureScript("boss_interrogator_vishas") { } - - CreatureAI* GetAI(Creature* creature) const override - { - return GetInstanceAI<boss_interrogator_vishasAI>(creature); - } - - struct boss_interrogator_vishasAI : public ScriptedAI - { - boss_interrogator_vishasAI(Creature* creature) : ScriptedAI(creature) - { - Initialize(); - instance = me->GetInstanceScript(); - } - - void Initialize() - { - ShadowWordPain_Timer = 5000; - Yell60 = false; - Yell30 = false; - } - - InstanceScript* instance; + EVENT_SHADOW_WORD_PAIN = 1 +}; - bool Yell30; - bool Yell60; - uint32 ShadowWordPain_Timer; +class boss_interrogator_vishas : public CreatureScript +{ + public: + boss_interrogator_vishas() : CreatureScript("boss_interrogator_vishas") { } - void Reset() override + struct boss_interrogator_vishasAI : public BossAI { - Initialize(); - instance->SetBossState(DATA_INTERROGATOR_VISHAS, NOT_STARTED); - } + boss_interrogator_vishasAI(Creature* creature) : BossAI(creature, DATA_INTERROGATOR_VISHAS) + { + Initialize(); + } - void EnterCombat(Unit* /*who*/) override - { - Talk(SAY_AGGRO); - instance->SetBossState(DATA_INTERROGATOR_VISHAS, IN_PROGRESS); - } + void Initialize() + { + _yellCount = 0; + } - void KilledUnit(Unit* /*Victim*/) override - { - Talk(SAY_KILL); - } + void Reset() override + { + Initialize(); + _Reset(); + } - void JustDied(Unit* /*killer*/) override - { - //Any other Actions to do with vorrel? setStandState? - if (Creature* vorrel = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_VORREL))) - vorrel->AI()->Talk(SAY_TRIGGER_VORREL); - instance->SetBossState(DATA_INTERROGATOR_VISHAS, DONE); - } + void EnterCombat(Unit* /*who*/) override + { + Talk(SAY_AGGRO); + _EnterCombat(); + events.ScheduleEvent(EVENT_SHADOW_WORD_PAIN, 5000); + } - void UpdateAI(uint32 diff) override - { - if (!UpdateVictim()) - return; + void KilledUnit(Unit* victim) override + { + if (victim->GetTypeId() == TYPEID_PLAYER) + Talk(SAY_KILL); + } - //If we are low on hp Do sayings - if (!Yell60 && !HealthAbovePct(60)) + void JustDied(Unit* /*killer*/) override { - Talk(SAY_HEALTH1); - Yell60 = true; + _JustDied(); + if (Creature* vorrel = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_VORREL))) + vorrel->AI()->Talk(SAY_TRIGGER_VORREL); } - if (!Yell30 && !HealthAbovePct(30)) + void DamageTaken(Unit* /*attacker*/, uint32 &damage) override { - Talk(SAY_HEALTH2); - Yell30 = true; + if (me->HealthBelowPctDamaged(60, damage) && _yellCount < 1) + { + Talk(SAY_HEALTH1); + ++_yellCount; + } + + if (me->HealthBelowPctDamaged(30, damage) && _yellCount < 2) + { + Talk(SAY_HEALTH1); + ++_yellCount; + } } - //ShadowWordPain_Timer - if (ShadowWordPain_Timer <= diff) + void ExecuteEvent(uint32 eventId) override { - DoCastVictim(SPELL_SHADOWWORDPAIN); - ShadowWordPain_Timer = urand(5000, 15000); + switch (eventId) + { + case EVENT_SHADOW_WORD_PAIN: + DoCastVictim(SPELL_SHADOW_WORD_PAIN); + events.ScheduleEvent(EVENT_SHADOW_WORD_PAIN, urand(5000, 15000)); + break; + default: + break; + } } - else ShadowWordPain_Timer -= diff; - DoMeleeAttackIfReady(); + private: + uint8 _yellCount; + }; + + CreatureAI* GetAI(Creature* creature) const override + { + return GetInstanceAI<boss_interrogator_vishasAI>(creature); } - }; }; void AddSC_boss_interrogator_vishas() |