Poison resistance

From NetHackWiki
Jump to navigation Jump to search

Poison resistance is a property in NetHack that protects the hero or a monster against most sources of the poison damage type.

Description

A hero with poison resistance will not suffer additional poison damage or loss of attribute points from most sources of poison, and the severity of similar effects from other sources of poison is reduced.[1][2][3][4] Monsters with poison resistance are protected from several effects of poison, including both extra HP loss and instant death.[5][6]

Poison resistance completely blocks the effects of poison from the following sources:

Poison resistance partially blocks the effects of the following sources of poison:

  • As the hero, quaffing a potion of sickness that is not blessed[23]—doing so normally abuses constitution and inflicts up to 10 HP of damage while draining one of their attributes by 3-6 points, and poison resistance reduces this effect to 1 HP of damage and 1 point of attribute drain.[24]
  • Being inside a poison cloud, such as those created by a read scroll of stinking cloud, poison breath weapons or container traps that release noxious gas[25][26][27]—though the hero or monster will not take damage each turn while inside the cloud due to poison resistance, they will still cough unless they are unbreathing, and the gas will also not blind a hero or monster that is eyeless.
  • As the hero, failing to read a level six or higher spellbook and receiving the "contact poison" failure effect[28]—this inflicts up to 10 HP of damage along with draining 3–6 points of strength, which is reduced to 1-6 HP and 1–2 points of strength with poison resistance. Worn gloves will prevent any damage or attribute loss, but metallic gloves (i.e. gauntlets of power) will be corroded.

Poison resistance has no effect on the following:

  • Food poisoning, which occurs from eating a corpse that is too old: both hazards are separate and each check for poison resistance versus immunity to sickness respectively, though food appraisal will warn of both hazards and they can also occur simultaneously, e.g. when eating a kobold corpse left by a kobold zombie or mummy.[29][30][31][32]
  • The effect of inhaling vapors from a potion of sickness that is broken by any means other than freezing from cold damage inflicts up to 5 HP of damage regardless of whether the hero has poison resistance.

List of monsters

The following monsters possess intrinsic poison resistance:

An asterisk (*) denotes monsters that are invalid polymorph forms—for wraiths, the Nazgul is the only invalid polymorph form, while demons have several valid and invalid polymorph forms. Though the hero can catch lycanthropy from werecreatures, this lycanthropy does not grant the poison resistance that werecreatures naturally possess.

Sources

Poison resistance can be obtained through various items and methods, while various monsters have poison resistance and may grant the property to a hero under certain circumstances.

Intrinsic

There are four roles of hero that can either start with poison resistance or gain it through attaining experience levels:

  • All Barbarians start with poison resistance.
  • All Healers start with poison resistance.
  • Monks gain poison resistance upon reaching experience level 3.
  • Tourists gain poison resistance upon reaching experience level 3.

All orcish heroes start the game with poison resistance.

A hero eating a ring of poison resistance has a 1⁄3 chance of successfully absorbing the ring's magic and gaining the intrinsic, while eating an amulet versus poison has a 1⁄5 chance of successfully absorbing the amulet's magic and gaining the intrinsic. Intrinsic poison resistance can be obtained by crowning.

Poison resistance can also be obtained by polymorphing into a monster with poison resistance, or by eating the corpse, glob or tin of one of several monsters:

Monster Conduct Difficulty Chance Notes
red mold vegan 2 3%
  • safe to eat
  • passive fire attack
brown mold vegan 2 3%
  • safe to eat
  • passive cold attack
cave spider meaty 3 7%
red naga hatchling meaty 4 10%
  • safe to eat
  • slightly more common
    in aligned branches
  • can also grant fire resistance
flesh golem meaty 10 12%
centipede meaty 4 13%
blue jelly vegan 5 13%
  • safe to eat
  • passive cold attack
shrieker vegan 2 20%
  • safe to eat
  • no attacks, but shrieks can
    occasionally summon monsters
golden naga hatchling meaty 4 20%
  • safe to eat
  • slightly more common
    in aligned branches
guardian naga hatchling meaty 4 20%
  • safe to eat
  • slightly more common
    in aligned branches
quasit meaty 7 20%
pyrolisk meaty 8 20%
red naga meaty 8 20%
black unicorn meaty 6 27%
  • safe to eat
  • tries to avoid hero
