I am trying to check the status of some eggs.
When I try this:
printall(item.unk_cc)
I get
--------------------unk_cc
anon_1 = -1
anon_2 = -1
anon_3 = -1
anon_4 = -1
anon_5 = -1
anon_6 = -1
anon_7 = 0
Across many eggs only anon_7 changes from 0 to -1.
After a bit of testing, only eggs with anon_7 == -1 hatch.
I was curious about this so I did some poking, and the above statement is definitely not true. I've observed hatching regardless of the state of anon_7 and also failed hatchings regardless of its state.
What I have discovered is that egglayers are treated by the game much as mammals. If the mother is "pregnant", with a complete relations.pregnancy_ptr and a set relations.pregnancy_timer when she lays the eggs, and then remains on the eggs, the eggs will hatch at the end of that pregnancy_timer.
Using DFusions "make pet pregnant" code directly fails, because it sets the timer to only 10 ticks. The timer must remain above zero for the three months of hatching. A _ptr must exist at the time of egg laying, and the timer must be above 0 when its time to hatch.
To accomplish parthenogenesis, create a pregnancy_ptr like dfusion does - you can even use the dfusion tool - and then set the timer to something higher than 10000
You can probably reduce the time to near instant by increasing the .age of the egg item, but I haven't tried this.
Mothers get "pregnant" regardless of the availability of a nest box, but having a box and laying eggs before getting pregnant means the eggs won't ever hatch.
Letting the timer run down to 0 with no nest box sometimes "breaks" the bird, who will never get pregnant again. Other times they just get re-pregnant. You can move a bird, away from a nest box and back again and still have a hatching, so long as the bird is back before the time to hatch. You can also change the number of eggs, and all will hatch.