rendered paste bodyfunction 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;
}