gray unicorn meaty 6 27%
  • safe to eat
  • tries to avoid hero
white unicorn meaty 6 27%
  • safe to eat
  • tries to avoid hero
quivering blob vegan 6 33%
  • safe to eat
golden naga meaty 13 67%
yellow mold vegan 2 7%
homunculus meaty 3 7%
gray ooze vegetarian 4 7%
brown pudding vegetarian 6 7%
black pudding meaty 12 7%
tengu meaty 7 13%
Chromatic Dragon meaty 23 17%
black naga hatchling meaty 4 20%
violet fungus vegan 5 20%
jellyfish meaty 5 20%
soldier ant meaty 6 20%
Wizard of Yendor meaty 34 25%
snake meaty 6 27%
water moccasin meaty 7 27%
killer bee meaty 5 30%
giant beetle meaty 6 33%
giant spider meaty 7 33%
gremlin meaty 8 33%
pit viper meaty 9 40%
cobra meaty 10 40%
xan meaty 9 47%
scorpion meaty 8 50%
black naga meaty 10 53%
queen bee meaty 12 60%
nurse meaty 13 73%
guardian naga meaty 16 80%
Scorpius meaty 17 100%
green dragon meaty 20 100%
Master Kaen meaty 31 100%
chickatrice meaty 7 27%
cockatrice meaty 8 33%
Medusa meaty 25 100%

Extrinsic

Extrinsic poison resistance is granted by the following items:

Strategy

The threat of a sudden and unceremonious death to a poisoned trap or weapon for an early hero means that poison resistance is considered a highly-critical property to obtain for any player regardless of their skill level: even though poison is not guaranteed to be fatal, the HP damage and attribute loss that it causes warrants finding a means of counteracting and/or preventing them as soon as possible—a role's general difficulty is significantly based on their access to poison resistance, particularly the extent to which certain roles and character builds can explore further in the dungeon versus others without being killed or impaired by poison. While it is possible to proceed very far in the dungeon and even ascend without ever gaining poison resistance, the player must be prompt in healing any HP or attribute damage and secure reliable resources to that end, and in general will require a higher level of skill and daring.

Much of the Barbarian's strength as a melee role is owed to their innate poison resistance, which allows them to reliably survive hazards like dart traps and spiked pits without taking too much damage and enables them to eat more corpses for sources of nutrition and other intrinsics. Similarly, Monks gain the poison resistance property at experience level 3, and can easily gain the required experience with their martial arts. Healers start with poison resistance, and while this does give them something of an edge over other casting roles, they are also generally lacking in physical attributes and melee combat ability even by that standard while being restricted in other aspects (e.g. having trouble casting spells other than healing spells).

Orcish heroes are the only race of hero to have intrinsic poison resistance, and orcs in roles that otherwise lack poison resistance have somewhat better survival chances early on compared to heroes of other races in that same role, though this is also subject to tradeoffs elsewhere, such as lower attribute caps for strength and mental stats. Orcish heroes are also somewhat more likely to meet peaceful orcs, reducing the number of hostile ones shooting poisoned arrows at them (see the section below for details).

Poisonous threats

Poison resistance is very useful for dealing with killer bees and soldier ants in particular, as both monsters are notorious early-game killers, though their movement speed, AC, swarming, and damage output all allow them to remain a threat even after obtaining the property—soldier ants are consistently ranked in the top 5 causes of death for games played on NAO. Similarly, groups of Uruk-hai and lone orc-captains often generate with orcish bows to fire poisoned orcish arrows, making hostile Uruk-hai squads perilous to meet at a distance without poison resistance—much of Orc Town's difficulty as a level comes from the presence of both monster types, which guarantees that poison is a threat to contend with when breaching the walls of the town.

The list linked at the top of this section fully covers which monsters have attacks that can be mitigated by poison resistance—while only two monsters generate regularly with poisoned weapons, any intelligent-enough monster can pick up and use poisoned weapons that they come across.

Safe corpses

