-
Notifications
You must be signed in to change notification settings - Fork 0
/
spell-list.xml
2675 lines (2672 loc) · 218 KB
/
spell-list.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!--
Changelog
2022-03-13
Added initial changelog header
-->
<?xml version='1.0'?>
<list>
<spell availability='all' name='Spirit Warding I' number='101' type='defense'>
<duration span='stackable' multicastable='yes'>20 + Spells.minorspiritual</duration>
<cost type='mana'>1</cost>
<bonus type='bolt-ds'>10</bonus>
<bonus type='elemental-td'>5</bonus>
<bonus type='spirit-td'>10</bonus>
<bonus type='sorcerer-td'>8</bonus>
<message type='start'>A light blue glow surrounds you\.</message>
<message type='end'>The light blue glow leaves you\.</message>
</spell>
<spell availability='self-cast' name='Spirit Barrier' number='102' type='defense'>
<duration cast-type='self' span='stackable' multicastable='yes'>20 + Spells.minorspiritual</duration>
<duration cast-type='target' span='stackable'>if (history = reget) and (history = history.reverse) and (line = history.find { |l| l =~ /^The air thickens and begins to swirl around you\./ }) and history[history.index(line)+2] =~ /^\s*CS: [\+\-][0-9]+ \- TD\: [\+\-][0-9]+ \+ CvA\: [\+\-][0-9]+ \+ d100\: [\+\-][0-9]+ (?:\- \+?[0-9]+ )?==? \+([0-9]+)/; ($1.to_i - 100)/60.0; else; 0.25; end</duration>
<cost type='mana'>2 + (([Spells.minorspiritual,Stats.level].min - 2) / 6)</cost>
<bonus type='physical-as'>0-(20+((Spells.minorspiritual-2)/2))</bonus>
<bonus type='bolt-ds'>[20+((Spells.minorspiritual-2)/2),20].max</bonus>
<bonus type='physical-ds'>[20+((Spells.minorspiritual-2)/2),20].max</bonus>
<message type='start'>The air thickens and begins to swirl around you\.</message>
<message type='end'>The air calms down around you\.</message>
</spell>
<spell availability='all' name='Spirit Defense' number='103' type='defense'>
<duration cast-type='self' span='stackable' multicastable='yes'>20 + Spells.minorspiritual</duration>
<duration cast-type='target' span='refreshable'>20 + Spells.minorspiritual</duration>
<cost type='mana'>3</cost>
<bonus type='bolt-ds'>10</bonus>
<bonus type='physical-ds'>10</bonus>
<message type='start'>You suddenly feel more powerful\.</message>
<message type='end'>The powerful look leaves you\.</message>
</spell>
<spell availability='all' name='Disease Resistance' number='104' type='defense'>
<duration span='stackable' multicastable='yes'>20 + Spells.minorspiritual</duration>
<cost type='mana'>4</cost>
<message type='start'>You feel a strengthening of your internal fortitude\.</message>
<message type='end'>You lose your extra internal fortitude\.</message>
</spell>
<spell availability='all' name='Poison Resistance' number='105' type='defense'>
<duration span='stackable' multicastable='yes'>20 + Spells.minorspiritual</duration>
<cost type='mana'>5</cost>
<message type='start'>You feel a strengthening of your blood flow\.</message>
<message type='end'>You notice your blood flow go back to normal\.</message>
</spell>
<spell availability='self-cast' name='Spirit Fog' number='106' type='defense'>
<duration>20 + Spells.minorspiritual</duration>
<cost type='mana'>6</cost>
</spell>
<spell availability='all' name='Spirit Warding II' number='107' type='defense'>
<duration span='stackable' multicastable='yes'>20 + Spells.minorspiritual</duration>
<cost type='mana'>7</cost>
<bonus type='bolt-ds'>25</bonus>
<bonus type='elemental-td'>7</bonus>
<bonus type='spirit-td'>15</bonus>
<bonus type='sorcerer-td'>11</bonus>
<message type='start'>A deep blue glow surrounds you\.</message>
<message type='end'>The deep blue glow leaves you\.</message>
</spell>
<spell availability='all' name='Stun Relief' number='108' type='utility'>
<cost type='mana'>8</cost>
</spell>
<spell availability='all' name='Dispel Invisibility' number='109' type='utility'>
<cost type='mana'>9</cost>
</spell>
<spell availability='all' name='Unbalance' number='110' type='attack'>
<cost type='mana'>10</cost>
</spell>
<spell availability='all' name='Fire Spirit' number='111' stance='yes' type='attack/utility'>
<cost type='mana'>11</cost>
</spell>
<spell availability='all' name='Water Walking' number='112' type='utility'>
<duration span='stackable' multicastable='yes'>20 + Spells.minorspiritual</duration>
<cost type='mana'>12</cost>
<message type='start'>A misty halo surrounds you\.</message>
<message type='end'>The misty halo fades from you\.</message>
</spell>
<spell availability='all' name='Undisease' number='113' type='utility'>
<cost type='mana'>13</cost>
</spell>
<spell availability='all' name='Unpoison' number='114' type='utility'>
<cost type='mana'>14</cost>
</spell>
<spell availability='all' name='Fasthr's Reward' number='115' type='defense'>
<duration cast-type='self' span='stackable' multicastable='yes'>20 + Spells.minorspiritual</duration>
<duration cast-type='target'>2</duration>
<cost type='mana'>15</cost>
<message type='start'>A dull golden nimbus surrounds you\.</message>
<message type='end'>The dull golden nimbus fades from around you\.</message>
</spell>
<spell availability='all' name='Locate Person' number='116' type='utility'>
<cost type='mana'>16</cost>
</spell>
<spell availability='all' name='Spirit Strike' number='117' type='offense'>
<duration span='stackable'>2</duration>
<cost type='mana'>17</cost>
<bonus type='bolt-as'>75</bonus>
<bonus type='physical-as'>75</bonus>
<message type='start'>An invisible force guides you\.</message>
<message type='end'>The guiding force leaves you\.</message>
</spell>
<spell availability='all' name='Web' number='118' stance='yes' type='attack'>
<cost type='mana'>18</cost>
</spell>
<spell availability='all' name='Spirit Dispel' number='119' type='attack/utility'>
<cost type='mana'>19</cost>
</spell>
<spell availability='all' name='Lesser Shroud' number='120' type='defense'>
<duration cast-type='self' span='stackable' multicastable='yes'>20 + Spells.minorspiritual</duration>
<duration cast-type='target' span='refreshable'>2</duration>
<cost type='mana'>20 + (([[Spells.minorspiritual,Stats.level].min - 20,0].max) / 6.0).round</cost>
<bonus type='bolt-ds'>[15+((Spells.minorspiritual-20)/2),15].max</bonus>
<bonus type='physical-ds'>[15+((Spells.minorspiritual-20)/2),15].max</bonus>
<bonus type='elemental-td'>10</bonus>
<bonus type='spirit-td'>20</bonus>
<bonus type='sorcerer-td'>15</bonus>
<message type='start'>You suddenly feel a lot more powerful\.</message>
<message type='end'>The very powerful look leaves you\.</message>
</spell>
<spell availability='all' name='Call Lightning' number='125' type='attack/utility'>
<cost type='mana'>25</cost>
</spell>
<spell availability='all' name='Spirit Guide' number='130' type='utility'>
<cost type='mana'>30</cost>
</spell>
<spell availability='all' name='Searing Light' number='135' type='attack'>
<cost type='mana'>35</cost>
</spell>
<spell availability='all' name='Wall of Force' number='140' type='defense'>
<duration cast-type='self' span='refreshable'>1.5</duration>
<duration cast-type='target' span='refreshable'>1</duration>
<cost type='mana'>40</cost>
<bonus type='bolt-ds'>100</bonus>
<bonus type='physical-ds'>100</bonus>
<message type='start'>A wall of force surrounds you\.</message>
<message type='end'>The wall of force disappears from around you\.</message>
</spell>
<spell availability='all' name='Calm' number='201' type='attack'>
<cost type='mana'>1</cost>
</spell>
<spell availability='all' name='Spirit Shield' number='202' type='defense'>
<duration cast-type='self' span='stackable' multicastable='yes'>20+Spells.majorspiritual</duration>
<duration cast-type='target' span='refreshable'>20+Spells.majorspiritual</duration>
<cost type='mana'>[2+(([Spells.majorspiritual,Stats.level].min-2)/6),2].max</cost>
<bonus type='physical-ds'>[10+(([Spells.majorspiritual,Stats.level].min-2)/3),10].max</bonus>
<message type='start'>A dim aura surrounds you\.</message>
<message type='end'>The dim aura fades from around you\.</message>
</spell>
<spell availability='self-cast' name='Manna' number='203' type='utility'>
<duration span='stackable'>5</duration>
<cost type='mana'>3</cost>
<message type='start'>The spiritual nourishment has a replenishing effect upon you\.</message>
<message type='end'>The replenishing effect fades, but you are left with a feeling of wellbeing\.</message>
</spell>
<spell availability='all' name='Unpresence' number='204' type='utility'>
<duration cast-type='self' span='stackable' multicastable='yes'>20 + Spells.majorspiritual</duration>
<duration cast-type='target' span='refreshable'>20 + Spells.majorspiritual</duration>
<cost type='mana'>4</cost>
<message type='start'>You feel more secure\.</message>
<message type='end'>You feel less secure\.</message>
</spell>
<spell availability='all' name='Light' number='205' type='utility'>
<cost type='mana'>5</cost>
</spell>
<spell availability='self-cast' name='Tend Lore' number='206' type='utility'>
<duration cast-type='self' span='refreshable'>1</duration>
<cost type='mana'>6</cost>
<message type='start'>You feel a knowledge of the treatment of injuries flow through you\.</message>
<message type='end'>You feel the knowledge of the treatment of injuries dissipate\.</message>
</spell>
<spell availability='all' name='Purify Air' number='207' type='defense'>
<duration cast-type='self' span='stackable' multicastable='yes'>20 + Spells.majorspiritual</duration>
<duration cast-type='target' span='refreshable'>20 + Spells.majorspiritual</duration>
<cost type='mana'>7</cost>
<message type='start'>You begin to breathe more deeply\.</message>
<message type='end'>Your breathing becomes more shallow\.</message>
</spell>
<spell availability='all' name='Living Spell' number='208' type='attack/utility'>
<cost type='mana'>8</cost>
</spell>
<spell availability='self-cast' name='Untrammel' number='209' type='utility'>
<duration span='stackable' multicastable='yes'>20 + Spells.majorspiritual</duration>
<cost type='mana'>9</cost>
<message type='start'>A faint slick sheen makes the air about you visible for the briefest of moments, then sinks into you and disappears\.</message>
<message type='end'>The air shivers about you, glistening faintly before stilling to normalcy\.</message>
</spell>
<spell availability='all' name='Silence' number='210' type='attack' incant='no'>
<duration cast-type='target'>if (history = reget) and (history = history.reverse) and (line = history.index { |l| l =~ /^A pall of silence settles over you\./ }) and history[history.index(line)+2] =~ /^\s*CS: [\+\-][0-9]+ \- TD\: [\+\-][0-9]+ \+ CvA\: [\+\-][0-9]+ \+ d100\: [\+\-][0-9]+ (?:\- \+?[0-9]+ )?==? \+([0-9]+)/; 0.5 + ($1.to_i - 100)/60.0; else; 0.25; end</duration>
<cost type='mana'>10</cost>
</spell>
<spell availability='group' name='Bravery' number='211' type='offense'>
<duration cast-type='self' span='stackable' multicastable='yes'>20 + Spells.majorspiritual</duration>
<duration cast-type='target' span='refreshable'>1</duration>
<cost type='mana'>11</cost>
<bonus type='bolt-as'>15</bonus>
<bonus type='physical-as'>15</bonus>
<message type='start'>You (?:and your group stand tall and )?feel more confident\.</message>
<message type='end'>You feel less confident\.</message>
</spell>
<spell availability='all' name='Interference' number='212' type='attack'>
<cost type='mana'>12</cost>
<message type='end'>The distracting force passes away from you\.</message>
</spell>
<spell availability='all' name='Minor Sanctuary' number='213' type='utility'>
<cost type='mana'>13</cost>
</spell>
<spell availability='all' name='Bind' number='214' type='attack'>
<cost type='mana'>14</cost>
<duration cast-type='target' span='stackable'>if (history = reget) and (history = history.reverse) and (line = history.index { |l| l =~ /^An unseen force envelops you, restricting all movement\./ }) and history[history.index(line)+2] =~ /^\s*CS: [\+\-][0-9]+ \- TD\: [\+\-][0-9]+ \+ CvA\: [\+\-][0-9]+ \+ d100\: [\+\-][0-9]+ (?:\- \+?[0-9]+ )?==? \+([0-9]+)/; 13 + ($1.to_i - 100)/60.0; else; 0.25; end</duration>
<duration cast-type='self' span='stackable'>if (history = reget) and (history = history.reverse) and (line = history.index { |l| l =~ /^An unseen force envelops you, restricting all movement\./ }) and history[history.index(line)+2] =~ /^\s*CS: [\+\-][0-9]+ \- TD\: [\+\-][0-9]+ \+ CvA\: [\+\-][0-9]+ \+ d100\: [\+\-][0-9]+ (?:\- \+?[0-9]+ )?==? \+([0-9]+)/; 13 + ($1.to_i - 100)/60.0; else; 0.25; end</duration>
<message type='start'>An unseen force envelops you, restricting all movement\.</message>
<message type='end'>The restricting force that envelops you dissolves away\.</message>
</spell>
<spell availability='group' name='Heroism' number='215' type='offense'>
<duration cast-type='self' span='stackable' multicastable='yes'>20 + Spells.majorspiritual</duration>
<duration cast-type='target' span='refreshable'>1</duration>
<cost type='mana'>15 + (Skills.slblessings / 30.0).round</cost>
<bonus type='bolt-as'>25+(Skills.slblessings/10)</bonus>
<bonus type='physical-as'>25+(Skills.slblessings/10)</bonus>
<message type='start'>A brilliant aura surrounds you and (?:sinks into your skin|your group)\. You feel charged with extra vitality\.</message>
<message type='end'>The brilliant aura fades away from you\.</message>
</spell>
<spell availability='all' name='Frenzy' number='216' type='attack'>
<cost type='mana'>16</cost>
</spell>
<spell availability='all' name='Mass Interference' number='217' type='attack' incant='no'>
<cost type='mana'>17</cost>
</spell>
<spell availability='self-cast' name='Spirit Servant' number='218' type='utility'>
<duration span='refreshable'>20 + Spells.majorspiritual</duration>
<cost type='mana'>18</cost>
<message type='start'>A bright pulse of soft energy moves away from your hands and beckons a spirit to your aid\.\.\.</message>
<message type='start'>You infuse your .*?spirit with the mana necessary to maintain its corporeal form\.</message>
<message type='end'>(?:An?|The).*? spirit fades into ethereal form and wafts away\.</message>
</spell>
<spell availability='group' name='Spell Shield' number='219' type='defense'>
<duration cast-type='self' span='stackable' multicastable='yes'>20 + Spells.majorspiritual</duration>
<duration cast-type='target' span='refreshable'>2</duration>
<cost type='mana'>19</cost>
<bonus type='bolt-ds'>40</bonus>
<bonus type='elemental-td'>15</bonus>
<bonus type='spirit-td'>30</bonus>
<bonus type='sorcerer-td'>22</bonus>
<message type='start'>An opalescent aura surrounds you(?: and your group)?\.</message>
<message type='end'>The opalescent aura fades from around you\.</message>
</spell>
<spell availability='self-cast' name='Major Sanctuary' number='220' type='utility'>
<duration>10 + (Spells.majorspiritual/2.0)</duration>
<cost type='mana'>20</cost>
<message type='start'>A brilliant light bathes you as your surroundings blur for a moment\.\.\.</message>
<message type='start'>Whipping winds carry the hot, metallic taste of lightning to you as your surroundings blur\.\.\.</message>
<message type='start'>A deep shadow descends upon you and your breath is briefly muffled as your vision blurs with darkness\.\.\.</message>
<message type='start'>A shiver of wind touches your breath and you feel your eyelashes grow thick with a coating of snow\. You lift your eyes to the sky and white blurs your vision\.\.\.</message>
<message type='end'>A bright light surrounds you and your visions of sanctuary slowly fade\.\.\.</message>
<message type='end'>The blinding flash of lightning shatters the chamber in a cloud of wind and light, causing it to dissolve around you\.\.\.</message>
<message type='end'>Suddenly the candles at the heart of the room go out and you are plunged into a deep darkness that obscures your vision of the world around you\.\.\.</message>
<message type='end'>Rising suddenly, the chill air sends a flurry of snow towards you and your vision swims with white flakes\.\.\.</message>
</spell>
<spell availability='all' name='Transference' number='225' type='utility'>
<cost type='mana'>25</cost>
</spell>
<spell availability='all' name='Spiritual Abolition' number='230' type='attack'>
<cost type='mana'>30</cost>
</spell>
<spell availability='self-cast' name='Spirit Slayer' number='240' type='offense'>
<duration span='refreshable'>0.5</duration>
<cost type='mana'>40</cost>
<message type='start'>A small mote of bright white light swirls into existence around you\.</message>
<message type='start'>A pulse of bright white light flows from your hand into the mote\. You feel the spirit's presence grow stronger\.</message>
<message type='end'>The mote of white light next to you disappears\.</message>
</spell>
<spell availability='all' name='Prayer of Holding' number='301' type='attack'>
<cost type='mana'>1</cost>
</spell>
<spell availability='all' channel='yes' name='Smite' number='302' type='attack'>
<cost type='mana'>4</cost>
</spell>
<spell availability='all' name='Prayer of Protection' number='303' type='defense'>
<duration cast-type='self' span='stackable' multicastable='yes'>20 + Spells.cleric</duration>
<duration cast-type='target' span='refreshable'>2</duration>
<cost type='mana'>3 + [(([Spells.cleric,Stats.level].min - 3) / 6),0].max</cost>
<bonus type='bolt-ds'>[10+(([Spells.cleric,Stats.level].min - 3)/2),10].max</bonus>
<bonus type='physical-ds'>[10+(([Spells.cleric,Stats.level].min - 3)/2),10].max</bonus>
<message type='start'>A pure white aura sparkles around you\.</message>
<message type='end'>A white glow rushes away from you\.</message>
</spell>
<spell availability='all' name='Bless Item' number='304' type='utility'>
<cost type='mana'>4</cost>
</spell>
<spell availability='all' name='Preservation' number='305' type='utility'>
<cost type='mana'>5</cost>
</spell>
<spell availability='all' name='Holy Bolt' number='306' stance='yes' type='attack'>
<cost type='mana'>6</cost>
</spell>
<spell availability='group' name='Benediction' number='307' type='offense/defense'>
<duration cast-type='self' span='stackable' multicastable='yes'>20 + Spells.cleric</duration>
<duration cast-type='target' span='refreshable'>20 + Spells.cleric</duration>
<cost fixme='extra cost when in group' type='mana'>7+[([Spells.cleric, 27].min-7)/2,0].max + [([Stats.level, Spells.cleric].min-27)/2, 0].max</cost>
<bonus type='bolt-as'>5+[([Spells.cleric,Stats.level].min-7)/2,0].max</bonus>
<bonus type='physical-as'>[[5+((Spells.cleric-7)/2),5].max,15].min</bonus>
<bonus type='physical-ds'>[[5+((Spells.cleric-7)/2),5].max,15].min</bonus>
<message type='start'>Your spirit is bolstered by a great sense of faith and conviction\.</message>
<message type='end'>Your sense of faith and conviction wanes\.(?: You are less sure of yourself\.)?</message>
</spell>
<spell availability='all' name='Well of Life' number='308' type='utility'>
<cost type='mana'>8</cost>
</spell>
<spell availability='all' name='Condemn' number='309' type='attack'>
<cost type='mana'>9</cost>
</spell>
<spell availability='group' name='Warding Sphere' number='310' type='defense'>
<duration cast-type='self' span='stackable' multicastable='yes'>20 + Spells.cleric</duration>
<duration cast-type='target' span='refreshable'>20 + Spells.cleric</duration>
<cost type='mana'>10 + [[(Spells.cleric - 10)/2, 10].min,0].max</cost>
<bonus type='bolt-ds'>(10+[([Spells.cleric-10,0].max/2),10].min)</bonus>
<bonus type='physical-ds'>(10+[([Spells.cleric-10,0].max/2),10].min)</bonus>
<bonus type='elemental-td'>(10+[([Spells.cleric-10,0].max/2),10].min/2).to_i</bonus>
<bonus type='spirit-td'>(10+[([Spells.cleric-10,0].max/2),10].min).to_i</bonus>
<bonus type='sorcerer-td'>((10+[([Spells.cleric-10,0].max/2),10].min)*0.75).to_i</bonus>
<message type='start'>You feel more secure basking in the glow of divine protection\.</message>
<message type='end'>You suddenly feel less protected\.</message>
</spell>
<spell availability='all' name='Blind' number='311' type='attack'>
<cost type='mana'>11</cost>
</spell>
<spell availability='all' channel='yes' name='Fervent Reproach' number='312' type='attack'>
<cost type='mana'>12</cost>
</spell>
<spell availability='self-cast' name='Prayer' number='313' type='defense'>
<duration span='stackable' multicastable='yes'>20 + Spells.cleric</duration>
<cost type='mana'>13 + ((if [Spells.cleric,Stats.level].min > 35 then [Spells.cleric,Stats.level].min - 35 else 0 end) / 3)</cost>
<bonus type='bolt-ds'>if Spells.cleric > 34 then ([Spells.cleric,Stats.level].min - 25) else 0 end</bonus>
<bonus type='physical-ds'>if Spells.cleric > 34 then ([Spells.cleric,Stats.level].min - 25) else 0 end</bonus>
<bonus type='elemental-td'>5</bonus>
<bonus type='spirit-td'>10</bonus>
<bonus type='sorcerer-td'>7</bonus>
<message type='start'>Turning your thoughts inward\, you ask for the .* of your deity to protect you\.\s+.+, and you sense that your prayer has been granted\.</message>
<message type='end'>You feel the protection of your deity's influence fade\.</message>
</spell>
<spell availability='all' name='Relieve Burden' number='314' type='utility'>
<duration cast-type='self' span='stackable' multicastable='yes'>20 + Spells.cleric</duration>
<duration cast-type='target' span='refreshable'>2</duration>
<cost type='mana'>c = 14; r = 0; s = 4; c += 0.5 while (Skills.slblessings >= (r += (s += 1))); c</cost>
<message type='start'>A glittering golden collection bowl materializes above you\. It slowly tips upside down, causing a shower of silver sparks to rain down upon your body, then vanishes\.</message>
<message type='end'>An ethereal golden collection bowl drifts out of your body, then vanishes\.</message>
</spell>
<spell availability='all' name='Remove Curse' number='315' type='utility'>
<cost type='mana'>15</cost>
</spell>
<spell availability='all' name='Censure' number='316' type='attack' incant='no'>
<cost type='mana'>16</cost>
</spell>
<spell availability='all' channel='yes' name='Divine Fury' number='317' type='attack'>
<cost type='mana'>17</cost>
</spell>
<spell availability='all' name='Raise Dead' number='318' type='utility'>
<cost type='mana'>if Spells.cleric >= 40 then 40 elsif Spells.cleric >= 25 then 25 else 18 end</cost>
<cost type='spirit'>if Spells.cleric >= 40 then 3 elsif Spells.cleric >= 25 then 5 else 8 end</cost>
</spell>
<spell availability='self-cast' name='Soul Ward' number='319' type='defense'>
<cost type='mana'>19</cost>
<duration span='stackable' multicastable='yes'>20 + Spells.cleric</duration>
<message type='start'>Drawing deep from the well of your soul, you summon forth a thread of your essence and weave it into an evanescent shield to shroud your form\.</message>
<message type='end'>The air about you shimmers momentarily before the evanescent shield surrounding you collapses\.</message>
</spell>
<spell availability='self-cast' name='Ethereal Censer' number='320' type='offensive/utility'>
<cost type='mana'>20</cost>
<duration span='refreshable' max='0.5'>0.5</duration>
<message type='start'>Mana swirls into the visible spectrum and manifests as an ethereal, [\w\s]+ censer swinging pendulously through the air beside you\. A [\w\s]+ haze of incense smoke trails in its wake, quickly spreading in sinuous tendrils through the area\.</message>
<message type='end'>Your ethereal censer fades away, leaving only a faint lingering scent of incense\.</message>
</spell>
<spell availability='all' name='Divine Wrath' number='335' type='attack' incant='no'>
<cost type='mana'>35</cost>
</spell>
<spell availability='all' name='Holy Receptacle' number='325' type='utility'>
<cost type='mana'>25</cost>
</spell>
<spell availability='all' name='Prayer of Communion' number='330' type='utility'>
<cost type='mana'>30</cost>
</spell>
<spell availability='all' name='Symbol of the Proselyte' number='340' type='utility'>
<cost type='mana'>40</cost>
<cost type='spirit'>2</cost>
</spell>
<spell availability='all' name='Miracle' number='350' type='utility'>
<cost type='mana'>50</cost>
</spell>
<spell availability='self-cast' name='Ethereal Censer Cooldown' number='399' type="timer">
<duration max='0.5'>0.5</duration>
<message type='start'>As the fragrant haze settles over you, you feel revitalized\.</message>
<message type='end'>You sense the flows of mana around you are once again strong enough to support the manifestation of an ethereal censer\.</message>
</spell>
<spell availability='all' name='Elemental Defense I' number='401' type='defense'>
<duration span='stackable' multicastable='yes'>20 + Spells.minorelemental</duration>
<cost type='mana'>1</cost>
<bonus type='bolt-ds'>5</bonus>
<bonus type='physical-ds'>5</bonus>
<bonus type='elemental-td'>5</bonus>
<bonus type='spirit-td'>2</bonus>
<bonus type='sorcerer-td'>4</bonus>
<message type='start'>A silvery luminescence surrounds you\.</message>
<message type='end'>The silvery luminescence fades from around you\.</message>
</spell>
<spell availability='self-cast' name='Presence' number='402' type='utility'>
<duration span='refreshable' max='5'>5</duration>
<cost type='mana'>2</cost>
<message type='start'>You continue to feel much more aware of your surroundings\.</message>
<message type='end'>Your senses are no longer as sharp\.</message>
</spell>
<spell availability='all' name='Lock Pick Enhancement' number='403' type='utility'>
<duration span='stackable'>0.5 + Stats.level / 60.0</duration>
<cost type='mana'>3</cost>
<message type='start'>A scintillating light surrounds your hands\.</message>
<message type='end'>The scintillating light fades from your hands\.</message>
</spell>
<spell availability='all' name='Disarm Enhancement' number='404' type='utility'>
<duration span='stackable'>0.5 + Stats.level / 60.0</duration>
<cost type='mana'>4</cost>
<message type='start'>You become calm and focused\.</message>
<message type='end'>The focused look leaves you\.</message>
</spell>
<spell availability='all' name='Elemental Detection' number='405' type='utility'>
<cost type='mana'>5</cost>
</spell>
<spell availability='all' name='Elemental Defense II' number='406' type='defense'>
<duration span='stackable' multicastable='yes'>20 + Spells.minorelemental</duration>
<cost type='mana'>6</cost>
<bonus type='bolt-ds'>10</bonus>
<bonus type='physical-ds'>10</bonus>
<bonus type='elemental-td'>10</bonus>
<bonus type='spirit-td'>5</bonus>
<bonus type='sorcerer-td'>8</bonus>
<message type='start'>A bright luminescence surrounds you\.</message>
<message type='end'>The bright luminescence fades from around you\.</message>
</spell>
<spell availability='all' name='Unlock' number='407' type='utility'>
<cost type='mana'>7</cost>
</spell>
<spell availability='all' name='Disarm' number='408' type='utility'>
<cost type='mana'>8</cost>
</spell>
<spell availability='all' name='Elemental Blast' number='409' type='attack'>
<cost type='mana'>7</cost>
</spell>
<spell availability='all' name='Elemental Wave' number='410' type='attack/area' incant='no'>
<cost type='mana'>10</cost>
</spell>
<spell availability='all' name='Elemental Blade' number='411' type='utility'>
<cost type='mana'>11</cost>
</spell>
<spell availability='all' name='Weapon Deflection' number='412' type='attack'>
<cost type='mana'>12</cost>
</spell>
<spell availability='all' name='Elemental Saturation' number='413' type='attack'>
<cost type='mana'>13</cost>
</spell>
<spell availability='all' name='Elemental Defense III' number='414' type='defense'>
<duration span='stackable' multicastable='yes'>20 + Spells.minorelemental</duration>
<cost type='mana'>14</cost>
<bonus type='bolt-ds'>20</bonus>
<bonus type='physical-ds'>20</bonus>
<bonus type='elemental-td'>15</bonus>
<bonus type='spirit-td'>7</bonus>
<bonus type='sorcerer-td'>10</bonus>
<message type='start'>A brilliant luminescence surrounds you(?: and your group)?\.</message>
<message type='end'>The brilliant luminescence fades from around you\.</message>
</spell>
<spell availability='all' name='Elemental Strike' number='415' type='attack'>
<cost type='mana'>15</cost>
</spell>
<spell availability='all' name='Piercing Gaze' number='416' type='utility'>
<cost type='mana'>16</cost>
</spell>
<spell availability='all' name='Elemental Dispel' number='417' type='attack/utility'>
<cost type='mana'>17</cost>
</spell>
<spell availability='all' name='Mana Focus' number='418' type='utility'>
<cost type='mana'>18</cost>
</spell>
<spell availability='group' name='Mass Elemental Defense' number='419' type='defense'>
<duration span='stackable' multicastable='yes'>20 + Spells.minorelemental</duration>
<cost type='mana'>19</cost>
</spell>
<spell availability='all' name='Magic Item Creation' number='420' type='utility'>
<cost type='mana'>20</cost>
</spell>
<spell availability='self-cast' name='Elemental Targeting' number='425' type='offense'>
<duration span='stackable' multicastable='yes'>20 + Spells.minorelemental</duration>
<cost type='mana'>25</cost>
<bonus type='bolt-as'>[25+((Spells.minorelemental-25)/2),50].min</bonus>
<bonus type='physical-as'>[25+((Spells.minorelemental-25)/2),50].min</bonus>
<bonus type='elemental-cs'>[25+((Spells.minorelemental-25)/2),50].min</bonus>
<bonus type='sorcerer-cs'>[25+((Spells.minorelemental-25)/2),50].min/2</bonus>
<message type='start'>You are filled with a sense of great confidence\.</message>
<message type='end'>You feel less confident than before\.</message>
</spell>
<spell availability='self-cast' name='Elemental Barrier' number='430' type='defense'>
<duration span='stackable' multicastable='yes'>20 + Spells.minorelemental</duration>
<cost type='mana'>30</cost>
<bonus type='bolt-ds'>[(Spells.minorelemental/2),50].min</bonus>
<bonus type='physical-ds'>[(Spells.minorelemental/2),50].min</bonus>
<bonus type='elemental-td'>[(Spells.minorelemental/2),50].min</bonus>
<bonus type='spirit-td'>([(Spells.minorelemental/2),50].min/2).to_i</bonus>
<bonus type='sorcerer-td'>([(Spells.minorelemental/2),50].min*0.75).to_i</bonus>
<message type='start'>Your skin tingles for a moment and you feel more secure\.</message>
<message type='end'>The tingling sensation and sense of security leaves you\.</message>
</spell>
<spell availability='all' name='Major Elemental Wave' number='435' type='attack/area' incant='no'>
<cost type='mana'>35</cost>
</spell>
<spell availability='all' name='Mana Focus Water Bonus' number='499' type='utility'>
</spell>
<spell availability='all' name='Sleep' number='501' type='attack'>
<cost type='mana'>1</cost>
</spell>
<spell availability='all' name='Chromatic Circle' number='502' type='attack'>
<cost type='mana'>2</cost>
</spell>
<spell availability='all' name='Thurfel's Ward' number='503' type='defense'>
<duration span='stackable' multicastable='yes'>20 + Spells.majorelemental</duration>
<cost cast-type='self' type='mana'>3 + (([Spells.majorelemental,Stats.level].min - 3) / 12.0).round</cost>
<cost cast-type='target' type='mana'>3</cost>
<bonus type='bolt-ds'>[20+((Spells.majorelemental-5)/4),20].max</bonus>
<bonus type='physical-ds'>[20+((Spells.majorelemental-5)/4),20].max</bonus>
<message type='start'>Glowing specks of \w+ \w+ energy begin to spin around you\.</message>
<message type='end'>The glowing specks of energy surrounding you suddenly shoot off in all directions, then quickly fade away\.</message>
</spell>
<spell availability='all' name='Slow' number='504' type='attack'>
<cost type='mana'>4</cost>
</spell>
<spell availability='all' name='Hand of Tonis' number='505' stance='yes' type='attack'>
<cost type='mana'>5</cost>
</spell>
<spell availability='all' name='Celerity' number='506' type='utility'>
<duration span='refreshable'>1</duration>
<cost type='mana'>6</cost>
<message type='start'>You (?:and your group )?suddenly start moving light\-footedly\.</message>
<message type='end'>You suddenly feel less light\-footed\.</message>
</spell>
<spell availability='self-cast' name='Elemental Deflection' number='507' type='defense'>
<duration span='stackable' multicastable='yes'>20 + Spells.majorelemental</duration>
<cost type='mana'>7+(([Spells.majorelemental,Stats.level].min-7)/6)</cost>
<bonus type='bolt-ds'>[20+((Spells.majorelemental-7)/2),20].max</bonus>
<bonus type='physical-ds'>[20+((Spells.majorelemental-7)/2),20].max</bonus>
<message type='start'>You are surrounded by a shimmering field of energy\.</message>
<message type='end'>You feel a slight tingling as the shimmering field fades away\.</message>
</spell>
<spell availability='self-cast' name='Elemental Bias' number='508' type='defense'>
<duration span='stackable' multicastable='yes'>20 + Spells.majorelemental</duration>
<cost type='mana'>8</cost>
<bonus type='elemental-td'>20</bonus>
<bonus type='spirit-td'>10</bonus>
<bonus type='sorcerer-td'>15</bonus>
<message type='start'>You feel more magically aware\.</message>
<message type='end'>You feel your extra magical awareness leave you\.</message>
</spell>
<spell availability='all' name='Strength' number='509' type='offense/utility'>
<duration span='stackable' multicastable='yes'>20 + Spells.majorelemental</duration>
<cost type='mana'>9</cost>
<bonus type='physical-as'>15 + (n=0; [4,9,15,22,30,39,49,60,72,85,99,114,130,147,165,184].each{ |limit| if Skills.elearth >= limit then n += 1 end }; n;)</bonus>
<bonus type='strength'>15</bonus>
<message type='start'>You feel much stronger\.</message>
<message type='end'>You feel your extra strength departing\.</message>
</spell>
<spell availability='all' name='Hurl Boulder' number='510' channel='yes' stance='yes' type='attack'>
<cost type='mana'>10</cost>
</spell>
<spell availability='all' name='Floating Disk' number='511' type='utility'>
<cost type='mana'>11</cost>
</spell>
<spell availability='all' name='Cold Snap' number='512' type='attack'>
<cost type='mana'>12</cost>
</spell>
<spell availability='self-cast' name='Elemental Focus' number='513' type='offense'>
<duration cast-type='self' span='stackable' multicastable='yes'>20 + Spells.majorelemental</duration>
<duration cast-type='target' span='stackable'>if (history = reget) and (history = history.reverse) and (line = history.index { |l| l =~ /^You bristle with energy\./ }) and history[history.index(line)+2] =~ /^\s*CS: [\+\-][0-9]+ \- TD\: [\+\-][0-9]+ \+ CvA\: [\+\-][0-9]+ \+ d100\: [\+\-][0-9]+ (?:\- \+?[0-9]+ )?==? \+([0-9]+)/; ($1.to_i - 100)/120.0; else; 0.25; end</duration>
<cost type='mana'>13 + (([Spells.majorelemental,Stats.level].min - 13)/2)</cost>
<bonus type='bolt-as'>[20+(([Spells.majorelemental,Stats.level].min-13)/2),20].max</bonus>
<bonus type='physical-as'>-40</bonus>
<message type='start'>You bristle with energy\.</message>
<message type='end'>You no longer bristle with energy\.</message>
</spell>
<spell availability='all' name='Stone Fist' number='514' type='attack'>
<cost type='mana'>14</cost>
</spell>
<spell availability='all' name='Rapid Fire' number='515' type='utility'>
<duration>1</duration>
<cost type='mana'>15</cost>
<message type='start'>You feel the magic surge through you\.</message>
<message type='end'>You feel the surge of magic depart\.</message>
</spell>
<spell availability='all' name='Mana Leech' number='516' type='attack/utility'>
<cost type='mana'>16</cost>
</spell>
<spell availability='all' name='Charge Item' number='517' type='utility'>
<cost type='mana'>17</cost>
</spell>
<spell availability='all' name='Cone of Elements' number='518' channel='yes' stance='yes' type='attack/area' incant='no'>
<cost type='mana'>18</cost>
</spell>
<spell availability='all' name='Immolation' number='519' type='attack'>
<cost type='mana'>19</cost>
</spell>
<spell availability='self-cast' name='Mage Armor' number='520' type='defense'>
<duration span='stackable' multicastable='yes'>20 + [Spells.majorelemental,Stats.level].min</duration>
<cost type='mana'>20</cost>
<cast-proc>if defined?(target) and not target.nil?; cmd = "incant 520 #{target}"; else; cmd="incant 520 #{UserVars.element}"; end; dothistimeout('release', 5, /^You feel the magic of your spell rush away from you\.$|^You don't have a prepared spell to release!$/) if (checkprep != 'Mage Armor') and (checkprep != 'None'); dothistimeout(cmd, 5, /^A layer of raw elemental energy forms around you|^You already have a different spell readied|^Cast Roundtime [0-9]+ Seconds?\.|^But you don't have any mana!|^\[Spell Hindrance for|keeps? the spell from working\.|^As you focus on your magic, your vision swims with a swirling haze of crimson\.|^Your magic fizzles ineffectually\.|^All you manage to do is cough up some blood\.|^And give yourself away! Never!|^You are unable to do that right now\.|^You don't seem to be able to move to do that\.|^You can't think clearly enough to prepare a spell!/)</cast-proc>
<message type='start'>A layer of raw elemental energy forms around you\.</message>
<message type='end'>The layer of raw elemental energy surrounding you dissipates\.</message>
</spell>
<spell availability='all' name='Meteor Swarm' number='525' type='attack' incant='no'>
<cost type='mana'>25</cost>
</spell>
<spell availability='all' name='Elemental Disjunction' number='530' type='attack'>
<cost type='mana'>30</cost>
</spell>
<spell availability='self-cast' name='Haste' number='535' type='utility'>
<duration span='stackable'>20 + [Spells.majorelemental, Stats.level].min</duration>
<cost type='mana'>35</cost>
<message type='start'>You begin to notice the world slow down around you\. Strange\.</message>
<message type='start'>The world stutters around you for a moment, then resumes its slower speed\.</message>
<message type='end'>You notice that things have returned to their normal speed\.</message>
</spell>
<spell availability='self-cast' name='Temporal Reversion' number='540' type='defense'>
<duration span='stackable' multicastable='yes'>20 + Spells.majorelemental</duration>
<cost type='mana'>40</cost>
<message type='start'>For a moment, everything you hear and see echoes weirdly around you, but then everything seems normal again\. Your personal temporal reality has been slightly offset from the true flow of time\.</message>
<message type='end'>Abruptly, everything you see and hear comes into better focus\. Your personal temporal reality has rejoined the true flow of time\.</message>
</spell>
<spell availability='self-cast' name='Rapid Fire Penalty' number='597' type='timer'>
<duration>1</duration>
<message type='start'>You feel the magic surge through you, but the feeling of fatigue lingers\.</message>
</spell>
<spell availability='self-cast' name='Celerity Recovery' number='598'>
<duration>3</duration>
<message type='start'>You suddenly feel less light\-footed and your feet take on a leaden quality\.</message>
<message type='end'>The leaden quality leaves your feet\.</message>
</spell>
<spell availability='self-cast' name='Rapid Fire Recovery' number='599'>
<duration>if Skills.emc >= 199; 0; else; 1 + (((90 - (Skills.emc/2.2)).ceil + 1) / 60.0); end</duration>
<message type='end'>You notice the feeling of elemental fatigue fade away\.</message>
<message type="end">Moisture beads on the surface of your skin then evaporates away, taking with it your recent elemental fatigue\.</message>
</spell>
<spell availability='all' name='Natural Colors' number='601' type='defense'>
<duration span='stackable' multicastable='yes'>20 + Spells.ranger</duration>
<cost type='mana'>1</cost>
<bonus type='bolt-ds'>bonus = 10; [5, 11, 18, 26, 35, 45, 56, 68, 81, 95].each { |n| bonus += 1 if Skills.slblessings >= n }; bonus</bonus>
<bonus type='physical-ds'>bonus = 10; [5, 11, 18, 26, 35, 45, 56, 68, 81, 95].each { |n| bonus += 1 if Skills.slblessings >= n }; bonus</bonus>
<message type='start'>You(?: and your group)? seem to blend into the surroundings better\.</message>
<message type='end'>You return to normal color\.</message>
</spell>
<spell availability='all' name='Resist Elements' number='602' type='defense'>
<duration span='stackable' multicastable='yes'>20 + Spells.ranger</duration>
<cost type='mana'>2</cost>
<bonus type='bolt-ds'>bonus = 15; [5, 11, 18, 26, 35, 45, 56, 68, 81, 95].each { |n| bonus += 1 if Skills.slblessings >= n }; bonus</bonus>
<message type='start'>The air about you shimmers slightly\.</message>
<message type='end'>The air about you stops shimmering\.</message>
</spell>
<spell availability='all' name='Wild Entropy' number='603' type='attack'>
<cost type='mana'>3</cost>
</spell>
<spell availability='self-cast' name='Nature's Bounty' number='604' type='utility'>
<duration span='stackable' multicastable='yes'>20 + Spells.ranger</duration>
<cost type='mana'>4</cost>
<message type='start'>You feel your vision sharpen\.|You feel more in tune with the natural surroundings\.</message>
<message type='end'>You feel your vision return to normal\.|You feel less in tune with your natural surroundings\.</message>
</spell>
<spell availability='self-cast' name='Barkskin' number='605' type='defense'>
<duration span='refreshable' multicastable='no'>1</duration>
<cost type='mana'>5</cost>
<message type='start'>A knobby layer of bark swiftly forms on you\.</message>
<message type='end'>The knobby layer of bark on you creaks and twists briefly before disintegrating.\.</message>
</spell>
<spell availability='self-cast' name='Phoen's Strength' number='606' type='offense'>
<duration span='stackable' multicastable='yes'>20 + Spells.ranger</duration>
<cost type='mana'>6</cost>
<bonus type='physical-as'>10</bonus>
<bonus type='strength'>10</bonus>
<message type='start'>Your body suddenly fills with a warm strength\.</message>
<message type='end'>You feel the inner strength leave you\.</message>
</spell>
<spell availability='all' name='Sounds' number='607' type='attack'>
<cost type='mana'>7</cost>
</spell>
<spell availability='all' name='Camouflage' number='608' type='offense'>
<cost type='mana'>8</cost>
</spell>
<spell availability='all' name='Sun Burst' number='609' type='attack/utility' incant='no'>
<cost type='mana'>9</cost>
</spell>
<spell availability='all' name='Tangleweed' number='610' type='attack'>
<cost type='mana'>10</cost>
</spell>
<spell availability='all' name='Moonbeam' number='611' type='attack'>
<cost type='mana'>11</cost>
</spell>
<spell availability='self-cast' name='Breeze' number='612' type='utility'>
<duration span='stackable' multicastable='yes'>20 + Spells.ranger</duration>
<cost type='mana'>12</cost>
<message type='start'>A breeze stirs the air about you, swirling and tugging at your clothing\.</message>
<message type='end'>The swirling breeze around you finally settles\.</message>
</spell>
<spell availability='self-cast' name='Self Control' number='613' type='defense/utility'>
<duration span='stackable' multicastable='yes'>20 + Spells.ranger</duration>
<cost type='mana'>13</cost>
<bonus type='physical-ds'>[20+((Spells.ranger-13)/2),20].max</bonus>
<bonus type='elemental-td'>bonus = 20; [5, 11, 18, 26, 35, 45, 56, 68, 81, 95].each { |n| bonus += 1 if Skills.slblessings >= n }; bonus/2</bonus>
<bonus type='spirit-td'>bonus = 20; [5, 11, 18, 26, 35, 45, 56, 68, 81, 95].each { |n| bonus += 1 if Skills.slblessings >= n }; bonus</bonus>
<bonus type='sorcerer-td'>bonus = 20; [5, 11, 18, 26, 35, 45, 56, 68, 81, 95].each { |n| bonus += 1 if Skills.slblessings >= n }; (bonus*0.75).to_i</bonus>
<message type='start'>You feel an aura of natural confidence surrounding you\.</message>
<message type='end'>You feel the aura of confidence leave you\.</message>
</spell>
<spell availability='all' name='Imbue' number='614' type='utility'>
<cost type='mana'>14</cost>
</spell>
<spell availability='all' name='Call Swarm' number='615' type='attack'>
<cost type='mana'>15</cost>
</spell>
<spell availability='all' name='Spike Thorn' number='616' type='attack'>
<cost type='mana'>16</cost>
</spell>
<spell availability='self-cast' name='Sneaking' number='617' type='utility'>
<duration span='stackable' multicastable='yes'>20 + Spells.ranger</duration>
<cost type='mana'>17</cost>
<message type='start'>You begin to move with cat-like grace\.</message>
<message type='end'>You are no longer moving silently\.</message>
</spell>
<spell availability='all' name='Mobility' number='618' type='defense/utility'>
<duration span='stackable' multicastable='yes'>20 + Spells.ranger</duration>
<cost type='mana'>18+((Spells.ranger-18)/5)</cost>
<bonus type='dodging'>[20+(Spells.ranger-18),20].max</bonus>
<message type='start'>You suddenly feel much more dextrous\.</message>
<message type='end'>You no longer feel so dextrous\.</message>
</spell>
<spell availability='all' name='Mass Calm' number='619' type='attack' incant='no'>
<cost type='mana'>19</cost>
</spell>
<spell availability='self-cast' name='Resist Nature' number='620' type='defense'>
<duration cast-type='self' span='refreshable'>20 + Spells.ranger</duration>
<cost type='mana'>20</cost>
<message type='start'>You call upon the natural energies of your surroundings and, with faintly visible (?:green-gold|red-gold|frosty white|blue-violet|misty grey) filaments, weave a web of protection against (?:nature|heat|cold|lightning|steam).</message>
<message type='end'>The (?:green-gold|red-gold|frosty white|blue-violet|misty grey) web of protection against (?:nature|heat|cold|lightning|steam) falls away from you, unraveling as it fades.</message>
</spell>
<spell availability='self-cast' name='Nature's Touch' number='625' type='defense/utility'>
<duration span='stackable' multicastable='yes'>20 + Spells.ranger</duration>
<cost type='mana'>25</cost>
<bonus type='elemental-td'>([1+((Spells.ranger-25)/2),12].min/2).to_i</bonus>
<bonus type='spirit-td'>[1+((Spells.ranger-25)/2),12].min</bonus>
<bonus type='sorcerer-td'>([1+((Spells.ranger-25)/2),12].min*0.75).to_i</bonus>
<message type='start'>You suddenly feel the power of nature surround you\.</message>
<message type='end'>You feel the gathering of nature's power leave you\.</message>
</spell>
<spell availability='all' name='Animal Companion' number='630' type='attack/utility'>
<cost type='mana'>30</cost>
</spell>
<spell availability='all' name='Nature's Fury' number='635' type='attack' incant='no'>
<cost type='mana'>35</cost>
</spell>
<spell availability='self-cast' name='Wall of Thorns' number='640' type='defense'>
<duration span='stackable' multicastable='yes'>20 + Spells.ranger</duration>
<cost type='mana'>40</cost>
<bonus type='bolt-ds'>20</bonus>
<bonus type='physical-ds'>20</bonus>
<message type='start'>You are surrounded by a (?:dense, )?writhing barrier of sharp thorns\.</message>
<message type='end'>You seem to lose the thorny barrier that surrounds you\.</message>
</spell>
<spell availability='self-cast' name='Assume Aspect' number='650' type='utility'>
<duration>10</duration>
<cost type='mana'>50</cost>
<message type='start'>Gold-traced pale green ribbons of energy swirl about and coalesce upon you, reinforcing the intense natural prowess that races through every fiber of your being\.</message>
<message type='end'>The green and gold energy fades from around you, bringing your awareness of nature to its original state\.</message>
</spell>
<spell availability='all' name='Blood Burst' number='701' type='attack'>
<cost type='mana'>1</cost>
</spell>
<spell availability='all' channel='yes' name='Mana Disruption' number='702' type='attack'>
<cost type='mana'>2</cost>
</spell>
<spell availability='all' name='Corrupt Essence' number='703' type='attack'>
<duration>0.33</duration>
<cost type='mana'>3</cost>
<message type='start'>You feel weakened as a blood red haze forms around you\.</message>
<message type='end'>The blood red haze dissipates from around you\.</message>
</spell>
<spell availability='all' name='Phase' number='704' type='utility'>
<duration span='stackable' multicastable='yes'>20 + Spells.sorcerer</duration>
<cost type='mana'>4</cost>
<message type='start'>A wave of tingling passes across your body, momentarily casting it into semi-transparency\.</message>
<message type='end'>Your body pulses momentarily into semi transparency and then returns to normal\.</message>
</spell>
<spell availability='all' channel='yes' name='Disintegrate' number='705' type='attack'>
<cost type='mana'>5</cost>
</spell>
<spell availability='all' name='Mind Jolt' number='706' type='attack'>
<cost type='mana'>6</cost>
</spell>
<spell availability='all' name='Eye Spy' number='707' type='utility'>
<duration span='refreshable'>19 + Spells.sorcerer</duration>
<cost type='mana'>7</cost>
<message type='start'>Casually you push your finger into your eye socket and cup it around the throbbing eyeball\. With a little leverage you pop the eye from your skull and watch as it sprouts little batlike wings and begins to hover before you\.</message>
<message type='end'>You hear a soft hiss as your wandering eye rushes towards you\. You reach out and catch the squishy globe and quickly press it back into your eye socket\. After a few blinks it seems to seat itself properly\. You wipe off some gooey red residue with your sleeve, and feel yourself once again presentable\.</message>
</spell>
<spell availability='all' name='Limb Disruption' number='708' type='attack'>
<cost type='mana'>8</cost>
</spell>
<spell availability='all' name='Quake' number='709' type='attack'>
<cost type='mana'>9</cost>
</spell>
<spell availability='all' name='Energy Maelstrom' number='710' type='attack'>
<cost type='mana'>10</cost>
</spell>
<spell availability='all' name='Pain' number='711' type='attack'>
<cost type='mana'>11</cost>
</spell>
<spell availability='self-cast' name='Cloak of Shadows' number='712' type='defense'>
<duration span='stackable' multicastable='yes'>20 + Spells.sorcerer</duration>
<cost type='mana'>12 + [(([Spells.sorcerer,Stats.level].min - 12) / 3),0].max</cost>
<bonus type='bolt-ds'>[25+([Spells.sorcerer,Stats.level].min-12),25].max</bonus>
<bonus type='physical-ds'>[25+([Spells.sorcerer,Stats.level].min-12),25].max</bonus>
<bonus type='elemental-td'>([20+(([Spells.sorcerer,Stats.level].min-12)/10),20].max*0.75).to_i</bonus>
<bonus type='spirit-td'>([20+(([Spells.sorcerer,Stats.level].min-12)/10),20].max*0.75).to_i</bonus>
<bonus type='sorcerer-td'>[20+(([Spells.sorcerer,Stats.level].min-12)/10),20].max</bonus>
<message type='start'>A shadowy patch of ether rises up through the (?:floor|ground) to encompass you, swiftly sinking into your skin\.</message>
<message type='end'>A dark shadow seems to detach itself from your body, swiftly dissipating into the air\.</message>
</spell>
<spell availability='all' name='Balefire' number='713' stance='yes' type='attack'>
<cost type='mana'>13</cost>
</spell>
<spell availability='all' name='Scroll Infusion' number='714' type='utility'>
<cost type='mana'>14</cost>
</spell>
<spell availability='all' name='Curse' number='715' type='attack'>
<cost type='mana'>15</cost>
</spell>
<spell availability='self-cast' name='Pestilence' number='716' type='defense'>
<duration span='stackable' multicastable='yes'>20 + Spells.sorcerer</duration>
<cost type='mana'>16</cost>
<message type='start'>A cankerous ripple of vesicles temporarily disfigures your face and travels down your body, leaving a sickly green miasma as it disappears\.</message>
<message type='end'>You exhale the last of a virulent green mist\.</message>
</spell>
<spell availability='all' name='Evil Eye' number='717' type='attack' incant='no'>
<cost type='mana'>17</cost>
</spell>
<spell availability='all' name='Torment' number='718' type='attack'>
<cost type='mana'>18</cost>
</spell>
<spell availability='all' name='Dark Catalyst' number='719' type='attack'>
<cost type='mana'>19</cost>
</spell>
<spell availability='all' name='Implosion' number='720' type='attack' incant='no'>
<cost type='mana'>20</cost>
</spell>
<spell availability='self-cast' name='Minor Summoning' number='725' type='utility'>
<duration span='refreshable'>10 + (Spells.sorcerer/3.0) + (Skills.sldemonology/2.0)</duration>
<cost type='mana'>25</cost>
<message type='start'>You trace an arcane sigil over your .+ while incanting\. Your .+ glows momentarily, and you succeed in opening an interplanar rift from which you manage to pull .+\.</message>
<message type='start'>You trace the runes on .+ to strengthen the binding between your .+ and this plane\. You feel a bit of power leeched from your .+ as a spark follows your finger's path across the .+\.</message>
<message type='end'>You sense that you will not be able to control .+ much longer so you incant arcanely while concentrating upon the .+\. You gesture vividly causing a small interplanar rift to open. The .+ is pulled through the rift\.</message>
</spell>
<spell name='Illusion - Demon' number='9725' type='timer'>
<duration>30</duration>
<message type='start'>You shift your gaze to your .+ and focus your energy upon creating the illusion of disguise\. You move quickly towards .+, feeling your energy focus upon your fist and causing it to radiate with a black essence\. At the last moment, you plunge your fist into the .+ of your .+\. .+ suddenly erupts in a shroud of black essence and tries to recoil away from you\. You focus your will upon the essence and .+, and watch as the creature begins to ripple\. Piece by piece, the creature's form changes until .+ stands in its place and you withdraw your hand\.</message>
<message type='start'>You glide your hand over .+, leaving rippling motes of color in the wake of your hand as you attempt to strengthen the flows of essence around .+\. You sense a pulse as the motes disappear within .+, revitalizing the .+ into an impeccable illusion\.</message>
<message type='end'>Droplets of inky black ichor begin to drip down from .+ and pool underneath as the veil of an illusion peels back\. The visage of .+ begins to distort and reveals behind it .+\. As the last droplet \*plops\* into the pool, it dissolves into mist that .+\.</message>
</spell>
<spell availability='all' name='Animate Dead' number='730' type='utility'>
<cost type='mana'>30</cost>
</spell>
<spell availability='all' name='Ensorcell' number='735' type='utility'>
<cost type='mana'>35</cost>
</spell>
<spell availability='all' name='Planar Shift' number='740' type='utility'>
<cost type='mana'>40</cost>
</spell>
<spell availability='all' name='Minor Shock' number='901' channel='yes' stance='yes' type='attack'>
<cost type='mana'>1</cost>
</spell>
<spell availability='all' name='Minor Elemental Edge' number='902' type='offense'>
<cost type='mana'>2</cost>
</spell>
<spell availability='all' name='Minor Water' number='903' channel='yes' stance='yes' type='attack'>
<cost type='mana'>3</cost>
</spell>
<spell availability='all' name='Minor Acid' number='904' channel='yes' stance='yes' type='attack'>
<cost type='mana'>4</cost>
</spell>
<spell availability='self-cast' name='Prismatic Guard' number='905' type='defense'>
<duration span='stackable' multicastable='yes'>20 + Spells.wizard</duration>
<cost type='mana'>bonus=0;[5,11,18,26,35,45,56,68,81,95,110,126,143,161,180,200,221,243].each { |n| bonus += 1 if Skills.elearth >= n };5 + (((([Spells.wizard,Stats.level].min - 5) / 4.0).floor + bonus)/3.0).floor</cost>
<bonus type='bolt-ds'>bonus=0;[5,11,18,26,35,45,56,68,81,95,110,126,143,161,180,200,221,243].each { |n| bonus += 1 if Skills.elearth >= n };[20+((Spells.wizard-5)/4),20].max + bonus</bonus>
<bonus type='physical-ds'>bonus=0;bonus=0;[5,11,18,26,35,45,56,68,81,95,110,126,143,161,180,200,221,243].each { |n| bonus += 1 if Skills.elearth >= n };[5+((Spells.wizard-5)/4),5].max + bonus</bonus>
<message type='start'>Multicolored rays shoot out of your body and flow into (?:the|a) shimmering sphere around you\.</message>
<message type='end'>The shimmering multicolored sphere fades from around you\.</message>
</spell>
<spell availability='all' name='Minor Fire' number='906' channel='yes' stance='yes' type='attack'>
<cost type='mana'>6</cost>
</spell>
<spell availability='all' name='Major Cold' number='907' channel='yes' stance='yes' type='attack'>
<cost type='mana'>7</cost>
</spell>
<spell availability='all' name='Major Fire' number='908' channel='yes' stance='yes' type='attack'>
<cost type='mana'>8</cost>
</spell>
<spell availability='self-cast' name='Tremors' number='909' type='attack/area/utility'>
<duration span='refreshable' multicastable='no'>20 + Spells.wizard</duration>
<cost type='mana'>9</cost>
<message type='start'>Faint ripples in the (?:dirt|floor|ground|ice|muck|sand|snow|soil) form beneath you for a moment\.</message>
<message type='end'>Faint ripples in the (?:dirt|floor|ground|ice|muck|sand|snow|soil) beneath you become apparent before quickly dissipating\.</message>
</spell>
<spell availability='all' name='Major Shock' number='910' channel='yes' stance='yes' type='attack'>
<cost type='mana'>10</cost>
</spell>
<spell availability='group' name='Mass Blur' number='911' type='defense'>
<duration span='stackable' multicastable='yes'>20 + Spells.wizard</duration>
<cost type='mana'>11</cost>
<bonus type='dodging'>[1,3,6,10,15,21,28,36,45,55,66,78,91,105,120,136,153,171,190].inject(20) { |bonus, n| bonus += 1 if Skills.elair >= n; bonus }</bonus>
<message type='start'>Your form(?:, as well as your group,)? blurs\.</message>
<message type='start'>If you were visible, your form would have blurred\.</message>
<message type='end'>You become solid again\.</message>
</spell>
<spell availability='all' name='Call Wind' number='912' type='attack/area' incant='no'>
<cost type='mana'>12</cost>
</spell>
<spell availability='self-cast' name='Melgorehn's Aura' number='913' type='defense'>
<duration span='stackable' multicastable='yes'>20 + Spells.wizard</duration>
<cost type='mana'>13 + (([Spells.wizard,Stats.level].min - 13) / 3.0).round</cost>
<bonus type='bolt-ds'>[Spells.wizard-3,10].max</bonus>
<bonus type='physical-ds'>[Spells.wizard-3,10].max</bonus>
<bonus type='elemental-td'>[20+((Spells.wizard-13)/3),20].max</bonus>
<bonus type='spirit-td'>([20+((Spells.wizard-13)/3),20].max/2).to_i</bonus>
<bonus type='sorcerer-td'>([20+((Spells.wizard-13)/3),20].max*0.75).to_i</bonus>
<message type='start'>A luminescent aura begins to swirl around you\.</message>
<message type='end'>A luminescent aura fades from around you\.</message>
</spell>
<spell availability='all' name='Sandstorm' number='914' type='attack'>
<cost type='mana'>14</cost>
</spell>
<spell availability='all' name='Weapon Fire' number='915' type='attack'>
<cost type='mana'>15</cost>
</spell>
<spell availability='self-cast' name='Invisibility' number='916' type='utility'>
<duration span='refreshable'>20 + (Spells.wizard / 2)</duration>
<cost type='mana'>16</cost>
<message type='start'>You become invisible\.</message>
<message type='start'>Your invisibility is extended\.</message>
<message type='start'>You refresh your invisibility\.</message>
<message type='end'>You (become|are) visible again\.</message>
<message type='end'>You fade into (?:view|sight|visibility)(\.| and strike!)</message>
<message type='end'>Your invisibili?ty (falls\.|fails\.|has been dispelled!)</message>
<message type='end'>Your startled movement makes you visible again!</message>
<message type='end'>You make so much noise that only the dead would not notice you thrashing about in your unsuccessful search\.|^The driving storm breaks your concentration, leaving you visible again\.|^An? [\w\s]+ discovers you and your invisibility fails!</message>
<message type='end'>[A-Z][a-z]+ dispels your invisibility!</message>
<message type='end'>But you are not hidden!</message>
<message type='end'>Dark, swirling mist billows before you from nothingness, tiny pinpoints of light glimmering from its inky depths\. Slight crackling can be heard from within and the scent of ozone tickles at your nose\. Suddenly, a blinding arc of lightning tears through the air and stikes you, causing your invisibility to fade\.</message>
<message type='end'>Trying to move through [\w\s]+ reveals you\.$|discovers your hiding place!$|your invisibility fails!</message>
</spell>
<spell availability='all' name='Earthen Fury' number='917' type='attack'>
<cost type='mana'>17</cost>
</spell>
<spell availability='all' name='Duplicate' number='918' type='utility'>
<cost type='mana'>18</cost>
</spell>
<spell availability='self-cast' name='Wizard's Shield' number='919' type='defense'>
<duration span='refreshable'>1</duration>
<cost type='mana'>19</cost>
<bonus type='bolt-ds'>50</bonus>
<bonus type='physical-ds'>50</bonus>
<message type='start'>A translucent sphere forms around you\.</message>
<message type='end'>The translucent sphere fades from around you\.</message>
</spell>
<spell availability='self-cast' name='Call Familiar' number='920' type='utility'>
<duration persist-on-death='yes' span='stackable' multicastable='no'>20 + Spells.wizard</duration>
<cost type='mana'>20</cost>
<message type='start'>You (concentrate on the [a-z]+ talisman as you )?cast your conciousness out into the ether in search of a (specific type of )?familiar\.</message>
<message type='start'>You feel the magical link between you and your (?:[\-\w+])[\-\s\w]* (?:grow stronger|strengthen)\.</message>
<message type='start'>As you gaze into the depths of the tiny pool, you notice a faint tickle\. It is almost as if the ring is drawing energy from your very being\.\.\.</message>
<message type='end'>You sense the link between you and your (?:[\-\w+])[\-\s\w]* weaken and vanish\.</message>
</spell>
<spell availability='all' name='Enchant Item' number='925' type='utility'>
<cost type='mana'>25</cost>
</spell>
<spell availability='all' name='Familiar Gate' number='930' type='utility'>
<cost type='mana'>30</cost>
</spell>
<spell availability='all' name='Core Tap' number='950' type='attack'>
<cost type='mana'>50</cost>
</spell>
<spell availability='self-cast' name='Core Tap Recovery (1 Charge)' number='996'>
<duration>1</duration>
</spell>
<spell availability='self-cast' name='Core Tap Recovery (2 Charges)' number='997'>
<duration>s = Spell['Core Tap Recovery (1 Charge)'];s.timeleft > 0.0 ? s.timeleft : 1</duration>
</spell>
<spell availability='self-cast' name='Core Tap Recovery (3 Charges)' number='998'>