One in three generated eggs is from a non-unique, non-aquatic and oviparous species, picked according to the normal random monster generation for the current level. The species of monster eggs can be identified by any magical method; if the post-identification type is still just "egg", it is not a monster egg (presumably just an ordinary unfertilized hen egg). If it is a monster egg, you will now recognize the type in the future. Monster eggs can also be identified by seeing one hatch. Polymorphing into the adult form of an oviparious monster (regardless of gender) will identify all future eggs of that type. Polymorphing into any type of adult dragon will identify all types of dragon eggs as well.
If you polymorph into a female oviparous monster, you can lay an egg with the #sit command, and when it hatches it will become your pet. Laying an egg will reduce your nutrition by the nutrition value of an egg. Breaking your own eggs carries a −5 Luck penalty, but eating them does not. A randomly generated dragon egg will also become your pet if you are carrying it when it hatches. If you are male, there is a 50% chance that any egg which hatches while you are carrying it will become your pet.
A fresh monster egg will hatch with about 99.954% chance, unless the relevant monster (either baby or adult form) is genocided. If an egg will hatch, it will do so after 151–200 turns. Eggs will only hatch if in your inventory or on the floor. If the egg is kept in a container on the turn it's supposed to hatch, it will turn infertile. Zapping an egg with a spell or wand of undead turning will re-fertilize it and reset the hatch timeout. Strangely enough, re-fertilizing eggs will not affect their age (so they may still be stale or rotten).
Eggs kept in an ice box will not age and become rotten; however, this does not suspend their hatching timer, so leaving an egg in an ice box for too long will prevent it from ever hatching.
Although eggs have a surprisingly high nutrition/weight ratio, eating them can be dangerous. They may be rotten and cause you to vomit, or they may be cockatrice eggs, which will cause delayed stoning if you eat them. If you are already satiated, you won't get a warning about eating an egg, even if it would choke you to death. It is safer to leave eggs sitting on the ground as food for carnivorous pets — throwing them will cause them to break 99% of the time.
Cockatrice eggs are popular as projectiles that will petrify any stoning-susceptible monsters they hit. (When used this way, they are sometimes referred to as "grenades".) When you throw an egg, there is a risk that it will miss its target and go to waste, so you may prefer to wield the egg. Unlike wielding a cockatrice corpse, this does not have the risk of petrifying yourself. If using cockatrice eggs that you have laid yourself, there is a Luck penalty for breaking your own eggs. You can wield an entire stack of eggs, which will cause them all to break in a single attack; you can use #adjust to avoid this. If you break a stack of your own eggs, the Luck penalty is −1 for each egg, up to a maximum of −5.
- Ugh. Rotten egg.
- You ate a egg that sat around for too long and became rotten; you are now nauseous.
- You see a <monster> drop out of your pack!
- An egg hatched while you were carrying it.
- Its cries sound like "<mommy/daddy>".
- A newly hatched monster came out tame and is now your pet.
But I asked why not keep it and let the hen sit on it till it
hatched, and then we could see what would come out of it.
"Nothing good, I'm certain of that," Mom said. "It would
probably be something horrible. But just remember, if it's a
crocodile or a dragon or something like that, I won't have it
in my house for one minute."
- mkobj.c in NetHack 3.6.1, line 870
- mon.c in NetHack 3.4.3, line 2596
- sit.c in NetHack 3.4.3, line 303
- dothrow.c in NetHack 3.4.3, line 1588
- timeout.c in NetHack 3.4.3, line 432: The identity of one's father is learned, not innate
- src/timeout.c in NetHack 3.6.2, line 740: the chance not to hatch is 150^50 * 150! / 200! ~= 0.00046
- dead_species in mon.c
- obj.h in NetHack 3.4.3, line 207
- timeout.c in NetHack 3.4.3, line 389
- revive_egg in zap.c
- breaktest in Dothrow.c
- dothrow.c in NetHack 3.4.3, line 1588
- uhitm.c in NetHack 3.4.3, line 757