Fortunately, poison resistance is granted by a large variety of corpses: unfortunately, many of those corpses are poisonous themselves, and heavy HP damage, loss of strength and/or constitution and the resulting weaker carrying capacity can spell a hero's doom in the early game. Some monsters whose corpses or globs grant poison resistance may also be unsafe in some other way (e.g. the acidic globs of puddings), and even monsters whose corpses are safe to eat can be hazardous to the hero in other ways, with examples including the poisoned sting-wielding quasits and the spellcasting golden nagas—finally, there is the case of tengu meat, which is not a "true" hazardous source but can nonetheless prove to be annoying with its chance of granting teleportitis. The monsters whose corpses, tins and globs are the safest or have the highest probabilities of granting poison resistance are listed in the table of resistance-granting corpses further above.

The corpses of quivering blobs, naga hatchlings and unicorns are among the safest ones to eat, and tins of monsters that grant poison resistance carry no risk of inflicting poison damage, making a tinning kit useful for obtaining the property along with other intrinsics.[18] Archeologists are fairly well-positioned to this end due to their starting tinning kit, and their quest contains a lot of Extrinsic sources of poison resistance can both offer the same protection and enable a hero to safely gain the intrinsic from an otherwise-poisonous corpse, making it valuable to identify those extrinsic sources early on—even once you obtain the intrinsic, it may be worth keeping an extrinsic source or two in case you lose the intrinsic to a throne or a gremlin's intrinsic theft attack. Other precautions can help with the consumption of poisonous corpses to gain poison resistance:

  • A worn ring of sustain ability will prevent attribute damage from eating the corpses.
  • Quaffing a potion of restore ability or successfully casting the restore ability spell (among other methods) can repair any attribute damage.
  • If all else fails, successful prayer can also potentially restore attributes—a hero being overtaxed while having lost at least four points of strength is considered a major trouble, while having any reduced attributes at all is considered a minor trouble. Deliberately picking up heavy junk and other items can make it easier to reach overtaxed status, though be absolutely sure that the area is clear of hostiles first!

Other sources

Crowning is sometimes sought out as a means of reliably gaining poison resistance, along with several other useful intrinsic properties and often a good weapon. However, this requires a hero to raise their luck and alignment record quite high, which cannot be done through sacrifice at an altar alone.[33] Obtaining an early luckstone can make the task less difficult, but the hero will generally need to find a co-aligned unicorn and throw them several valuable gems (preferably identified ones if possible) in order to obtain the required level of luck.

Green dragon scale mail may be a worthwhile consideration for an early hero that obtains a wish due to its extrinsic poison resistance and immunity to sickness, the latter of which keeps it useful once the hero gains intrinsic poison resistance and can even prove valuable in the late game against the likes of Demogorgon and Pestilence. Chaotic human Rogues and Rangers may consider shooting for Grimtooth as an early source of poison resistance to wield and as an offensive boon that can deal solid damage against targets without poison resistance—orcish heroes start with the property and will not require Grimtooth to provide it, while elven heroes cannot be gifted Grimtooth at all.

History

Poison resistance as a property is present in Hack 1.21 and Hack for PDP-11, which are based on Jay Fenlason's Hack, and is also present in Hack 1.0. From these versions to NetHack 2.3e, strength is the hero's sole attribute and thus the only one that poison can affect. The other five attributes are introduced in NetHack 3.0.0.

In versions up to NetHack 3.6.1, the corpse or tin of a nurse is bugged and does not grant poison resistance as intended when eaten, as the HP-restoring effect overrides it. This is fixed for NetHack 3.6.2 via commit a97d0b72, which gives the corpse a chance of granting the intrinsic as normal and fully restores HP separately.

In versions up to NetHack 3.6.7, including some variants being based on those versions, a hero without poison resistance that is hit by poison has a chance of the poison being fatal and killing them outright instead of inflicting severe poison, with the same odds as described in the table reviewing poison sources:[34] this can lead to many unexpected early deaths that can be hard to avoid if the player cannot locate and identify a source of poison resistance in time, even if that player is a seasoned veteran.

This makes poison resistance an even more determinant factor in the hero's ability to survive the early game compared to how valuable it already is in later versions. Common strategies for early poison resistance in these versions include deliberately eating poisonous corpses that can grant the property and healing the attribute loss by applying a unicorn horn, and crowning is also a relatively straightword approach as a result of being able to raise luck through several sacrifices of sufficient value while remaining near an altar—the history section in the poison article linked at the top of this section has somewhat more detailed coverage of how to handle poison in older versions. Furthermore, orcish monsters in these versions do not have poison resistance other than the undead orc zombie and orc mummy, meaining that all live orcs other than an orcish hero are vulnerable to extra damage and instant death from poison, including from their own orcish arrows.

