@@ -743,7 +743,7 @@ extern int count_worn_armor(void);
|
||||
|
||||
extern void newedog(struct monst *) NONNULLARG1;
|
||||
extern void free_edog(struct monst *) NONNULLARG1;
|
||||
extern void initedog(struct monst *) NONNULLARG1;
|
||||
extern void initedog(struct monst *, boolean) NONNULLARG1;
|
||||
extern struct monst *make_familiar(struct obj *, coordxy, coordxy, boolean);
|
||||
extern struct monst *makedog(void);
|
||||
extern void update_mlstmv(void);
|
||||
|
||||
38
src/dog.c
38
src/dog.c
@@ -42,25 +42,27 @@ free_edog(struct monst *mtmp)
|
||||
}
|
||||
|
||||
void
|
||||
initedog(struct monst *mtmp)
|
||||
initedog(struct monst *mtmp, boolean everything)
|
||||
{
|
||||
mtmp->mtame = is_domestic(mtmp->data) ? 10 : 5;
|
||||
mtmp->mpeaceful = 1;
|
||||
mtmp->mavenge = 0;
|
||||
set_malign(mtmp); /* recalc alignment now that it's tamed */
|
||||
mtmp->mleashed = 0;
|
||||
mtmp->meating = 0;
|
||||
EDOG(mtmp)->droptime = 0;
|
||||
EDOG(mtmp)->dropdist = 10000;
|
||||
EDOG(mtmp)->apport = ACURR(A_CHA);
|
||||
EDOG(mtmp)->whistletime = 0;
|
||||
EDOG(mtmp)->hungrytime = 1000 + svm.moves;
|
||||
EDOG(mtmp)->ogoal.x = -1; /* force error if used before set */
|
||||
EDOG(mtmp)->ogoal.y = -1;
|
||||
EDOG(mtmp)->abuse = 0;
|
||||
EDOG(mtmp)->revivals = 0;
|
||||
EDOG(mtmp)->mhpmax_penalty = 0;
|
||||
EDOG(mtmp)->killed_by_u = 0;
|
||||
if (everything) {
|
||||
mtmp->mleashed = 0;
|
||||
mtmp->meating = 0;
|
||||
EDOG(mtmp)->droptime = 0;
|
||||
EDOG(mtmp)->dropdist = 10000;
|
||||
EDOG(mtmp)->apport = ACURR(A_CHA);
|
||||
EDOG(mtmp)->whistletime = 0;
|
||||
EDOG(mtmp)->hungrytime = 1000 + svm.moves;
|
||||
EDOG(mtmp)->ogoal.x = -1; /* force error if used before set */
|
||||
EDOG(mtmp)->ogoal.y = -1;
|
||||
EDOG(mtmp)->abuse = 0;
|
||||
EDOG(mtmp)->revivals = 0;
|
||||
EDOG(mtmp)->mhpmax_penalty = 0;
|
||||
EDOG(mtmp)->killed_by_u = 0;
|
||||
}
|
||||
u.uconduct.pets++;
|
||||
}
|
||||
|
||||
@@ -155,7 +157,7 @@ make_familiar(struct obj *otmp, coordxy x, coordxy y, boolean quietly)
|
||||
if (is_pool(mtmp->mx, mtmp->my) && minliquid(mtmp))
|
||||
return (struct monst *) 0;
|
||||
|
||||
initedog(mtmp);
|
||||
initedog(mtmp, TRUE);
|
||||
mtmp->msleeping = 0;
|
||||
if (otmp) { /* figurine; resulting monster might not become a pet */
|
||||
chance = rn2(10); /* 0==tame, 1==peaceful, 2==hostile */
|
||||
@@ -244,7 +246,7 @@ makedog(void)
|
||||
if (!gp.petname_used++ && *petname)
|
||||
mtmp = christen_monst(mtmp, petname);
|
||||
|
||||
initedog(mtmp);
|
||||
initedog(mtmp, TRUE);
|
||||
return mtmp;
|
||||
}
|
||||
|
||||
@@ -1214,7 +1216,9 @@ tamedog(
|
||||
/* add the pet extension */
|
||||
if (!has_edog(mtmp)) {
|
||||
newedog(mtmp);
|
||||
initedog(mtmp);
|
||||
initedog(mtmp, TRUE);
|
||||
} else {
|
||||
initedog(mtmp, FALSE);
|
||||
}
|
||||
|
||||
if (obj) { /* thrown food */
|
||||
|
||||
@@ -2572,7 +2572,7 @@ cloneu(void)
|
||||
return NULL;
|
||||
mon->mcloned = 1;
|
||||
mon = christen_monst(mon, svp.plname);
|
||||
initedog(mon);
|
||||
initedog(mon, TRUE);
|
||||
mon->m_lev = gy.youmonst.data->mlevel;
|
||||
mon->mhpmax = u.mhmax;
|
||||
mon->mhp = u.mh / 2;
|
||||
|
||||
@@ -1680,7 +1680,7 @@ seffect_light(struct obj **sobjp)
|
||||
mon = makemon(&mons[pm], u.ux, u.uy,
|
||||
MM_EDOG | NO_MINVENT | MM_NOMSG);
|
||||
if (mon) {
|
||||
initedog(mon);
|
||||
initedog(mon, TRUE);
|
||||
mon->msleeping = 0;
|
||||
mon->mcan = TRUE;
|
||||
if (canspotmon(mon))
|
||||
|
||||
Reference in New Issue
Block a user