cloning minions
Janet pointed this one out to me...
This commit is contained in:
@@ -725,14 +725,24 @@ struct monst *mon;
|
||||
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;
|
||||
|
||||
Reference in New Issue
Block a user