bool CImportFile::ImportSCP( CScript & s, word wModeFlags ) { ADDTOCALLSTACK("CImportFile::ImportSCP"); // Import a SPHERE format SCP file. while ( s.FindNextSection()) { CheckLast(); if ( s.IsSectionType( "ACCOUNT" )) { g_Cfg.LoadResourceSection( &s ); continue; } else if ( s.IsSectionType( "WORLDCHAR" ) || s.IsSectionType("WC")) { ImportFix(); if ( wModeFlags & IMPFLAGS_CHARS ) { m_pCurObj = CChar::CreateBasic(static_cast<CREID_TYPE>(g_Cfg.ResourceGetIndexType(RES_CHARDEF, s.GetArgStr()))); } } else if ( s.IsSectionType( "WORLDITEM" ) || s.IsSectionType("WI")) { if ( wModeFlags & IMPFLAGS_ITEMS ) { m_pCurObj = CItem::CreateTemplate(static_cast<ITEMID_TYPE>(g_Cfg.ResourceGetIndexType(RES_ITEMDEF, s.GetArgStr()))); } } else { continue; } if ( m_pCurObj == NULL ) continue; while ( s.ReadKeyParse()) { if ( s.IsKey( "SERIAL")) { if ( m_pCurSer != NULL ) return false; m_pCurSer = new CImportSer( s.GetArgVal()); m_pCurSer->m_pObj = m_pCurObj; m_ListSer.InsertHead( m_pCurSer ); continue; } if ( m_pCurSer == NULL ) continue; if ( s.IsKey( "CONT" )) { m_pCurSer->m_dwContSer = s.GetArgVal(); } else if ( s.IsKey( "LAYER" )) { m_pCurSer->m_layer = static_cast<LAYER_TYPE>(s.GetArgVal()); } else { m_pCurObj->r_LoadVal( s ); } } } return true; }