void CItem::Spawn_KillChildren() { // kill all creatures spawned from this ! DEBUG_CHECK( IsType(IT_SPAWN_CHAR)); int iCurrent = m_itSpawnChar.m_current; for ( int j = 0; j < 256; j++ ) // loop through all maps { if ( !g_MapList.m_maps[j] ) continue; // skip unsupported maps for ( int i = 0; i < g_MapList.GetSectorQty(j); i++ ) { CSector * pSector = g_World.GetSector(j, i); ASSERT(pSector); CChar * pCharNext; CChar * pChar = STATIC_CAST <CChar*>( pSector->m_Chars_Active.GetHead()); for ( ; pChar!=NULL; pChar = pCharNext ) { pCharNext = pChar->GetNext(); if ( pChar->NPC_IsSpawnedBy( this )) { pChar->Delete(); iCurrent --; } } } } if (iCurrent && ! g_Serv.IsLoading()) { DEBUG_CHECK(iCurrent==0); } m_itSpawnChar.m_current = 0; // Should not be necessary Spawn_OnTick( false ); }