void UpdateAI(uint32 diff) override { // if no target, update dummy and return if (!UpdateVictim()) { dummy_dragonAI::UpdateAI(diff); return; } events.Update(diff); while (uint32 eventId = events.ExecuteEvent()) { switch (eventId) { case EVENT_ACOLYTE_VESPERON: if (instance->GetBossState(DATA_PORTAL_OPEN) == IN_PROGRESS) events.ScheduleEvent(EVENT_ACOLYTE_VESPERON, 10000); else { OpenPortal(); DoCastVictim(SPELL_TWILIGHT_TORMENT_VESP); events.ScheduleEvent(EVENT_ACOLYTE_VESPERON, urand(60000, 70000)); } break; default: dummy_dragonAI::ExecuteEvent(eventId); break; } } DoMeleeAttackIfReady(); }
void UpdateAI(uint32 diff) override { // if no target, update dummy and return if (!UpdateVictim()) { dummy_dragonAI::UpdateAI(diff); return; } events.Update(diff); while (uint32 eventId = events.ExecuteEvent()) { switch (eventId) { case EVENT_HATCH_EGGS: OpenPortal(); events.ScheduleEvent(EVENT_HATCH_EGGS, 30000); break; default: dummy_dragonAI::ExecuteEvent(eventId); break; } } DoMeleeAttackIfReady(); }
//-------------------------------- // hhProxDoor::SetDoorState //-------------------------------- void hhProxDoor::SetDoorState( EProxState doorState ) { int i; //HUMANHEAD PCF mdl 04/27/06 - Don't allow locked doors to become active if ( doorLocked && doorState == PROXSTATE_Active ) { return; } switch( doorState ) { case PROXSTATE_Active: BecomeActive( TH_TICKER ); CancelEvents( &EV_PollForExit ); PostEventMS( &EV_PollForExit, 500 ); OpenPortal(); break; case PROXSTATE_GoingInactive: break; case PROXSTATE_Inactive: // Guarantee the door is closed for( i = 0; i < doorPieces.Num(); i++ ) { if (doorPieces[i].IsValid()) { doorPieces[ i ]->SetProximity( 0.0 ); } } ClosePortal(); CancelEvents( &EV_PollForExit ); BecomeInactive( TH_TICKER ); break; } proxState = doorState; }
void UpdateAI(uint32 diff) override { // if no target, update dummy and return if (!UpdateVictim()) { dummy_dragonAI::UpdateAI(diff); return; } events.Update(diff); while (uint32 eventId = events.ExecuteEvent()) { switch (eventId) { case EVENT_ACOLYTE_SHADRON: if (instance->GetBossState(DATA_PORTAL_OPEN) == NOT_STARTED) events.ScheduleEvent(EVENT_ACOLYTE_SHADRON, 10000); else { if (me->HasAura(SPELL_GIFT_OF_TWILIGTH_SHA)) return; OpenPortal(); instance->SetBossState(DATA_PORTAL_OPEN, IN_PROGRESS); events.ScheduleEvent(EVENT_ACOLYTE_SHADRON, urand(60000, 65000)); } break; default: dummy_dragonAI::ExecuteEvent(eventId); break; } } DoMeleeAttackIfReady(); }