Spellcasting

From NetHackWiki
Revision as of 23:34, 17 September 2021 by Umbire the Phantom (talk | contribs) (History)
Jump to navigation Jump to search
Keyboard commands
~ ! @ # $ % ^ & * ( ) _ = +
Q W E R T Y U I O P { } |
q w e r t y u i o p [ ] \
A S D F G H J K L : "
a s d f g h j k l ; '
Z X C V B N M < > ?
z x c v b n m , . /
q w e r t u i o p Alt
a s d f j l Alt
c v n m ? Alt
A C R T O Alt
a c d o p r t [ Ctrl
For monsters' spellcasting mechanics, see monster spells.

Spellcasting is the act of casting a spell, using the Z command. Casting a spell drains your innate magical power, rather than using an external source of magic such as a scroll or wand.

Healers, monks, priests and wizards are roles which begin the game with knowledge of one or more spells and are often able to cast them; other classes must find at least one spellbook and read it first.

When you are prompted to select a spell to cast, a menu will appear of the spells you know, accompanied by their chance of failure. The + key brings up this same menu and allows you to rearrange the spells so you can place them on more convenient letters.

A spell's chance of failure is affected by either intelligence or wisdom, experience level, skill level, your role's innate magical affinity, and what armor you are wearing: metal armor in particular can impact chances of success, as well as the type of shield if applicable. Failure rates can be reduced by wearing a robe, and additionally reduced further if the spell is an emergency spell or your role's special spell.

When you attempt to cast a spell, the game rolls for success or failure. If you fail, you will receive the message "You fail to cast the spell correctly." Otherwise, the spell takes effect.

In addition to costing energy, spellcasting also costs nutrition, which can be reduced or eliminated by hungerless casting. Casting detect food never costs nutrition.

Each successful cast of a spell trains its associated spell skill by an amount equal to its level, regardless of whether the spell affected anything.

Technically, using teleport at will is also considered to be a cast of a spell, and follows many but not all of the same rules as casting teleport away (it bypasses the percentage failure rate calculation, for instance).

Prerequisites for casting a spell

If any of the following conditions are true, you will not be able to cast any spells at all:

  • You don't know any spells.
  • You are stunned.[1]
  • You are incapable of chanting the spell.[2] This can be due to any of:
  • Both of your hands have cursed gear stuck to them (either through wielding a cursed two-handed weapon or through wearing a cursed shield and wielding a cursed one-handed weapon). Being polymorphed into a form without hands does not prevent you from casting spells.
  • You are weak and very close to fainting, and you are trying to cast something other than detect food.
  • Your strength is below 4, and you are trying to cast something other than restore ability.
  • You are overtaxed or worse.

If none of the above apply, but you are confused, you may attempt to cast spells, but they will always fail, with the same effects as random spell failure.

Forgotten spells

Spell knowledge only lasts for 20,000 turns after reading a spellbook. Once this time is up the spell is forgotten, and is marked with an asterisk * in the casting menu. Spellbooks may be re-read once the timeout is at or below 1,000 turns. This will reset the timeout to 20,000 turns.[3] Attempting to read a spellbook before the timeout is low enough will produce the message "You know <spell> quite well already". This will not use up a reading of the spellbook, and if read while owned by a shopkeeper, will not result in a use fee[4].

Attempting to cast a forgotten spell will not check any of the usual casting prerequisites except stunning, and will consume neither nutrition nor power. It will instead make you confused, stunned, or both. The duration of confusion and stunning is dependent on the level of the forgotten spell, but the choice of effects is not.

The exact effect of casting a forgotten spell is as follows:[5]

Probability Effect
40%
  • confused for (spell-level + 1) * 3 turns
30%
  • confused for (spell-level + 1) * 2 turns
  • stunned for (spell-level + 1) turns
20%
  • confused for (spell-level + 1) turns
  • stunned for (spell-level + 1) * 2 turns
10%
  • stunned for (spell-level + 1) * 3 turns

Forgotten spells are a common way to deliberately become confused, to invoke the alternative effects of certain scrolls.

Spellcasting cost

Casting a spell costs energy points, equal to 5 times the spell's level [6]. If you are carrying the Amulet of Yendor, it drains an amount of energy between 1 point and 2 times the usual cost as you attempt to cast (“You feel the amulet draining your energy away.”) [7]. If you do not have the required energy after this (“You don't have enough energy to cast that spell.”), nothing happens; this only uses a move if the Amulet drained energy[8]. If the attempt fails (“You fail to cast the spell correctly.”), only half of that energy is used up, rounded down [9].

