void free_obj( OBJ_DATA *obj ) { AFFECT_DATA *paf, *paf_next; EXTRA_DESCR_DATA *ed, *ed_next; /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ if ( !IS_VALID(obj) ) return; for ( paf = obj->affected; paf != NULL; paf = paf_next ) { paf_next = paf->next; free_affect( paf ); } obj->affected = NULL; for ( ed = obj->extra_descr; ed != NULL; ed = ed_next ) { ed_next = ed->next; free_extra_descr( ed ); } obj->extra_descr = NULL; free_string( obj->name ); free_string( obj->description ); free_string( obj->short_descr ); free_string( obj->owner ); INVALIDATE( obj ); obj->next = obj_free; obj_free = obj; }
void free_room_index (ROOM_INDEX_DATA * pRoom) { int door; EXTRA_DESCR_DATA *pExtra; RESET_DATA *pReset; free_string (pRoom->name); free_string (pRoom->description); free_string (pRoom->owner); for (door = 0; door < MAX_DIR; door++) { if (pRoom->exit[door]) free_exit (pRoom->exit[door]); } for (pExtra = pRoom->extra_descr; pExtra; pExtra = pExtra->next) { free_extra_descr (pExtra); } for (pReset = pRoom->reset_first; pReset; pReset = pReset->next) { free_reset_data (pReset); } pRoom->next = room_index_free; room_index_free = pRoom; return; }
void free_obj_index( OBJ_INDEX_DATA *pObj ) { EXTRA_DESCR_DATA *pExtra, *wExtra; AFFECT_DATA *pAf, *wAf; free_string( pObj->name ); free_string( pObj->short_descr ); free_string( pObj->description ); for ( pAf = pObj->affected; pAf; pAf = wAf ) { wAf = pAf->next; free_affect( pAf ); } for ( pExtra = pObj->extra_descr; pExtra; pExtra = wExtra ) { wExtra = pExtra->next; free_extra_descr( pExtra ); } pObj->next = obj_index_free; obj_index_free = pObj; return; }
void free_obj_index( OBJ_INDEX_DATA *pObj ) { EXTRA_DESCR_DATA *pExtra; AFFECT_DATA *pAf; free_string( pObj->name ); free_string( pObj->name2 ); free_string( pObj->name3 ); free_string( pObj->name4 ); free_string( pObj->name5 ); free_string( pObj->name6 ); free_string( pObj->short_descr ); free_string( pObj->description ); free_string( pObj->item_description ); free_string( pObj->ident_description ); free_string( pObj->hidden_description ); free_string( pObj->comments ); for ( pAf = pObj->affected; pAf; pAf = pAf->next ) { free_affect( pAf ); } for ( pExtra = pObj->extra_descr; pExtra; pExtra = pExtra->next ) { free_extra_descr( pExtra ); } pObj->next = obj_index_free; obj_index_free = pObj; free_prog( pObj->progs ); return; }
void DelED(OBJ_DATA * obj, EXTRA_DESCR_DATA * ed) { OBJ_INDEX_DATA * pObj; EXTRA_DESCR_DATA * eed; EXTRA_DESCR_DATA * ped; ped=NULL; pObj = obj->pIndexData; for(eed=pObj->extra_descr;eed!=NULL;eed=eed->next) { if(eed==ed) break; ped=eed; } if(!ped) pObj->extra_descr = ed->next; else ped->next = ed->next; free_extra_descr(ed); }