Yeenoghu

From NetHackWiki
Revision as of 01:14, 31 October 2018 by Vivit (talk | contribs) (Origin)
Jump to navigation Jump to search

Yeenoghu, &, is a monster in NetHack, specifically, one of the demon lords. He can deal out tremendous physical damage if you lack free action and MC3, and he can zap you with magic missiles, like Angels do, but is not generally regarded a problem if you are prepared for him. He is generated with a flail. Yeenoghu respects Elbereth, however, Elbereth does not work in Gehennom, where Yeenoghu is most likely to be encountered, as of NetHack 3.6.1.

Yeenoghu, together with Juiblex, is one of the two demon lords that can be summoned with own-race sacrifice. If the player is lawful or neutral when performing this type of sacrifice, the demon princes will be hostile when summoned, and peaceful if chaotic.

There is a 1/260 chance that a water demon may summon him (or Juiblex). So it's possible for him to appear quite early in the game and obliterate a weak character.

Combat

As with other Demon Princes (and quest nemeses), Yeenoghu will teleport next to you to deliver melee attacks and fire magic missiles. When at low health, he will teleport to the upstair tile to regenerate, and if approached too closely, will escape up them. As he respects Elbereth (though only outside of Gehennom), an active Elbereth on the upstair will prevent this behavior, allowing you to dispatch him without having to give chase. Note that Yeenoghu's confusing gaze will complicate your attempts to engrave, so if possible this should be prepared before engaging him. In the event that he does escape upstairs, simply follow him up, wait on the downstair tile for him to teleport back to you after regenerating, then promptly go back down the stairs; he will follow you down, but you will now occupy the upstair tile, blocking his way.

As Yeenoghu is covetous, attempting to charm Yeenoghu through the spell or a scroll of taming can only make him peaceful, provided it even succeeds.

As Yeenoghu is a chaotic demon lord and thus able to summon Demogorgon directly, dispatching him quickly may be advised.

Due to having a magic missile attack, Yeenoghu is automatically magic resistant. Zapping him with magic missile or a wand of death does nothing and you just waste your Pw or charges if you try.

History

Yeenoghu first appears in NetHack 3.0.0.

"A ludicrous bug"

Yeenoghu is the subject of one of the longest-running bugs in NetHack history. In NetHack 3.1.0, the Riders were introduced. The code that handles their special attacks comes right after that which handles Yeenoghu's confusion attack.[1] Early versions had this code inserted carelessly; consequently, after Yeenoghu used his confusion attack, execution would proceed into the section that handles Death's touch:[2]

Yeenoghu reaches out with its deadly touch.--More--
Do you want your possessions identified? [yn]

A comment at the end of Yeenoghu's section read:

/* fall through to next case */

and contemporary source-divers thought from this that the behavior was deliberate. Thus for many years the bug was never reported.

Pat Rankin of the DevTeam was made aware of this property in a rec.games.roguelike.nethack discussion, and called it "a ludicrous bug".[3] The then-current version was NetHack 3.3.1. In NetHack 3.4.0, Yeenoghu's illicit deadly touch was taken away.

Umber hulks were not affected, because their confusion attack is handled in a different part of the code.[4]

These source excerpts might make clear the origin of the bug. Here is src/mhitu.c lines 999-1012 from NetHack 3.0.0, which was before the Riders existed:

#ifdef HARD /* a non-gaze AD_CONF exists only for one of the demons */
            case AD_CONF:
                hitmsg(mtmp,mattk->aatyp);
                if(!mtmp->mcan && !rn2(4) && !mtmp->mspec_used) {
                    mtmp->mspec_used += (dmg + rn2(6));
                    if(Confusion)
                         You("are getting even more confused.");
                    else You("are getting confused.");
                    make_confused(HConfusion + dmg, FALSE);
                }
#endif
                /* fall through to next case */
            default:    dmg = 0;
                        break;

Here is a partial quote of src/mhitu.c lines 1214-1258 from NetHack 3.1.0, the first version to implement the Riders:

            case AD_CONF:
                hitmsg(mtmp, mattk);
                if(!mtmp->mcan && !rn2(4) && !mtmp->mspec_used) {
                    mtmp->mspec_used = mtmp->mspec_used + (dmg + rn2(6));
                    if(Confusion)
                         You("are getting even more confused.");
                    else You("are getting confused.");
                    make_confused(HConfusion + dmg, FALSE);
                }
                /* fall through to next case */
            case AD_DETH:
                pline("%s reaches out with its deadly touch.", Monnam(mtmp));
                [... the rest of the Rider code ...]
            default:    dmg = 0;
                        break;

The Rider code was carelessly placed between the AD_CONF section, which handles Yeenoghu's confusion attack, and the default section, where it was supposed to finish. Thus execution improperly proceeded into Death's touch attack.

The bug was written up as bug C331-96[5] and was fixed in NetHack 3.4.0. Here is src/mhitu.c lines 1474-1486 from NetHack 3.4.3:

            case AD_CONF:
                hitmsg(mtmp, mattk);
                if(!mtmp->mcan && !rn2(4) && !mtmp->mspec_used) {
                    mtmp->mspec_used = mtmp->mspec_used + (dmg + rn2(6));
                    if(Confusion)
                         You("are getting even more confused.");
                    else You("are getting confused.");
                    make_confused(HConfusion + dmg, FALSE);
                }
                dmg = 0;
                break;
            case AD_DETH:
                pline("%s reaches out with its deadly touch.", Monnam(mtmp));
                [... the rest of the Rider code ...]

The "dmg = 0;" and "break;" lines duplicate the ones in the default section, and Yeenoghu is restored to his pre-3.1.0 behavior.

Variants

In UnNetHack, Yeenoghu no longer respects Elbereth.

In Slash'EM Extended, in honour of the "ludicrous bug", Yeenoghu gets the extra ability to zap the player with finger of death. Unlike the touch of death, however, reflection can save the player here.

Origin

He is drawn from Dungeons and Dragons. He is the demon lord of gnolls, which resemble anthropomorphic hyenas. He is supposed to wield a triple flail.

Encyclopedia entry

Yeenoghu, the demon lord of gnolls, still exists although
all his followers have been wiped off the face of the earth.
He casts magic projectiles at those close to him, and a mere
gaze into his piercing eyes may hopelessly confuse the
battle-weary adventurer.

References

This page may need to be updated for the current version of NetHack.

It may contain text specific to NetHack 3.6.1. Information on this page may be out of date.

Editors: After reviewing this page and making necessary edits, please change the {{nethack-361}} tag to the current version's tag or {{noversion}} as appropriate.