edog
#define EDOG(mp) ((struct edog *)(&(mp->mextra[0])))
struct edog *edog = EDOG(mtmp);
if (moves <= edog->eattime)
if (moves > edog->hungrytime + 500 && !mtmp->mconf) {
} else if (moves > edog->hungrytime + 750 || mtmp->mhp < 1) {
if (!rn2(udist) || !rn2((int) edog->apport))
if ((unsigned) rn2(10) < edog->apport) {
if (edog->apport > 1)
edog->apport--;
edog->dropdist = udist; /* hpscdi!jon */
edog->droptime = moves;
if ((unsigned) rn2(20) < edog->apport + 3)
if (rn2(udist) || !rn2((int) edog->apport)) {
!mtmp->minvent && edog->apport > (unsigned)rn2(8)) {
(gtyp != DOGFOOD && gtyp != APPORT && moves < edog->hungrytime)) {
(mtmp->minvent && rn2((int) edog->apport)))
(otyp < ACCFOOD || edog->hungrytime <= moves)) {
edog->eattime =
if (edog->hungrytime < moves)
edog->hungrytime = moves;
edog->hungrytime +=
edog->apport += 200 / (edog->dropdist + moves - edog->droptime);
mtmp2 = newmonst(sizeof(struct edog) + mtmp->mnamelth);
mtmp2->mxlth = sizeof(struct edog);
{"little dog", 'd', 2, 18, 6, 1, 6, sizeof(struct edog)};
{"dog", 'd', 4, 16, 5, 1, 6, sizeof(struct edog)};
{"large dog", 'd', 6, 15, 4, 2, 4, sizeof(struct edog)};