void StopHandle()
{
if(StopF==FLAG_REQUEST) {
if(DEBUGGING) {
WriteChatf("[%I64u] MQ2Cast:[Immobilize]: Request.",GetTickCount642());
}
StopM=GetTickCount642()+DELAY_STOP;
StopF=FLAG_PROGRESS1;
StopE=DONE_PROGRESS;
}
if(Evaluate("${If[${Stick.Status.Equal[ON]},1,0]}")) {
if(DEBUGGING) {
WriteChatf("[%I64u] MQ2Cast:[Immobilize]: Stick Pause Request.",GetTickCount642());
}
Stick("pause");
MoveS=FLAG_PROGRESS1;
}
if(Evaluate("${If[${Bool[${FollowFlag}]},1,0]}")) {
if(DEBUGGING) {
WriteChatf("[%I64u] MQ2Cast:[Immobilize]: AdvPath Pause Request.",GetTickCount642());
}
Execute("/varcalc PauseFlag 1");
MoveA=FLAG_PROGRESS1;
}
if(Evaluate("${If[${AdvPath.Following} && !${AdvPath.Paused},1,0]}")) {
if(DEBUGGING) {
WriteChatf("[%I64u] MQ2Cast:[Immobilize]: MQ2AdvPath Pause Request.",GetTickCount642());
}
FollowPath("pause");
MoveF=FLAG_PROGRESS1;
}
if(Evaluate("${If[${AdvPath.Playing} && !${AdvPath.Paused},1,0]}")) {
if(DEBUGGING) {
WriteChatf("[%I64u] MQ2Cast:[Immobilize]: MQ2AdvPath Pause Request.",GetTickCount642());
}
Path("pause");
MoveP=FLAG_PROGRESS1;
}
if(Immobile=Moving()) {
if(DEBUGGING) {
WriteChatf("[%I64u] MQ2Cast:[Immobilize]: Complete.",GetTickCount642());
}
StopF=FLAG_COMPLETE;
StopE=DONE_SUCCESS;
}
if(GetTickCount642() > StopM) {
WriteChatf("[%I64u] MQ2Cast:[Immobilize]: Aborting!",GetTickCount642());
StopF=FLAG_COMPLETE;
StopE=DONE_ABORTED;
return;
}
if(StopF==FLAG_PROGRESS1) {
StopF=FLAG_PROGRESS2;
if(Speed()!=0.0f) {
MQ2Globals::ExecuteCmd(FindMappableCommand("back"),1,0);
MQ2Globals::ExecuteCmd(FindMappableCommand("back"),0,0);
}
}
}