function NTM_ChangeAreaInt(how, dest, ownername, myportal) { debugPrint("ntm changeAreaint how:"+how+" Dest:"+dest ); var _portal, _wpHex; var _playerportal = false; var _prearea; var _warpstart; me.cancel(0); if(how == "BluePortal") { if(!ownername) ownername = me.name; how = "Portal"; _playerportal = true; } if(arguments.length > 3 && myportal) _portal = copyUnit(myportal); else if(how == "Portal") { _portal = NTM_FindCorrectPortalInt(_playerportal, ownername); if(_portal.objtype != dest) return -1; if(_portal < 0) _portal = NTM_FindPortalAreaInt(dest); if(_portal == -1) return -1; } else { _wpHex = NTM_AreaWPArray[dest]; if(!_wpHex) return -4; _portal = NTC_GetUnit(NTC_UNIT_OBJECT, how); } if(!_portal) return -1; _prearea = me.area; _warpstart = getTickCount(); if(how == "Waypoint") { var i; for(i = 0 ; i < 50 ; i++) { if((i % 25) == 0) _portal.interact(); NTC_Delay(NTC_DELAY_FRAME); if(getUIFlag(0x14)) { NTC_PingDelay(500); break; }else{ NTM_GetCloserInt(_portal); } } if(i >= 50 || !NTM_CheckWPInt(_wpHex)) { print("checkwaypoint failed "+_wpHex+" getUIFlag(0x14)="+getUIFlag(0x14) +" ping "+ me.ping); me.cancel(0); return -5; } _portal.interact(_wpHex); /* for(i = 0 ; i < 200 ; i++) { if((i % 25) == 0) { if(NTM_GetCloserInt(_portal)) _portal.interact(_wpHex); } NTC_Delay(NTC_DELAY_FRAME); if(me.area != _prearea) break; if(i >= 150 && !NTM_CheckWPInt(_wpHex)) { me.cancel(0); print("Waypoint not Found! area:"+dest ); return -5; } } */ preWalkDelay(); } else { for(var i = 0 ; i < 100 ; i++) { if((i % 25) == 0) { if(NTM_GetCloserInt(_portal)) _portal.interact(); } NTC_Delay(NTC_DELAY_FRAME); if(me.area != _prearea) break; } preWalkDelay(); } while(me.area == 0){ debugPrint("ntm getstairsint area is 0 delay" ); NTC_Delay(NTC_DELAY_FRAME); } if(how == "Waypoint") { while(getUIFlag(0x14)) { me.cancel(0); NTC_Delay(100); } } postWalkDelay(); if(how == "Waypoint"){ var timeout = 0 while(me.area != dest) { NTC_Delay(100); timeout ++; if (timeout >200){ print("extra delay failed me.area :"+me.area+" dest "+dest ); return -7; } } } if(me.area != dest) return -7; delay(50); return 1; }