I'm not sure how the "AG_BATTLE" achievement group works, but looking at the source, I found this:
mob.c
if (sd->status.party_id)
map_foreachinallrange(quest_update_objective_sub, &md->bl, AREA_SIZE, BL_PC, sd->status.party_id, md->mob_id);
else if (sd->avail_quests)
quest_update_objective(sd, md->mob_id);
if (achievement_db.mobexists(md->mob_id))
achievement_update_objective(sd, AG_BATTLE, 1, md->mob_id);
if (sd->md && src && src->type == BL_MER && mob_db(md->mob_id)->lv > sd->status.base_level / 2)
mercenary_kills(sd->md);