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