Casting any spell other than detect food[10] uses nutrition equal to two times the energy cost (including the Amulet penalty), which means that it is usually 10 times the spell's level. If you are a wizard with sufficiently high intelligence, you might be able to take advantage of hungerless or reduced-hunger casting. A failed cast costs just as much nutrition as a successful one. If you are fainting, you cannot cast any spells other than detect food, whether or not you have hungerless casting.

As an example, casting a level 3 spell normally requires 15 energy and 30 nutrition. If you fail to cast it, only 7 energy is used, but you still lose 30 nutrition. When carrying the Amulet of Yendor, there is an energy penalty of 1 to 30 points, so the total energy cost varies from 16 to 45, but the nutrition cost is still 30.

Calculating spell success rate

When spellcasting the Fail column appears in the menu which occurs when using the Z command.

To calculate spell failure you can use the tool referenced in the External Links section below.

The algorithm is as follows. An increasing total penalty is worse for spellcasting, and is limited to a maximum of 20. You first need to add together the penalties listed below:

  • The "Base" value from the table below, depending on the character's class.
  • If an "emergency" spell, the "Emergency" field. Spells considered emergency spells are all healing spells except for stone to flesh, and remove curse. [11]
  • If wearing any shield, the amount in the "Shield" field.
  • If wearing metallic body armor, the amount in the "Suit" field.
  • If also wearing a robe, only add half the amount (rounded down). [12]
  • If wearing a robe without metallic armor, subtract the amount in the "Suit" field. [13]
  • If wearing a metallic helmet other than the helm of brilliance, add 4. (Metal helmets interfere with the mind.) [14] [15]
  • Metallic gloves add 6 (casting channels through the hands). [16]
  • Metallic boots add 2 (all metal interferes to some degree). [17]
  • If casting the corresponding special spell for your role (see table), subtract 4.
Class Base Emergency Shield Suit Stat Special spell
Archeologist 5 0 2 10 Int Magic mapping
Barbarian 14 0 0 8 Int Haste self
Caveman 12 0 1 8 Int Dig
Healer 3 -3 2 10 Wis Cure sickness
Knight 8 -2 0 9 Wis Turn undead
Monk 8 -2 2 20 Wis Restore ability
Priest 3 -2 2 10 Wis Remove curse
Ranger 9 2 1 10 Int Invisibility
Rogue 8 0 1 9 Int Detect treasure
Samurai 10 0 0 8 Int Clairvoyance
Tourist 5 1 2 10 Int Charm monster
Valkyrie 10 -2 0 9 Wis Cone of cold
Wizard 1 0 3 10 Int Magic missile

The following information pertains to an upcoming version (NetHack 3.7.0). If this version is now released, please verify that it is still accurate, then update the page to incorporate this information.

Knights can now cast clerical spells as if they were not wearing metallic body armor, including getting a robe bonus if one is worn.

Next, calculate a base chance of success, which is 5.5 times either your intelligence or wisdom, depending on your class (see the "Stat" field). The maximum natural human Int/Wis of 18 gives a 99% base success rate. This chance is modified by the following factors:

  • SKILL level (Unskilled = 0, Basic = 1, Skilled = 2, Expert = 3)
  • spell level (LVL)
  • experience level (XL)

according to this formula:[18]

difficulty = (LVL * 4) - (SKILL * 6) - (XL/3) - 5

If difficulty is positive, the spell is considered difficult. Your chance is reduced according to the following formula. A difficulty of 1 therefore gives a 53% penalty, and a difficulty of 9 gives a 100% penalty.

