void WaypointMovementGenerator<Creature>::StartMoveNow(Creature& creature) { i_nextMoveTime.Reset(0); creature.clearUnitState(UNIT_STAT_WAYPOINT_PAUSED); StartMove(creature); }
void UpdateAI(const uint32 diff) { npc_escortAI::UpdateAI(diff); if (PlayerGUID) { Player* AuraPlayer = Unit::GetPlayer(*me,PlayerGUID); if (!AuraPlayer) { me->DisappearAndDie(); return; } else { if (AuraPlayer->isDead()) { AuraPlayer->FailQuest(QUEST_A_FALL_FROM_GRACE); me->DisappearAndDie(); return; } if (EndSequence) { if (EndSequenceTimer <= diff) { EndSequenceTimer = 12000; if (EndSayCount == 6) { me->GetMotionMaster()->MoveJump(HighAbbotLandgrenJumpPos[0][0][0], HighAbbotLandgrenJumpPos[0][0][1], HighAbbotLandgrenJumpPos[0][0][2], 0.5f, 8.0f); EndSequenceTimer = 2000; } if (EndSayCount == 7) { me->MonsterSay(HighAbbotText[6], LANG_UNIVERSAL, 0); EndSequenceTimer = 2000; } if (EndSayCount == 8) { AuraPlayer->KilledMonsterCredit(27444, me->GetGUID()); if (AuraPlayer->HasAura(SPELL_SCARLET_RAVEN_PRIEST_IMAGE_FEMALE)) AuraPlayer->RemoveAura(SPELL_SCARLET_RAVEN_PRIEST_IMAGE_FEMALE); if (AuraPlayer->HasAura(SPELL_SCARLET_RAVEN_PRIEST_IMAGE_MALE)) AuraPlayer->RemoveAura(SPELL_SCARLET_RAVEN_PRIEST_IMAGE_MALE); EndSequence = false; } if (EndSayCount < 6) me->MonsterSay(HighAbbotText[EndSayCount], LANG_UNIVERSAL, PlayerGUID); EndSayCount++; } else EndSequenceTimer -= diff; } if (!EventStarted && me->GetEntry() == NPC_HIGH_ABBOT_LANDGREN_ESCORTEE_ENTRY) { Start(false, false, PlayerGUID, 0, false); EventStarted = true; } if (CheckPlayerDist) if (AuraPlayer->GetDistance(2827.796f, -420.191f, 118.196f) < 4) StartMove(); if (AuraCheckTimer <= diff) { if (AuraPlayer && AuraPlayer->GetQuestStatus(QUEST_A_FALL_FROM_GRACE) == QUEST_STATUS_INCOMPLETE && AuraPlayer->getQuestStatusMap()[QUEST_A_FALL_FROM_GRACE].m_creatureOrGOcount[0] == 1 && !AuraPlayer->HasAura(SPELL_SCARLET_RAVEN_PRIEST_IMAGE_MALE) && !AuraPlayer->HasAura(SPELL_SCARLET_RAVEN_PRIEST_IMAGE_FEMALE)) { switch(AuraPlayer->getGender()) { case GENDER_FEMALE: AuraPlayer->CastSpell(AuraPlayer, SPELL_SCARLET_RAVEN_PRIEST_IMAGE_FEMALE, false); break; case GENDER_MALE: AuraPlayer->CastSpell(AuraPlayer, SPELL_SCARLET_RAVEN_PRIEST_IMAGE_MALE, false); break; } } AuraCheckTimer = 300; } else AuraCheckTimer -= diff; if (me->GetEntry() != NPC_HIGH_ABBOT_LANDGREN_ESCORTEE_ENTRY) { if (BodyGuardStart && AuraPlayer->GetQuestStatus(QUEST_A_FALL_FROM_GRACE) == QUEST_STATUS_INCOMPLETE && AuraPlayer->getQuestStatusMap()[QUEST_A_FALL_FROM_GRACE].m_creatureOrGOcount[0] == 1) { if (Creature* tmp = me->FindNearestCreature(NPC_DEVOUT_BODYGUARD, Range, true)) { if (BodyGuardMoveTimer <= diff) { CAST_AI(npc_devout_bodyguard::npc_devout_bodyguardAI, tmp->AI())->StartMove(); BodyGuardMoveTimer = 6000; Range = 4.0f; if (GuardCount == 1) BodyGuardStart = false; GuardCount++; } else BodyGuardMoveTimer -= diff; } } } } } }
void TaskVidageChateau(void) { switch (robotState.taskState) { case T_VC_INIT: //On dit au robot d'aller à la position initiale allerRetourCounter=0; StartMove(T_VC_INIT_EN_COURS,380,taskVidageChateau.startingPosY,ALIGNED_WITH_MOVE); PWMSetSpeedConsigne(VITESSE_ROULEAU_AVALE, MOTEUR_ROULEAU); break; case T_VC_INIT_EN_COURS: IsCurrentMoveFinishedGoToState(T_VC_AVANCE_0,4000); robotState.AligneAvantVersDirectionMouvement = 0; break; case T_VC_AVANCE_0: if (allerRetourCounter < 2) { allerRetourCounter++; StartRotate(T_VC_AVANCE_0_EN_COURS,90); PWMSetSpeedConsigne(VITESSE_ROULEAU_ARRET, MOTEUR_ROULEAU); //On recrache } else { robotState.taskState = T_VC_FIN; } break; case T_VC_AVANCE_0_EN_COURS: IsCurrentMoveFinishedGoToState(T_VC_AVANCE_1,2500); break; case T_VC_AVANCE_1: SendState(); StartMove(T_VC_AVANCE_1_EN_COURS,550,taskVidageChateau.startingPosY,ALIGNED_WITH_MOVE); PWMSetSpeedConsigne(VITESSE_ROULEAU_RECRACHE, MOTEUR_ROULEAU); //On recrache break; case T_VC_AVANCE_1_EN_COURS: IsCurrentMoveFinishedGoToState(T_VC_TOURNE_1,1600); break; case T_VC_TOURNE_1: StartRotate(T_VC_TOURNE_1_EN_COURS,75); PWMSetSpeedConsigne(VITESSE_ROULEAU_RECRACHE, MOTEUR_ROULEAU); //On recrache break; case T_VC_TOURNE_1_EN_COURS: IsCurrentMoveFinishedGoToState(T_VC_TOURNE_2,500); break; case T_VC_TOURNE_2: StartRotate(T_VC_TOURNE_2_EN_COURS,95); PWMSetSpeedConsigne(VITESSE_ROULEAU_RECRACHE, MOTEUR_ROULEAU); //On recrache break; case T_VC_TOURNE_2_EN_COURS: IsCurrentMoveFinishedGoToState(T_VC_RECULE_1,700); break; case T_VC_RECULE_1: SendState(); StartMove(T_VC_RECULE_1_EN_COURS,330,taskVidageChateau.startingPosY,NOT_ALIGNED); PWMSetSpeedConsigne(VITESSE_ROULEAU_RECRACHE, MOTEUR_ROULEAU); //On recrache break; case T_VC_RECULE_1_EN_COURS: IsCurrentMoveFinishedGoToState(T_VC_AVANCE_0,1600); break; case T_VC_FIN: SendState(); robotState.taskState = T_VC_FIN_EN_COURS; PWMSetSpeedConsigne(VITESSE_ROULEAU_ARRET, MOTEUR_ROULEAU); //On recrache //taskVidageChateau.nbTaskCompleted++; break; case T_VC_FIN_EN_COURS: break; default: robotState.taskState = T_VC_FIN; break; } }
void WaypointMovementGenerator<Creature>::Reset(Creature& creature) { creature.addUnitState(UNIT_STAT_ROAMING); StartMove(creature); }
void WaypointMovementGenerator<Creature>::StartMoveNow(Creature& creature) { i_nextMoveTime.Reset(0); StartMove(creature); }
LRESULT CALLBACK CCustomPlayer::_MainWindowWndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam) { switch(message) { case WM_DROPFILES: // Load any dropped file { char FileName[_MAX_PATH]; HDROP hdrop=(HDROP)wParam; DragQueryFile(hdrop,0,FileName,_MAX_PATH); Reset(); _Load(FileName); _FinishLoad(); break; } case WM_MOUSEMOVE: { // we allow window dragging enabled in the player.ini file ! if (GetPAppStyle()->g_MouseDrag==1) { DoMMove(lParam,wParam); } } case WM_ACTIVATEAPP: { OnActivateApp(wParam); } break; // Minimum size of the player window case WM_GETMINMAXINFO: // this message is not very useful because // the main window of the player is not resizable ... // but perhaps it will change so we manage this message. { CCustomPlayer& player = CCustomPlayer::Instance(); if((LPMINMAXINFO)lParam) { ((LPMINMAXINFO)lParam)->ptMinTrackSize.x=MininumWindowedWidth(); ((LPMINMAXINFO)lParam)->ptMinTrackSize.y=MininumWindowedHeight(); } } break; // Sends a Message "OnClick" or "OnDblClick" if any object is under mouse cursor case WM_LBUTTONDBLCLK: case WM_LBUTTONDOWN: { OnMouseClick(message); // [2/18/2008 mc007] // we allow window dragging enabled in the player.ini file ! if (GetPAppStyle()->g_MouseDrag) { StartMove(lParam); } } break; // Size and focus management case WM_SIZE: // if the window is maximized or minimized // we get/lost focus. { if (wParam==SIZE_MINIMIZED) { OnFocusChange(FALSE); } else if (wParam==SIZE_MAXIMIZED) { OnFocusChange(TRUE); } } break; // Manage system key (ALT + KEY) case WM_SYSKEYDOWN: { // return OnSysKeyDownMainWindow(theApp.m_Config,(int)wParam); } break; // Repaint main frame case WM_PAINT: { OnPaint(); } break; // The main windows has been closed by the user case WM_CLOSE: PostQuitMessage(0); break; // Focus management case WM_KILLFOCUS: case WM_SETFOCUS: { OnFocusChange(message==WM_SETFOCUS); } break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return DefWindowProc(hWnd, message, wParam, lParam); }