NetHack 5.0.0 overhauls the functions of poison via commit d0b11fd2 and changes it to its current behavior, including severe poison in place of instant death. Grimtooth is also changed to grant poison resistance while wielded and given its current behavior via commit 8f7258dc. Orcish monsters other than the goblin and hobgoblin are given poison resistance via commit b6a3d4b9 to match that of orcish heroes, with the latter two being deliberately excluded to better distinguish them from the other orcs—the ki-rin is also given poison resistance as part of commit 27b93148, which makes them much closer to unicorns in ability like they are in appearance and folkloric behavior.

NetHack 5.0.0 also makes the following relevant changes:

  • The difficulty of the killer bee and soldier ant are each increased to 6 and 7 (respectively) via commit 47724f01 so that they appear slightly later in the dungeon and thus grant players more time to obtain poison resistance and otherwise develop a kit and strategy for dealing with them.
  • Unicorn horns are stripped of their ability to restore drained attributes when applied via commit 43d331c4 due to general player over-reliance on them for handling any form of attribute loss.
  • Sacrifice mechanics as a whole are overhauled—of particular relevance is commit c2c797fa, which makes it so that the hero's natural luck cannot be raised higher than the value of a successful sacrifice, making early crowning somewhat more difficult (but not impossible).

Messages

You feel healthy.
You received poison resistance by eating an applicable corpse or tin, or by reaching level 3 as a Monk; an exclamation point is present in the last case.
You feel especially healthy.
As above, while having extrinsic poison resistance (from a ring, amulet, etc.) or poison resistance from level gain.
You feel hardy!
You received poison resistance by reaching level 20 as a Tourist.
You feel a little sick!
You lost poison resistance, either due to a gremlin attacking you at night or from eating a disenchanter corpse.
You feel less <healthy/hardy>!
You lost poison resistance due to level drain as a Monk or Tourist.
The poison doesn't seem to affect you.
You were hit with a poisonous attack or poisoned weapon, but suffered no additional effects due to poison resistance.
You seem unaffected by the poison.
You ate a poisonous corpse, but suffered minimal damage due to poison resistance.

Variants

NetHack variants often introduce additional sources of poison resistance, and object properties systems also have poison resistance as one of the many possible extrinsics that worn armor can grant. Some variants may also make poison resistance a temporary intrinsic or a partial intrinsic. Changes to poison mechanics in variants, including variants that are created prior to NetHack 5.0.0's release, will also naturally change the effectiveness of poison resistance and how vital it is to obtain in the early stages of a game.

NetHack variants also include several monsters that have poison resistance and/or grant poison resistance when eaten, neither of which will be listed here for the sake of brevity.

In the Convict Patch and variants that incorporate it, Convicts gain poison resistance at experience level 7.

SLASH'EM

In SLASH'EM, poison behaves as it does in NetHack 3.4.3 and previous contemporary versions, including poison breath weapons.[35]

Undead Slayers gain poison resistance at experience level 9.[36] lycanthropic heroes start the game with intrinsic poison resistance akin to other werecreatures, while vampire heroes start with poison resistance from their monster form.[37]

SLASH'EM also adds some sources of poison resistance, not counting monsters whose corpses grant the property:

The ability of Serpent's Tongue to inflict extra damage and instant death is dependent on the target lacking poison resistance, though the damage it inflicts is not poison damage.

SporkHack

In SporkHack, poison resistance gained from eating corpses is a partial intrinsic, as with most other resistance properties—the percentage gained depends on the corpse or tin being eaten.

SporkHack also adds the venom shield, a type of shield that grants poison resistance while worn.

Dragonbane grants poison resistance and several other resistances while wielded.

UnNetHack

In UnNetHack, Convicts gain poison resistance at experience level 7. Vampire heroes start each game with poison resistance from their monster form.

Poison mechanics for UnNetHack are significantly changed: the chance of an instadeath from poison is replaced with a "very toxic" poison that damages max HP and does strength damage, with poison mechanics otherwise remaining the same as in NetHack.

Grimtooth grants poison resistance while wielded, as it does in NetHack 5.0.0. Dragonbane also behaves as it does in SporkHack, including granting poison resistance and several other resistances while wielded.

