Unlike players, monsters are entirely controlled by the game DLL. They are entities with edict_t structures like everything else in the world and they reside in the global g_edicts array.
They are created in SpawnEntities. This function reads the monsters off the PAK-file and spawns them depending on the selected skill level.
Each monster has its own C-file in the game DLL, which are prefixed with m_. These files contain code for monster behaviour and spawning. The code of each monster is backed up by common monster code in the files: m_move.c , g_monster.c and g_ai.c .