Lines Matching refs:mtmp
91 struct monst *mtmp;
99 * note that mtmp or mtmp->nmon might get killed while mtmp
103 for (mtmp = fmon; mtmp; mtmp = mtmp->nmon)
104 if (mtmp->mlstmv < moves)
110 mtmp->mlstmv = moves;
116 inpool = (levl[mtmp->mx][mtmp->my].typ == POOL);
117 iseel = (mtmp->data->mlet == ';');
119 if (cansee(mtmp->mx, mtmp->my))
120 pline("%s drowns.", Monnam(mtmp));
121 mondead(mtmp);
126 if (mtmp->mhp > 1)
127 mtmp->mhp--;
128 mtmp->mflee = 1;
129 mtmp->mfleetim += 2;
132 if (mtmp->mblinded && !--mtmp->mblinded)
133 mtmp->mcansee = 1;
134 if (mtmp->mfleetim && !--mtmp->mfleetim)
135 mtmp->mflee = 0;
136 if (mtmp->mimic)
138 if (mtmp->mspeed != MSLOW || !(moves % 2)) {
141 if (Conflict && cansee(mtmp->mx, mtmp->my)
142 && (fr = fightm(mtmp)) == 2)
144 if (fr < 0 && dochugw(mtmp))
147 if (mtmp->mspeed == MFAST && dochugw(mtmp))
179 justswld(struct monst *mtmp, const char *name)
182 mtmp->mx = u.ux;
183 mtmp->my = u.uy;
184 u.ustuck = mtmp;
185 pmon(mtmp);
195 youswld(struct monst *mtmp, int dam, unsigned int die, const char *name)
197 if (mtmp != u.ustuck)
206 done_in_by(mtmp);
213 dochugw(struct monst *mtmp)
215 int x = mtmp->mx;
216 int y = mtmp->my;
217 int dead = dochug(mtmp);
222 if (!mtmp->mpeaceful)
223 if (mtmp->data->mlevel > warnlevel)
224 if ((dd = dist(mtmp->mx, mtmp->my)) < dist(x, y))
226 if (!canseemon(mtmp))
227 warnlevel = mtmp->data->mlevel;
233 dochug(struct monst *mtmp)
238 if (mtmp->cham && !rn2(6))
239 (void) newcham(mtmp, &mons[dlevel + 14 + rn2(CMNUM - 14 - dlevel)]);
240 mdat = mtmp->data;
246 mtmp->mhp < mtmp->mhpmax)
247 mtmp->mhp++;
249 if (mtmp->mfroz)
252 if (mtmp->msleep) {
256 if (cansee(mtmp->mx, mtmp->my) &&
260 || (!rn2(7) && !mtmp->mimic)))
261 mtmp->msleep = 0;
266 wipe_engr_at(mtmp->mx, mtmp->my, 1);
269 if (mtmp->mconf && !rn2(50))
270 mtmp->mconf = 0;
273 if (mtmp->mflee && strchr("tNL", mdat->mlet) && !rn2(40)) {
274 rloc(mtmp);
281 if (mtmp->mflee && !mtmp->mfleetim
282 && mtmp->mhp == mtmp->mhpmax && !rn2(25))
283 mtmp->mflee = 0;
285 nearby = (dist(mtmp->mx, mtmp->my) < 3);
288 if (scared && !mtmp->mflee) {
289 mtmp->mflee = 1;
290 mtmp->mfleetim = (rn2(7) ? rnd(10) : rnd(100));
293 mtmp->mflee ||
294 mtmp->mconf ||
295 (mtmp->minvis && !rn2(3)) ||
297 (mdat->mlet == 'L' && !u.ugold && (mtmp->mgold || rn2(2))) ||
298 (!mtmp->mcansee && !rn2(4)) ||
299 mtmp->mpeaceful
301 tmp = m_move(mtmp, 0); /* 2: monster died moving */
306 !mtmp->mpeaceful && u.uhp > 0 && !scared) {
307 if (mhitu(mtmp))
312 tmp = m_move(mtmp, 1);
317 m_move(struct monst *mtmp, int after)
324 char msym = mtmp->data->mlet;
330 if (mtmp->mfroz || mtmp->msleep)
332 if (mtmp->mtrapped) {
333 i = mintrap(mtmp);
339 if (mtmp->mhide && o_at(mtmp->mx, mtmp->my) && rn2(10))
343 if (mtmp->wormno)
348 if (mtmp->mtame) {
349 return (dog_move(mtmp, after));
352 if (mtmp->isshk) {
353 mmoved = shk_move(mtmp);
359 if (mtmp->isgd) {
368 || (msym == '1' && (mtmp->mhp < 7 || (!xdnstair && !rn2(5))
370 if (mtmp->mhp < 7 || (msym == 't' && rn2(2)))
371 rloc(mtmp);
373 mnexto(mtmp);
379 inrange(mtmp);
381 if (msym == 'U' && !mtmp->mcan && canseemon(mtmp) &&
382 mtmp->mcansee && rn2(5)) {
384 pline("%s's gaze has confused you!", Monnam(mtmp));
388 mtmp->mcan = 1;
392 if (!mtmp->mflee && u.uswallow && u.ustuck != mtmp)
395 if (mtmp->mflee)
397 if (mtmp->mconf || Invis || !mtmp->mcansee ||
400 omx = mtmp->mx;
401 omy = mtmp->my;
404 if (msym == 'L' && appr == 1 && mtmp->mgold > u.ugold)
409 * mtmp->msmell or sth
427 likeobjs = mtmp->mhide;
463 cnt = mfndpos(mtmp, poss, info,
474 if (nx == mtmp->mtrack[j].x && ny == mtmp->mtrack[j].y)
502 if (hitmm(mtmp, mtmp2) == 1 && rn2(4) &&
503 hitmm(mtmp2, mtmp) == 2)
508 (void) hitu(mtmp, d(mtmp->data->damn, mtmp->data->damd) + 1);
511 mtmp->mx = nix;
512 mtmp->my = niy;
514 mtmp->mtrack[j] = mtmp->mtrack[j - 1];
515 mtmp->mtrack[0].x = omx;
516 mtmp->mtrack[0].y = omy;
518 if (mtmp->wormno)
519 worm_move(mtmp);
523 rloc(mtmp);
527 if (mtmp->wormno)
528 worm_nomove(mtmp);
533 if (mintrap(mtmp) == 2) /* he died */
536 mpickgold(mtmp);
538 mpickgems(mtmp);
539 if (mtmp->mhide)
540 mtmp->mundetected = 1;
542 pmon(mtmp);
547 mpickgold(struct monst *mtmp)
550 while ((gold = g_at(mtmp->mx, mtmp->my)) != NULL) {
551 mtmp->mgold += gold->amount;
553 if (levl[mtmp->mx][mtmp->my].scrsym == '$')
554 newsym(mtmp->mx, mtmp->my);
559 mpickgems(struct monst *mtmp)
564 if (otmp->ox == mtmp->mx && otmp->oy == mtmp->my)
565 if (mtmp->data->mlet != 'u' || objects[otmp->otyp].g_val != 0) {
567 mpickobj(mtmp, otmp);
568 if (levl[mtmp->mx][mtmp->my].scrsym == GEM_SYM)
569 newsym(mtmp->mx, mtmp->my); /* %% */
579 struct monst *mtmp;
606 } else if ((mtmp = m_at(nx, ny)) != NULL) {
610 if (mtmp->mtame) {
702 mondead(struct monst *mtmp)
704 relobj(mtmp, 1);
705 unpmon(mtmp);
706 relmon(mtmp);
707 unstuck(mtmp);
708 if (mtmp->isshk)
709 shkdead(mtmp);
710 if (mtmp->isgd)
713 if (mtmp->wormno)
714 wormdead(mtmp);
716 monfree(mtmp);
721 replmon(struct monst *mtmp, struct monst *mtmp2)
723 relmon(mtmp);
724 monfree(mtmp);
727 if (u.ustuck == mtmp)
730 replshk(mtmp, mtmp2);
732 replgd(mtmp, mtmp2);
738 struct monst *mtmp;
743 for (mtmp = fmon; mtmp->nmon != mon; mtmp = mtmp->nmon);
744 mtmp->nmon = mon->nmon;
756 monfree(struct monst *mtmp)
758 mtmp->nmon = fdmon;
759 fdmon = mtmp;
765 struct monst *mtmp;
766 while ((mtmp = fdmon) != NULL) {
767 fdmon = mtmp->nmon;
768 free(mtmp);
773 unstuck(struct monst *mtmp)
775 if (u.ustuck == mtmp) {
777 u.ux = mtmp->mx;
778 u.uy = mtmp->my;
788 killed(struct monst *mtmp)
796 if (mtmp->cham)
797 mtmp->data = PM_CHAMELEON;
798 mdat = mtmp->data;
803 mtmp->mtame ? amonnam(mtmp, "poor") : monnam(mtmp));
823 if (mtmp->mpeaceful || mtmp->mtame)
883 x = mtmp->mx;
884 y = mtmp->my;
885 mondead(mtmp);
929 struct monst *mtmp;
931 for (mtmp = fmon; mtmp; mtmp = mtmp->nmon)
932 if (mtmp->cham) {
933 mtmp->cham = 0;
934 (void) newcham(mtmp, PM_CHAMELEON);
941 newcham(struct monst *mtmp, const struct permonst *mdat)
945 if (mdat == mtmp->data)
948 if (mtmp->wormno)
949 wormdead(mtmp); /* throw tail away */
951 if (u.ustuck == mtmp) {
955 mnexto(mtmp);
961 hpn = mtmp->mhp;
962 hpd = (mtmp->data->mlevel) * 8;
965 mtmp->data = mdat;
968 mtmp->mhp = 2 + (hpn * mhp) / hpd;
969 hpn = mtmp->mhpmax;
970 mtmp->mhpmax = 2 + (hpn * mhp) / hpd;
971 mtmp->minvis = (mdat->mlet == 'I') ? 1 : 0;
973 if (mdat->mlet == 'w' && getwn(mtmp))
974 initworm(mtmp);
975 /* perhaps we should clear mtmp->mtame here? */
977 unpmon(mtmp); /* necessary for 'I' and to force pmon */
978 pmon(mtmp);
982 /* Make monster mtmp next to you (if possible) */
984 mnexto(struct monst *mtmp)
988 mtmp->mx = mm.x;
989 mtmp->my = mm.y;
990 pmon(mtmp);
994 ishuman(struct monst *mtmp)
996 return (mtmp->data->mlet == '@');
1000 setmangry(struct monst *mtmp)
1002 if (!mtmp->mpeaceful)
1004 if (mtmp->mtame)
1006 mtmp->mpeaceful = 0;
1007 if (ishuman(mtmp))
1008 pline("%s gets angry!", Monnam(mtmp));
1016 canseemon(struct monst *mtmp)
1018 return ((!mtmp->minvis || See_invisible)
1019 && (!mtmp->mhide || !o_at(mtmp->mx, mtmp->my))
1020 && cansee(mtmp->mx, mtmp->my));