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

Function kick_steed

src/steed.c:401–450  ·  view source on GitHub ↗

The player kicks or whips the steed */

Source from the content-addressed store, hash-verified

399
400/* The player kicks or whips the steed */
401void
402kick_steed(void)
403{
404 char He[BUFSZ]; /* monverbself() appends to the "He"/"She"/"It" value */
405 if (!u.usteed)
406 return;
407
408 /* [ALI] Various effects of kicking sleeping/paralyzed steeds */
409 if (helpless(u.usteed)) {
410 /* We assume a message has just been output of the form
411 * "You kick <steed>."
412 */
413 Strcpy(He, mhe(u.usteed));
414 *He = highc(*He);
415 if ((u.usteed->mcanmove || u.usteed->mfrozen) && !rn2(2)) {
416 if (u.usteed->mcanmove)
417 u.usteed->msleeping = 0;
418 else if (u.usteed->mfrozen > 2)
419 u.usteed->mfrozen -= 2;
420 else {
421 u.usteed->mfrozen = 0;
422 u.usteed->mcanmove = 1;
423 }
424 if (helpless(u.usteed))
425 pline("%s stirs.", He);
426 else
427 /* if hallucinating, might yield "He rouses herself" or
428 "She rouses himself" */
429 pline("%s!", monverbself(u.usteed, He, "rouse", (char *) 0));
430 } else
431 pline("%s does not respond.", He);
432 return;
433 }
434
435 /* Make the steed less tame and check if it resists */
436 if (u.usteed->mtame)
437 u.usteed->mtame--;
438 if (!u.usteed->mtame && u.usteed->mleashed)
439 m_unleash(u.usteed, TRUE);
440 if (!u.usteed->mtame
441 || (u.ulevel + u.usteed->mtame < rnd(MAXULEV / 2 + 5))) {
442 newsym(u.usteed->mx, u.usteed->my);
443 dismount_steed(DISMOUNT_THROWN);
444 return;
445 }
446
447 pline("%s gallops!", Monnam(u.usteed));
448 u.ugallop += rn1(20, 30);
449 return;
450}
451
452/*
453 * Try to find a dismount point adjacent to the steed's location.

Callers 2

dokickFunction · 0.85
use_whipFunction · 0.85

Calls 9

highcFunction · 0.85
rn2Function · 0.85
monverbselfFunction · 0.85
m_unleashFunction · 0.85
rndFunction · 0.85
newsymFunction · 0.85
dismount_steedFunction · 0.85
MonnamFunction · 0.85
plineFunction · 0.70

Tested by

no test coverage detected