MCPcopy Create free account
hub / github.com/NetHack/NetHack / mon_adjust_speed

Function mon_adjust_speed

src/worn.c:487–564  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

485}
486
487void
488mon_adjust_speed(
489 struct monst *mon,
490 int adjust, /* positive => increase speed, negative => decrease */
491 struct obj *obj) /* item to make known if effect can be seen */
492{
493 struct obj *otmp;
494 boolean give_msg = !gi.in_mklev, petrify = FALSE;
495 unsigned int oldspeed = mon->mspeed;
496
497 switch (adjust) {
498 case 2:
499 mon->permspeed = MFAST;
500 give_msg = FALSE; /* special-case monster creation */
501 break;
502 case 1:
503 if (mon->permspeed == MSLOW)
504 mon->permspeed = 0;
505 else
506 mon->permspeed = MFAST;
507 break;
508 case 0: /* just check for worn speed boots */
509 break;
510 case -1:
511 if (mon->permspeed == MFAST)
512 mon->permspeed = 0;
513 else
514 mon->permspeed = MSLOW;
515 break;
516 case -2:
517 mon->permspeed = MSLOW;
518 give_msg = FALSE; /* (not currently used) */
519 break;
520 case -3: /* petrification */
521 /* take away intrinsic speed but don't reduce normal speed */
522 if (mon->permspeed == MFAST)
523 mon->permspeed = 0;
524 petrify = TRUE;
525 break;
526 case -4: /* green slime */
527 if (mon->permspeed == MFAST)
528 mon->permspeed = 0;
529 give_msg = FALSE;
530 break;
531 }
532
533 for (otmp = mon->minvent; otmp; otmp = otmp->nobj)
534 if (otmp->owornmask && objects[otmp->otyp].oc_oprop == FAST)
535 break;
536 if (otmp) /* speed boots */
537 mon->mspeed = MFAST;
538 else
539 mon->mspeed = mon->permspeed;
540
541 /* no message if monster is immobile (temp or perm) or unseen */
542 if (give_msg && (mon->mspeed != oldspeed || petrify) && mon->data->mmove
543 && !(mon->mfrozen || mon->msleeping) && canseemon(mon)) {
544 /* fast to slow (skipping intermediate state) or vice versa */

Callers 13

potionhitFunction · 0.85
mhitm_ad_slowFunction · 0.85
mcast_spellFunction · 0.85
update_mon_extrinsicsFunction · 0.85
golemeffectsFunction · 0.85
minstapetrifyFunction · 0.85
makemonFunction · 0.85
bhitmFunction · 0.85
reviveFunction · 0.85
use_miscFunction · 0.85
mon_consume_unstoneFunction · 0.85
muse_unslimeFunction · 0.85

Calls 4

canseemonFunction · 0.85
pline_monFunction · 0.85
MonnamFunction · 0.85
learnwandFunction · 0.85

Tested by

no test coverage detected