Chromatic dragon scales and chromatic dragon scale mail grant poison resistance and several other resistances while worn.

dNetHack

In dNetHack, several races and roles of hero can either start with fire resistance or else gain it through experience levels:

  • Convicts gain poison resistance at experience level 7.
  • Kensei gain poison resistance at experience level 6.
  • Clockwork automata heroes start the game with poison resistance, including Androids.
  • Formian heroes gain poison resistance at level 5.
  • Green half-dragon heroes start the game with poison resistance.
  • Vampire heroes start the game with poison resistance.
  • Tiefling heroes (including tiefling-drow) start the game with poison resistance.

Poison resistance gained from eating corpses is not a temporary intrinsic, as with most other resistance properties, and is instead indefinite once obtained as in vanilla NetHack.

dNetHack also adds the following items that provide poison resistance:

Standing on a ward of The Wings of Garuda at 7-fold reinforcement grants full poison resistance.

Severe poison is a damage type that can deal reduced poison damage through poison resistance.

Some spirits grant poison resistance when bound:

  • Berith grants the hero's steed any poison resistance
  • Ymir grants immunity to poison for the hero while he is bound.

Several artifacts grant poison resistance in some form:

DynaHack

In DynaHack, Convicts gain poison resistance at experience level 7.

Chromatic dragon scales and chromatic dragon scale mail grant poison resistance and several other resistances while worn, as in UnNetHack.

SpliceHack

In SpliceHack, Convicts gain poison resistance at experience level 7.

notdNetHack

In addition to dNetHack details, notdNetHack also adds the following sources of poison resistance:

EvilHack

In EvilHack, several races and roles of hero can either start with poison resistance or else gain it through experience levels or other means, in addition to roles retained from vanilla NetHack:

  • Convicts gain poison resistance at experience level 7.
  • Healers gain poison resistance at experience level 3, and are the only vanilla NetHack role to be given a different level threshold for gaining the property.
  • Drow heroes gain poison resistance at experience level 5.
  • Draugr heroes and vampire heroes start each game with poison resistance.
  • Aasimar heroes start each game with poison resistance, though it can be lost if they commit alignment abuse (and thus regained if they cleanse their alignment record of abuse).
  • Infidels that are crowned and transform into demons (other than draugr Infidels) will have innate poison resistance and several other resistances from their demonic form.

Poison resistance gained from eating corpses is a partial intrinsic as in SporkHack: poison functions similarly to its mechanics in NetHack 3.6.7 and previous versions, but also works differently against the hero based on how much intrinsic poison resistance they have. A hero that has less than 35% poison resistance can still die instantly if they are poisoned—otherwise, if their poison resistance level is 35% or higher but not 100%, they take a significant amount of physical damage based on how much poison resistance they have.

Some items can have the "venom" object property (not to be confused with the venom object or attacks that spit venom), and armor with the venom property provides poison resistance while worn. There are other items that grant poison resistance as well:

  • A set of dragon-scaled armor made with green dragon scales grants poison resistance while worn.
  • A set of dragon-scaled armor made with chromatic dragon scales grants poison resistance and several other resistances while worn.
  • Secespita grants poison resistance while wielded.

SlashTHEM

In SlashTHEM, in addition to SLASH'EM details, the Drunk, Hacker, Lunatic, and Undertaker roles start with poison resistance, while the Chef and Convict roles gain poison resistance at experience level 7, and the Zookeeper role gains the property at experience level 10. Clockwork automaton, ghoul and kobold heroes start with poison resistance.

Dirge is an artifact that grants poison resistance while wielded.

Hack'EM

In Hack'EM, several races and roles of hero can either start with poison resistance or else gain it through experience levels or other means, in addition to roles retained from vanilla NetHack:

  • Convicts gain poison resistance at experience level 7, as they do in EvilHack and other variants.
  • Healers gain poison resistance at experience level 3, as they do in EvilHack.
  • Draugr heroes and vampiric heroes start each game with poison resistance.
  • Infidels that are crowned and transform into demons (other tha draugr Infidels) will have innate poison resistance and several other resistances from their demonic form, as in EvilHack.
  • Undead Slayers gain poison resistance at experience level 9, as they do in SLASH'EM and SlashTHEM.