\text{chance} = \text{base chance} - \sqrt{(900 \times \text{difficulty}) + 2000}

If it is negative, it will be increased with diminishing returns: the absolute value is multiplied by (15/LVL), capped at 20, and added to the base chance. A level 1 spell therefore achieves the full 20% bonus with a difficulty of -2. A level 7 spell cannot achieve a better difficulty than -5, which gives a bonus of 10%.

The resulting chance is clipped to the range of 0% to 120% success. If you are wearing a shield larger than a small shield, the chance is then reduced to 1/4 its amount (except if it is the special spell for your class -- then it is only halved).[19]

Finally, the chance of success is adjusted by your total penalty using the following formula:

\text{actual chance} = \frac{\text{chance} \times (20-\text{penalty})}{15} - \text{penalty}

The result is clipped to the range of 0% to 100% success.

One nonobvious consequence of this calculation is that sometimes gaining an experience level divisible by 3 can have a very large effect on the success rate of some spells.[20]

Spell Level Skill Level XL for large improvement
2 unskilled 9
3 unskilled 21
4 basic 15
5 basic 27
5 skilled 9
6 skilled 21
7 expert 15

Effects

Most spells act similarly to the corresponding wand [21], scroll[22], or potion[23].

Range

Beam spells: 6–13[24]

Ray spells: 7–13[25]

Dig: 8–25[26]

To Hit

The chance of hitting versus an armor class (ac) is based on a d20 equivalent (a random number 0-19 is generated).[27]

Also a spell bonus is calculated as the sum of the skill penalty/bonus and the dexterity penalty/bonus.[28] These are the same as used in physical combat.

If the chance is 0, success is d10 < ac + spell bonus

Otherwise, negative ac is weakened to a random number between -1 and the actual ac[29]; success is 3 - chance < ac + spell bonus

Damage

A spell damage bonus based on intelligence (INT) and experience level (XL) is used in most attack spell damage calculations.[30]

Criteria Bonus
INT <= 9 -3
INT <= 13 OR XL < 5 0
INT <= 18 +1
INT <= 24 OR XL < 14 +2
INT = 25 +3

Force bolt: 2d12 + spell damage bonus[31]

