"Layer not found." does refer to the different channels of Azria/Traesia/Coral Island and the different instances of dungeons like Animuskrypta, The Wild etc.
Mover.cpp
Code:
#ifdef __LAYER_1015
BOOL CMover::Replace( u_long uIdofMulti, DWORD dwWorldID, D3DXVECTOR3 & vPos, REPLACE_TYPE type, int nLayer )
#else // __LAYER_1015
BOOL CMover::Replace( u_long uIdofMulti, DWORD dwWorldID, D3DXVECTOR3 & vPos, REPLACE_TYPE type )
#endif // __LAYER_1015
{
CWorld* pWorld = GetWorld();
if( !pWorld )
return FALSE;
if( dwWorldID == 0 || dwWorldID == NULL_ID )
return FALSE;
#ifdef __LAYER_1015
CWorld* pTargetWorld = g_WorldMng.GetWorld( dwWorldID );
if( !pTargetWorld || !pTargetWorld->m_linkMap.GetLinkMap( nLayer ) )
{
Error( "Layer not found" );
return FALSE;
}
#endif // __LAYER_1015
// Á¶°Ç°Ë»ç
if( type == REPLACE_NORMAL )
{
if( IsAuthHigher( AUTH_GAMEMASTER ) == FALSE && IsFly() )
return FALSE;
}
// À̵¿À» ¸ØÃá´Ù.
ClearDest();
SendActMsg( OBJMSG_ACC_STOP );
SendActMsg( OBJMSG_STOP_TURN );
SendActMsg( OBJMSG_STAND );
#if __VER >= 11 // __SYS_COLLECTING
if( IsCollecting() )
StopCollecting();
#endif // __SYS_COLLECTING
#if __VER >= 15 // __REACTIVATE_EATPET
if( HasActivatedEatPet() )
InactivateEatPet();
#endif // __REACTIVATE_EATPET
LPREPLACEOBJ lpReplaceObj = NULL;
for( int i = 0; i < pWorld->m_cbModifyLink; i++ )
{
if( pWorld->m_apModifyLink[i] == this )
{
pWorld->m_apModifyLink[i] = NULL;
m_vRemoval = D3DXVECTOR3( 0.0f, 0.0f, 0.0f );
break;
}
}
for( i = 0; i < pWorld->m_cbReplaceObj; i++ )
{
if( pWorld->m_aReplaceObj[i].pObj == this )
{
lpReplaceObj = &pWorld->m_aReplaceObj[i];
break;
}
}
if( lpReplaceObj == NULL )
{
ASSERT( pWorld->m_cbReplaceObj < MAX_REPLACEOBJ );
lpReplaceObj = &pWorld->m_aReplaceObj[pWorld->m_cbReplaceObj++];
lpReplaceObj->pObj = this;
}
lpReplaceObj->dwWorldID = dwWorldID;
lpReplaceObj->vPos = vPos;
lpReplaceObj->uIdofMulti = uIdofMulti;
#ifdef __LAYER_1015
lpReplaceObj->nLayer = nLayer;
#endif // __LAYER_1015
#if __VER >= 14 // __INSTANCE_DUNGEON
if( IsPlayer() )
{
if( CInstanceDungeonHelper::GetInstance()->IsInstanceDungeon( pWorld->GetID() )
&& !CInstanceDungeonHelper::GetInstance()->IsInstanceDungeon( dwWorldID ) )
//ÀÔÀå Àοø¼ö¸¦ °¨¼Ò½ÃŲ´Ù.
CInstanceDungeonHelper::GetInstance()->LeaveDungeon( static_cast<CUser*>( this ), pWorld->GetID() );
}
#endif // __INSTANCE_DUNGEON
return TRUE;
}