diff -Nurd nethack-3.4.3-conducts/dat/rumors.fal nethack-3.4.3/dat/rumors.fal
--- nethack-3.4.3-conducts/dat/rumors.fal	2005-01-08 02:29:47.000000000 +0100
+++ nethack-3.4.3/dat/rumors.fal	2005-03-09 14:34:12.590759502 +0100
@@ -14,6 +14,7 @@
 A long worm can be defined recursively.  So how should you attack it?
 A monstrous mind is a toy forever.
 A nymph will be very pleased if you call her by her real name:  Lorelei.
+A priestess and a virgin you might be, but that unicorn won't care.
 A ring of dungeon master control is a great find.
 A ring of extra ring finger is useless if not enchanted.
 A rope may form a trail in a maze.
diff -Nurd nethack-3.4.3-conducts/dat/rumors.tru nethack-3.4.3/dat/rumors.tru
--- nethack-3.4.3-conducts/dat/rumors.tru	2005-01-08 02:29:47.000000000 +0100
+++ nethack-3.4.3/dat/rumors.tru	2005-03-09 14:33:57.733728890 +0100
@@ -6,7 +6,6 @@
 A nymph knows how to unlock chains.
 A potion of blindness lets you see invisible things.
 A priest can get the gods to listen easily.
-A priestess and a virgin you might be, but that unicorn won't care.
 A ring of conflict is a bad thing if there is a nurse in the room.
 A short sword is not as good as a long sword.
 A succubus will go farther than a nymph.
diff -Nurd nethack-3.4.3-conducts/include/mondata.h nethack-3.4.3/include/mondata.h
--- nethack-3.4.3-conducts/include/mondata.h	2005-01-08 02:29:48.000000000 +0100
+++ nethack-3.4.3/include/mondata.h	2005-03-09 14:33:40.666990013 +0100
@@ -190,4 +190,9 @@
 #define befriend_with_obj(ptr, obj) ((obj)->oclass == FOOD_CLASS && \
 				     is_domestic(ptr))
 
+/* 1KB: it probably should be u.uvirgin, as conducts are defined as */
+/* things with no effect on the game itself, but blargh... */
+#define unicorn_bad(mon)	(is_unicorn((mon)->data) && !(mon->mpeaceful &&\
+                                  flags.female && !u.uconduct.sex))
+
 #endif /* MONDATA_H */
diff -Nurd nethack-3.4.3-conducts/src/monmove.c nethack-3.4.3/src/monmove.c
--- nethack-3.4.3-conducts/src/monmove.c	2005-01-08 02:29:49.000000000 +0100
+++ nethack-3.4.3/src/monmove.c	2005-03-09 14:33:40.672989219 +0100
@@ -892,7 +892,7 @@
 	else flag |= ALLOW_U;
 	if (is_minion(ptr) || is_rider(ptr)) flag |= ALLOW_SANCT;
 	/* unicorn may not be able to avoid hero on a noteleport level */
-	if (is_unicorn(ptr) && !level.flags.noteleport) flag |= NOTONL;
+	if (unicorn_bad(mtmp) && !level.flags.noteleport) flag |= NOTONL;
 	if (passes_walls(ptr)) flag |= (ALLOW_WALL | ALLOW_ROCK);
 	if (passes_bars(ptr)) flag |= ALLOW_BARS;
 	if (can_tunnel) flag |= ALLOW_DIG;
@@ -917,7 +917,7 @@
 	    /* allow monsters be shortsighted on some levels for balance */
 	    if(!mtmp->mpeaceful && level.flags.shortsighted &&
 	       nidist > (couldsee(nix,niy) ? 144 : 36) && appr == 1) appr = 0;
-	    if (is_unicorn(ptr) && level.flags.noteleport) {
+	    if (unicorn_bad(mtmp) && level.flags.noteleport) {
 		/* on noteleport levels, perhaps we cannot avoid hero */
 		for(i = 0; i < cnt; i++)
 		    if(!(info[i] & NOTONL)) avoid=TRUE;
@@ -1034,7 +1034,7 @@
 	    /* Place a segment at the old position. */
 	    if (mtmp->wormno) worm_move(mtmp);
 	} else {
-	    if(is_unicorn(ptr) && rn2(2) && !tele_restrict(mtmp)) {
+	    if(unicorn_bad(mtmp) && rn2(2) && !tele_restrict(mtmp)) {
 		(void) rloc(mtmp, FALSE);
 		return(1);
 	    }
