0.14.2 changelog (finally!).
[crawl.git] / crawl-ref / source / zap-data.h
1 /**
2  * @file
3  * @brief Zap definitions. See zap_info struct in beam.cc.
4 **/
5
6 /*
7 struct zap_info
8 {
9     zap_type ztype;
10     const char* name;           // NULL means handled specially
11     int power_cap;
12     dam_deducer* damage;
13     tohit_deducer* tohit;       // Enchantments have power modifier here
14     int colour;
15     bool is_enchantment;
16     beam_type flavour;
17     dungeon_char_type glyph;
18     bool always_obvious;
19     bool can_beam;
20     bool is_explosion;
21     int hit_loudness;
22 }
23 */
24
25 {
26     ZAP_THROW_FLAME,
27     "puff of flame",
28     50,
29     new dicedef_calculator<2, 4, 1, 10>,
30     new tohit_calculator<8, 1, 10>,
31     RED,
32     false,
33     BEAM_FIRE,
34     DCHAR_FIRED_ZAP,
35     true,
36     false,
37     false,
38     2
39 },
40
41 {
42     ZAP_THROW_FROST,
43     "puff of frost",
44     50,
45     new dicedef_calculator<2, 4, 1, 10>,
46     new tohit_calculator<8, 1, 10>,
47     WHITE,
48     false,
49     BEAM_COLD,
50     DCHAR_FIRED_ZAP,
51     true,
52     false,
53     false,
54     2
55 },
56
57 {
58     ZAP_SLOW,
59     "",
60     100,
61     NULL,
62     new tohit_calculator<0, 3, 2>,
63     BLACK,
64     true,
65     BEAM_SLOW,
66     NUM_DCHAR_TYPES,
67     false,
68     false,
69     false,
70     0
71 },
72
73 {
74     ZAP_HASTE,
75     "",
76     100,
77     NULL,
78     NULL,
79     BLACK,
80     true,
81     BEAM_HASTE,
82     NUM_DCHAR_TYPES,
83     false,
84     false,
85     false,
86     0
87 },
88
89 {
90     ZAP_MAGIC_DART,
91     "magic dart",
92     25,
93     new dicedef_calculator<1, 3, 1, 5>,
94     new tohit_calculator<AUTOMATIC_HIT>,
95     LIGHTMAGENTA,
96     false,
97     BEAM_MMISSILE,
98     DCHAR_FIRED_ZAP,
99     true,
100     false,
101     false,
102     1
103 },
104
105 {
106     ZAP_MAJOR_HEALING,
107     "",
108     100,
109     new dicedef_calculator<1, 7, 1, 3>,
110     NULL,
111     BLACK,
112     true,
113     BEAM_HEALING,
114     NUM_DCHAR_TYPES,
115     false,
116     false,
117     false,
118     0
119 },
120
121 {
122     ZAP_PARALYSE,
123     "",
124     100,
125     NULL,
126     NULL,
127     BLACK,
128     true,
129     BEAM_PARALYSIS,
130     NUM_DCHAR_TYPES,
131     false,
132     false,
133     false,
134     0
135 },
136
137 {
138     ZAP_BOLT_OF_FIRE,
139     "bolt of fire",
140     200,
141     new calcdice_calculator<6, 18, 2, 3>,
142     new tohit_calculator<10, 1, 25>,
143     RED,
144     false,
145     BEAM_FIRE,
146     DCHAR_FIRED_ZAP,
147     true,
148     true,
149     false,
150     6
151 },
152
153 {
154     ZAP_BOLT_OF_COLD,
155     "bolt of cold",
156     200,
157     new calcdice_calculator<6, 18, 2, 3>,
158     new tohit_calculator<10, 1, 25>,
159     WHITE,
160     false,
161     BEAM_COLD,
162     DCHAR_FIRED_ZAP,
163     true,
164     true,
165     false,
166     6
167 },
168
169 {
170     ZAP_PRIMAL_WAVE,
171     "great wave of water",
172     200,
173     new calcdice_calculator<4, 14, 3, 5>,
174     new tohit_calculator<10, 1, 25>,
175     LIGHTBLUE,
176     false,
177     BEAM_WATER,
178     DCHAR_WAVY,
179     true,
180     false,
181     false,
182     6
183 },
184
185 {
186     ZAP_CONFUSE,
187     "",
188     100,
189     NULL,
190     NULL,
191     BLACK,
192     true,
193     BEAM_CONFUSION,
194     NUM_DCHAR_TYPES,
195     false,
196     false,
197     false,
198     0
199 },
200
201 {
202     ZAP_INVISIBILITY,
203     "",
204     100,
205     NULL,
206     NULL,
207     BLACK,
208     true,
209     BEAM_INVISIBILITY,
210     NUM_DCHAR_TYPES,
211     false,
212     false,
213     false,
214     0
215 },
216
217 {
218     ZAP_DIG,
219     "",
220     100,
221     NULL,
222     NULL,
223     BLACK,
224     true,
225     BEAM_DIGGING,
226     NUM_DCHAR_TYPES,
227     false,
228     true,
229     false,
230     4
231 },
232
233 {
234     ZAP_FIREBALL,
235     "fireball",
236     200,
237     new calcdice_calculator<3, 10, 1, 2>,
238     new tohit_calculator<40>,
239     RED,
240     false,
241     BEAM_FIRE,
242     DCHAR_FIRED_ZAP,
243     false,
244     false,
245     true,
246     0 // Noise comes from explosion
247 },
248
249 {
250     ZAP_TELEPORT_OTHER,
251     "",
252     100,
253     NULL,
254     new tohit_calculator<0, 3, 2>,
255     BLACK,
256     true,
257     BEAM_TELEPORT,
258     NUM_DCHAR_TYPES,
259     false,
260     false,
261     false,
262     0
263 },
264
265 {
266     ZAP_LIGHTNING_BOLT,
267     "bolt of lightning",
268     200,
269     new calcdice_calculator<1, 11, 3, 5>,
270     new tohit_calculator<7, 1, 40>,
271     LIGHTCYAN,
272     false,
273     BEAM_ELECTRICITY,
274     DCHAR_FIRED_ZAP,
275     true,
276     true,
277     false,
278     5 // XXX: Maybe louder?
279 },
280
281 {
282     ZAP_POLYMORPH,
283     "",
284     100,
285     NULL,
286     NULL,
287     BLACK,
288     true,
289     BEAM_POLYMORPH,
290     NUM_DCHAR_TYPES,
291     false,
292     false,
293     false,
294     0
295 },
296
297 {
298     ZAP_VENOM_BOLT,
299     "bolt of poison",
300     200,
301     new calcdice_calculator<4, 16, 3, 5>,
302     new tohit_calculator<8, 1, 20>,
303     LIGHTGREEN,
304     false,
305     BEAM_POISON,
306     DCHAR_FIRED_ZAP,
307     true,
308     true,
309     false,
310     5 // XXX: Quieter because it's poison?
311 },
312
313 {
314     ZAP_BOLT_OF_DRAINING,
315     "bolt of negative energy",
316     200,
317     new calcdice_calculator<4, 15, 3, 5>,
318     new tohit_calculator<8, 1, 20>,
319     DARKGREY,
320     false,
321     BEAM_NEG,
322     DCHAR_FIRED_ZAP,
323     true,
324     true,
325     false,
326     0 // Draining is soundless
327 },
328
329 {
330     ZAP_LEHUDIBS_CRYSTAL_SPEAR,
331     "crystal spear",
332     200,
333     new calcdice_calculator<10, 23, 1, 1>,
334     new tohit_calculator<10, 1, 15>,
335     WHITE,
336     false,
337     BEAM_MMISSILE,
338     DCHAR_FIRED_MISSILE,
339     true,
340     false,
341     false,
342     8
343 },
344
345 {
346     ZAP_BOLT_OF_INACCURACY,
347     "narrow beam of energy",
348     1000,
349     new calcdice_calculator<10, 40, 1, 1>,
350     new tohit_calculator<1>,
351     YELLOW,
352     false,
353     BEAM_ENERGY,
354     DCHAR_FIRED_ZAP,
355     true,
356     true,
357     false,
358     3
359 },
360
361 {
362     ZAP_ISKENDERUNS_MYSTIC_BLAST,
363     "orb of energy",
364     100,
365     new calcdice_calculator<2, 12, 1, 3>,
366     new tohit_calculator<10, 1, 7>,
367     LIGHTMAGENTA,
368     false,
369     BEAM_MMISSILE,
370     DCHAR_FIRED_ZAP,
371     true,
372     false,
373     false,
374     4
375 },
376
377 {
378     ZAP_ENSLAVEMENT,
379     "",
380     100,
381     NULL,
382     NULL,
383     BLACK,
384     true,
385     BEAM_ENSLAVE,
386     NUM_DCHAR_TYPES,
387     false,
388     false,
389     false,
390     0
391 },
392
393 {
394     ZAP_PAIN,
395     "",
396     100,
397     new dicedef_calculator<1, 4, 1,5>,
398     new tohit_calculator<0, 7, 2>,
399     BLACK,
400     true,
401     BEAM_PAIN,
402     NUM_DCHAR_TYPES,
403     false,
404     false,
405     false,
406     1 // XXX: Should this be soundless?
407 },
408
409 {
410     ZAP_STICKY_FLAME,
411     "sticky flame",
412     100,
413     new dicedef_calculator<2, 3, 1, 12>,
414     new tohit_calculator<AUTOMATIC_HIT>,
415     RED,
416     false,
417     BEAM_FIRE,
418     DCHAR_FIRED_ZAP,
419     true,
420     false,
421     false,
422     1
423 },
424
425 {
426     ZAP_STICKY_FLAME_RANGE,
427     "sticky flame",
428     100,
429     new dicedef_calculator<2, 3, 1, 12>,
430     new tohit_calculator<AUTOMATIC_HIT>,
431     RED,
432     false,
433     BEAM_FIRE,
434     DCHAR_FIRED_ZAP,
435     true,
436     false,
437     false,
438     1
439 },
440
441 {
442     ZAP_DISPEL_UNDEAD,
443     "",
444     100,
445     new calcdice_calculator<3, 20, 3, 4>,
446     new tohit_calculator<0, 3, 2>,
447     BLACK,
448     true,
449     BEAM_DISPEL_UNDEAD,
450     NUM_DCHAR_TYPES,
451     false,
452     false,
453     false,
454     0
455 },
456
457 {
458     ZAP_BANISHMENT,
459     "",
460     100,
461     NULL,
462     NULL,
463     BLACK,
464     true,
465     BEAM_BANISH,
466     NUM_DCHAR_TYPES,
467     false,
468     false,
469     false,
470     0
471 },
472
473 {
474     ZAP_STING,
475     "sting",
476     25,
477     new dicedef_calculator<1, 3, 1, 5>,
478     new tohit_calculator<8, 1, 5>,
479     GREEN,
480     false,
481     BEAM_POISON,
482     DCHAR_FIRED_ZAP,
483     true,
484     false,
485     false,
486     1 // XXX: Maybe silent because it's poison?
487 },
488
489 {
490     ZAP_HELLFIRE,
491     "hellfire",
492     200,
493     new calcdice_calculator<3, 8, 3, 5>,
494     new tohit_calculator<20, 1, 10>,
495     LIGHTRED,
496     false,
497     BEAM_HELLFIRE,
498     DCHAR_FIRED_ZAP,
499     true,
500     false,
501     true,
502     9 // XXX: Even louder because it's hellish?
503 },
504
505 {
506     ZAP_IRON_SHOT,
507     "iron shot",
508     200,
509     new calcdice_calculator<9, 15, 3, 4>,
510     new tohit_calculator<7, 1, 15>,
511     LIGHTCYAN,
512     false,
513     BEAM_MMISSILE,
514     DCHAR_FIRED_MISSILE,
515     true,
516     false,
517     false,
518     6
519 },
520
521 {
522     ZAP_STONE_ARROW,
523     "stone arrow",
524     50,
525     new dicedef_calculator<3, 5, 1, 8>,
526     new tohit_calculator<8, 1, 10>,
527     LIGHTGREY,
528     false,
529     BEAM_MMISSILE,
530     DCHAR_FIRED_MISSILE,
531     true,
532     false,
533     false,
534     3
535 },
536
537 {
538     ZAP_SHOCK,
539     "zap",
540     25,
541     new dicedef_calculator<1, 3, 1, 4>,
542     new tohit_calculator<8, 1, 7>,
543     LIGHTCYAN,
544     false,
545     BEAM_ELECTRICITY,             // beams & reflects
546     DCHAR_FIRED_ZAP,
547     true,
548     true,
549     false,
550     1 // XXX: maybe electricity should be louder?
551 },
552
553 {
554     ZAP_ORB_OF_ELECTRICITY,
555     "orb of electricity",
556     200,
557     new calcdice_calculator<0, 13, 4, 5>,
558     new tohit_calculator<40>,
559     LIGHTBLUE,
560     false,
561     BEAM_ELECTRICITY,
562     DCHAR_FIRED_ZAP,
563     true,
564     false,
565     true,
566     6 // XXX: maybe electricity should be louder?
567 },
568
569 {
570     ZAP_SPIT_POISON,
571     "splash of poison",
572     50,
573     new dicedef_calculator<1, 4, 1, 2>,
574     new tohit_calculator<5, 1, 6>,
575     GREEN,
576     false,
577     BEAM_POISON,
578     DCHAR_FIRED_ZAP,
579     true,
580     false,
581     false,
582     1
583 },
584
585 {
586     ZAP_DEBUGGING_RAY,
587     "debugging ray",
588     10000,
589     new dicedef_calculator<AUTOMATIC_HIT, 1, 0, 1>,
590     new tohit_calculator<AUTOMATIC_HIT>,
591     WHITE,
592     false,
593     BEAM_MMISSILE,
594     DCHAR_FIRED_DEBUG,
595     false,
596     false,
597     false,
598     0
599 },
600
601 // XXX: How loud should breath be?
602 {
603     ZAP_BREATHE_FIRE,
604     "fiery breath",
605     50,
606     new dicedef_calculator<3, 4, 1, 3>,
607     new tohit_calculator<8, 1, 6>,
608     RED,
609     false,
610     BEAM_FIRE,
611     DCHAR_FIRED_ZAP,
612     true,
613     true,
614     false,
615     7
616 },
617
618 {
619     ZAP_BREATHE_FROST,
620     "freezing breath",
621     50,
622     new dicedef_calculator<3, 4, 1, 3>,
623     new tohit_calculator<8, 1, 6>,
624     WHITE,
625     false,
626     BEAM_COLD,
627     DCHAR_FIRED_ZAP,
628     true,
629     true,
630     false,
631     6
632 },
633
634 {
635     ZAP_BREATHE_ACID,
636     "acid",
637     50,
638     new dicedef_calculator<3, 4, 1, 3>,
639     new tohit_calculator<7, 1, 6>,
640     YELLOW,
641     false,
642     BEAM_ACID,
643     DCHAR_FIRED_ZAP,
644     true,
645     true,
646     false,
647     6
648 },
649
650 {
651     ZAP_BREATHE_POISON,
652     "poison gas",
653     50,
654     new dicedef_calculator<3, 2, 1, 6>,
655     new tohit_calculator<6, 1, 6>,
656     GREEN,
657     false,
658     BEAM_POISON,
659     DCHAR_FIRED_ZAP,
660     true,
661     true,
662     false,
663     0 // Explosion does the noise.
664 },
665
666 {
667     ZAP_BREATHE_POWER,
668     "bolt of dispelling energy",
669     50,
670     new dicedef_calculator<3, 3, 1, 3>,
671     new tohit_calculator<5, 1, 6>,
672     BLUE,
673     false,
674     BEAM_MMISSILE,
675     DCHAR_FIRED_ZAP,
676     true,
677     true,
678     false,
679     6
680 },
681
682 {
683     ZAP_ENSLAVE_SOUL,
684     "",
685     100,
686     NULL,
687     NULL,
688     BLACK,
689     true,
690     BEAM_ENSLAVE_SOUL,
691     NUM_DCHAR_TYPES,
692     false,
693     false,
694     false,
695     0
696 },
697
698 {
699     ZAP_AGONY,
700     "agony",
701     100,
702     NULL,
703     new tohit_calculator<0, 5, 1>,
704     BLACK,
705     true,
706     BEAM_PAIN,
707     NUM_DCHAR_TYPES,
708     false,
709     false,
710     false,
711     0
712 },
713
714 {
715     ZAP_DISINTEGRATE,
716     "",
717     100,
718     new calcdice_calculator<3, 15, 3, 4>,
719     new tohit_calculator<0, 5, 2>,
720     BLACK,
721     true,
722     BEAM_DISINTEGRATION,
723     NUM_DCHAR_TYPES,
724     false,
725     true,
726     false,
727     6
728 },
729
730 {
731     ZAP_BREATHE_STEAM,
732     "ball of steam",
733     50,
734     new dicedef_calculator<3, 4, 1, 5>,
735     new tohit_calculator<10, 1, 10>,
736     LIGHTGREY,
737     false,
738     BEAM_STEAM,
739     DCHAR_FIRED_ZAP,
740     true,
741     true,
742     false,
743     0 // Explosion does the noise.
744 },
745
746 {
747     ZAP_THROW_ICICLE,
748     "shard of ice",
749     100,
750     new calcdice_calculator<3, 10, 1, 2>,
751     new tohit_calculator<9, 1, 12>,
752     WHITE,
753     false,
754     BEAM_ICE,
755     DCHAR_FIRED_ZAP,
756     false,
757     false,
758     false,
759     4
760 },
761
762 #if TAG_MAJOR_VERSION == 34
763 {                           // ench_power controls radius
764     ZAP_ICE_STORM,
765     "great blast of cold",
766     200,
767     new calcdice_calculator<7, 22, 1, 1>,
768     new tohit_calculator<20, 1, 10>,
769     BLUE,
770     false,
771     BEAM_ICE,
772     DCHAR_FIRED_ZAP,
773     true,
774     false,
775     true,
776     9 // XXX: Should a storm be louder?
777 },
778 #endif
779
780 {
781     ZAP_CORONA,
782     "",
783     100,
784     NULL,
785     new tohit_calculator<0, 3, 2>,
786     BLUE,
787     true,
788     BEAM_CORONA,
789     NUM_DCHAR_TYPES,
790     false,
791     false,
792     false,
793     0
794 },
795
796 {
797     ZAP_HIBERNATION,
798     "",
799     100, // power is capped to 50 in spl-zap.cc:spell_zap_power.
800     NULL,
801     NULL,
802     BLACK,
803     true,
804     BEAM_HIBERNATION,
805     NUM_DCHAR_TYPES,
806     false,
807     false,
808     false,
809     0
810 },
811
812 {
813     ZAP_FLAME_TONGUE,
814     "flame tongue",
815     25,
816     new dicedef_calculator<1, 8, 1, 4>,
817     new tohit_calculator<11, 1, 6>,
818     RED,
819     false,
820     BEAM_FIRE,
821     DCHAR_FIRED_BOLT,
822     true,
823     false,
824     false,
825     1
826 },
827
828 {
829     ZAP_LARGE_SANDBLAST,
830     "large rocky blast",
831     50,
832     new dicedef_calculator<3, 4, 1, 3>,
833     new tohit_calculator<13, 1, 10>,
834     BROWN,
835     false,
836     BEAM_FRAG,
837     DCHAR_FIRED_BOLT,
838     true,
839     false,
840     false,
841     3
842 },
843
844 {
845     ZAP_SANDBLAST,
846     "rocky blast",
847     50,
848     new dicedef_calculator<2, 4, 1, 3>,
849     new tohit_calculator<13, 1, 10>,
850     BROWN,
851     false,
852     BEAM_FRAG,
853     DCHAR_FIRED_BOLT,
854     true,
855     false,
856     false,
857     2 // XXX: Sound 2 for level one spell?
858 },
859
860 {
861     ZAP_SMALL_SANDBLAST,
862     "blast of sand",
863     25,
864     new dicedef_calculator<1, 8, 1, 4>,
865     new tohit_calculator<8, 1, 5>,
866     BROWN,
867     false,
868     BEAM_FRAG,
869     DCHAR_FIRED_BOLT,
870     true,
871     false,
872     false,
873     1
874 },
875
876 {
877     ZAP_BOLT_OF_MAGMA,
878     "bolt of magma",
879     200,
880     new calcdice_calculator<4, 16, 2, 3>,
881     new tohit_calculator<8, 1, 25>,
882     RED,
883     false,
884     BEAM_LAVA,
885     DCHAR_FIRED_ZAP,
886     true,
887     true,
888     false,
889     5
890 },
891
892 {
893     ZAP_POISON_ARROW,
894     "poison arrow",
895     200,
896     new calcdice_calculator<4, 15, 1, 1>,
897     new tohit_calculator<5, 1, 10>,
898     LIGHTGREEN,
899     false,
900     BEAM_POISON_ARROW,             // extra damage
901     DCHAR_FIRED_MISSILE,
902     true,
903     false,
904     false,
905     6 // XXX: Less noise because it's poison?
906 },
907
908 {
909     ZAP_PETRIFY,
910     "",
911     100,
912     NULL,
913     NULL,
914     BLACK,
915     true,
916     BEAM_PETRIFY,
917     NUM_DCHAR_TYPES,
918     false,
919     false,
920     false,
921     0
922 },
923
924 {
925     ZAP_PORKALATOR,
926     "porkalator",
927     100,
928     NULL,
929     NULL,
930     RED,
931     true,
932     BEAM_PORKALATOR,
933     NUM_DCHAR_TYPES,
934     false,
935     false,
936     false,
937     0
938 },
939
940 {
941     ZAP_SLEEP,
942     "",
943     100,
944     NULL,
945     NULL,
946     BLACK,
947     true,
948     BEAM_SLEEP,
949     NUM_DCHAR_TYPES,
950     false,
951     false,
952     false,
953     0
954 },
955
956 {
957     ZAP_IOOD,
958     "",
959     200,
960     NULL,
961     new tohit_calculator<AUTOMATIC_HIT>,
962     WHITE,
963     false,
964     BEAM_NUKE,
965     NUM_DCHAR_TYPES, // no dchar, to get bolt.glyph == 0,
966                      // hence invisible
967     true,
968     true,
969     false,
970     0
971 },
972
973 #if TAG_MAJOR_VERSION == 34
974 {
975     ZAP_HOLY_LIGHT,
976     "beam of light",
977     200,
978     new calcdice_calculator<3, 11, 1, 3>,
979     new tohit_calculator<10, 1, 25>,
980     ETC_HOLY,
981     false,
982     BEAM_HOLY_LIGHT,
983     DCHAR_FIRED_ZAP,
984     true,
985     true,
986     false,
987     6
988 },
989 #endif
990
991 {
992     ZAP_BREATHE_STICKY_FLAME,
993     "splash of liquid fire",
994     100,
995     new dicedef_calculator<2, 3, 1, 12>,
996     new tohit_calculator<11, 1, 10>,
997     RED,
998     false,
999     BEAM_FIRE,
1000     DCHAR_FIRED_ZAP,
1001     true,
1002     false,
1003     false,
1004     1
1005 },
1006
1007 {
1008     ZAP_BREATHE_MEPHITIC,
1009     "blast of choking fumes",
1010     50,
1011     new dicedef_calculator<3, 2, 1, 6>,
1012     new tohit_calculator<6, 1, 6>,
1013     GREEN,
1014     false,
1015     BEAM_MEPHITIC,
1016     DCHAR_FIRED_ZAP,
1017     true,
1018     true,
1019     false,
1020     0
1021 },
1022
1023 {
1024     ZAP_INNER_FLAME,
1025     "",
1026     100,
1027     NULL,
1028     new tohit_calculator<0, 3, 1>,
1029     BLACK,
1030     true,
1031     BEAM_INNER_FLAME,
1032     NUM_DCHAR_TYPES,
1033     false,
1034     false,
1035     false,
1036     0
1037 },
1038
1039 {
1040     ZAP_DAZZLING_SPRAY,
1041     "spray of energy",
1042     50,
1043     new calcdice_calculator<2, 8, 1, 4>,
1044     new tohit_calculator<9, 1, 7>,
1045     LIGHTMAGENTA,
1046     false,
1047     BEAM_MMISSILE,
1048     DCHAR_FIRED_ZAP,
1049     true,
1050     false,
1051     false,
1052     3
1053 },
1054
1055 {
1056     ZAP_FORCE_LANCE,
1057     "lance of force",
1058     100,
1059     new dicedef_calculator<2, 6, 1, 6>,
1060     new tohit_calculator<10, 1, 9>,
1061     CYAN,
1062     false,
1063     BEAM_MMISSILE,
1064     DCHAR_FIRED_MISSILE,
1065     true,
1066     false,
1067     false,
1068     5
1069 },
1070
1071 {
1072     ZAP_SEARING_RAY_I,
1073     "searing ray",
1074     50,
1075     new dicedef_calculator<2, 3, 1, 13>,
1076     new tohit_calculator<10, 1, 9>,
1077     MAGENTA,
1078     false,
1079     BEAM_MMISSILE,
1080     DCHAR_FIRED_ZAP,
1081     true,
1082     false,
1083     false,
1084     2
1085 },
1086
1087 {
1088     ZAP_SEARING_RAY_II,
1089     "searing ray",
1090     50,
1091     new dicedef_calculator<3, 3, 1, 12>,
1092     new tohit_calculator<11, 1, 8>,
1093     LIGHTMAGENTA,
1094     false,
1095     BEAM_MMISSILE,
1096     DCHAR_FIRED_ZAP,
1097     true,
1098     false,
1099     false,
1100     2
1101 },
1102
1103 {
1104     ZAP_SEARING_RAY_III,
1105     "searing ray",
1106     50,
1107     new dicedef_calculator<4, 3, 1, 12>,
1108     new tohit_calculator<12, 1, 7>,
1109     WHITE,
1110     false,
1111     BEAM_MMISSILE,
1112     DCHAR_FIRED_ZAP,
1113     true,
1114     true,
1115     false,
1116     2
1117 },
1118
1119 {
1120     ZAP_EXPLOSIVE_BOLT,
1121     "explosive bolt",
1122     200,
1123     NULL,
1124     new tohit_calculator<17, 1, 25>,
1125     RED,
1126     false,
1127     BEAM_MISSILE,  // To avoid printing needless messages for non-damaging hits
1128     DCHAR_FIRED_ZAP,
1129     true,
1130     true,
1131     false,
1132     0
1133 },
1134
1135 {
1136     ZAP_CRYSTAL_BOLT,
1137     "crystal bolt",
1138     200,
1139     new calcdice_calculator<6, 18, 2, 3>,
1140     new tohit_calculator<10, 1, 25>,
1141     GREEN,
1142     false,
1143     BEAM_CRYSTAL,
1144     DCHAR_FIRED_ZAP,
1145     true,
1146     true,
1147     false,
1148     6
1149 },
1150
1151 {
1152     ZAP_QUICKSILVER_BOLT,
1153     "bolt of dispelling energy",
1154     200,
1155     new calcdice_calculator<6, 15, 2, 3>,
1156     new tohit_calculator<10, 1, 25>,
1157     BLUE,
1158     false,
1159     BEAM_MMISSILE,
1160     DCHAR_FIRED_ZAP,
1161     true,
1162     true,
1163     false,
1164     6
1165 },
1166
1167 {
1168     ZAP_RANDOM_BOLT_TRACER,
1169     "random bolt tracer",
1170     200,
1171     new dicedef_calculator<AUTOMATIC_HIT, 1, 0, 1>,
1172     new tohit_calculator<AUTOMATIC_HIT>,
1173     WHITE,
1174     false,
1175     BEAM_BOUNCY_TRACER,
1176     DCHAR_FIRED_DEBUG,
1177     true,
1178     true,
1179     false,
1180     0
1181 },