edog
#define EDOG(mp) ((struct edog *)(&(mp->mextra[0])))
struct edog *edog = EDOG(mtmp);
if(moves <= edog->eattime) return(0); /* dog is still eating */
if(moves > edog->hungrytime + 500 && !mtmp->mconf){
if(moves > edog->hungrytime + 750 || mtmp->mhp < 1){
if(!rn2(udist) || !rn2((int) edog->apport))
if(rn2(10) < edog->apport){
if(edog->apport > 1) edog->apport--;
edog->dropdist = udist; /* hpscdi!jon */
edog->droptime = moves;
if (rn2(20) < edog->apport+3)
if (rn2(udist) || !rn2((int) edog->apport)){
!mtmp->minvent && edog->apport > 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) };