if (mon->mtame) {
struct monst *m3;
- /* because m2 is a copy of mon it is tame but not init'ed.
- * however, tamedog will not re-tame a tame dog, so m2
- * must be made non-tame to get initialized properly.
- */
- m2->mtame = 0;
- if ((m3 = tamedog(m2, (struct obj *)0)) != 0) {
+ if (mon->isminion) {
+ m3 = newmonst(sizeof(struct epri) + mon->mnamelth);
+ *m3 = *m2;
+ m3->mxlth = sizeof(struct epri);
+ if (m2->mnamelth) Strcpy(NAME(m3), NAME(m2));
+ *(EPRI(m3)) = *(EPRI(mon));
+ replmon(m2, m3);
m2 = m3;
- *(EDOG(m2)) = *(EDOG(mon));
+ } else {
+ /* because m2 is a copy of mon it is tame but not init'ed.
+ * however, tamedog will not re-tame a tame dog, so m2
+ * must be made non-tame to get initialized properly.
+ */
+ m2->mtame = 0;
+ if ((m3 = tamedog(m2, (struct obj *)0)) != 0) {
+ m2 = m3;
+ *(EDOG(m2)) = *(EDOG(mon));
+ }
}
}
return m2;
if (mtmp->mtame) { Strcat(info, ", tame");
#ifdef WIZARD
if (wizard) {
- Sprintf(eos(info), " (%d; hungry %ld; apport %d)",
- mtmp->mtame, EDOG(mtmp)->hungrytime, EDOG(mtmp)->apport);
+ Sprintf(eos(info), " (%d", mtmp->mtame);
+ if (!mtmp->isminion)
+ Sprintf(eos(info), "; hungry %ld; apport %d",
+ EDOG(mtmp)->hungrytime, EDOG(mtmp)->apport);
+ Strcat(info, ")");
}
#endif
}