virtual void Update(uint32 diff) override { if (!IronCladDoorGUID || !DefiasCannonGUID || !DoorLeverGUID) return; GameObject* pIronCladDoor = instance->GetGameObject(IronCladDoorGUID); if (!pIronCladDoor) return; switch (State) { case CANNON_GUNPOWDER_USED: CannonBlast_Timer = DATA_CANNON_BLAST_TIMER; State = CANNON_BLAST_INITIATED; break; case CANNON_BLAST_INITIATED: PiratesDelay_Timer = DATA_PIRATES_DELAY_TIMER; SmiteAlarmDelay_Timer = DATA_SMITE_ALARM_DELAY_TIMER; if (CannonBlast_Timer <= diff) { SummonCreatures(); ShootCannon(); BlastOutDoor(); LeverStucked(); instance->LoadGrid(-22.8f, -797.24f); // Loads Mr. Smite's grid. if (Creature* smite = instance->GetCreature(MrSmiteGUID)) // goes off when door blows up smite->AI()->Talk(SAY_ALARM1); State = PIRATES_ATTACK; } else CannonBlast_Timer -= diff; break; case PIRATES_ATTACK: if (PiratesDelay_Timer <= diff) { MoveCreaturesInside(); State = SMITE_ALARMED; } else PiratesDelay_Timer -= diff; break; case SMITE_ALARMED: if (SmiteAlarmDelay_Timer <= diff) { if (Creature* smite = instance->GetCreature(MrSmiteGUID)) smite->AI()->Talk(SAY_ALARM2); State = EVENT_DONE; } else SmiteAlarmDelay_Timer -= diff; break; } }
virtual void Update(uint32 diff) { if (!IronCladDoorGUID || !DefiasCannonGUID || !DoorLeverGUID) return; GameObject *pIronCladDoor = instance->GetGameObject( IronCladDoorGUID); if (!pIronCladDoor) return; switch (State) { case CANNON_GUNPOWDER_USED: CannonBlast_Timer = DATA_CANNON_BLAST_TIMER; // it's a hack - Mr. Smite should do that but his too far away pIronCladDoor->SetName("Mr. Smite"); pIronCladDoor->MonsterYell(SAY_MR_SMITE_ALARM1, LANG_UNIVERSAL, 0); DoPlaySound(pIronCladDoor, SOUND_MR_SMITE_ALARM1); State = CANNON_BLAST_INITIATED; break; case CANNON_BLAST_INITIATED: PiratesDelay_Timer = DATA_PIRATES_DELAY_TIMER; if (CannonBlast_Timer <= diff) { SummonCreatures(); ShootCannon(); BlastOutDoor(); LeverStucked(); pIronCladDoor->MonsterYell(SAY_MR_SMITE_ALARM2, LANG_UNIVERSAL, 0); DoPlaySound(pIronCladDoor, SOUND_MR_SMITE_ALARM2); State = PIRATES_ATTACK; } else CannonBlast_Timer -= diff; break; case PIRATES_ATTACK: if (PiratesDelay_Timer <= diff) { MoveCreaturesInside(); State = EVENT_DONE; } else PiratesDelay_Timer -= diff; break; } }