8 zap_type
spell_to_zap(spell_type spell
)
12 case SPELL_MAGIC_DART
:
13 return ZAP_MAGIC_DARTS
;
16 case SPELL_THROW_FLAME
:
18 case SPELL_THROW_FROST
:
22 case SPELL_FLAME_TONGUE
:
23 return ZAP_FLAME_TONGUE
;
25 return ZAP_ELECTRICITY
;
28 case SPELL_BOLT_OF_FIRE
:
30 case SPELL_BOLT_OF_COLD
:
32 case SPELL_PRIMAL_WAVE
:
33 return ZAP_PRIMAL_WAVE
;
34 case SPELL_STONE_ARROW
:
35 return ZAP_STONE_ARROW
;
36 case SPELL_POISON_ARROW
:
37 return ZAP_POISON_ARROW
;
40 case SPELL_LIGHTNING_BOLT
:
42 case SPELL_BOLT_OF_MAGMA
:
44 case SPELL_VENOM_BOLT
:
45 return ZAP_VENOM_BOLT
;
46 case SPELL_BOLT_OF_DRAINING
:
47 return ZAP_NEGATIVE_ENERGY
;
48 case SPELL_LEHUDIBS_CRYSTAL_SPEAR
:
49 return ZAP_CRYSTAL_SPEAR
;
50 case SPELL_BOLT_OF_INACCURACY
:
51 return ZAP_BEAM_OF_ENERGY
;
52 case SPELL_STICKY_FLAME
:
53 case SPELL_STICKY_FLAME_RANGE
:
54 return ZAP_STICKY_FLAME
;
55 case SPELL_DISPEL_UNDEAD
:
56 return ZAP_DISPEL_UNDEAD
;
57 case SPELL_ISKENDERUNS_MYSTIC_BLAST
:
58 return ZAP_MYSTIC_BLAST
;
61 case SPELL_DISINTEGRATE
:
62 return ZAP_DISINTEGRATION
;
63 case SPELL_THROW_ICICLE
:
64 return ZAP_THROW_ICICLE
;
65 case SPELL_CIGOTUVIS_DEGENERATION
:
66 return ZAP_DEGENERATION
;
67 case SPELL_PORKALATOR
:
69 return ZAP_PORKALATOR
;
71 // Should only be available from Staff of Dispater and Sceptre
82 case SPELL_ENSLAVEMENT
:
83 return ZAP_ENSLAVEMENT
;
84 case SPELL_HIBERNATION
:
85 return ZAP_HIBERNATION
;
92 case SPELL_POLYMORPH_OTHER
:
93 return ZAP_POLYMORPH_OTHER
;
94 case SPELL_TELEPORT_OTHER
:
95 return ZAP_TELEPORTATION
;
96 case SPELL_BANISHMENT
:
97 return ZAP_BANISHMENT
;
100 case SPELL_INVISIBILITY
:
101 return ZAP_INVISIBILITY
;
104 case SPELL_LIGHT_BEAM
:
105 return ZAP_LIGHT_BEAM
;
106 case SPELL_DEBUGGING_RAY
:
107 return ZAP_DEBUGGING_RAY
;
113 int spell_zap_power(spell_type spell
, int pow
)
119 case SPELL_HIBERNATION
:
120 return (stepdown_value(pow
* 9 / 10, 5, 35, 45, 50));
126 int spell_zap_power_cap(spell_type spell
)
128 const zap_type zap
= spell_to_zap(spell
);
133 const int cap
= zap_power_cap(zap
);
138 return (std::max
<int>(cap
- 10, 0));
139 case SPELL_HIBERNATION
: