-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathpowerhouse-data.js
5392 lines (4606 loc) · 839 KB
/
powerhouse-data.js
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
/*==============================================================================
* powerhouse-data.js
*
* PowerHouse Data Javascript
*
* Author: Kyle W T Sherman
*
* Time-stamp: <2016-02-17 23:15:53 (kyle)>
*============================================================================*/
//==============================================================================
// Super Stats
//==============================================================================
// super stat class
/**@constructor*/
SuperStat = function(id, name, desc, abbrev, tip) {
this.id = id;
this.name = name;
this.desc = desc;
this.abbrev = abbrev;
this.tip = tip;
this.code = function() {
return numToUrlCode(this.id);
}
this.equals = function(obj) {
return (typeof(this) == typeof(obj) && this.id == obj.id);
}
this.toString = function() {
return '[id=' + this.id + ', name=\'' + this.name + '\', desc=\'' + this.desc + '\', abbrev=\'' + this.abbrev + '\', tip=\'' + this.tip + '\', code=' + this.code() + ']';
}
}
// super stat data
var dataSuperStat = [];
dataSuperStat[dataSuperStat.length] = new SuperStat(dataSuperStat.length, null, null, null, null);
dataSuperStat[dataSuperStat.length] = new SuperStat(dataSuperStat.length, 'Strength', '<img src="img/Stat_Strength.png" /> Strength', 'Str', 'Improves Melee Damage, Melee Knocks, Knock Resistance, and the pick-up and throw ability.');
dataSuperStat[dataSuperStat.length] = new SuperStat(dataSuperStat.length, 'Dexterity', '<img src="img/Stat_Dexterity.png" /> Dexterity', 'Dex', 'Improves a hero\\\'s Critical Hit Chance and effectiveness of Stealth granting powers.');
dataSuperStat[dataSuperStat.length] = new SuperStat(dataSuperStat.length, 'Constitution', '<img src="img/Stat_Constitution.png" /> Constitution', 'Con', 'Improves a hero\\\'s Hit Points.');
dataSuperStat[dataSuperStat.length] = new SuperStat(dataSuperStat.length, 'Intelligence', '<img src="img/Stat_Intelligence.png" /> Intelligence', 'Int', 'Affects the hero\\\'s power cooldown length, Stealth Detection, and the Energy Cost of their powers.');
dataSuperStat[dataSuperStat.length] = new SuperStat(dataSuperStat.length, 'Ego', '<img src="img/Stat_Ego.png" /> Ego', 'Ego', 'Improves Ranged Damage, Ranged Knocks, and Hold Resistance.');
dataSuperStat[dataSuperStat.length] = new SuperStat(dataSuperStat.length, 'Presence', '<img src="img/Stat_Presence.png" /> Presence', 'Pre', 'Improves Healing Strength, Hold Duration, and Crowd Control Resistance.');
dataSuperStat[dataSuperStat.length] = new SuperStat(dataSuperStat.length, 'Recovery', '<img src="img/Stat_Recovery.png" /> Recovery', 'Rec', 'Sets the hero\\\'s Equilibrium, increases rate of Energy generated from Energy building attacks, and grants a small increase to Maximum Energy.');
dataSuperStat[dataSuperStat.length] = new SuperStat(dataSuperStat.length, 'Endurance', '<img src="img/Stat_Endurance.png" /> Endurance', 'End', 'Affects a hero\\\'s Maximum Energy and rate of energy generated from fighting attacks.');
//==============================================================================
// Innate Talents
//==============================================================================
// innate talent class
/**@constructor*/
InnateTalent = function(id, name, desc, extra, tip) {
this.id = id;
this.name = name;
this.desc = desc;
this.extra = extra;
this.tip = tip;
this.code = function() {
return numToUrlCode(this.id);
}
this.equals = function(obj) {
return (typeof(this) == typeof(obj) && this.id == obj.id);
}
this.toString = function() {
return '[id=' + this.id + ', name=\'' + this.name + '\', desc=\'' + this.desc + '\', extra=\'' + this.extra + '\', tip=\'' + this.tip + '\', code=' + this.code() + ']';
}
}
// innate talent data
var dataInnateTalent = [];
dataInnateTalent[dataInnateTalent.length] = new InnateTalent(dataInnateTalent.length, null, null, null, null);
dataInnateTalent[dataInnateTalent.length] = new InnateTalent(dataInnateTalent.length, 'Sureshot', 'Sureshot', 'Dex: 12, Int: 12', 'This is the innate talent for Archery.<br />Con: 5, End: 5, Str: 5, Dex: 12, Int: 12, Ego: 5, Pre: 5, Rec: 5');
dataInnateTalent[dataInnateTalent.length] = new InnateTalent(dataInnateTalent.length, 'Abyssal', 'Abyssal', 'Con: 12, End: 12', 'This is the innate talent for Darkness.<br />Con: 12, End: 12, Str: 5, Dex: 5, Int: 5, Ego: 5, Pre: 5, Rec: 5');
dataInnateTalent[dataInnateTalent.length] = new InnateTalent(dataInnateTalent.length, 'Energized', 'Energized', 'Rec: 12, End: 12', 'This is the innate talent for Electricity.<br />Con: 5, End: 12, Str: 5, Dex: 5, Int: 5, Ego: 5, Pre: 5, Rec: 12');
dataInnateTalent[dataInnateTalent.length] = new InnateTalent(dataInnateTalent.length, 'Incandescent', 'Incandescent', 'Pre: 12, Rec: 12', 'This is the innate talent for Fire.<br />Con: 5, End: 5, Str: 5, Dex: 5, Int: 5, Ego: 5, Pre: 12, Rec: 12');
dataInnateTalent[dataInnateTalent.length] = new InnateTalent(dataInnateTalent.length, 'Impetus', 'Impetus', 'Ego: 12, End: 12', 'This is the innate talent for Force.<br />Con: 5, End: 12, Str: 5, Dex: 5, Int: 5, Ego: 12, Pre: 5, Rec: 5');
dataInnateTalent[dataInnateTalent.length] = new InnateTalent(dataInnateTalent.length, 'Tech Savvy', 'Tech Savvy', 'Int: 12, End: 12', 'This is the innate talent for Gadgeteering.<br />Con: 5, End: 12, Str: 5, Dex: 5, Int: 12, Ego: 5, Pre: 5, Rec: 5');
dataInnateTalent[dataInnateTalent.length] = new InnateTalent(dataInnateTalent.length, 'Absolute Zero', 'Absolute Zero', 'Dex: 12, Rec: 12', 'This is the innate talent for Ice.<br />Con: 5, End: 5, Str: 5, Dex: 12, Int: 5, Ego: 5, Pre: 5, Rec: 12');
dataInnateTalent[dataInnateTalent.length] = new InnateTalent(dataInnateTalent.length, 'One of Mind and Body', 'One of Mind and Body', 'Str: 12, Dex: 12', 'This is the innate talent for Martial Arts.<br />Con: 5, End: 5, Str: 12, Dex: 12, Int: 5, Ego: 5, Pre: 5, Rec: 5');
dataInnateTalent[dataInnateTalent.length] = new InnateTalent(dataInnateTalent.length, 'Superhuman', 'Superhuman', 'Str: 12, Con: 12', 'This is the innate talent for Might.<br />Con: 12, End: 5, Str: 12, Dex: 5, Int: 5, Ego: 5, Pre: 5, Rec: 5');
dataInnateTalent[dataInnateTalent.length] = new InnateTalent(dataInnateTalent.length, 'Quick Trigger', 'Quick Trigger', 'Dex: 12, Ego: 12', 'This is the innate talent for Munitions.<br />Con: 5, End: 5, Str: 5, Dex: 12, Int: 5, Ego: 12, Pre: 5, Rec: 5');
dataInnateTalent[dataInnateTalent.length] = new InnateTalent(dataInnateTalent.length, 'Mechanized', 'Mechanized', 'Str: 12, Int: 12', 'This is the innate talent for Power Armor.<br />Con: 5, End: 5, Str: 12, Dex: 5, Int: 12, Ego: 5, Pre: 5, Rec: 5');
dataInnateTalent[dataInnateTalent.length] = new InnateTalent(dataInnateTalent.length, 'Arcanus', 'Arcanus', 'Int: 12, Pre: 12', 'This is the innate talent for Sorcery.<br />Con: 5, End: 5, Str: 5, Dex: 5, Int: 12, Ego: 5, Pre: 12, Rec: 5');
dataInnateTalent[dataInnateTalent.length] = new InnateTalent(dataInnateTalent.length, 'Inhuman', 'Inhuman', 'Con: 12, Rec: 12', 'This is the innate talent for Infernal Supernatural.<br />Con: 12, End: 5, Str: 5, Dex: 5, Int: 5, Ego: 5, Pre: 5, Rec: 12');
dataInnateTalent[dataInnateTalent.length] = new InnateTalent(dataInnateTalent.length, 'Matter Manipulator', 'Matter Manipulator', 'Con: 12, Ego: 12', 'This is the innate talent for Telekinesis.<br />Con: 12, End: 5, Str: 5, Dex: 5, Int: 5, Ego: 12, Pre: 5, Rec: 5');
dataInnateTalent[dataInnateTalent.length] = new InnateTalent(dataInnateTalent.length, 'Mind over Matter', 'Mind over Matter', 'Ego: 12, Pre: 12', 'This is the innate talent for Telepathy.<br />Con: 5, End: 5, Str: 5, Dex: 5, Int: 5, Ego: 12, Pre: 12, Rec: 5');
dataInnateTalent[dataInnateTalent.length] = new InnateTalent(dataInnateTalent.length, 'The Hero', 'The Hero', 'Even Mix', 'This is the innate talent for The Hero.<br />Con: 8, End: 6, Str: 8, Dex: 8, Int: 8, Ego: 8, Pre: 8, Rec: 6');
dataInnateTalent[dataInnateTalent.length] = new InnateTalent(dataInnateTalent.length, 'Divinity', 'Divinity', 'Con: 12, Pre: 12', 'This is the innate talent for Celestial.<br />Con: 12, End: 5, Str: 5, Dex: 5, Int: 5, Ego: 5, Pre: 12, Rec: 5');
dataInnateTalent[dataInnateTalent.length] = new InnateTalent(dataInnateTalent.length, 'Feral', 'Feral', 'Str: 12, Rec: 12', 'This is the innate talent for Bestial Supernatural.<br />Con: 5, End: 5, Str: 12, Dex: 5, Int: 5, Ego: 5, Pre: 5, Rec: 12');
dataInnateTalent[dataInnateTalent.length] = new InnateTalent(dataInnateTalent.length, 'The Inferno', 'The Inferno', 'End: 10, Dex: 10, Ego: 8, Rec: 10', 'This is the innate talent for The Inferno.<br />Con: 5, End: 10, Str: 5, Dex: 10, Int: 5, Ego: 8, Pre: 5, Rec: 10');
dataInnateTalent[dataInnateTalent.length] = new InnateTalent(dataInnateTalent.length, 'The Soldier', 'The Soldier', 'Dex: 10, Int: 8, Ego: 10, Rec: 10', 'This is the innate talent for The Soldier.<br />Con: 5, End: 5, Str: 5, Dex: 10, Int: 8, Ego: 10, Pre: 5, Rec: 10');
dataInnateTalent[dataInnateTalent.length] = new InnateTalent(dataInnateTalent.length, 'The Blade', 'The Blade', 'End: 8, Str: 10, Dex: 10, Rec: 10', 'This is the innate talent for The Blade.<br />Con: 5, End: 8, Str: 10, Dex: 10, Int: 5, Ego: 5, Pre: 5, Rec: 10');
dataInnateTalent[dataInnateTalent.length] = new InnateTalent(dataInnateTalent.length, 'The Savage', 'The Savage', 'Con: 10, Str: 10, Dex: 8, Rec: 10', 'This is the innate talent for The Brute.<br />Con: 10, End: 5, Str: 10, Dex: 8, Int: 5, Ego: 5, Pre: 5, Rec: 10');
dataInnateTalent[dataInnateTalent.length] = new InnateTalent(dataInnateTalent.length, 'The Behemoth', 'The Behemoth', 'Con: 10, End: 8, Str: 10, Rec: 10', 'This is the innate talent for The Behemoth.<br />Con: 10, End: 8, Str: 10, Dex: 5, Int: 5, Ego: 5, Pre: 5, Rec: 10');
dataInnateTalent[dataInnateTalent.length] = new InnateTalent(dataInnateTalent.length, 'The Glacier', 'The Glacier', 'Con: 10, End: 10, Dex: 8, Int: 10', 'This is the innate talent for The Glacier.<br />Con: 10, End: 10, Str: 5, Dex: 8, Int: 10, Ego: 5, Pre: 5, Rec: 5');
dataInnateTalent[dataInnateTalent.length] = new InnateTalent(dataInnateTalent.length, 'The Mind', 'The Mind', 'End: 10, Int: 8, Ego: 10, Pre: 10', 'This is the innate talent for The Mind.<br />Con: 5, End: 10, Str: 5, Dex: 5, Int: 8, Ego: 10, Pre: 10, Rec: 5');
dataInnateTalent[dataInnateTalent.length] = new InnateTalent(dataInnateTalent.length, 'The Grimoire', 'The Grimoire', 'Int: 10, Ego: 10, Pre: 10, Rec: 8', 'This is the innate talent for The Grimoire.<br />Con: 5, End: 5, Str: 5, Dex: 5, Int: 10, Ego: 10, Pre: 10, Rec: 8');
dataInnateTalent[dataInnateTalent.length] = new InnateTalent(dataInnateTalent.length, 'The Specialist', 'The Specialist', 'Str: 10, Dex: 10, Int: 8, Ego: 10', 'This is the innate talent for The Specialist.<br />Con: 5, End: 5, Str: 10, Dex: 10, Int: 8, Ego: 10, Pre: 5, Rec: 5');
dataInnateTalent[dataInnateTalent.length] = new InnateTalent(dataInnateTalent.length, 'The Marksman', 'The Marksman', 'End: 8, Dex: 10, Int: 10, Ego: 10', 'This is the innate talent for The Marksman.<br />Con: 5, End: 8, Str: 5, Dex: 10, Int: 10, Ego: 10, Pre: 5, Rec: 5');
dataInnateTalent[dataInnateTalent.length] = new InnateTalent(dataInnateTalent.length, 'The Void', 'The Void', 'Con: 10, End: 10, Dex: 8, Ego: 10', 'This is the innate talent for The Void.<br />Con: 10, End: 10, Str: 5, Dex: 8, Int: 5, Ego: 10, Pre: 5, Rec: 5');
dataInnateTalent[dataInnateTalent.length] = new InnateTalent(dataInnateTalent.length, 'The Inventor', 'The Inventor', 'End: 8, Int: 10, Ego: 10, Pre: 10', 'This is the innate talent for The Inventor.<br />Con: 5, End: 8, Str: 5, Dex: 5, Int: 10, Ego: 10, Pre: 10, Rec: 5');
dataInnateTalent[dataInnateTalent.length] = new InnateTalent(dataInnateTalent.length, 'The Tempest', 'The Tempest', 'End: 10, Dex: 8, Ego: 10, Rec: 10', 'This is the innate talent for The Tempest.<br />Con: 5, End: 10, Str: 5, Dex: 8, Int: 5, Ego: 10, Pre: 5, Rec: 10');
dataInnateTalent[dataInnateTalent.length] = new InnateTalent(dataInnateTalent.length, 'The Devastator', 'The Devastator', 'Con: 10, End: 8, Str: 10, Rec: 10', 'This is the innate talent for The Devastator.<br />Con: 10, End: 8, Str: 10, Dex: 5, Int: 5, Ego: 5, Pre: 5, Rec: 10');
dataInnateTalent[dataInnateTalent.length] = new InnateTalent(dataInnateTalent.length, 'The Disciple', 'The Disciple', 'Dex: 10, Int: 8, Ego: 10, Rec: 10', 'This is the innate talent for The Disciple.<br />Con: 5, End: 5, Str: 5, Dex: 10, Int: 8, Ego: 10, Pre: 5, Rec: 10');
dataInnateTalent[dataInnateTalent.length] = new InnateTalent(dataInnateTalent.length, 'The Impulse', 'The Impulse', 'End: 10, Int: 10, Ego: 10, Rec: 8', 'This is the innate talent for The Impulse.<br />Con: 5, End: 10, Str: 5, Dex: 5, Int: 10, Ego: 10, Pre: 5, Rec: 8');
dataInnateTalent[dataInnateTalent.length] = new InnateTalent(dataInnateTalent.length, 'The Fist', 'The Fist', 'Str: 10, Dex: 10, Int: 10, Rec: 8', 'This is the innate talent for The Fist.<br />Con: 5, End: 5, Str: 10, Dex: 10, Int: 10, Ego: 5, Pre: 5, Rec: 8');
dataInnateTalent[dataInnateTalent.length] = new InnateTalent(dataInnateTalent.length, 'The Master', 'The Master', 'Con: 10, Str: 10, Dex: 10, Rec: 8', 'This is the innate talent for The Master.<br />Con: 10, End: 5, Str: 10, Dex: 10, Int: 5, Ego: 5, Pre: 5, Rec: 8');
dataInnateTalent[dataInnateTalent.length] = new InnateTalent(dataInnateTalent.length, 'The Scourge', 'The Scourge', 'Con: 10, End: 8, Ego: 10, Rec: 10', 'This is the innate talent for The Scourge and The Cursed.<br />Con: 10, End: 8, Str: 5, Dex: 5, Int: 5, Ego: 10, Pre: 5, Rec: 10');
dataInnateTalent[dataInnateTalent.length] = new InnateTalent(dataInnateTalent.length, 'The Squall', 'The Squall', 'End: 10, Dex: 8, Ego: 10, Rec: 10', 'This is the innate talent for The Squall.<br />Con: 5, End: 10, Str: 5, Dex: 8, Int: 5, Ego: 10, Pre: 5, Rec: 10');
dataInnateTalent[dataInnateTalent.length] = new InnateTalent(dataInnateTalent.length, 'The Mountain', 'The Mountain', 'Con: 10, End: 10, Str: 8, Ego: 10', 'This is the innate talent for The Mountain.<br />Con: 10, End: 10, Str: 8, Dex: 5, Int: 5, Ego: 10, Pre: 5, Rec: 5');
dataInnateTalent[dataInnateTalent.length] = new InnateTalent(dataInnateTalent.length, 'The Unleashed', 'The Unleashed', 'Str: 10, Dex: 10, Int: 8, Rec: 10', 'This is the innate talent for The Unleashed.<br />Con: 5, End: 5, Str: 10, Dex: 10, Int: 8, Ego: 5, Pre: 5, Rec: 10');
dataInnateTalent[dataInnateTalent.length] = new InnateTalent(dataInnateTalent.length, 'The Radiant', 'The Radiant', 'Int: 10, Ego: 10, Pre: 10, Rec: 8', 'This is the innate talent for The Radiant.<br />Con: 5, End: 5, Str: 5, Dex: 5, Int: 10, Ego: 10, Pre: 10, Rec: 8');
dataInnateTalent[dataInnateTalent.length] = new InnateTalent(dataInnateTalent.length, 'The Invincible', 'The Invincible', 'Con: 10, End: 10, Int: 10, Ego: 8', 'This is the innate talent for The Invincible.<br />Con: 10, End: 10, Str: 5, Dex: 5, Int: 10, Ego: 8, Pre: 5, Rec: 5');
dataInnateTalent[dataInnateTalent.length] = new InnateTalent(dataInnateTalent.length, 'The Night Avenger', 'The Night Avenger', 'End: 8, Str: 10, Dex: 10, Ego: 10', 'This is the innate talent for The Night Avenger.<br />Con: 5, End: 8, Str: 10, Dex: 10, Int: 5, Ego: 10, Pre: 5, Rec: 5');
dataInnateTalent[dataInnateTalent.length] = new InnateTalent(dataInnateTalent.length, 'The Chiller', 'The Chiller', 'Con: 10, End: 10, Dex: 10, Rec: 8', 'This is the innate talent for The Chiller.<br />Con: 10, End: 10, Str: 5, Dex: 10, Int: 5, Ego: 5, Pre: 5, Rec: 8');
//==============================================================================
// Talents
//==============================================================================
// talent class
/**@constructor*/
Talent = function(id, name, desc, extra) {
this.id = id;
this.name = name;
this.desc = desc;
this.extra = extra;
this.code = function() {
return numToUrlCode(this.id);
}
this.equals = function(obj) {
return (typeof(this) == typeof(obj) && this.id == obj.id);
}
this.toString = function() {
return '[id=' + this.id + ', name=\'' + this.name + '\', desc=\'' + this.desc + '\', extra=\'' + this.extra + '\', code=' + this.code() + ']';
}
}
// talent data
var dataTalent = [];
dataTalent[dataTalent.length] = new Talent(dataTalent.length, null, null, null);
dataTalent[dataTalent.length] = new Talent(dataTalent.length, 'Mighty', 'Mighty', 'Str: 8');
dataTalent[dataTalent.length] = new Talent(dataTalent.length, 'Agile', 'Agile', 'Dex: 8');
dataTalent[dataTalent.length] = new Talent(dataTalent.length, 'Enduring', 'Enduring', 'Con: 8');
dataTalent[dataTalent.length] = new Talent(dataTalent.length, 'Brilliant', 'Brilliant', 'Int: 8');
dataTalent[dataTalent.length] = new Talent(dataTalent.length, 'Indomitable', 'Indomitable', 'Ego: 8');
dataTalent[dataTalent.length] = new Talent(dataTalent.length, 'Intimidating', 'Intimidating', 'Pre: 8');
dataTalent[dataTalent.length] = new Talent(dataTalent.length, 'Tireless', 'Tireless', 'Rec: 8');
dataTalent[dataTalent.length] = new Talent(dataTalent.length, 'Energetic', 'Energetic', 'End: 8');
dataTalent[dataTalent.length] = new Talent(dataTalent.length, 'Martial Focus', 'Martial Focus', 'Str: 5, Dex: 5');
dataTalent[dataTalent.length] = new Talent(dataTalent.length, 'Physical Conditioning', 'Physical Conditioning', 'Str: 5, Con: 5');
dataTalent[dataTalent.length] = new Talent(dataTalent.length, 'Body and Mind', 'Body and Mind', 'Str: 5, Int: 5');
dataTalent[dataTalent.length] = new Talent(dataTalent.length, 'Professional Athlete', 'Professional Athlete', 'Str: 5, Ego: 5');
dataTalent[dataTalent.length] = new Talent(dataTalent.length, 'Impressive Physique', 'Impressive Physicque', 'Str: 5, Pre: 5');
dataTalent[dataTalent.length] = new Talent(dataTalent.length, 'Relentless', 'Relentless', 'Str: 5, Rec: 5');
dataTalent[dataTalent.length] = new Talent(dataTalent.length, 'Bodybuilder', 'Bodybuilder', 'Str: 5, End: 5');
dataTalent[dataTalent.length] = new Talent(dataTalent.length, 'Acrobat', 'Acrobat', 'Dex: 5, Con: 5');
dataTalent[dataTalent.length] = new Talent(dataTalent.length, 'Coordinated', 'Coordinated', 'Dex: 5, Int: 5');
dataTalent[dataTalent.length] = new Talent(dataTalent.length, 'Shooter', 'Shooter', 'Dex: 5, Ego: 5');
dataTalent[dataTalent.length] = new Talent(dataTalent.length, 'Finesse', 'Finesse', 'Dex: 5, Pre: 5');
dataTalent[dataTalent.length] = new Talent(dataTalent.length, 'Impresario', 'Impresario', 'Dex: 5, Rec: 5');
dataTalent[dataTalent.length] = new Talent(dataTalent.length, 'Accurate', 'Accurate', 'Dex: 5, End: 5');
dataTalent[dataTalent.length] = new Talent(dataTalent.length, 'Healthy Mind', 'Healthy Mind', 'Con: 5, Int: 5');
dataTalent[dataTalent.length] = new Talent(dataTalent.length, 'Ascetic', 'Ascetic', 'Con: 5, Ego: 5');
dataTalent[dataTalent.length] = new Talent(dataTalent.length, 'Shrug It Off', 'Shrug It Off', 'Con: 5, Pre: 5');
dataTalent[dataTalent.length] = new Talent(dataTalent.length, 'Quick Recovery', 'Quick Recovery', 'Con: 5, Rec: 5');
dataTalent[dataTalent.length] = new Talent(dataTalent.length, 'Boundless Reserves', 'Boundless Reserves', 'Con: 5, End: 5');
dataTalent[dataTalent.length] = new Talent(dataTalent.length, 'Academics', 'Academics', 'Int: 5, Ego: 5');
dataTalent[dataTalent.length] = new Talent(dataTalent.length, 'Diplomatic', 'Diplomatic', 'Int: 5, Pre: 5');
dataTalent[dataTalent.length] = new Talent(dataTalent.length, 'Negotiator', 'Negotiator', 'Int: 5, Rec: 5');
dataTalent[dataTalent.length] = new Talent(dataTalent.length, 'Investigator', 'Investigator', 'Int: 5, End: 5');
dataTalent[dataTalent.length] = new Talent(dataTalent.length, 'Showmanship', 'Showmanship', 'Ego: 5, Pre: 5');
dataTalent[dataTalent.length] = new Talent(dataTalent.length, 'Wordly', 'Wordly', 'Ego: 5, Rec: 5');
dataTalent[dataTalent.length] = new Talent(dataTalent.length, 'Daredevil', 'Daredevil', 'Ego: 5, End: 5');
dataTalent[dataTalent.length] = new Talent(dataTalent.length, 'Lasting Impression', 'Lasting Impression', 'Pre: 5, Rec: 5');
dataTalent[dataTalent.length] = new Talent(dataTalent.length, 'Prodigy', 'Prodigy', 'Pre: 5, End: 5');
dataTalent[dataTalent.length] = new Talent(dataTalent.length, 'Amazing Stamina', 'Amazing Stamina', 'Rec: 5, End: 5');
dataTalent[dataTalent.length] = new Talent(dataTalent.length, 'Covert Ops Training', 'Covert Ops Training', 'Str: 3, Dex: 3, Con: 3, Int: 3');
dataTalent[dataTalent.length] = new Talent(dataTalent.length, 'Martial Training', 'Martial Training', 'Str: 3, Dex: 3, Ego: 3, Rec: 3');
dataTalent[dataTalent.length] = new Talent(dataTalent.length, 'Paramilitary Training', 'Paramilitary Training', 'Str: 3, Con: 3, Rec: 3, End: 3');
dataTalent[dataTalent.length] = new Talent(dataTalent.length, 'Discipline Training', 'Discipline Training', 'Str: 3, Int: 3, Pre: 3, End: 3');
dataTalent[dataTalent.length] = new Talent(dataTalent.length, 'Sniper Training', 'Sniper Training', 'Dex: 3, Ego: 3, Pre: 3, End: 3');
dataTalent[dataTalent.length] = new Talent(dataTalent.length, 'Command Training', 'Command Training', 'Int: 3, Ego: 3, Pre: 3, Rec: 3');
dataTalent[dataTalent.length] = new Talent(dataTalent.length, 'Survival Training', 'Survival Training', 'Dex: 3, Con: 3, Pre: 3, Rec: 2, End: 2');
dataTalent[dataTalent.length] = new Talent(dataTalent.length, 'Field Ops Training', 'Field Ops Training', 'Con: 3, Int: 3, Ego: 3, Rec: 2, End: 2');
dataTalent[dataTalent.length] = new Talent(dataTalent.length, 'Jack of All Trades', 'Jack of All Trades', 'All: 2');
//dataTalent[dataTalent.length] = new Talent(dataTalent.length, 'Jack of All Trades', 'Jack of All Trades', 'Str: 2, Dex: 2, Con: 2, Int: 2, Ego: 2, Pre: 2, Rec: 2, End: 2');
//==============================================================================
// Power Aliases (set with their powers)
//==============================================================================
// power alias class
/**@constructor*/
PowerAlias = function(id, name, desc, tip) {
this.id = id;
this.name = name;
this.desc = desc;
this.tip = tip;
this.equals = function(obj) {
return (typeof(this) == typeof(obj) && this.id == obj.id);
}
this.toString = function() {
return '[id=' + this.id + ', name=\'' + this.name + '\', desc=\'' + this.desc + '\', tip=\'' + this.tip + '\']';
}
}
// power alias data
var dataPowerAlias = [];
//==============================================================================
// Power Advantages (set with their powers)
//==============================================================================
// power advantage class
/**@constructor*/
PowerAdvantage = function(id, name, desc, points, dependency, tip) {
this.id = id;
this.name = name;
this.desc = desc;
this.points = points;
this.dependency = dependency;
this.tip = tip;
this.toString = function() {
return '[id=' + this.id + ', name=\'' + this.name + '\', desc=\'' + this.desc + '\', points=' + this.points + ', dependency=' + this.dependency + ', tip=\'' + this.tip + '\']';
}
}
//==============================================================================
// Travel Powers
//==============================================================================
// travel power class
/**@constructor*/
TravelPower = function(id, name, desc, tip) {
this.id = id;
this.name = name;
this.desc = desc;
this.tip = tip;
this.advantageList = [];
this.code = function() {
return numToUrlCode(this.id);
}
this.getAdvantageList = function(mask) {
var advantageList = [];
if (mask > 0) {
for (var i = 1; i < this.advantageList.length; i++) {
var test = Math.pow(2, i);
if ((mask & test) == test) {
advantageList.push(this.advantageList[i]);
}
}
}
return advantageList;
}
this.getPoints = function(mask) {
var points = 0;
if (mask > 0) {
for (var i = 1; i < this.advantageList.length; i++) {
var test = Math.pow(2, i);
if ((mask & test) == test) {
points += this.advantageList[i].points;
}
}
}
return points;
}
this.hasAdvantage = function(mask, id) {
var test = Math.pow(2, id);
return (mask > 0 && (mask & test) == test);
}
this.addAdvantage = function(mask, id) {
return mask | Math.pow(2, id);
}
this.delAdvantage = function(mask, id) {
return mask & ~Math.pow(2, id);
}
this.equals = function(obj) {
return (typeof(this) == typeof(obj) && this.id == obj.id);
}
this.toString = function() {
var advantageList = '[';
for (var i = 1; i < this.advantageList.length; i++) {
if (i > 1) advantageList = advantageList + ',';
advantageList = advantageList + '<br /> ' + this.advantageList[i].toString();
}
advantageList = advantageList + '<br />]';
return '[id=' + this.id + ', name=\'' + this.name + '\', desc=\'' + this.desc + '\', tip=\'' + this.tip + '\', advantageList=' + advantageList + ', code=' + this.code() + ']';
}
}
// travel power data
var dataTravelPower = [];
//------------------------------------------------------------------------------
// Travel Power Aliases
//------------------------------------------------------------------------------
dataPowerAlias['R2TP'] = new PowerAlias('R2TP', 'Rank 2', 'Rank 2', 'Increases speed of travel power.');
dataPowerAlias['R3TP'] = new PowerAlias('R3TP', 'Rank 3', 'Rank 3', 'Increases speed of travel power.');
dataPowerAlias['Impact'] = new PowerAlias('Impact', 'Impact', 'Impact', 'While this travel power is active, you gain a damage bonus which scales with your current speed. This bonus persists for a short time upon losing speed or stopping.');
dataPowerAlias['Versatility'] = new PowerAlias('Versatility', 'Versatility', 'Versatility', 'While this travel power is active, if you take damage you will receive a stack of Versatility, up to 5 stacks. Versatility increases your movement speed for a short time.');
dataPowerAlias['Flippin'] = new PowerAlias('Flippin\'', 'Flippin\'', 'Flippin\'', 'While Swinging is active, you gain a bonus to your ability to dodge attacks.');
dataPowerAlias['Earthen Embrace'] = new PowerAlias('Earthen Embrace', 'Earthen Embrace', 'Earthen Embrace', 'While tunneling, you will gain a stack of Earthen Embrace every 3 seconds, up to 6 stacks. Earthen Embrace increases your resistance to all types of damage. These stacks will persist for a short time after you stop tunneling.');
//------------------------------------------------------------------------------
// Travel Power Data
//------------------------------------------------------------------------------
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, null, null, null);
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Flight', '<img src="img/TravelPower_Flight.png" /> Flight', 'The quintessential superhero power, flight allows you to soar through the air.<br /><br />Tap<br />+ Grants flight.<br />+ Greatest maneuverability of any flight power.<br />+ While out of combat, flight speed gradually increases over several stages.<br />- While in combat, flight speed is reduced.<br />- While active, the Energy Cost of all powers is increased and your Energy Generation is reduced.<br /><br />Charge<br />+ When fully charged you enter flight at maximum flight speed.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Superjump', '<img src="img/TravelPower_Superjump.png" /> Superjump', 'Able to leap tall building and enormous distances in a single bound.<br /><br />Tap<br />+ Greatly increases jump height and the speed you move while jumping.<br />+ While out of combat, your jump height and speed will increase over several stages.<br />- While in combat, your jump height and speed are reduced.<br />- While active, Energy Cost of all powers is increased and your Energy Generation is reduced.<br /><br />Charge<br />+ When fully charged, this power activates at maximum jump height and speed.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(3, 'Rebounding Resilience', 'Rebounding Resilience', 2, null, 'While Superjump is active, holds are more difficult to land on you.'));
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Superspeed', '<img src="img/TravelPower_Superspeed.png" /> Superspeed', 'Faster than a speeding bullet isn\\\'t just a metaphor in your case.<br /><br />Tap<br />+ Greatly increases your run speed.<br />+ While out of combat, your run speed will increase over several stages.<br />- While in combat, your run speed is reduced, but sill greater than the default run speed.<br />- While active, Energy Cost of all powers is increased and your Energy Generation is reduced.<br /><br />Charge<br />+ When fully charged, this power activates at maximum run speed.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(3, dataPowerAlias['Impact'].name, dataPowerAlias['Impact'].desc, 2, null, dataPowerAlias['Impact'].tip));
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Acrobatics', '<img src="img/TravelPower_Acrobatics.png" /> Acrobatics', 'Your natural physical gifts allow you to move in ways and at speeds most people wouldn\\\'t dream of.<br /><br />Tap<br />+ Increases run speed, jump height, and the speed you move while jumping.<br />+ While out of combat, your run speed, jump height, and jump speed will increase over several stages.<br />- The run speed, jump height, and jump speed granted are not as large as the run speed granted by Superspeed or the jump height and jump speed granted by Superjump.<br />- While in combat, your run speed, jump height, and jump speed are reduced.<br />- While active, the Energy Cost of all powers is increased and your Energy Generation is reduced.<br /><br />Charge<br />+ When fully charged, this power activates at maximum run speed.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(3, dataPowerAlias['Versatility'].name, dataPowerAlias['Versatility'].desc, 2, null, dataPowerAlias['Versatility'].tip));
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Mach Speed', '<img src="img/TravelPower_MachSpeed.png" /> Mach Speed', 'Faster than a speeding bullet isn\\\'t just a metaphor in your case.<br /><br />Tap<br />+ Greatly increases your run speed.<br />+ While out of combat, your run speed will increase over several stages.<br />- While in combat, your run speed is reduced, but sill greater than the default run speed.<br />- While active, Energy Cost of all powers is increased and your Energy Generation is reduced.<br /><br />Charge<br />+ When fully charged, this power activates at maximum run speed.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(3, dataPowerAlias['Impact'].name, dataPowerAlias['Impact'].desc, 2, null, dataPowerAlias['Impact'].tip));
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Athletics', '<img src="img/TravelPower_Athletics.png" /> Athletics', 'Your natural physical gifts allow you to move in ways and at speeds most people wouldn\\\'t dream of.<br /><br />Tap<br />+ Increases run speed, jump height, and the speed you move while jumping.<br />+ While out of combat, your run speed, jump height, and jump speed will increase over several stages.<br />- The run speed, jump height, and jump speed granted are not as large as the run speed granted by Superspeed or the jump height and jump speed granted by Superjump.<br />- While in combat, your run speed, jump height, and jump speed are reduced.<br />- While active, the Energy Cost of all powers is increased and your Energy Generation is reduced.<br /><br />Charge<br />+ When fully charged, this power activates at maximum run speed.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(3, dataPowerAlias['Versatility'].name, dataPowerAlias['Versatility'].desc, 2, null, dataPowerAlias['Versatility'].tip));
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Teleportation', '<img src="img/TravelPower_Teleportation.png" /> Teleportation', 'By phasing yourself out of the normal plane of existence you are able to move between two points in nearly the blink of an eye.<br /><br />Click<br />+ Phases you out of the normal plane of existence.<br />+ While phased, you are able to move at high speeds in any direction for several seconds.<br />+ If you exit the phased state above ground, you will slowly fall to the ground.<br />+ Teleportation has no speed penalty from combat.<br />+ Teleportation does not affect the Energy Cost of your powers.<br />- No powers can be activated while phased.<br />- You do not recover Health or Energy while phased.<br />- Healing has minimal effect on you while phased.<br />- The strain of entering Teleportation while you are in combat is difficult to maintain, causing you to only be able to maintain Teleportation for 2 seconds if you enter during combat.<br />- If you enter combat within 60 seconds of leaving Teleportation, you will be affected by phase sickness and will be unable to activate Teleportation again for a short time.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Ice Slide', '<img src="img/TravelPower_IceSlide.png" /> Ice Slide', 'Laying out a path of ice ahead of you, you slide and glide your way through the air.<br /><br />Tap<br />+ Grants flight.<br />+ Slightly higher top speed than basic flight.<br />+ Moves more slowly when moving up, but at greater speeds when moving down.<br />+ While out of combat, flight speed gradually increase over several stages.<br />- While in combat, flight speed is reduced.<br />- Less maneuverable than basic flight.<br />- While active, Energy Cost of all powers is increased and your Energy Generation is reduced.<br /><br />Charge<br />+ When fully charged, Ice Slide activates at maximum flight speed.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Swinging', '<img src="img/TravelPower_Swinging.png" /> Swinging', 'The world is your playground, you are able to swing to wherever you need to go.<br /><br />Tap<br />+ Replaces jump while you are in the air.<br />+ Shoots a line of tensile material towards the closest stabilizing object.<br />+ While swinging, you will move more quickly along the downswing and slow down on the upswing.<br />+ Tapping jump while swinging will release the line and grant you a small burst of speed.<br />- While active the Energy Cost of all powers is increased and your Energy Generation is reduced.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(3, dataPowerAlias['Flippin'].name, dataPowerAlias['Flippin'].desc, 2, null, dataPowerAlias['Flippin'].tip));
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Tunneling', '<img src="img/TravelPower_Tunneling.png" /> Tunneling', 'You are one with the earth and able to move through the ground with amazing speed.<br /><br />Click<br />+ Digs you into the ground.<br />+ While underground, you are undetectable by enemies.<br />+ Tunneling allows you to move at increased speeds.<br />- Other powers cannot be used while tunneling.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(3, dataPowerAlias['Earthen Embrace'].name, dataPowerAlias['Earthen Embrace'].desc, 2, null, dataPowerAlias['Earthen Embrace'].tip));
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Jet Boots', '<img src="img/TravelPower_JetBoots.png" /> Jet Boots', 'With the use of sufficiently advanced technology, these Jet Boots propel you through the air with great speed.<br /><br />Click<br />+ Grants flight<br />+ Highest top speed of all flight powers.<br />+ While out of combat, flight speed gradually increases over several stages.<br />- While in combat, flight speed is reduced.<br />- Slightly less maneuverability than basic flight.<br />- While active, the Energy Cost of all powers is increased and your Energy Generation is reduced.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Rocket Jump', '<img src="img/TravelPower_RocketJump.png" /> Rocket Jump', 'The high-impact propulsion system installed in your boots allows you to leap over enormous buildings and long distances in a single propulsion blast.<br /><br />Tap<br />+ Greatly increases jump height and the speed you move while jumping.<br />+ While out of combat, your jump height and speed will increase over several stages.<br />- While in combat, your jump height and speed are reduced.<br />- While active, the Energy Cost of all powers is increased and your Energy Generation is reduced.<br /><br />Charge<br />+ When fully charged, this power activates at maximum jump height and speed.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Fire Flight', '<img src="img/TravelPower_FireFlight.png" /> Fire Flight', 'You burst into flames and take to the sky like a blazing meteor.<br /><br />Tap<br />+ Grants flight in a fiery shroud.<br />+ Maneuverability equal to basic flight.<br />+ While out of combat, flight speed gradually increases over several stages.<br />- While in combat, flight speed is reduced.<br />- While active, Energy Cost of all powers is increased and your Energy Generation is reduced.<br /><br />Charge<br />+ When fully charged, you enter flight at maximum speed.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Hover Disk', '<img src="img/TravelPower_HoverDisk.png" /> Hover Disk', 'You call upon your Anti-Gravitonic Repulsor Lift (Anti-G.R.L. for short) to help you reach great heights.<br /><br />Tap<br />+ Grants flight.<br />+ Slightly higher top speed than basic flight.<br />+ While out of combat, flight speed gradually increase over several stages.<br />- While in combat, flight speed is reduced.<br />- Slightly less maneuverability than basic flight.<br />- While active, the Energy Cost of all powers is increased and your Energy Generation is reduced.<br /><br />Charge<br />+ When fully charged, Hover Disk activates at maximum flight speed.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Earth Flight', '<img src="img/TravelPower_EarthFlight.png" /> Earth Flight', 'Your power over matter allows you to levitate other objects to keep you afloat, allowing you to have your head in the clouds while keeping your feet on the ground.<br /><br />Tap<br />+ Grants flight.<br />+ While out of combat, flight speed gradually increase over several stages.<br />- While in combat, flight speed is reduced.<br />- Slightly less maneuverability than basic flight.<br />- While active, the Energy Cost of all powers is increased and your Energy Generation is reduced.<br /><br />Charge<br />+ When fully charged, Earth Flight activates at maximum flight speed.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Lightspeed', '<img src="img/TravelPower_Lightspeed.png" /> Lightspeed', 'Approach the speed of light, and leave a trail of illumination to prove it.<br /><br />Tap<br />+ Greatly increases your run speed.<br />+ While out of combat, your run speed will increase over several stages.<br />- While in combat, your run speed is reduced, but sill greater than the default run speed.<br />- While active, Energy Cost of all powers is increased and your Energy Generation is reduced.<br /><br />Charge<br />+ When fully charged, this power activates at maximum run speed.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(3, dataPowerAlias['Impact'].name, dataPowerAlias['Impact'].desc, 2, null, dataPowerAlias['Impact'].tip));
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Rainbow Flight', '<img src="img/TravelPower_RainbowFlight.png" /> Rainbow Flight', 'Your power over the light spectrum allows you to soar through the air while putting on a light show, dazzling all around you.<br /><br />Tap<br />+ Grants flight.<br />+ While out of combat, flight speed gradually increases over several stages.<br />- While in combat, flight speed is reduced.<br />- Slightly less maneuverability than basic flight.<br />- While active, the Energy Cost of all powers is increased and your Energy Generation is reduced.<br /><br />Charge<br />+ When fully charged, Rainbow Flight activates at maximum flight speed.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Rainbow Flight: Cloud', '<img src="img/TravelPower_RainbowFlightCloud.png" /> Rainbow Flight: Cloud', 'Your power over the elements allows you to levitate upon a cloud, leaving behind a trail of colored light wherever you pass.<br /><br />Tap<br />+ Grants flight.<br />+ Slightly higher top speed than basic flight.<br />+ While out of combat, flight speed gradually increases over several stages.<br />- While in combat, flight speed is reduced.<br />- Slightly less maneuverability than basic flight.<br />- While active, the Energy Cost of all powers is increased and your Energy Generation is reduced.<br /><br />Charge<br />+ When fully charged, Rainbow Flight activates at maximum flight speed.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Phoenix Flight', '<img src="img/TravelPower_PhoenixFlight.png" /> Phoenix Flight', 'Take flight on the wings of the phoenix. These new wings will make villains burn with envy.<br /><br />Tap<br />+ Grants flight.<br />+ Greatest maneuverability of any flight power.<br />+ While out of combat, flight speed gradually increases over several stages.<br />- While in combat, flight speed is reduced.<br />- While active, the Energy Cost of all powers is increased and your Energy Generation is reduced.<br /><br />Charge<br />+ When fully charged, you enter flight at maximum flight speed.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Tornado Flight', '<img src="img/TravelPower_TornadoFlight.png" /> Tornado Flight', 'Bend the elements to your will and take to the air via conjured tornado.<br /><br />Tap<br />+ Grants flight.<br />+ Greatest maneuverability of any flight power.<br />+ While out of combat, flight speed gradually increases over several stages.<br />- While in combat, flight speed is reduced.<br />- While active, the Energy Cost of all powers is increased and your Energy Generation is reduced.<br /><br />Charge<br />+ When fully charged, you enter flight at maximum flight speed.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Magic Carpet', '<img src="img/TravelPower_MagicCarpet.png" /> Magic Carpet', 'Your power over matter allows you to levitate other objects to keep you afloat, allowing you to have your head in the clouds while keeping your feet on the ground.<br /><br />Click<br />+ Grants flight<br />+ Highest top speed of all flight powers.<br />+ While out of combat, flight speed gradually increases over several stages.<br />- While in combat, flight speed is reduced.<br />- Slightly less maneuverability than basic flight.<br />- While active, the Energy Cost of all powers is increased and your Energy Generation is reduced.<br /><br />Charge<br />+ When fully charged, you enter flight at maximum flight speed.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Jet Pack', '<img src="img/TravelPower_JetPack.png" /> Jet Pack', 'Strap in and hold on! Equip the Jet Pack of your choice and take to the skies.<br /><br />Note: If you do not have a Jet Pack equipped this power will behave like Jet Boots Flight, with different FX and animations.<br /><br />Click<br />+ Grants flight<br />+ Highest top speed of all flight powers.<br />+ While out of combat, flight speed gradually increases over several stages.<br />- While in combat, flight speed is reduced.<br />- Slightly less maneuverability than basic flight.<br />- While active, the Energy Cost of all powers is increased and your Energy Generation is reduced.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Heroic Flight', '<img src="img/TravelPower_HeroicFlight.png" /> Heroic Flight', 'The quintessential superhero power, flight allows you to soar through the air.<br /><br />Tap<br />+ Grants flight.<br />+ Greatest maneuverability of any flight power.<br />+ While out of combat, flight speed gradually increases over several stages.<br />- While in combat, flight speed is reduced.<br />- While active, the Energy Cost of all powers is increased and your Energy Generation is reduced.<br /><br />Charge<br />+ When fully charged you enter flight at maximum flight speed.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(3, 'Fanfare', 'Fanfare', 0, null, 'Adds fanfare music to the activation of the power.'));
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Power Flight', '<img src="img/TravelPower_PowerFlight.png" /> Power Flight', 'The quintessential superhero power, flight allows you to soar through the air.<br /><br />Tap<br />+ Grants flight.<br />+ Greatest maneuverability of any flight power.<br />+ While out of combat, flight speed gradually increases over several stages.<br />- While in combat, flight speed is reduced.<br />- While active, the Energy Cost of all powers is increased and your Energy Generation is reduced.<br /><br />Charge<br />+ When fully charged you enter flight at maximum flight speed.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Scarab Tunneling', '<img src="img/TravelPower_ScarabTunneling.png" /> Scarab Tunneling', 'You are one with the earth and able to move through the ground with amazing speed.<br /><br />Click<br />+ Digs you into the ground.<br />+ While underground, you are undetectable by enemies.<br />+ Tunneling allows you to move at increased speeds.<br />- Other powers cannot be used while tunneling.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(3, 'Scarab Embrace', 'Scarab Embrace', 2, null, dataPowerAlias['Earthen Embrace'].tip));
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Blazing Speed', '<img src="img/TravelPower_BlazingSpeed.png" /> Blazing Speed', 'You move so fast you ignite the very ground under your feet, leaving swaths of fire in your wake.<br /><br />Tap<br />+ Greatly increases your run speed.<br />+ While out of combat, your run speed will increase over several stages.<br />- While in combat, your run speed is reduced, but sill greater than the default run speed.<br />- While active, Energy Cost of all powers is increased and your Energy Generation is reduced.<br /><br />Charge<br />+ When fully charged, this power activates at maximum run speed.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(3, 'Blazing Impact', 'Blazing Impact', 2, null, dataPowerAlias['Impact'].tip));
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Lightning Flash', '<img src="img/TravelPower_LightningFlash.png" /> Lightning Flash', 'By phasing yourself out of the normal plane of existence you are able to move between two points in nearly the blink of an eye.<br /><br />Click<br />+ Phases you out of the normal plane of existence.<br />+ While phased, you are able to move at high speeds in any direction for several seconds.<br />+ If you exit the phased state above ground, you will slowly fall to the ground.<br />+ Lightning Flash has no speed penalty from combat.<br />+ Lightning Flash does not affect the Energy Cost of your powers.<br />- No powers can be activated while phased.<br />- You do not recover Health or Energy while phased.<br />- Healing has minimal effect on you while phased.<br />- The strain of entering Lightning Flash while you are in combat is difficult to maintain, causing you to only be able to maintain Lightning Flash for 2 seconds if you enter during combat.<br />- If you enter combat within 60 seconds of leaving Lightning Flash, you will be affected by phase sickness and will be unable to activate Lightning Flash again for a short time.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Electric Arc', '<img src="img/TravelPower_ElectricArc.png" /> Electric Arc', 'By phasing yourself out of the normal plane of existence you are able to move between two points in nearly the blink of an eye.<br /><br />Click<br />+ Phases you out of the normal plane of existence.<br />+ While phased, you are able to move at high speeds in any direction for several seconds.<br />+ If you exit the phased state above ground, you will slowly fall to the ground.<br />+ Electric Arc has no speed penalty from combat.<br />+ Electric Arc does not affect the Energy Cost of your powers.<br />- No powers can be activated while phased.<br />- You do not recover Health or Energy while phased.<br />- Healing has minimal effect on you while phased.<br />- The strain of entering Electric Arc while you are in combat is difficult to maintain, causing you to only be able to maintain Electric Arc for 2 seconds if you enter during combat.<br />- If you enter combat within 60 seconds of leaving Electric Arc, you will be affected by phase sickness and will be unable to activate Electric Arc again for a short time.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Snowball Roll', '<img src="img/TravelPower_SnowballRoll.png" /> Snowball Roll', 'Curl up and roll away at super speeds.<br /><br />Tap<br />+ Greatly increases your run speed.<br />+ While out of combat, your run speed will increase over several stages.<br />- While in combat, your run speed is reduced, but sill greater than the default run speed.<br />- While active, Energy Cost of all powers is increased and your Energy Generation is reduced.<br /><br />Charge<br />+ When fully charged, this power activates at maximum run speed.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Distortion Superspeed', '<img src="img/TravelPower_DistortionSuperspeed.png" /> Distortion Superspeed', 'You don\\\'t move around the world; the world moves around you.<br /><br />Tap<br />+ Greatly increases your run speed.<br />+ While out of combat, your run speed will increase over several stages.<br />- While in combat, your run speed is reduced, but sill greater than the default run speed.<br />- While active, Energy Cost of all powers is increased and your Energy Generation is reduced.<br /><br />Charge<br />+ When fully charged, this power activates at maximum run speed.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(3, dataPowerAlias['Impact'].name, dataPowerAlias['Impact'].desc, 2, null, dataPowerAlias['Impact'].tip));
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Displacement Superspeed', '<img src="img/TravelPower_DisplacementSuperspeed.png" /> Displacement Superspeed', 'You don\\\'t move around the world; the world moves around you.<br /><br />Tap<br />+ Greatly increases your run speed.<br />+ While out of combat, your run speed will increase over several stages.<br />- While in combat, your run speed is reduced, but sill greater than the default run speed.<br />- While active, Energy Cost of all powers is increased and your Energy Generation is reduced.<br /><br />Charge<br />+ When fully charged, this power activates at maximum run speed.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(3, dataPowerAlias['Impact'].name, dataPowerAlias['Impact'].desc, 2, null, dataPowerAlias['Impact'].tip));
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Distortion Acrobatics', '<img src="img/TravelPower_DistortionAcrobatics.png" /> Distortion Acrobatics', 'Your ability to distort the very fabric of reality allows you to move in ways incomprehensible to the average person.<br /><br />Tap<br />+ Increases run speed, jump height, and the speed you move while jumping.<br />+ While out of combat, your run speed, jump height, and jump speed will increase over several stages.<br />- The run speed, jump height, and jump speed granted are not as large as the run speed granted by Superspeed or the jump height and jump speed granted by Superjump.<br />- While in combat, your run speed, jump height, and jump speed are reduced.<br />- While active, the Energy Cost of all powers is increased and your Energy Generation is reduced.<br /><br />Charge<br />+ When fully charged, this power activates at maximum run speed.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(3, dataPowerAlias['Versatility'].name, dataPowerAlias['Versatility'].desc, 2, null, dataPowerAlias['Versatility'].tip));
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Displacement Acrobatics', '<img src="img/TravelPower_DisplacementAcrobatics.png" /> Displacement Acrobatics', 'Your ability to distort the very fabric of reality allows you to move in ways incomprehensible to the average person.<br /><br />Tap<br />+ Increases run speed, jump height, and the speed you move while jumping.<br />+ While out of combat, your run speed, jump height, and jump speed will increase over several stages.<br />- The run speed, jump height, and jump speed granted are not as large as the run speed granted by Superspeed or the jump height and jump speed granted by Superjump.<br />- While in combat, your run speed, jump height, and jump speed are reduced.<br />- While active, the Energy Cost of all powers is increased and your Energy Generation is reduced.<br /><br />Charge<br />+ When fully charged, this power activates at maximum run speed.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(3, dataPowerAlias['Versatility'].name, dataPowerAlias['Versatility'].desc, 2, null, dataPowerAlias['Versatility'].tip));
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Retractable Wings', '<img src="img/TravelPower_RetractableWings.png" /> Retractable Wings', 'The quintessential superhero power, flight allows you to soar through the air.<br /><br />Tap<br />+ Grants flight.<br />+ Greatest maneuverability of any flight power.<br />+ While out of combat, flight speed gradually increases over several stages.<br />- While in combat, flight speed is reduced.<br />- While active, the Energy Cost of all powers is increased and your Energy Generation is reduced.<br /><br />Charge<br />+ When fully charged you enter flight at maximum flight speed.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Electro Flight', '<img src="img/TravelPower_ElectroFlight.png" /> Electro Flight', 'Arcing with electricity, you take flight and soar through the air.<br /><br />Tap<br />+ Grants flight.<br />+ Greatest maneuverability of any flight power.<br />+ While out of combat, flight speed gradually increases over several stages.<br />- While in combat, flight speed is reduced.<br />- While active, the Energy Cost of all powers is increased and your Energy Generation is reduced.<br /><br />Charge<br />+ When fully charged you enter flight at maximum flight speed.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Hyper Ball', '<img src="img/TravelPower_HyperBall.png" /> Hyper Ball', 'Curl up and roll away at super speeds.<br /><br />Tap<br />+ Greatly increases your run speed.<br />+ While out of combat, your run speed will increase over several stages.<br />- While in combat, your run speed is reduced, but sill greater than the default run speed.<br />- While active, Energy Cost of all powers is increased and your Energy Generation is reduced.<br /><br />Charge<br />+ When fully charged, this power activates at maximum run speed.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Mystic Flight', '<img src="img/TravelPower_MysticFlight.png" /> Mystic Flight', 'Surrounded by mystic energy, you take flight and soar through the air.<br /><br />Tap<br />+ Grants flight.<br />+ Greatest maneuverability of any flight power.<br />+ While out of combat, flight speed gradually increases over several stages.<br />- While in combat, flight speed is reduced.<br />- While active, the Energy Cost of all powers is increased and your Energy Generation is reduced.<br /><br />Charge<br />+ When fully charged you enter flight at maximum flight speed.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Bat Flight', '<img src="img/TravelPower_BatFlight.png" /> Bat Flight', 'Take to the skies as a swarm of bats.<br /><br />Tap<br />+ Grants flight.<br />+ Greatest maneuverability of any flight power.<br />+ While out of combat, flight speed gradually increases over several stages.<br />- While in combat, flight speed is reduced.<br />- While active, the Energy Cost of all powers is increased and your Energy Generation is reduced.<br />- Other powers cannot be used while using Bat Flight.<br /><br />Charge<br />+ When fully charged you enter flight at maximum flight speed.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Scarab Flight', '<img src="img/TravelPower_ScarabFlight.png" /> Scarab Flight', 'The quintessential superhero power, flight allows you to soar through the air.<br /><br />Tap<br />+ Grants flight.<br />+ Greatest maneuverability of any flight power.<br />+ While out of combat, flight speed gradually increases over several stages.<br />- While in combat, flight speed is reduced.<br />- While active, the Energy Cost of all powers is increased and your Energy Generation is reduced.<br /><br />Charge<br />+ When fully charged you enter flight at maximum flight speed.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Ooze Tunneling', '<img src="img/TravelPower_OozeTunneling.png" /> Ooze Tunneling', 'You are one with the earth and able to move through the ground with amazing speed.<br /><br />Requires level 40.<br /><br />Click<br />+ Melts you into a swift puddle of ooze.<br />+ While oozing, you are undetectable by enemies.<br />+ Ozzing allows you to move at increased speeds.<br />- Other powers cannot be used while oozing.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(3, dataPowerAlias['Earthen Embrace'].name, dataPowerAlias['Earthen Embrace'].desc, 2, null, dataPowerAlias['Earthen Embrace'].tip));
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Inky Ooze Tunneling', '<img src="img/TravelPower_OozeTunneling.png" /> Inky Ooze Tunneling', 'You are one with the earth and able to move through the ground with amazing speed.<br /><br />Requires level 40.<br /><br />Click<br />+ Melts you into a swift puddle of ooze.<br />+ While oozing, you are undetectable by enemies.<br />+ Ozzing allows you to move at increased speeds.<br />- Other powers cannot be used while oozing.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(3, dataPowerAlias['Earthen Embrace'].name, dataPowerAlias['Earthen Embrace'].desc, 2, null, dataPowerAlias['Earthen Embrace'].tip));
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Metallic Ooze Tunneling', '<img src="img/TravelPower_OozeTunneling.png" /> Metallic Ooze Tunneling', 'You are one with the earth and able to move through the ground with amazing speed.<br /><br />Requires level 40.<br /><br />Click<br />+ Melts you into a swift puddle of ooze.<br />+ While oozing, you are undetectable by enemies.<br />+ Ozzing allows you to move at increased speeds.<br />- Other powers cannot be used while oozing.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(3, dataPowerAlias['Earthen Embrace'].name, dataPowerAlias['Earthen Embrace'].desc, 2, null, dataPowerAlias['Earthen Embrace'].tip));
// TODO: get proper image
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Chain Swinging', '<img src="img/TravelPower_Swinging.png" /> Chain Swinging', 'The world is your playground, you are able to swing to wherever you need to go.<br /><br />Tap<br />+ Replaces jump while you are in the air.<br />+ Shoots a line of tensile material towards the closest stabilizing object.<br />+ While swinging, you will move more quickly along the downswing and slow down on the upswing.<br />+ Tapping jump while swinging will release the line and grant you a small burst of speed.<br />- While active the Energy Cost of all powers is increased and your Energy Generation is reduced.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(3, dataPowerAlias['Flippin'].name, dataPowerAlias['Flippin'].desc, 2, null, dataPowerAlias['Flippin'].tip));
// TODO: get proper image
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Energy Swinging', '<img src="img/TravelPower_Swinging.png" /> Energy Swinging', 'The world is your playground, you are able to swing to wherever you need to go.<br /><br />Tap<br />+ Replaces jump while you are in the air.<br />+ Shoots a line of tensile material towards the closest stabilizing object.<br />+ While swinging, you will move more quickly along the downswing and slow down on the upswing.<br />+ Tapping jump while swinging will release the line and grant you a small burst of speed.<br />- While active the Energy Cost of all powers is increased and your Energy Generation is reduced.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(3, dataPowerAlias['Flippin'].name, dataPowerAlias['Flippin'].desc, 2, null, dataPowerAlias['Flippin'].tip));
// TODO: get proper image
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Vine Swinging', '<img src="img/TravelPower_Swinging.png" /> Vine Swinging', 'The world is your playground, you are able to swing to wherever you need to go.<br /><br />Tap<br />+ Replaces jump while you are in the air.<br />+ Shoots a line of tensile material towards the closest stabilizing object.<br />+ While swinging, you will move more quickly along the downswing and slow down on the upswing.<br />+ Tapping jump while swinging will release the line and grant you a small burst of speed.<br />- While active the Energy Cost of all powers is increased and your Energy Generation is reduced.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(3, dataPowerAlias['Flippin'].name, dataPowerAlias['Flippin'].desc, 2, null, dataPowerAlias['Flippin'].tip));
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Storm Rider', '<img src="img/TravelPower_ElectroFlight.png" /> Storm Rider', 'Arcing with electricity, you take flight and soar through the air.<br /><br />Tap<br />+ Grants flight.<br />+ Greatest maneuverability of any flight power.<br />+ While out of combat, flight speed gradually increases over several stages.<br />- While in combat, flight speed is reduced.<br />- While active, the Energy Cost of all powers is increased and your Energy Generation is reduced.<br /><br />Charge<br />+ When fully charged you enter flight at maximum flight speed.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'R.A.D. Sphere', '<img src="img/TravelPower_HyperBall.png" /> R.A.D. Sphere', 'Curl up and roll away at super speeds.<br /><br />Tap<br />+ Greatly increases your run speed.<br />+ While out of combat, your run speed will increase over several stages.<br />- While in combat, your run speed is reduced, but sill greater than the default run speed.<br />- While active, Energy Cost of all powers is increased and your Energy Generation is reduced.<br /><br />Charge<br />+ When fully charged, this power activates at maximum run speed.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Aethyric Incantation', '<img src="img/TravelPower_MysticFlight.png" /> Aethyric Incantation', 'Surrounded by mystic energy, you take flight and soar through the air.<br /><br />Tap<br />+ Grants flight.<br />+ Greatest maneuverability of any flight power.<br />+ While out of combat, flight speed gradually increases over several stages.<br />- While in combat, flight speed is reduced.<br />- While active, the Energy Cost of all powers is increased and your Energy Generation is reduced.<br /><br />Charge<br />+ When fully charged you enter flight at maximum flight speed.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Energy Slide', '<img src="img/TravelPower_EnergySlide.png" /> Energy Slide', 'Harnessing your latent energies, you glide along the ground at amazing speeds.<br /><br />Tap<br />+ While active, your movement and jump speeds are increased and you will slide along the ground.<br />+ Slightly lower top speed than Superspeed.<br />+ Slightly lower maximum jump height than Acrobatics.<br />+ While out of combat, speed gradually increase over several stages.<br />- While in combat, speed is reduced.<br />- While active, Energy Cost of all powers is increased and your Energy Generation is reduced.<br /><br />Charge<br />+ When fully charged, Energy Slide activates at maximum speed.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Flag Speed', '<img src="img/TravelPower_FlagSpeed.png" /> Flag Speed', 'These colors DO run.<br /><br />Tap<br />+ Greatly increases your run speed.<br />+ While out of combat, your run speed will increase over several stages.<br />- While in combat, your run speed is reduced, but sill greater than the default run speed.<br />- While active, Energy Cost of all powers is increased and your Energy Generation is reduced.<br /><br />Charge<br />+ When fully charged, this power activates at maximum run speed.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(3, dataPowerAlias['Impact'].name, dataPowerAlias['Impact'].desc, 2, null, dataPowerAlias['Impact'].tip));
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Millennial Flight', '<img src="img/TravelPower_MillennialFlight.png" /> Millennial Flight', 'The quintessential superhero power, flight allows you to soar through the air.<br /><br />Tap<br />+ Grants flight.<br />+ Greatest maneuverability of any flight power.<br />+ While out of combat, flight speed gradually increases over several stages.<br />- While in combat, flight speed is reduced.<br />- While active, the Energy Cost of all powers is increased and your Energy Generation is reduced.<br /><br />Charge<br />+ When fully charged you enter flight at maximum flight speed.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
// TODO: get proper image
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Ninja Vanish', '<img src="img/TravelPower_Teleportation.png" /> Ninja Vanish', 'By phasing yourself out of the normal plane of existence you are able to move between two points in nearly the blink of an eye.<br /><br />Click<br />+ Phases you out of the normal plane of existence.<br />+ While phased, you are able to move at high speeds in any direction for several seconds.<br />+ If you exit the phased state above ground, you will slowly fall to the ground.<br />+ Teleportation has no speed penalty from combat.<br />+ Teleportation does not affect the Energy Cost of your powers.<br />- No powers can be activated while phased.<br />- You do not recover Health or Energy while phased.<br />- Healing has minimal effect on you while phased.<br />- The strain of entering Teleportation while you are in combat is difficult to maintain, causing you to only be able to maintain Teleportation for 2 seconds if you enter during combat.<br />- If you enter combat within 60 seconds of leaving Teleportation, you will be affected by phase sickness and will be unable to activate Teleportation again for a short time.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Cape Glide', '<img src="img/TravelPower_CapeGlide.png" /> Cape Glide', 'The quintessential superhero power, flight allows you to soar through the air.<br /><br />Tap<br />+ Grants flight.<br />+ Greatest maneuverability of any flight power.<br />+ While out of combat, flight speed gradually increases over several stages.<br />- While in combat, flight speed is reduced.<br />- While active, the Energy Cost of all powers is increased and your Energy Generation is reduced.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Shadow Wings', '<img src="img/TravelPower_ShadowWings.png" /> Shadow Wings', 'Take flight on the wings of darkest shadows.<br /><br />Tap<br />+ Grants flight with a magnificent pair of dark wings.<br />+ Greatest maneuverability of any flight power.<br />+ While out of combat, flight speed gradually increases over several stages.<br />- While in combat, flight speed is reduced.<br />- While active, the Energy Cost of all powers is increased and your Energy Generation is reduced.<br /><br />Charge<br />+ When fully charged you enter flight at maximum flight speed.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Shadow Skull Flight', '<img src="img/TravelPower_ShadowSkullFlight.png" /> Shadow Skull Flight', 'Take to the skies as a shadowy skull.<br /><br />Tap<br />+ Grants flight.<br />+ Greatest maneuverability of any flight power.<br />+ While out of combat, flight speed gradually increases over several stages.<br />- While in combat, flight speed is reduced.<br />- While active, the Energy Cost of all powers is increased and your Energy Generation is reduced.<br />- Other powers cannot be used while using Shadow Skull Flight.<br /><br />Charge<br />+ When fully charged you enter flight at maximum flight speed.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Ninja Leaves', '<img src="img/TravelPower_NinjaLeaves.png" /> Ninja Leaves', 'By vanishing in a flurry of leaves you are able to move between two points in nearly the blink of an eye.<br /><br />Click<br />+ Lets you vanish in a flurry of leaves.<br />+ While hidden, you are able to move at high speeds in any direction for several seconds.<br />+ If you exit the hidden state above ground, you will slowly fall to the ground.<br />+ Ninja Leaves has no speed penalty from combat.<br />+ Ninja Leaves does not affect the Energy Cost of your powers.<br />- No powers can be activated while hidden.<br />- You do not recover Health or Energy while hidden.<br />- Healing has minimal effect on you while hidden.<br />- The strain of entering a hidden state while you are in combat is difficult to maintain, causing you to only be able to maintain it for 2 seconds if you enter during combat.<br />- If you enter combat within 60 seconds of leaving the hidden state, you will be affected by weakness and will be unable to activate Ninja Leaves again for a short time.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Flag Flight', '<img src="img/TravelPower_Flight.png" /> Flag Flight', 'The quintessential superhero power, flight allows you to soar through the air.<br /><br />Tap<br />+ Grants flight.<br />+ Greatest maneuverability of any flight power.<br />+ While out of combat, flight speed gradually increases over several stages.<br />- While in combat, flight speed is reduced.<br />- While active, the Energy Cost of all powers is increased and your Energy Generation is reduced.<br /><br />Charge<br />+ When fully charged you enter flight at maximum flight speed.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Canadian Flag Flight', '<img src="img/TravelPower_Flight.png" /> Canadian Flag Flight', 'The quintessential superhero power, flight allows you to soar through the air.<br /><br />Tap<br />+ Grants flight.<br />+ Greatest maneuverability of any flight power.<br />+ While out of combat, flight speed gradually increases over several stages.<br />- While in combat, flight speed is reduced.<br />- While active, the Energy Cost of all powers is increased and your Energy Generation is reduced.<br /><br />Charge<br />+ When fully charged you enter flight at maximum flight speed.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
dataTravelPower[dataTravelPower.length] = new TravelPower(dataTravelPower.length, 'Hoverboard', '<img src="img/TravelPower_Hoverboard.png" /> Hoverboard', 'You slip and slide your way through the air on your powered hoverboard.<br /><br /><b>This power can be unlocked from a Frozen Lockbox drop.</b><br /><br />Tap<br />+ Grants a limited form of flight that will slowly loose altitude if you are not moving to counter it.<br />+ Slightly higher top speed than basic flight.<br />+ Moves more slowly when moving up, but at greater speeds when moving down.<br />+ While out of combat, flight speed gradually increases over several stages.<br />- While in combat, flight speed is reduced.<br />- Less maneuverability than basic flight.<br />- While active, the Energy Cost of all powers is increased and your Energy Generation is reduced.<br /><br />Charge<br />+ When fully charged, Hoverboard activates at maximum speed.');
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2TP'].name, dataPowerAlias['R2TP'].desc, 1, null, dataPowerAlias['R2TP'].tip));
dataTravelPower[dataTravelPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3TP'].name, dataPowerAlias['R3TP'].desc, 1, 1, dataPowerAlias['R3TP'].tip));
//==============================================================================
// Power Sets
//==============================================================================
// power set class
/**@constructor*/
PowerSet = function(id, name, desc) {
this.id = id;
this.name = name;
this.desc = desc;
this.toString = function() {
return '[id=' + this.id + ', name=\'' + this.name + '\', desc=\'' + this.desc + '\']';
}
}
// power set data
var dataPowerSet = [];
dataPowerSet[dataPowerSet.length] = new PowerSet(dataPowerSet.length, 'Energy Projector', '<img src="img/PowerSet_EnergyProjector.png" /> Energy Projector');
dataPowerSet[dataPowerSet.length] = new PowerSet(dataPowerSet.length, 'Technology', '<img src="img/PowerSet_Technology.png" /> Technology');
dataPowerSet[dataPowerSet.length] = new PowerSet(dataPowerSet.length, 'Martial Arts', '<img src="img/PowerSet_MartialArts.png" /> Martial Arts');
dataPowerSet[dataPowerSet.length] = new PowerSet(dataPowerSet.length, 'Mentalist', '<img src="img/PowerSet_Mentalist.png" /> Mentalist');
dataPowerSet[dataPowerSet.length] = new PowerSet(dataPowerSet.length, 'Brick', '<img src="img/PowerSet_Brick.png" /> Brick');
dataPowerSet[dataPowerSet.length] = new PowerSet(dataPowerSet.length, 'Mystic', '<img src="img/PowerSet_Mystic.png" /> Mystic');
//==============================================================================
// Power Frameworks
//==============================================================================
// framework class
/**@constructor*/
Framework = function(id, name, desc, tip) {
this.id = id;
this.name = name;
this.desc = desc;
this.tip = tip;
this.toString = function() {
return '[id=' + this.id + ', name=\'' + this.name + '\', desc=\'' + this.desc + '\', tip=\'' + this.tip + '\']';
}
}
// framework data
var dataFramework = [];
dataFramework[dataFramework.length] = new Framework(dataFramework.length, null, null, null);
dataFramework[dataFramework.length] = new Framework(dataFramework.length, 'Electricity', '<img src="img/Framework_Electricity.png" alt="Electricity" />', '<b>Electricity</b><br /><br />You channel the power of the storm. Fling lightning bolts at those who displease you. You are all about offense. Your attacks allow you to fight multiple enemies at once and dominate a battlefield. However, it takes a lot out of you. You can chain your attacks to strike multiple enemies at once and generate Energy for yourself. Generate enough Energy, an you can transform yourself into electricity and become even more powerful.<br /><br />* Recommended Characteristics: Recovery and Endurance<br />* Starting Innate Talent: Energized<br />* Suggested Skill: Mysticism or Arms<br />* Main Damage Type: Electrical Damage<br />* Main Mechanics: Negative Ions<br />* Archetypes: The Tempest');
dataFramework[dataFramework.length] = new Framework(dataFramework.length, 'Fire', '<img src="img/Framework_Fire.png" alt="Fire" />', '<b>Fire</b><br /><br />You can wield the heat of the inferno to damage every enemy in front of you with contemptuous ease. Use your fire powers to fight multiple enemies within range at once. Most of your fire powers will cause enemies to burn for a long time, weakening them long after your initial attack. You create enduring patches of flame on the battlefield and gain Energy from nearby fire.<br /><br />* Recommended Characteristics: Presence and Recovery<br />* Starting Innate Talent: Incandescent<br />* Suggested Skill: Mysticism<br />* Main Damage Type: Fire Damage<br />* Main Mechanics: Clinging Flames<br />* Archetypes: The Inferno');
dataFramework[dataFramework.length] = new Framework(dataFramework.length, 'Force', '<img src="img/Framework_Force.png" alt="Force" />', '<b>Force</b><br /><br />Wield raw kinetic Energy to protect yourself and your allies, and send your enemies flying. Cast protective forcefields for yourself and your allies while you use your kinetic powers to seriously damage your enemies. Force grants quick access to the personal force field power and allows you to regain Energy to fuel your attacks by protecting and aiding your allies. Every strike aimed at your shield feeds you a small amount of Energy.<br /><br />* Recommended Characteristics: Ego and Endurance<br />* Starting Innate Talent: Impetus<br />* Suggested Skill: Mysticism or Arms<br />* Main Damage Type: Crushing Damage<br />* Main Mechanics: Containment Fields<br />* Archetypes: The Impulse and The Unleashed');
dataFramework[dataFramework.length] = new Framework(dataFramework.length, 'Wind', '<img src="img/Framework_Wind.png" alt="Wind" />', '<b>Wind</b><br /><br />You can control the wind and weather currents around you, creating raging hurricanes, powerful twisters, and huge gusts of wind to Knock Down and Disorient your foes.<br /><br />* Recommended Characteristics: Recovery and Endurance<br />* Starting Innate Talent: Energized<br />* Suggested Skill: Mysticism or Arms<br />* Main Damage Type: Crushing Damage, Electrical Damage, Cold Damage<br />* Main Mechanics: Disorient, Repel<br />* Archetypes: The Squall');
dataFramework[dataFramework.length] = new Framework(dataFramework.length, 'Ice', '<img src="img/Framework_Ice.png" alt="Ice" />', '<b>Ice</b><br /><br />Damage your enemies while slowing them down with ice projections and cages of bitter cold. Trap your enemies in cages of ice, or build explosive ice structures on the field of battle. Your powers are excellent for damaging and trapping. Enemies caught in detonation structures gives you Energy.<br /><br />* Recommended Characteristics: Dexterity and Recovery<br />* Starting Innate Talent: Absolute Zero<br />* Suggested Skill: Science<br />* Main Damage Type: Cold Damage<br />* Main Mechanics: Chill, Ice Objects<br />* Archetypes: The Glacier and The Icicle');
dataFramework[dataFramework.length] = new Framework(dataFramework.length, 'Archery', '<img src="img/Framework_Archery.png" alt="Archery" />', '<b>Archery</b><br /><br />You are a hunter of men, singling out the corrupt and the unjust. Through the use of specialized arrows archers have access to a wider variety of attacks than most characters and can switch between Roots, Stuns and other status effects at will. When archers establish a quarry their attacks become increasingly accurate and efficient.<br /><br />* Recommended Characteristics: Dexterity and Intelligence<br />* Starting Innate Talent: Sureshot<br />* Suggested Skill: Science<br />* Main Damage Type: Piercing Damage<br />* Archetypes: The Marksman');
dataFramework[dataFramework.length] = new Framework(dataFramework.length, 'Gadgeteering', '<img src="img/Framework_Gadgeteering.png" alt="Gadgeteering" />', '<b>Gadgeteering</b><br /><br />Whatever the situation, you have a gadget to solve it. Flaming crocodiles chasing you? No problem… Create pet robots that heal, gunbots that shoot, defensive towers, and many, many more toys. Pets, pets, and more pets.<br /><br />* Recommended Characteristics: Endurance and Intelligence<br />* Starting Innate Talent: Technological Intuition<br />* Suggested Skill: Science<br />* Main Damage Types: Particle Damage<br />* Archetypes: The Inventor, The Night Avenger, and The Automaton');
dataFramework[dataFramework.length] = new Framework(dataFramework.length, 'Munitions', '<img src="img/Framework_Munitions.png" alt="Munitions" />', '<b>Munitions</b><br /><br />You use normal world tech to accomplish superhuman feats. Your level of skill is breathtaking. You may be military, law enforcement, paramilitary or independent. You have more firepower than just about everyone else, and it costs you very little. In exchange, you have somewhat less flexibility than some of your fellow superheroes. Mines and demolitions allow you to control territory and a wide variety of weapon replaces allow you to, with planning, find the right gun for the job.<br /><br />* Recommended Characteristics: Dexterity and Ego<br />* Starting Innate Talent: Quick Trigger<br />* Suggested Skill: Mysticism or Science<br />* Main Damage Type: Piercing Damage<br />* Main Mechanics: Critical Hits<br />* Archetypes: The Soldier and The Specialist');
dataFramework[dataFramework.length] = new Framework(dataFramework.length, 'Power Armor', '<img src="img/Framework_PowerArmor.png" alt="Power Armor" />', '<b>Power Armor</b><br /><br />You are a versatile hero, with equally strong offense and defense. You can use a multitude of weapon systems, activated individually or simultaneously, to create overwhelming wave of firepower. Faster than any other class, you can become invulnerable to the attacks of weaker enemies. You can work will on your own or with a team, thanks to your multi-weapon toggle framework and Targeting Computer.<br /><br />* Recommended Characteristics: Strength and Intelligence<br />* Starting Innate Talent: Mechanized<br />* Suggested Skill: Arms or Science<br />* Main Damage Type: Particle Damage<br />* Main Mechanics: Weapon Systems<br />* Archetypes: The Invincible and The Automaton');
dataFramework[dataFramework.length] = new Framework(dataFramework.length, 'Dual Blades', '<img src="img/Framework_DualBlades.png" alt="Dual Blades" />', '<b>Dual Blades</b><br /><br />A master of blades, you surround yourself with a withering tempest of steel that damages multiple weaker opponents at once. You gain Energy from every Critical Strike on nearby opponents, which drives you to ever greater prowess. You are the only one with innately multi-target Melee attacks, and you have a strong focus and on scoring Critical Hits.<br /><br />* Recommended Characteristics: Strength and Dexterity<br />* Starting Innate Talent: One of Mind and Body<br />* Suggested Skill: Arms<br />* Main Damage Type: Slashing Damage<br />* Main Mechanics: Critical Hit, Rush/Focus<br />* Archetypes: The Specialist and The Unleashed');
dataFramework[dataFramework.length] = new Framework(dataFramework.length, 'Fighting Claws', '<img src="img/Framework_FightingClaws.png" alt="Fighting Claws" />', '<b>Fighting Claws</b><br /><br />You embody the swiftness of the asp, the ferocity of the lion, the precision of the hawk, and the might of the dragon. You can at times inflict bleeding wounds on your opponents that can be exploited for further devastating strikes. Yours is a mobile combat style and random infliction of debilitation effects upon your enemies.<br /><br />* Recommended Characteristics: Strength and Dexterity<br />* Starting Innate Talent: One of Mind and Body<br />* Suggested Skill: Arms<br />* Main Damage Type: Slashing Damage<br />* Main Mechanics: Shredded, Rush/Focus<br />* Archetypes: The Night Avenger');
dataFramework[dataFramework.length] = new Framework(dataFramework.length, 'Single Blade', '<img src="img/Framework_SingleBlade.png" alt="Single Blade" />', '<b>Single Blade</b><br /><br />The ultimate master of your weapon of choice, you prefer to focus on one specific target and hound that enemy to inevitable defeat. Your attacks are so fierce, your enemies continue to weaken afterwards. Press the attack, and your enemy will completely fall apart. The more you press your opponent with attacks, the more potent the damage you do.<br /><br />* Recommended Characteristics: Strength and Dexterity<br />* Starting Innate Talent: One of Mind and Body<br />* Suggested Skill: Arms<br />* Main Damage Type: Slashing Damage<br />* Main Mechanics: Bleed, Rush/Focus<br />* Archetypes: The Blade');
dataFramework[dataFramework.length] = new Framework(dataFramework.length, 'Unarmed', '<img src="img/Framework_Unarmed.png" alt="Martial Arts" />', '<b>Unarmed</b><br /><br />A master or unarmed martial arts, you specialize in defeated multiple weaker opponents all at once. You are highly agile and mobile and can defeat your enemies with a torrent of kicks and punches. Your agility gives you near supernatural dodging and the ability to gain Energy from dodging an opponents attack. You\\\'re superb in Melee fighting.<br /><br />* Recommended Characteristics: Strength and Dexterity<br />* Starting Innate Talent: One of Mind and Body<br />* Suggested Skill: Arms<br />* Main Damage Type: Crushing Damage<br />* Main Mechanics: Small Dodge Buffs, Rush/Focus<br />* Archetypes: The Master and The Fist');
dataFramework[dataFramework.length] = new Framework(dataFramework.length, 'Telekinesis', '<img src="img/Framework_Telekinesis.png" alt="Telekinesis" />', '<b>Telekinesis</b><br /><br />You can craft devastating weapons with the power of your mind and exude crushing eaves of force. The telekinesis set mixes close range Melee attacks, using weapons of solidified mental energy, and long range attacks that batter all nearby enemies. You can sheathe yourself in mental energy, dramatically increasing the power of your psi weapon attacks.<br /><br />* Recommended Characteristics: Constitution and Ego<br />* Starting Innate Talent: Matter Manipulator<br />* Suggested Skill: Mysticism or Arms<br />* Main Damage Type: Ego Damage<br />* Main Mechanics: Ego Blades, Ego Leech<br />* Archetypes: The Disciple');
dataFramework[dataFramework.length] = new Framework(dataFramework.length, 'Telepathy', '<img src="img/Framework_Telepathy.png" alt="Telepathy" />', '<b>Telepathy</b><br /><br />You can attack, control, strengthen or soothe the minds of your foes or allies. You have excellent support and healing powers, as well as crowd control abilities. You can hone your telepathic abilities and learn to gain Energy even as you heal others.<br /><br />* Recommended Characteristics: Ego and Presence<br />* Starting Innate Talent: Mind Reader<br />* Suggested Skill: Mysticism<br />* Main Damage Type: Ego Damage<br />* Main Mechanics: Crowd Control and Healing<br />* Archetypes: The Mind');
dataFramework[dataFramework.length] = new Framework(dataFramework.length, 'Heavy Weapon', '<img src="img/Framework_HeavyWeapon.png" alt="Heavy Weapon" />', '<b>Heavy Weapon</b><br /><br />With your strong, heavy swings you are able to take on many foes at once, utilizing the weight of your weapon to Knock your foes down and Disorient them. Striking at one foe or many, you\\\'ll make them regret getting close to you.<br /><br />* Recommended Characteristics: Strength and Recovery<br />* Starting Innate Talent: Feral<br />* Suggested Skill: Arms<br />* Main Damage Type: Crushing Damage<br />* Main Mechanics: Defiant/Enraged and Disorient<br />* Archetypes: The Devastator');
dataFramework[dataFramework.length] = new Framework(dataFramework.length, 'Earth', '<img src="img/Framework_Earth.png" alt="Earth" />', '<b>Earth</b><br /><br />You have multiple powers that can knock down and weaken your foes, allowing you to gain control of the fight and the attention of your enemies. Your assault enables your allies to attack unhindered, so focus on keeping your enemies attacking you instead of them.<br /><br />* Recommended Characteristics: Constitution and Endurance<br />* Starting Innate Talent: Abyssal<br />* Suggested Skill: Arms<br />* Main Damage Type: Crushing Damage<br />* Main Mechanics: Stagger/Knocks<br />* Archetypes: The Mountain');
dataFramework[dataFramework.length] = new Framework(dataFramework.length, 'Might', '<img src="img/Framework_Might.png" alt="Might" />', '<b>Might</b><br /><br />Everything around you is a tool you can use. Every enemy is a potential toy to knock around. You excel at slow heavy attacks, massive knock backs and locking down your opponents. The longer you fight, the harder you hit and the less damage you take.<br /><br />* Recommended Characteristics: Strength and Constitution<br />* Starting Innate Talent: Superhuman<br />* Suggested Skill: Arms<br />* Main Damage Type: Crushing Damage<br />* Main Mechanics: Knocks, Defiant/Enraged<br />* Archetypes: The Behemoth');
dataFramework[dataFramework.length] = new Framework(dataFramework.length, 'Celestial', '<img src="img/Framework_Celestial.png" alt="Celestial" />', '<b>Celestial</b><br /><br />Use the power of the Seraphim to heal and strengthen your allies, or release the fury of the Nephilim in a battle against evil.<br /><br />* Recommended Characteristics: Constitution and Presence<br />* Starting Innate Talent: Divinity<br />* Suggested Skill: Science<br />* Main Damage Type: Dimensional Damage<br />* Main Mechanics: Healing/Damage Hybrid powers, Illumination<br />* Archetypes: The Radiant');
dataFramework[dataFramework.length] = new Framework(dataFramework.length, 'Darkness', '<img src="img/Framework_Darkness.png" alt="Darkness" />', '<b>Darkness</b><br /><br />The dimensional forces of unadulterated primeval darkness run through you, ripples of power in a sea of extra-dimensional energy. Life drains, transfers, shield made of void, and other dimensional powers are under your command.<br /><br />* Recommended Characteristics: Constitution and Endurance<br />* Starting Innate Talent: Abyssal<br />* Suggested Skill: Arms<br />* Main Damage Type: Dimensional Damage<br />* Main Mechanics: Fear<br />* Archetypes: The Void');
dataFramework[dataFramework.length] = new Framework(dataFramework.length, 'Arcane Sorcery', '<img src="img/Framework_ArcaneSorcery.png" alt="Arcane Sorcery" />', '<b>Arcane Sorcery</b><br /><br />You can access the powers of the mystic universe. Specialize in arcane, radiant, primal or necromantic paths. As a sorcerer, you may heal the injured, raise the dead, chance the weather or summon beasts of myth. It\\\'s up to you which spells you choose to learn. You can cast circles of power; stand within them for greater power. You can choose to summon minions, if you wish and call upon a greater variety of attacks than any other set.<br /><br />* Recommended Characteristics: Intelligence and Presence<br />* Starting Innate Talent: Arcanus<br />* Suggested Skill: Mysticism or Science<br />* Main Damage Type: Magic Damage<br />* Main Mechanics: ???<br />* Archetypes: The Grimoire');
dataFramework[dataFramework.length] = new Framework(dataFramework.length, 'Primal Sorcery', '<img src="img/Framework_PrimalSorcery.png" alt="Primal Sorcery" />', '<b>Primal Sorcery</b><br /><br />You can access the powers of the mystic universe. Specialize in arcane, radiant, primal or necromantic paths. As a sorcerer, you may heal the injured, raise the dead, chance the weather or summon beasts of myth. It\\\'s up to you which spells you choose to learn. You can cast circles of power; stand within them for greater power. You can choose to summon minions, if you wish and call upon a greater variety of attacks than any other set.<br /><br />* Recommended Characteristics: Intelligence and Presence<br />* Starting Innate Talent: Arcanus<br />* Suggested Skill: Mysticism or Science<br />* Main Damage Type: Magic Damage<br />* Main Mechanics: ???<br />* Archetypes: The Grimoire');
dataFramework[dataFramework.length] = new Framework(dataFramework.length, 'Ebon Sorcery', '<img src="img/Framework_EbonSorcery.png" alt="Ebon Sorcery" />', '<b>Ebon Sorcery</b><br /><br />You can access the powers of the mystic universe. Specialize in arcane, radiant, primal or necromantic paths. As a sorcerer, you may heal the injured, raise the dead, chance the weather or summon beasts of myth. It\\\'s up to you which spells you choose to learn. You can cast circles of power; stand within them for greater power. You can choose to summon minions, if you wish and call upon a greater variety of attacks than any other set.<br /><br />* Recommended Characteristics: Intelligence and Presence<br />* Starting Innate Talent: Arcanus<br />* Suggested Skill: Mysticism or Science<br />* Main Damage Type: Magic Damage<br />* Main Mechanics: ???<br />* Archetypes: The Grimoire');
dataFramework[dataFramework.length] = new Framework(dataFramework.length, 'Radiant Sorcery', '<img src="img/Framework_RadiantSorcery.png" alt="Radiant Sorcery" />', '<b>Radiant Sorcery</b><br /><br />You can access the powers of the mystic universe. Specialize in arcane, radiant, primal or necromantic paths. As a sorcerer, you may heal the injured, raise the dead, chance the weather or summon beasts of myth. It\\\'s up to you which spells you choose to learn. You can cast circles of power; stand within them for greater power. You can choose to summon minions, if you wish and call upon a greater variety of attacks than any other set.<br /><br />* Recommended Characteristics: Intelligence and Presence<br />* Starting Innate Talent: Arcanus<br />* Suggested Skill: Mysticism or Science<br />* Main Damage Type: Magic Damage<br />* Main Mechanics: ???<br />* Archetypes: The Grimoire and The Radiant');
dataFramework[dataFramework.length] = new Framework(dataFramework.length, 'Bestial Supernatural', '<img src="img/Framework_BestialSupernatural.png" alt="Bestial Supernatural" />', '<b>Bestial Supernatural</b><br /><br />You have the fury and powers of a wild beast, ripping and tearing at your enemies in a vicious onslaught of animal rage. You have a diverse set of abilities, including strong crowd control and Melee damage. You can easily improve your regeneration abilities.<br /><br />* Recommended Characteristics: Strength and Recovery<br />* Starting Innate Talent: Feral<br />* Suggested Skill: Arms<br />* Main Damage Type: Slashing Damage<br />* Main Mechanics: ???<br />* Archetypes: The Savage');
dataFramework[dataFramework.length] = new Framework(dataFramework.length, 'Infernal Supernatural', '<img src="img/Framework_InfernalSupernatural.png" alt="Infernal Supernatural" />', '<b>Infernal Supernatural</b><br /><br />Your fiendish powers are forged from nightmare, punishing your foes with a wrathful vengeance. You have an incredibly diverse set of abilities, including excellent crowd control and strong Ranged damage. You can easily improve your regeneration.<br /><br />* Recommended Characteristics: Constitution and Recovery<br />* Starting Innate Talent: Inhuman<br />* Suggested Skill: Arms<br />* Main Damage Type: Toxic Damage<br />* Main Mechanics: Poison/Knocks<br />* Archetypes: The Scourge and The Cursed');
//==============================================================================
// Powers
//==============================================================================
// power class
/**@constructor*/
Power = function(id, name, desc, powerSet, framework, power, tier, tip) {
this.id = id;
this.name = name;
this.desc = desc;
this.powerSet = powerSet;
this.framework = framework;
this.power = power;
this.tier = tier;
this.tip = tip;
this.advantageList = [];
this.code = function() {
return numToUrlCode(this.framework) + numToUrlCode(this.power);
}
this.getAdvantageList = function(mask) {
var advantageList = [];
if (mask > 0) {
for (var i = 1; i < this.advantageList.length; i++) {
var test = Math.pow(2, i);
if ((mask & test) == test) {
advantageList.push(this.advantageList[i]);
}
}
}
return advantageList;
}
this.getPoints = function(mask) {
var points = 0;
if (mask > 0) {
for (var i = 1; i < this.advantageList.length; i++) {
var test = Math.pow(2, i);
if ((mask & test) == test) {
points += this.advantageList[i].points;
}
}
}
return points;
}
this.hasAdvantage = function(mask, id) {
var test = Math.pow(2, id);
return (mask > 0 && (mask & test) == test);
}
this.addAdvantage = function(mask, id) {
return mask | Math.pow(2, id);
}
this.delAdvantage = function(mask, id) {
return mask & ~Math.pow(2, id);
}
this.equals = function(obj) {
return (typeof(this) == typeof(obj) && this.id == obj.id);
}
this.toString = function() {
var advantageList = '[';
for (var i = 1; i < this.advantageList.length; i++) {
if (i > 1) advantageList = advantageList + ',';
advantageList = advantageList + '<br /> ' + this.advantageList[i].toString();
}
advantageList = advantageList + '<br />]';
return '[id=' + this.id + ', name=\'' + this.name + '\', desc=\'' + this.desc + '\', powerSet=' + this.powerSet + ', framework=' + this.framework + ', power=' + this.power + ', tier=' + this.tier + ', tip=' + this.tip + ', advantageList=' + this.advantageList + ', code=' + this.code() + ']';
}
}
// power data
var dataPower = [];
dataPower[0] = new Power(dataPower.length, null, null, null, 0, 0, null, null);
// energy unlock power data
var dataEnergyUnlockPower = [];
// require group data
var dataRequireGroup = [];
// require group power data
var dataRequireGroupPower = [];
// replace power
var dataReplacePower = [];
var DATAREPLACEPOWER_CONCENTRATION = -1;
//------------------------------------------------------------------------------
// Power Global Aliases
//------------------------------------------------------------------------------
dataPowerAlias['R2'] = new PowerAlias('R2', 'Rank 2', 'Rank 2', 'Increases damage done or strength of power.');
dataPowerAlias['R3'] = new PowerAlias('R3', 'Rank 3', 'Rank 3', 'Increases damage done or strength of power.');
dataPowerAlias['R2EB'] = new PowerAlias('R2EB', 'Rank 2', 'Rank 2', 'Increases damage done or strength of power and energy generated.');
dataPowerAlias['R3EB'] = new PowerAlias('R3EB', 'Rank 3', 'Rank 3', 'Increases damage done or strength of power and energy generated.');
dataPowerAlias['AM'] = new PowerAlias('AM', 'Accelerated Metabolism', 'Accelerated Metabolism', 'Every time you use this ability you have a chance to return a small amount of energy.');
dataPowerAlias['CC'] = new PowerAlias('CC', 'Crippling Challenge', 'Crippling Challenge', '+ Increases the threat caused by this attack, making enemies more likely to attack you.<br />+ Places a 20% Damage Debuff on the target that persists for 15 seconds. If the affected enemy attacks the taunter, it will quickly reduce this Debuff’s strength. Conversely, damage the taunter inflicts on the taunted enemy restores the Debuff’s strength.<br />+ This advantage taunts an A.I. controlled enemy, forcing them to attack you for 4 seconds. All taunts share a 10 second cooldown, and an enemy that has been taunted by any source cannot be taunted again for 10 seconds.<br />+ Crippling Challenge breaks through blocking and disables it for 10 seconds.');
dataPowerAlias['CS'] = new PowerAlias('CS', 'Challenging Strikes', 'Challenging Strikes', '+ This advantage causes this attack to generate additional threat against all affected targets, making them more likely to attack you.<br />+ If this advantage is applied to a power that has a recharge time, it will additionally add a moderate amount of threat over time to all affected targets, for the duration of the recharge.<br />+ This advantage inflicts a 5% Damage Debuff against all affected targets. If an affected enemy attacks you, it will quickly reduce this Debuff’s strength. Conversely, any damage you inflict restores the Debuff’s strength.');
dataPowerAlias['NG'] = new PowerAlias('NG', 'Nailed to the Ground', 'Nailed to the Ground', 'Cancels and locks out Travel Powers for a short period of time.');
//------------------------------------------------------------------------------
// Power Set: Energy Projector
//------------------------------------------------------------------------------
dataRequireGroup['energy projector'] = [];
dataPowerAlias['Energy Storm'] = new PowerAlias('Energy Storm', 'Energy Storm', '<img src="img/EnergyProjector_EnergyStorm.png" /> Energy Storm', 'Energy Projector, Single Target Damage and Cone Debuff<br /><br />Requires level 35<br />You may only own 1 Ultimate Power<br /><br />Absorb power from your enemies and send it back at them with cataclysmic fury.<br /><br />Consume Energy<br />MAINTAIN<br />+ All enemies in a forward arc are slowed.<br />+ For each enemy slowed, you will gain a stack of the Infused Energy Buff, which increases all damage you deal for a short duration.<br />+ While you are affect by Infused Energy, this power becomes Unleashed Tempest.<br />+ If an affected enemy is under the effect of Clinging Flames, Negative Ions, or Chill, that effect will be consumed, and grant you an appropriate type of Energy Charge.<br />+ If an affected enemy is protected by a force field type effect, such as Containment Field, that effect will be significantly degraded, and you will be granted Energy Charge - Force.<br />- This power has a 30 second cooldown that begins when the Infused Energy buffs expire.<br /><br />Unleashed Tempest<br />CLICK<br />+ Extremely powerful single target Particle attack.<br />+ If enhanced by Energy Charge - Fire, this attack will detonate in an area of effect on contact with the target.<br />+ If enhanced by Energy Charge - Ice, this attack gains a significant bonus to critical severity.<br />+ If enhanced by Energy Charge - Electricity, this attack will chain to a second target.<br />+ If enhanced by Energy Charge - Force, this attack will significantly reduce the target\\\'s damage for a short duration.<br />+ In addition, each type of Energy Charge increases the damage done by your Unleashed Tempest, and reduces its energy cost.<br />- Activating Unleashed Tempest consumes all instances of the Infused Energy buff and triggers the cooldown on Consume Energy.');
dataPowerAlias['Weather the Storm'] = new PowerAlias('Weather the Storm', 'Weather the Storm', 'Weather the Storm', 'Secondary Energy Effects, such as Clinging Flames, have a chance to not be consumed when you use Energy Storm.');
dataPowerAlias['Gravity Driver'] = new PowerAlias('Gravity Driver', 'Gravity Driver', '<img src="img/EnergyProjector_GravityDriver.png" /> Gravity Driver', 'Energy Projector, 80 foot Ranged 40 foot Sphere AoE Damage and Damage Resistance Debuff<br /><br />Requires level 35<br />You may only own 1 Ultimate Power<br /><br />Gravity Driver causes a mass of force to form, and brings it crashing down on your foes with nuclear levels of destructive power.<br /><br /><b>This power can be unlocked from a Ravenswood Lockbox drop.</b><br /><br />CHARGE<br />+ Deals Crushing damage to targets caught in the blast radius as well as knocking nearby foes prone.<br />+ Foes further than 20\\\' from the impact point take half damage and are not knocked prone.');
dataPowerAlias['Fractal Aegis'] = new PowerAlias('Fractal Aegis', 'Fractal Aegis', '<img src="img/EnergyProjector_FractalAegis.png" /> Fractal Aegis', 'Energy Projector, 20 foot Sphere PBAoE Damage and Knock Up and Defense Buff<br /><br />Requires level 35<br />You may only own 1 Ultimate Power<br /><br />Forces ice spikes to erupt beneath your opponents, then coalesces the icy bits around you for additional protection.<br /><br /><b>This power can be unlocked from a Frozen Lockbox drop.</b><br /><br />CHARGE<br />+ Damage and Knockup surrounding targets.<br />+ Gain a Defense Buff based on number of targets hit.');
dataPowerAlias['Chilling Reminder'] = new PowerAlias('Chilling Reminder', 'Chilling Reminder', 'Chilling Reminder', '+ This advantage causes this attack to generate additional Threat against all affected targets, making them more likely to attack you.<br />+ This advantage inflicts a 5% damage Debuff against all affected targets. If an affected enemy attacks you, it will quickly reduce this Debuff\\\'s strength. Conversely, any damage you inflict restores the Debuff\\\'s strength.');
//------------------------------------------------------------------------------
// Power Framework: Electricity
//------------------------------------------------------------------------------
dataRequireGroup['energy projector'].push(1);
var pow = 0;
dataPower[dataPower.length] = new Power(dataPower.length, 'Electric Bolt', '<img src="img/Electricity_ElectricBolt.png" /> Electric Bolt', 1, 1, pow++, -1, 'Electricity, Energy Builder, 50 foot Ranged Single Target Damage<br /><br />Electric Bolt fires shocking arcs of electricity into your enemy.');
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2EB'].name, dataPowerAlias['R2EB'].desc, 2, null, dataPowerAlias['R2EB'].tip));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R3EB'].name, dataPowerAlias['R3EB'].desc, 2, 1, dataPowerAlias['R3EB'].tip));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(3, 'Lightning Overload', 'Lightning Overload', 1, null, 'Grants Electric Bolt a chance to jump to another target on every attack.'));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(4, 'Ionic Infusion', 'Ionic Infusion', 2, null, 'Doubles the chance to apply Negative Ions to your target on every attack.'));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(5, dataPowerAlias['AM'].name, dataPowerAlias['AM'].desc, 1, null, dataPowerAlias['AM'].tip));
dataPower[dataPower.length] = new Power(dataPower.length, 'Chain Lightning', '<img src="img/Electricity_ChainLightning.png" /> Chain Lightning', 1, 1, pow++, 0, 'Electricity, 100 foot Ranged Single Target Damage (Blast)<br /><br />Chain Lightning allows you to emit a powerful, directed blast of electrical energy at a target, which can arc to other nearby targets as well.');
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2'].name, dataPowerAlias['R2'].desc, 2, null, dataPowerAlias['R2'].tip));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3'].name, dataPowerAlias['R3'].desc, 2, 1, dataPowerAlias['R3'].tip));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(3, 'Lightning Helix', 'Lightning Helix', 1, null, 'Adds an additional, random arc to your Chain Lightning. This arc may go to the same target that another arc goes to, hitting that target twice, or may go to another nearby target. The additional arc also benefits from additional chainging via consuming Negative Ions.'));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(4, dataPowerAlias['AM'].name, dataPowerAlias['AM'].desc, 1, null, dataPowerAlias['AM'].tip));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(5, dataPowerAlias['CS'].name, dataPowerAlias['CS'].desc, 1, null, dataPowerAlias['CS'].tip));
dataPower[dataPower.length] = new Power(dataPower.length, 'Lightning Arc', '<img src="img/Electricity_LightningArc.png" /> Lightning Arc', 1, 1, pow++, 1, 'Electricity, 100 foot Ranged Single Target Damage<br /><br />Requires 1 power from Electricity or 2 non-Energy Building powers from any framework.<br /><br />Lightning Arc is a sustained barrage of electricity which may arc to additional foes near your target.');
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2'].name, dataPowerAlias['R2'].desc, 2, null, dataPowerAlias['R2'].tip));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3'].name, dataPowerAlias['R3'].desc, 2, 1, dataPowerAlias['R3'].tip));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(3, 'Never Strikes Twice', 'Never Strikes Twice', 2, null, 'Causes Lightning Arc to deal +30% damage against Held targets.'));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(4, dataPowerAlias['AM'].name, dataPowerAlias['AM'].desc, 1, null, dataPowerAlias['AM'].tip));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(5, dataPowerAlias['CC'].name, dataPowerAlias['CC'].desc, 3, null, dataPowerAlias['CC'].tip));
dataPower[dataPower.length] = new Power(dataPower.length, 'Sparkstorm', '<img src="img/Electricity_Sparkstorm.png" /> Sparkstorm', 1, 1, pow++, 1, 'Electricity, 15 foot Sphere PBAoE Ranged Damage and Knock Back<br /><br />Requires 1 power from Electricity or 2 non-Energy Building powers from any framework.<br /><br />Sparkstorm is a shower of electrical energy which damages foes close to you. Show them that they do not want to get too close to your electric personality.');
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2'].name, dataPowerAlias['R2'].desc, 2, null, dataPowerAlias['R2'].tip));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3'].name, dataPowerAlias['R3'].desc, 2, 1, dataPowerAlias['R3'].tip));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(3, 'Electric Personality', 'Electric Personality', 2, null, 'Changes Sparkstorm to a toggle. The toggle has a max duration equal to the maintain limit of Sparkstorm and retains the same Energy Costs.'));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(4, dataPowerAlias['AM'].name, dataPowerAlias['AM'].desc, 1, null, dataPowerAlias['AM'].tip));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(5, dataPowerAlias['CS'].name, dataPowerAlias['CS'].desc, 1, null, dataPowerAlias['CS'].tip));
dataPower[dataPower.length] = new Power(dataPower.length, 'Electric Sheath', '<img src="img/Electricity_ElectricSheath.png" /> Electric Sheath', 1, 1, pow++, 1, 'Electricity, Active Offense and Energy Form<br /><br />Requires 1 power from Electricity or 2 non-Energy Building powers from any framework.<br /><br />Electric Sheath coats you in a tight field of electricity, improving your combat abilities for a short period of time.');
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2'].name, dataPowerAlias['R2'].desc, 2, null, dataPowerAlias['R2'].tip));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3'].name, dataPowerAlias['R3'].desc, 2, 1, dataPowerAlias['R3'].tip));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(3, 'Matter – Energy Union', 'Matter – Energy Union', 2, null, 'This advantage super charges your Energy Sheath, briefly erasing the distinction between your tangible body and the energy it contains. For up to the duration of your Sheath power, incoming damage will be subtracted from your Energy instead of your Health. The benefit provided by this advantage can only reroute a limited amount of damage, after which damage will be dealt to you as normal.'));
dataPower[dataPower.length] = new Power(dataPower.length, 'Electric Form', '<img src="img/Electricity_ElectricForm.png" /> Electric Form', 1, 1, pow++, 1, 'Electricity, Slotted Offensive Passive and Energy Form<br /><br />Requires 1 power from Electricity or 2 non-Energy Building powers from any framework.<br /><br />Your mastery of electricity grants you the knowledge of how to most effectively use your Energy powers and how to reduce the effect of your attacker\\\'s energy attacks.');
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2'].name, dataPowerAlias['R2'].desc, 2, null, dataPowerAlias['R2'].tip));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3'].name, dataPowerAlias['R3'].desc, 2, 1, dataPowerAlias['R3'].tip));
dataPower[dataPower.length] = new Power(dataPower.length, 'Electric Shield', '<img src="img/Electricity_ElectricShield.png" /> Electric Shield', 1, 1, pow++, 1, 'Electricity, Block and 10 foot Sphere PBAoE Damage<br /><br />Requires 1 power from Fire or 2 non-Energy Building powers from any framework.<br /><br />Electrical Shield creates a protective barrier of crackling electricity that significantly reduces incoming damage and causes enemies around you to receive a nasty shock.');
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2'].name, dataPowerAlias['R2'].desc, 2, null, dataPowerAlias['R2'].tip));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3'].name, dataPowerAlias['R3'].desc, 2, 1, dataPowerAlias['R3'].tip));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(3, 'Electric Vengeance', 'Electric Vengeance', 3, null, 'If your Energy is high enough, your Electric Shield will automatically retaliate against any aggressors that are within 50 feet. Each retaliatory strike consumes an amount of Energy.'));
dataPower[dataPower.length] = new Power(dataPower.length, 'Ionic Reverberation', '<img src="img/Electricity_IonicReverberation.png" /> Ionic Reverberation', 1, 1, pow++, 1, 'Electricity, Innate Passive Secondary Energy Unlock<br /><br />Requires 1 power from Electricity or 2 non-Energy Building powers from any framework.<br /><br />You may only have 1 Energy Unlock power.<br /><br />Ionic Reverberation causes a small amount of Energy to return to you each time one of your electrical attacks arcs to another enemy.');
dataEnergyUnlockPower[dataPower.length-1] = true;
dataPower[dataPower.length] = new Power(dataPower.length, 'Thunderstrike', '<img src="img/Electricity_Thunderstrike.png" /> Thunderstrike', 1, 1, pow++, 2, 'Electricity, 100 foot Ranged 10 foot Sphere AoE Damage<br /><br />Requires 3 powers from Electricity or 4 non-Energy Building powers from any framework.<br /><br />Thunderstrike calls upon the forces of nature to deliver a powerful bolt of lightning onto your enemies.');
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2'].name, dataPowerAlias['R2'].desc, 2, null, dataPowerAlias['R2'].tip));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3'].name, dataPowerAlias['R3'].desc, 2, 1, dataPowerAlias['R3'].tip));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(3, 'Ionic Compression', 'Ionic Compression', 2, null, 'Causes Thunderstrike to Root the targets hit for a short time in addition to its normal damage. Rooted targets are unable to move.'));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(4, dataPowerAlias['CS'].name, dataPowerAlias['CS'].desc, 1, null, dataPowerAlias['CS'].tip));
dataPower[dataPower.length] = new Power(dataPower.length, 'Electrocute', '<img src="img/Electricity_Electrocute.png" /> Electrocute', 1, 1, pow++, 2, 'Electricity, 50 foot Single Target Hold<br /><br />Requires 3 powers from Electricity or 4 non-Energy Building powers from any framework.<br /><br />Electrocute temporarily immobilizes a target with a massive jolt to their nervous system.');
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2'].name, dataPowerAlias['R2'].desc, 2, null, dataPowerAlias['R2'].tip));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3'].name, dataPowerAlias['R3'].desc, 2, 1, dataPowerAlias['R3'].tip));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(3, 'Superconductor', 'Superconductor', 2, null, 'Places a stacking Debuff on the target of Electrocute which increases all Electrical damage dealt to the target by a scaling value for 20 seconds.'));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(4, dataPowerAlias['AM'].name, dataPowerAlias['AM'].desc, 1, null, dataPowerAlias['AM'].tip));
dataPower[dataPower.length] = new Power(dataPower.length, 'Neuroelectric Pulse', '<img src="img/Electricity_NeuroelectricPulse.png" /> Neuroelectric Pulse', 1, 1, pow++, 2, 'Electricity, 15 foot Sphere PBAoE Damage and Energy Gain and Energy Siphon and Root<br /><br />Requires 3 powers from Electricity or 4 non-Energy Building powers from any framework.<br /><br />When activated, an electrical pulse will damage and Root most adjacent foes. Leaves behind a Static Field that grants nearby players Energy and siphons power from foes. The amount it grants scales off of your Recovery. Many enemies are not affected by Power Siphon.<br /><br /><b>This power unlock can be purchased from a Quartermaster at UNTIL HQ.</b>');
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2'].name, dataPowerAlias['R2'].desc, 2, null, dataPowerAlias['R2'].tip));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3'].name, dataPowerAlias['R3'].desc, 2, 1, dataPowerAlias['R3'].tip));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(3, dataPowerAlias['AM'].name, dataPowerAlias['AM'].desc, 1, null, dataPowerAlias['AM'].tip));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(4, dataPowerAlias['CS'].name, dataPowerAlias['CS'].desc, 1, null, dataPowerAlias['CS'].tip));
dataPower[dataPower.length] = new Power(dataPower.length, 'Ball Lightning', '<img src="img/Electricity_BallLightning.png" /> Ball Lightning', 1, 1, pow++, 3, 'Electricity, 100 foot Ranged AoE Damage<br /><br />Requires 5 powers from Electricity or 6 non-Energy Building powers from any framework.<br /><br />Ball Lightning summons a sphere of electrical energy to fight your foe. The sphere will chase them down, and deal damage to other nearby enemies as well.');
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2'].name, dataPowerAlias['R2'].desc, 2, null, dataPowerAlias['R2'].tip));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3'].name, dataPowerAlias['R3'].desc, 2, 1, dataPowerAlias['R3'].tip));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(3, 'Triplicity', 'Triplicity', 2, null, 'Ball Lightning now summons three Ball Lightnings instead of one, but the periodic damage each one deals is reduced by 60%. All three deal AoE damage, but only the primary one will explode.'));
dataPower[dataPower.length] = new Power(dataPower.length, 'Gigabolt', '<img src="img/Electricity_Gigabolt.png" /> Gigabolt', 1, 1, pow++, 3, 'Electricity, 100 foot Ranged 5 foot Cylinder AoE Damage<br /><br />Requires 5 powers from Electricity or 6 non-Energy Building powers from any framework.<br /><br />Gigabolt allows you to summon 1.21 gigawatts to blast your foes.');
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2'].name, dataPowerAlias['R2'].desc, 2, null, dataPowerAlias['R2'].tip));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3'].name, dataPowerAlias['R3'].desc, 2, 1, dataPowerAlias['R3'].tip));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(3, 'Death Arc', 'Death Arc', 2, null, 'Any enemies killed by Gigabolt will unleash area effect damage to nearby targets.'));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(4, dataPowerAlias['AM'].name, dataPowerAlias['AM'].desc, 1, null, dataPowerAlias['AM'].tip));
dataPower[dataPower.length] = new Power(dataPower.length, 'Lightning Storm', '<img src="img/Electricity_LightningStorm.png" /> Lightning Storm', 1, 1, pow++, 3, 'Electricity, 50 foot Ranged 15 foot Sphere AoE Damage<br /><br />Requires 5 powers from Electricity or 6 non-Energy Building powers from any framework.<br /><br />You charge the air around your foes, causing lightning bolts to repeatedly strike them.');
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2'].name, dataPowerAlias['R2'].desc, 2, null, dataPowerAlias['R2'].tip));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3'].name, dataPowerAlias['R3'].desc, 2, 1, dataPowerAlias['R3'].tip));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(3, 'Stolen Thunder', 'Stolen Thunder', 2, null, 'Your Lightning Storm hits with such force that your targets are Knocked Down on the initial impact. Additional strikes have a chance to Knock Down the targets again.'));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(4, dataPowerAlias['AM'].name, dataPowerAlias['AM'].desc, 1, null, dataPowerAlias['AM'].tip));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(5, dataPowerAlias['NG'].name, dataPowerAlias['NG'].desc, 2, null, dataPowerAlias['NG'].tip));
dataPower[dataPower.length] = new Power(dataPower.length, dataPowerAlias['Energy Storm'].name, dataPowerAlias['Energy Storm'].desc, 1, 1, pow++, 4, dataPowerAlias['Energy Storm'].tip);
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2'].name, dataPowerAlias['R2'].desc, 2, null, dataPowerAlias['R2'].tip));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3'].name, dataPowerAlias['R3'].desc, 2, 1, dataPowerAlias['R3'].tip));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(3, dataPowerAlias['Weather the Storm'].name, dataPowerAlias['Weather the Storm'].desc, 2, null, dataPowerAlias['Weather the Storm'].tip));
dataPower[dataPower.length] = new Power(dataPower.length, dataPowerAlias['Gravity Driver'].name, dataPowerAlias['Gravity Driver'].desc, 1, 1, pow++, 4, dataPowerAlias['Gravity Driver'].tip);
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2'].name, dataPowerAlias['R2'].desc, 2, null, dataPowerAlias['R2'].tip));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3'].name, dataPowerAlias['R3'].desc, 2, 1, dataPowerAlias['R3'].tip));
dataPower[dataPower.length] = new Power(dataPower.length, dataPowerAlias['Fractal Aegis'].name, dataPowerAlias['Fractal Aegis'].desc, 1, 1, pow++, 4, dataPowerAlias['Fractal Aegis'].tip);
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2'].name, dataPowerAlias['R2'].desc, 2, null, dataPowerAlias['R2'].tip));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3'].name, dataPowerAlias['R3'].desc, 2, 1, dataPowerAlias['R3'].tip));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(3, dataPowerAlias['Chilling Reminder'].name, dataPowerAlias['Chilling Reminder'].desc, 2, null, dataPowerAlias['Chilling Reminder'].tip));
//------------------------------------------------------------------------------
// Power Framework: Fire
//------------------------------------------------------------------------------
dataRequireGroup['energy projector'].push(2);
var pow = 0;
dataPower[dataPower.length] = new Power(dataPower.length, 'Throw Fire', '<img src="img/Fire_ThrowFire.png" /> Throw Fire', 1, 2, pow++, -1, 'Fire, Energy Builder, 50 foot Ranged Single Target Damage<br /><br />Throw fire throws small balls of flame at your target.');
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2EB'].name, dataPowerAlias['R2EB'].desc, 2, null, dataPowerAlias['R2EB'].tip));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3EB'].name, dataPowerAlias['R3EB'].desc, 2, 1, dataPowerAlias['R3EB'].tip));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(3, 'Burning Desire', 'Burning Desire', 1, null, 'Gives your Throw Fire power a chance to chain into an additional target. This second shot does not generate Energy, but has a chance to apply Clinging Flames.'));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(4, 'Fuel My Fire', 'Fuel My Fire', 1, null, 'Grants Throw Fire a chance to apply Clinging Flames to your target on every attack and increases the chance to apply Clinging Flames with the initial double handed attack.'));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(5, dataPowerAlias['AM'].name, dataPowerAlias['AM'].desc, 1, null, dataPowerAlias['AM'].tip));
dataPower[dataPower.length] = new Power(dataPower.length, 'Fire Strike', '<img src="img/Fire_FireStrike.png" /> Fire Strike', 1, 2, pow++, 0, 'Fire, 100 foot Ranged Single Target Damage and Buff (Blast)<br /><br /><br />Fire Strike throws a small but volatile ball of fire at your target.');
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2'].name, dataPowerAlias['R2'].desc, 2, null, dataPowerAlias['R2'].tip));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3'].name, dataPowerAlias['R3'].desc, 2, 1, dataPowerAlias['R3'].tip));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(3, 'Wild Fire', 'Wild Fire', 2, null, 'If your target is affected by the Clinging Flames condition, your Fire Strike attack will refresh the Clinging Flames effect, and will cause a small mount of fire damage to all targets in a small area of effect.'));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(4, 'Kindling', 'Kindling', 2, null, 'Your Fiery Escalation Buff now also increases the damage of your next Fire Power by 10% per stack. However, Fiery Escalation is now consumed by powers that trigger this effect.'));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(5, dataPowerAlias['AM'].name, dataPowerAlias['AM'].desc, 1, null, dataPowerAlias['AM'].tip));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(6, dataPowerAlias['CC'].name, dataPowerAlias['CC'].desc, 3, null, dataPowerAlias['CC'].tip));
dataPower[dataPower.length] = new Power(dataPower.length, 'Heat Wave', '<img src="img/Fire_HeatWave.png" /> Heat Wave', 1, 2, pow++, 1, 'Fire, 50 foot Ranged Single Target Damage and Burning and Incapacitate<br /><br />Requires 1 power from Fire or 2 non-Energy Building powers from any framework.<br /><br />Heat Wave directs a blast of searing air on your target, causing damage and incapacitating the target after a short time.');
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2'].name, dataPowerAlias['R2'].desc, 2, null, dataPowerAlias['R2'].tip));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3'].name, dataPowerAlias['R3'].desc, 2, 1, dataPowerAlias['R3'].tip));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(3, 'Engulfing Flames', 'Engulfing Flames', 2, null, 'Reduces the damage your Heat Wave deals, but applies a stacking Debuff on your target that reduces their resistance to your fire damage.'));
dataPower[dataPower.length] = new Power(dataPower.length, 'Fire Breath', '<img src="img/Fire_FireBreath.png" /> Fire Breath', 1, 2, pow++, 1, 'Fire, 50 foot Ranged 45 degree Cone AoE Damage<br /><br />Requires 1 power from Fire or 2 non-Energy Building powers from any framework.<br /><br />Fire Breath allows your character to exhale a cone of flame at your enemies, turning the area in front of you into a blazing inferno.');
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2'].name, dataPowerAlias['R2'].desc, 2, null, dataPowerAlias['R2'].tip));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3'].name, dataPowerAlias['R3'].desc, 2, 1, dataPowerAlias['R3'].tip));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(3, 'Spitfire', 'Spitfire', 2, null, 'Increases the chance to apply Clinging Flames from 10% to 20%. Also guarantees the application of Clinging Flames to all targets hit by your Fire Breath when it is fully maintained.'));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(4, dataPowerAlias['AM'].name, dataPowerAlias['AM'].desc, 1, null, dataPowerAlias['AM'].tip));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(5, dataPowerAlias['CS'].name, dataPowerAlias['CS'].desc, 1, null, dataPowerAlias['CS'].tip));
dataPower[dataPower.length] = new Power(dataPower.length, 'Fireball', '<img src="img/Fire_Fireball.png" /> Fireball', 1, 2, pow++, 1, 'Fire, 50 foot Ranged 10 foot Sphere AoE Damage<br /><br />Requires 1 power from Fire or 2 non-Energy Building powers from any framework.<br /><br />Fireball launches a sphere of flame at your target dealing high damage to the target and additional damage to any enemies near the target.');
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2'].name, dataPowerAlias['R2'].desc, 2, null, dataPowerAlias['R2'].tip));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3'].name, dataPowerAlias['R3'].desc, 2, 1, dataPowerAlias['R3'].tip));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(3, 'Unstable Accelerant', 'Unstable Accelerant', 2, null, 'Your Fireball now Debuffs the affects targets, causing them to take increased damage from Burning effects. Burning effects include:<br />- Clinging Flames<br />- Conflagration<br />- Fire Snake<br />- Heatwave<br />- Flashfire<br />- Pyre Burn (the patch left by Pyre)<br />- Wildfire (the AoE proc for the Fire Strike advantage)'));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(4, dataPowerAlias['AM'].name, dataPowerAlias['AM'].desc, 1, null, dataPowerAlias['AM'].tip));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(5, dataPowerAlias['CS'].name, dataPowerAlias['CS'].desc, 1, null, dataPowerAlias['CS'].tip));
dataPower[dataPower.length] = new Power(dataPower.length, 'Immolation', '<img src="img/Fire_Immolation.png" /> Immolation', 1, 2, pow++, 1, 'Fire, Active Offense and Energy Form<br /><br />Requires 1 power from Fire or 2 non-Energy Building powers from any framework.<br /><br />Immolation focuses your fire mastery into a concentrated form which increases your combat effectiveness with all attacks.');
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2'].name, dataPowerAlias['R2'].desc, 2, null, dataPowerAlias['R2'].tip));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(2, 'Rank 3', 'Rank 3', 2, 1,'[ID]'));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(3, 'Blazing Body', 'Blazing Body', 1, null, 'Adds periodic PBAoE damage while active.'));
dataPower[dataPower.length] = new Power(dataPower.length, 'Fiery Form', '<img src="img/Fire_FieryForm.png" /> Fiery Form', 1, 2, pow++, 1, 'Fire, Slotted Offensive Passive and Energy Form and 10 foot Sphere PBAoE Damage<br /><br />Requires 1 power from Fire or 2 non-Energy Building powers from any framework.<br /><br />Your mastery of fire grants you the knowledge of how to most effectively use your Elemental powers and how to reduce the effect of your attacker\\\'s elemental attacks.');
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2'].name, dataPowerAlias['R2'].desc, 2, null, dataPowerAlias['R2'].tip));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3'].name, dataPowerAlias['R3'].desc, 2, 1, dataPowerAlias['R3'].tip));
dataPower[dataPower.length] = new Power(dataPower.length, 'Fire Shield', '<img src="img/Fire_FireShield.png" /> Fire Shield', 1, 2, pow++, 1, 'Fire, Block<br /><br />Requires 1 power from Fire or 2 non-Energy Building powers from any framework.<br /><br />Fire Shield forms a shield of fire to protect you from your attackers.');
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(0, null, null, null, null, null));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(1, dataPowerAlias['R2'].name, dataPowerAlias['R2'].desc, 2, null, dataPowerAlias['R2'].tip));
dataPower[dataPower.length-1].advantageList.push(new PowerAdvantage(2, dataPowerAlias['R3'].name, dataPowerAlias['R3'].desc, 2, 1, dataPowerAlias['R3'].tip));
dataPower[dataPower.length] = new Power(dataPower.length, 'Thermal Reverberation', '<img src="img/Fire_ThermalReverberation.png" /> Thermal Reverberation', 1, 2, pow++, 1, 'Fire, Self Target Innate Passive Energy Unlock<br /><br />Requires 1 power from Fire or 2 non-Energy Building powers from any framework.<br />You may only have 1 Energy Unlock power.<br /><br />Thermal Reverberation allows you to drain heat energy from the environment around you.');