Drain life:[32][33]

  • base d8
    • d4 for level 0 monsters
    • 4-8 for adult dragons
    • 5-8 for named demons (but they're immune)
    • (base health) / (base level) for golems
  • + spell damage bonus
  • if monster resists: half damage
  • otherwise double damage and damage to max HP

Magic missile and Cone of cold (below skilled)[34]

  • If monster resists: no damage!
  • base = XL / 2 + 1
  • base d 6
  • Cone of Cold and monster has fire resistance: + base d 3
  • + spell damage bonus

Fireball (below skilled)[35]

  • one explosion centered at the monster
  • base 12d6 damage
  • no spell damage bonus
  • modified like skilled below

Cone of cold (skilled or expert), and Fireball (skilled or expert)[36]

  • 2 to 9 explosions covering a 3 x 3 space, the first centered on a starting point up to 10 steps away, remaining centered randomly 9 spaces centered on starting point
  • base + spell damage on each monster in affected space for each explosion
  • Cone of Cold and monster has fire resistance or Fireball and monster has cold resistance: double damage[37]
  • Monster resists: 1/2 damage
  • additional damage for destroyed items[38]

Strategy

There are three main ways to improve your spellcasting success chance: increase your spellcasting attribute, gain more skill and experience levels, and wear armor appropriate to your role's spellcasting abilities. Which method you should pursue depends on why your success chance is low.

Role and attribute strategy

Each point of your spellcasting attribute up to 16 is significant in determining your success chance with "easy" spells. Roles with Base values of 5 or lower may be able to get by with fewer points, but they tend to start with that attribute at the racial maximum in any case. Points 17 and 18 are significant for roles with Base 8 or higher, or low Base roles wearing metal armor. Points 19 through 22 are significant for high-level spells for which you don't get the full 20-point "easy" bonus. Points above 22 are only significant for "difficult" spells, but those generally have low success chances in any case.

Your casting attribute, role Base value, and metal armor determine your success chance for low-level spells. Experience level and spell school skill can raise your chance for high-level spells up to the chance of low-level spells, but will not make low-level spells more reliable.

With a base success chance of 120%, your spellcasting penalty (Base modified by armor) must be 6 or less to achieve an overall 100% success chance. Roles that can achieve this without a robe are Archeologist, Healer, Priest, Tourist, and Wizard. Roles that can achieve this when casting emergency spells or their special spell are Knight and Monk. Roles that can achieve this with their special spell only are Ranger, Samurai, Rogue, and Valkyrie. The remaining two roles, Barbarian and Caveman, cannot achieve 100% success chance in any spell without a robe.

Skill and experience strategy

Spells are much easier to cast when their difficulty is zero or less. The following table lists the most difficult spell level that is still considered easy (no penalty for spell level) given particular experience and skill levels.

Highest easy spell level
Xlvl Unskilled Basic Skilled Expert
1–2 1 2 4 5
3–8 1 3 4 6
9–14 2 3 5 6
15–20 2 4 5 7
21–26 3 4 6 7
27–30 3 5 6 7

If your Intelligence or Wisdom is high, spells of this level or below are likely to have a near-100% base success chance. It is still possible to cast non-easy spells, but they tend to have much lower success chances. One exception is a high-level Monk wearing a robe; they get enough of a bonus from it that even difficult spells of up to level 5 can be 100% reliable. With 22 wisdom from a helm of brilliance, level 6 spells can also have a 100% success chance.

Variants

SLASH'EM

SLASH'EM makes several changes to NetHack's spellcasting system. New spells have been added, and several existing ones have been reshuffled. SLASH'EM roles tend to be more proficient in spell skills than their vanilla counterparts.

FIQHack

FIQHack has many changes to how spellcasting works.

  • Monsters use the same spellcasting system as players, which means that high-level spellcasting monsters have a lot of energy and can cast multiple spells quickly. Monsters can also pick up and read spellbooks to gain new spells.
  • There are four new spells, all of which are level 7:
  • Some spells can be maintained, which slowly drains energy but provides a continuous effect.
  • The curse items monster spell no longer exists but certain curse effects are more common/serious.
  • Bones ghosts can be replaced by equivalent player monsters with the same spells as the late player.
  • Identity Spell Changes
    • Unskilled only identifies object type, appearance, and artifacts.
    • Basic also IDs enchantment, object properties, charge count, tin content and egg type.
    • Expert identifies fooproof state.
  • Changed spell levels
    • Dig is level 2
    • Identify is level 2
    • Cancellation is level 5
    • Teleport away is level 5
    • Polymorph is level 7
    • Create familiar is level 2
  • Magic missile does less damage if cast at levels lower than expert.
  • Instead of a spell failure percentage, the amount of power required to cast a spell changes.
    • Spell cost is (base cost) * 100 / success%. Force bolt costs 5pw at 0% fail, 10pw at 50% fail, 20pw at 75% fail, 500pw at 99% fail, 1000pw at 100% fail (treated as 99.5%)
    • The Amulet doubles spell cost, instead of randomly draining 2-3x energy per spell.
  • Spellcasting does not exercise wisdom.
  • The spell of create monster is replaced with the spell of summoning. Summoned monsters disappear after a set number of turns, based on casting skill.

History

Spellcasting was introduced along with spellbooks in NetHack 1.3d. A spell first had to be learned by transcribing it from the spellbook, which would then disappear from your inventory afterward - if the transcription was successful, you could then cast the spell a limited number of times before it expired, and another spellbook was needed if you wished to cast it again. Armor blocking spellcasting was introduced in NetHack 3.2.0, and the integration of the Wizard Patch into NetHack 3.3.0 marks the origin of the current spellcasting system.

In NetHack 3.6.0 and previous versions, the Amulet of Yendor would increase the cost of casting a spell, instead of draining energy as you tried to cast it. This meant that it would also increase the nutrition cost, and it would not prevent emergency uses of a spell. In the example above of casting a level 3 spell, if you had only 16 energy left, you could still try again and again, without using any time, until the random penalty is rolled as 1.[39] This was fixed in NetHack 3.6.1.

External links

References

  1. src/spell.c in NetHack 3.6.6, line 644
  2. src/spell.c in NetHack 3.6.6, line 644
  3. src/spell.c in NetHack 3.6.0, line 379: Refreshing or learning a spell.
  4. src/spell.c in NetHack 3.6.0, line 376: Reading book of keenly known spell.
  5. spell_backfire in src/spell.c in NetHack 3.6.0: Casting a forgotten spell.
  6. src/spell.c in NetHack 3.6.0, line 908: Spell cost.
  7. src/spell.c in NetHack 3.6.1, line 952: Amulet of Yendor's penalty on spell cost.
  8. src/spell.c in NetHack 3.6.1, line 956: Attempting to cast a remembered spell without enough energy uses a move if Amulet drain occurred.
  9. src/spell.c in NetHack 3.6.0, line 982: Failing to correctly cast a spell wastes only half of casting cost.
  10. src/spell.c in NetHack 3.6.0, line 929: Detect food has no casting hunger cost.
  11. src/spell.c in NetHack 3.6.0, line 1618: List of emergency spells.
  12. src/spell.c in NetHack 3.6.0, line 1601: Robe worn over metallic armor halves the spellcasting penalty of the armor.
  13. src/spell.c in NetHack 3.6.0, line 1603: Robe worn without metallic body armor increases spellcasting chance.
  14. src/spell.c in NetHack 3.6.0, line 95: Metal helmets interfere with the mind.
  15. src/spell.c in NetHack 3.6.0, line 1608: Helm of brilliance imposes no spellcasting penalty.
  16. src/spell.c in NetHack 3.6.0, line 96: Casting channels through the hands.
  17. src/spell.c in NetHack 3.6.0, line 97: All metal interferes to some degree.
  18. src/spell.c in NetHack 3.6.0, line 1643: Spellcasting chance formula.
  19. src/spell.c in NetHack 3.6.0, line 1673: Big shields significantly impair spellcasting.
  20. http://www.chiark.greenend.org.uk/~damerell/games/spellcliff.txt
  21. src/spell.c in NetHack 3.6.0, line 1044: wand similar
  22. src/spell.c in NetHack 3.6.0, line 1096: scroll similar
  23. src/spell.c in NetHack 3.6.0, line 1112: potion similar
  24. src/zap.c in NetHack 3.6.0, line 2849: beam spell range
  25. src/zap.c in NetHack 3.6.0, line 3846: ray spell range
  26. src/dig.c in NetHack 3.6.0, line 1442: dig spell range
  27. src/zap.c in NetHack 3.6.0, line 3733: spell to hit calculation
  28. src/zap.c in NetHack 3.6.0, line 2906: spell hit bonus
  29. src/hack.c in NetHack 3.6.0, line 294: negative ac weakened
  30. spell_damage_bonus in src/zap.c in NetHack 3.6.0: spell damage bonus
  31. src/zap.c in NetHack 3.6.0, line 160: force bolt damage
  32. src/zap.c in NetHack 3.6.0, line 371: drain life damage
  33. monhp_per_lvl in src/makemon.c in NetHack 3.6.0: drain life damage routine
  34. zhitm in src/zap.c in NetHack 3.6.0: routine containing mm and cold damage
  35. zap.c in NetHack 3.6.1, line 4035
  36. src/spell.c in NetHack 3.6.0, line 1010: skilled cold and fireball
  37. src/explode.c in NetHack 3.6.0, line 400: skilled cold and fireball resistance adjustments
  38. explode.c in NetHack 3.6.1, line 445
  39. https://github.com/NetHack/NetHack/commit/8ff02c11d9979497396d4921bf0d7cf81808c5d1

This page is based on a spoiler by Dylan O'Donnell. The original license is:

Redistribution, copying, and editing of these spoilers, with or without modification, are permitted provided that the following conditions are met:

  1. The original contributors to any spoiler must continue to be credited.
  2. Any modifications to the spoiler must be acknowledged and credited.