Poison functions almost identically to how it does in EvilHack, though the threshold of intrinsic poison resistance required to avoid instant death is lowered to 25%. Hack'EM also includes the "venom" object property from EvilHack, which functions in the same way for armor with the property.

External links

References

  1. ↑ include/youprop.h in NetHack 5.0.0, line 46-L48
  2. ↑ 2.0 2.1 2.2 2.3 src/attrib.c in NetHack 5.0.0, line 338-L343: poison resistance handling within poisoned() function
  3. ↑ 3.0 3.1 3.2 3.3 src/attrib.c in NetHack 5.0.0, line 362-L383
  4. ↑ 4.0 4.1 4.2 4.3 src/attrib.c in NetHack 5.0.0, line 384-L399
  5. ↑ include/monflag.h in NetHack 5.0.0, line 67
  6. ↑ 6.0 6.1 6.2 src/uhitm.c in NetHack 5.0.0, line 3098-L3119: mhitm_really_poison() function; this is used as a helper for mhitm_ad_drst() and called for monster-poisoning effects that are not subject to magic cancellation, and the function lacks the typical 1⁄8 chance which is generally used when calling the function instead
  7. ↑ src/uhitm.c in NetHack 5.0.0, line 1061-L1062
  8. ↑ src/uhitm.c in NetHack 5.0.0, line 1532-L1537
  9. ↑ src/mthrowu.c in NetHack 5.0.0, line 403-L417
  10. ↑ src/mthrowu.c in NetHack 5.0.0, line 745-L754: call to poisoned() for poisoned weapons hitting the hero
  11. ↑ src/uhitm.c in NetHack 5.0.0, line 3129-L3142
  12. ↑ src/uhitm.c in NetHack 5.0.0, line 3143-L3158
  13. ↑ src/uhitm.c in NetHack 5.0.0, line 3159-L3163
  14. ↑ src/zap.c in NetHack 5.0.0, line 4366-L4372
  15. ↑ src/zap.c in NetHack 5.0.0, line 4525-L4527
  16. ↑ 16.0 16.1 src/eat.c in NetHack 5.0.0, line 1928-L1936
  17. ↑ src/eat.c in NetHack 5.0.0, line 2795-L2800
  18. ↑ 18.0 18.1 src/eat.c in NetHack 5.0.0, line 1611: consume_tin calls cprefx(), but not eatcorpse() where poison is handled[16]
  19. ↑ include/mondata.h in NetHack 5.0.0, line 233
  20. ↑ src/trap.c in NetHack 5.0.0, line 1922-L1945
  21. ↑ src/trap.c in NetHack 5.0.0, line 1901-L1903
  22. ↑ src/trap.c in NetHack 5.0.0, line 2001
  23. ↑ src/potion.c in NetHack 5.0.0, line 963-L1011
  24. ↑ src/potion.c in NetHack 5.0.0, line 992-L1004
  25. ↑ src/region.c in NetHack 5.0.0, line 1089-L1165: inside_gas_cloud() function; line 1107 ensures that much of the function only applies to poison clouds
  26. ↑ src/zap.c in NetHack 5.0.0, line 5336-L5342: draws single-square poison clouds over the ray, rejecting wall squares
  27. ↑ src/region.c in NetHack 5.0.0, line 1207-L1309: create_gas_cloud() function
  28. ↑ src/spell.c in NetHack 5.0.0, line 155-L168
  29. ↑ src/eat.c in NetHack 5.0.0, line 1895-L1906: check for immunity to sickness when eating tainted corpses
  30. ↑ src/eat.c in NetHack 5.0.0, line 1938-L1943: check for immunity to sickness when eating slightly rotted corpses
  31. ↑ src/eat.c in NetHack 5.0.0, line 2672-L2690: food appraisal check for rotted or tainted corpses
  32. ↑ src/eat.c in NetHack 5.0.0, line 2691-L2694: food appraisal check for poisonous corpses
  33. ↑ src/pray.c in NetHack 5.0.0, line 2094-L2106
  34. ↑ src/attrib.c in NetHack 3.6.7, line 271-L337: poisoned() function in 3.6.7
  35. ↑ mon.c in SLASH'EM 0.0.7E7F2, line 2288: poisoned() function in SLASH'EM
  36. ↑ attrib.c in SLASH'EM 0.0.7E7F2, line 105
  37. ↑ attrib.c in SLASH'EM 0.0.7E7F2, line 148