Polyself bug

From NetHackWiki
(Redirected from SC343-10)
Jump to: navigation, search

The polyself bug is a fairly serious flaw in the handling of self-polymorph in the case where the character polymorphs into their own race ("You feel like a new <race>!"). It is listed as SC343-10:

SC343-10: Player can raise HP and Pw by dancing with vampires.

To exploit this bug, a player would need to level drain themselves to reach experience level one (whether by the spell, by throwing a level-draining weapon upwards, by the attack of a level-draining monster, such as a wraith or vampire, as alluded to in the official description of the bug, by praying repeatedly, or by using any other method) with max HP and max Pw somewhat higher than normal (by using drain for gain strategy, or just drinking enough non-cursed potions of healing/extra healing/full healing and gain energy).

Once this is done, the act of self-polymorph has a chance of adjusting a player's experience level. If self-polymorph increases the player's level to 2 or 3 from 1, his hit points are approximately doubled and power approximately tripled,[1] which is not fully offset by the act of draining this level. Therefore, by repeatedly polymorphing into their own race and draining level back to one, a player's hit points and power can be increased to the limit of (usually) a 32-bit signed integer.

The act of self-polymorph also has a high chance of killing the player if his level drops below 1; therefore several amulets of life saving are required. Pudding farming is often used to acquire a healthy quantity.


In the Slash'EM Extended variant, the bug has been fixed by removing the code that doubles/triples the player's HP/Pw; if the player's level is increased, their HP and Pw are incremented by a random single-digit value instead.


  1. polyself.c in NetHack 3.4.3, line 161

This page may need to be updated for NetHack 3.6.0.

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

Editors: After reviewing this page and making necessary edits, please change the {{nethack-343}} tag to {{nethack-360}} or {{noversion}} as appropriate.