Code cleanup
[crawl.git] / crawl-ref / source / spl-zap.cc
blob1e6b7bbfaa6f67adea677288826de2d25a0741c1
1 #include "AppHdr.h"
3 #include "spl-zap.h"
5 #include "beam.h"
6 #include "stuff.h"
8 zap_type spell_to_zap(spell_type spell)
10 switch (spell)
12 case SPELL_MAGIC_DART:
13 return ZAP_MAGIC_DARTS;
14 case SPELL_STRIKING:
15 return ZAP_STRIKING;
16 case SPELL_THROW_FLAME:
17 return ZAP_FLAME;
18 case SPELL_THROW_FROST:
19 return ZAP_FROST;
20 case SPELL_PAIN:
21 return ZAP_PAIN;
22 case SPELL_FLAME_TONGUE:
23 return ZAP_FLAME_TONGUE;
24 case SPELL_SHOCK:
25 return ZAP_ELECTRICITY;
26 case SPELL_STING:
27 return ZAP_STING;
28 case SPELL_BOLT_OF_FIRE:
29 return ZAP_FIRE;
30 case SPELL_BOLT_OF_COLD:
31 return ZAP_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;
38 case SPELL_IRON_SHOT:
39 return ZAP_IRON_SHOT;
40 case SPELL_LIGHTNING_BOLT:
41 return ZAP_LIGHTNING;
42 case SPELL_BOLT_OF_MAGMA:
43 return ZAP_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;
59 case SPELL_AGONY:
60 return ZAP_AGONY;
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:
68 // Wizard mode only.
69 return ZAP_PORKALATOR;
70 case SPELL_HELLFIRE:
71 // Should only be available from Staff of Dispater and Sceptre
72 // of Asmodeus.
73 return ZAP_HELLFIRE;
74 case SPELL_ICE_STORM:
75 return ZAP_ICE_STORM;
76 case SPELL_CORONA:
77 return ZAP_CORONA;
78 case SPELL_SLOW:
79 return ZAP_SLOWING;
80 case SPELL_CONFUSE:
81 return ZAP_CONFUSION;
82 case SPELL_ENSLAVEMENT:
83 return ZAP_ENSLAVEMENT;
84 case SPELL_HIBERNATION:
85 return ZAP_HIBERNATION;
86 case SPELL_SLEEP:
87 return ZAP_SLEEP;
88 case SPELL_PARALYSE:
89 return ZAP_PARALYSIS;
90 case SPELL_PETRIFY:
91 return ZAP_PETRIFY;
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;
98 case SPELL_HASTE:
99 return ZAP_HASTING;
100 case SPELL_INVISIBILITY:
101 return ZAP_INVISIBILITY;
102 case SPELL_DIG:
103 return ZAP_DIGGING;
104 case SPELL_LIGHT_BEAM:
105 return ZAP_LIGHT_BEAM;
106 case SPELL_DEBUGGING_RAY:
107 return ZAP_DEBUGGING_RAY;
108 default:
109 return NUM_ZAPS;
113 int spell_zap_power(spell_type spell, int pow)
115 switch (spell)
117 case SPELL_CORONA:
118 return (pow + 10);
119 case SPELL_HIBERNATION:
120 return (stepdown_value(pow * 9 / 10, 5, 35, 45, 50));
121 default:
122 return (pow);
126 int spell_zap_power_cap(spell_type spell)
128 const zap_type zap = spell_to_zap(spell);
130 if (zap == NUM_ZAPS)
131 return (0);
133 const int cap = zap_power_cap(zap);
135 switch (spell)
137 case SPELL_CORONA:
138 return (std::max<int>(cap - 10, 0));
139 case SPELL_HIBERNATION:
140 return (50);
141 default:
142 return (cap);