update.c, around line 693, you should fine this in mobile_update:
/* NPCs belonging to prototype areas should be doing nothing */
if( IS_NPC(ch) && IS_AREA_FLAG( ch->pIndexData->area, AFLAG_PROTOTYPE ) )
You should add the following directly above:
/* Mobs with no assigned area should not be updated - Samson 6-11-04 */
if( IS_NPC(ch) && ch->pIndexData->area == NULL )
Then in db.c, find the following in create_object:
/* Wow. This hackish looking thing is pretty bad isn't it?
* I thought so too, but hey. Dwip wanted to bring in a bunch of old stuff that needed to be armorgen'd.
* This was about the only way I could think to do it.
* Won't bother you much if you haven't set v3 or v4 on an armor though.
* All in the name of being able to retain stats if deviating from the armorgen specs.
* Samson 12-23-02
if( obj->pIndexData->area->version pIndexData->area && obj->pIndexData->area->version < 18 )
This is caused because creating a mob or an object when you haven't used aassign to set an area pointer for yourself the mob or object is given a NULL, and the prototype flag check crashes the game.