-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathpowerhouse-version.js
779 lines (760 loc) · 45.6 KB
/
powerhouse-version.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
/*==============================================================================
* powerhouse-version.js
*
* PowerHouse Version Javascript
*
* Author: Kyle W T Sherman
*
* Time-stamp: <2016-01-30 20:06:47 (kyle)>
*============================================================================*/
//==============================================================================
// Version Update
//==============================================================================
// version update class
/**@constructor*/
VersionUpdate = function(id, version, funct) {
this.id = id;
this.version = version;
this.funct = funct;
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 + ', version=\'' + this.version + '\', funct=\'' + this.funct + '\', code=' + this.code() + ']';
}
}
// version update data
// function must handle the following values for 'thing': data, pos, i, inc, code1, code2, code3, code4, archetype, superStat, innateTalent, talent, travelPower, framework, power, mask, specializationTree, specialization
// valid values: type, pos, i, inc, code1, code2, code3, code4, archetype, superStat, innateTalent, talent, travelPower, framework, power, mask, specializationTree, specialization
// valid types: init, start, archetype, superStat, innateTalent, talent, travelPower, power, specialization
//
// mask modifications:
// advantageId: 0 1 2 3 4 5 6 7 8 9 10
// decimal value: 1 2 4 8 16 32 64 128 256 512 1024
var dataVersionUpdate = [];
dataVersionUpdate[dataVersionUpdate.length] = new VersionUpdate(dataVersionUpdate.length, 0, null);
// version 1 => 2
dataVersionUpdate[dataVersionUpdate.length] = new VersionUpdate(
dataVersionUpdate.length, 1,
function(thing, value) {
var codeNum1 = (value['code1'] == undefined) ? 0 : urlCodeToNum(value['code1']); // framework
var codeNum2 = (value['code2'] == undefined) ? 0 : urlCodeToNum(value['code2']); // power
// var codeNum3 = (value['code3'] == undefined) ? 0 : urlCodeToNum(value['code3']);
// var codeNum4 = (value['code4'] == undefined) ? 0 : urlCodeToNum(value['code4']);
switch (thing) {
case 'data':
var data = value['data'];
if (value['type'] == 'init') {
// add archetype to start of data
data.splice(0, 0, numToUrlCode(value['archetype']));
// advantages now use two characters
// powers start at position 16, are going from 3 to 4 characters, and there are 14 of them
for (var i = 17 + 13 * 3; i >= 17; i -= 3) {
data.splice(i, 0, '0');
}
// add specializations to end of data
for (var i = 0; i < 3 * 4; i++) {
data.splice(data.length, 0, '0');
}
}
return data;
case 'pos':
// add archetype to start of data
if (value['type'] == 'start' && value['pos'] == 0) return 1;
return value['pos'];
case 'i':
// add archetype to start of data
if (value['type'] == 'start' && value['i'] == 0) return 1;
return value['i'];
case 'inc': return value['inc'];
case 'code1': return value['code1'];
case 'code2': return value['code2'];
case 'code3': return value['code3'];
case 'code4': return value['code4'];
case 'archetype': return value['archetype'];
case 'superStat': return value['superStat'];
case 'innateTalent': return value['innateTalent'];
case 'talent': return value['talent'];
case 'travelPower': return value['travelPower'];
case 'framework': return value['framework'];
case 'power': return value['power'];
case 'mask':
// add Munitions: Bullet Beatdown: Break the Trigger advantage
if (value['type'] == 'power' && codeNum1 == 8 && codeNum2 == 3) return value['mask'] + (value['mask']&48);
return value['mask'];
case 'specializationTree': return value['specializationTree'];
case 'specialization': return value['specialization'];
}
});
// version 2 => 3
dataVersionUpdate[dataVersionUpdate.length] = new VersionUpdate(
dataVersionUpdate.length, 2,
function(thing, value) {
var codeNum1 = (value['code1'] == undefined) ? 0 : urlCodeToNum(value['code1']); // framework
var codeNum2 = (value['code2'] == undefined) ? 0 : urlCodeToNum(value['code2']); // power
// var codeNum3 = (value['code3'] == undefined) ? 0 : urlCodeToNum(value['code3']);
// var codeNum4 = (value['code4'] == undefined) ? 0 : urlCodeToNum(value['code4']);
switch (thing) {
case 'data': return value['data'];
case 'pos': return value['pos'];
case 'i': return value['i'];
case 'inc': return value['inc'];
case 'code1': return value['code1'];
case 'code2': return value['code2'];
case 'code3': return value['code3'];
case 'code4': return value['code4'];
case 'archetype': return value['archetype'];
case 'superStat': return value['superStat'];
case 'innateTalent': return value['innateTalent'];
case 'talent': return value['talent'];
case 'travelPower':
// move Mach Speed and Athletics travel powers to their new positions (following Acrobatics)
if (codeNum1 >= 5 && codeNum1 <= 31) return value['travelPower'] + 2;
if (codeNum1 >= 32 && codeNum1 <= 33) return value['travelPower']-27;
return value['travelPower'];
case 'framework': return value['framework'];
case 'power': return value['power'];
case 'mask':
// add Fire: Fire Strike: Kindling advantage
if (value['type'] == 'power' && codeNum1 == 2 && codeNum2 == 1) return value['mask'] + (value['mask']&48);
// add Martial Arts: Shuriken Storm: Strong Arm advantage
if (value['type'] == 'power' && codeNum1 == 10 && codeNum2 == 19) return value['mask'] + (value['mask']&16);
if (value['type'] == 'power' && codeNum1 == 11 && codeNum2 == 18) return value['mask'] + (value['mask']&16);
if (value['type'] == 'power' && codeNum1 == 12 && codeNum2 == 18) return value['mask'] + (value['mask']&16);
if (value['type'] == 'power' && codeNum1 == 13 && codeNum2 == 24) return value['mask'] + (value['mask']&16);
// add Might: Clobber: It's That Time advantage
if (value['type'] == 'power' && codeNum1 == 18 && codeNum2 == 0) return value['mask'] + (value['mask']&16);
// add Might: Hurl: Strong Arm advantage
if (value['type'] == 'power' && codeNum1 == 18 && codeNum2 == 4) return value['mask'] + (value['mask']&112);
// add Single Blade: Reaper's Caress: Accelerated Metabolism advantage
if (value['type'] == 'power' && codeNum1 == 12 && codeNum2 == 1) return value['mask'] + (value['mask']&16);
return value['mask'];
case 'specializationTree': return value['specializationTree'];
case 'specialization': return value['specialization'];
}
});
// version 3 => 4
dataVersionUpdate[dataVersionUpdate.length] = new VersionUpdate(
dataVersionUpdate.length, 3,
function(thing, value) {
var codeNum1 = (value['code1'] == undefined) ? 0 : urlCodeToNum(value['code1']); // framework
var codeNum2 = (value['code2'] == undefined) ? 0 : urlCodeToNum(value['code2']); // power
// var codeNum3 = (value['code3'] == undefined) ? 0 : urlCodeToNum(value['code3']);
// var codeNum4 = (value['code4'] == undefined) ? 0 : urlCodeToNum(value['code4']);
switch (thing) {
case 'data': return value['data'];
case 'pos':
// all archetypes get an extra power at level 14 (6th power)
if (value['type'] == 'start' && value['archetype'] > 1 && value['pos'] == 26) return 27;
// all archetypes swap powers at level 15 with 16 (7th and 8th powers)
if (value['type'] == 'start' && value['archetype'] > 1 && value['pos'] == 19) return 20;
if (value['type'] == 'start' && value['archetype'] > 1 && value['pos'] == 21) return 19;
if (value['type'] == 'start' && value['archetype'] > 1 && value['pos'] == 20) return 21;
return value['pos'];
case 'i': return value['i'];
case 'inc':
// all archetypes get an extra power at level 14 (6th power)
if (value['type'] == 'power' && value['archetype'] > 1 && value['pos'] == 18) return 0;
return value['inc'];
case 'code1': return value['code1'];
case 'code2': return value['code2'];
case 'code3': return value['code3'];
case 'code4': return value['code4'];
case 'archetype':
// add The Invincible archetype
if (value['type'] == 'archetype' && value['archetype'] >= 11) return value['archetype'] + 1;
return value['archetype'];
case 'superStat': return value['superStat'];
case 'innateTalent': return value['innateTalent'];
case 'talent': return value['talent'];
case 'travelPower': return value['travelPower'];
case 'framework':
// update archetype powers
var archetype = value['archetype'];
var pos = value['pos'];
var framework = value['framework'];
var power = value['power'];
// all archetypes get an extra power at level 14 (6th power)
if (value['type'] == 'power' && archetype > 1 && pos == 18) return dataPower[dataArchetype[archetype].powerList[6]].framework;
// move The Scourge: Aspect of the Infernal archtype power from level 27 (9th now 10th power) to level 14 (6th power)
if (value['type'] == 'power' && archetype == 5 && pos == 22 && framework == 26 && power == 16) return dataPower[dataArchetype[archetype].powerList[10]].framework;
// move The Master: Form of the Master archtype power from level 22 (8th now 9th power) to level 14 (6th power)
if (value['type'] == 'power' && archetype == 10 && pos == 21 && framework == 13 && power == 8) return dataPower[dataArchetype[archetype].powerList[9]].framework;
// move The Disciple: Mental Discipline archtype power from level 32 (10th now 11th power) to level 14 (6th power)
if (value['type'] == 'power' && archetype == 13 && pos == 23 && framework == 14 && power == 16) return dataPower[dataArchetype[archetype].powerList[11][1]].framework;
// move The Unleashed: Form of the Tempest archtype power from level 22 (8th now 9th power) to level 14 (6th power)
if (value['type'] == 'power' && archetype == 14 && pos == 21 && framework == 10 && power == 6) return dataPower[dataArchetype[archetype].powerList[9]].framework;
// move The Unleashed: Bountiful Chi Resurgence archtype power from level 27 (9th now 10th power) to level 25 (9th power)
if (value['type'] == 'power' && archetype == 14 && pos == 22 && framework == 13 && power == 18) return dataPower[dataArchetype[archetype].powerList[10][1]].framework;
// move The Unleashed: Intensity archtype power from level 27 (9th now 10th power) to level 30 (10th power)
if (value['type'] == 'power' && archetype == 14 && pos == 22 && framework == 13 && power == 11) return dataPower[dataArchetype[archetype].powerList[10][1]].framework;
// move The Blade: Form of the Swordsman archtype power from level 22 (8th now 9th power) to level 14 (6th power)
if (value['type'] == 'power' && archetype == 15 && pos == 21 && framework == 12 && power == 6) return dataPower[dataArchetype[archetype].powerList[9]].framework;
// move The Blade: Dragon's Bite archtype power from level 27 (9th now 10th power) to level 25 (9th power)
if (value['type'] == 'power' && archetype == 15 && pos == 22 && framework == 12 && power == 12) return dataPower[dataArchetype[archetype].powerList[10]].framework;
// move The Blade: Inexorable Tides archtype power from level 32 (10th now 11th power) to level 30 (10th power)
if (value['type'] == 'power' && archetype == 15 && pos == 23 && framework == 13 && power == 6) return dataPower[dataArchetype[archetype].powerList[11][1]].framework;
// move The Fist: Form of the Tempest archtype power from level 22 (8th now 9th power) to level 14 (6th power)
if (value['type'] == 'power' && archetype == 17 && pos == 21 && framework == 10 && power == 6) return dataPower[dataArchetype[archetype].powerList[9]].framework;
// move The Impulse: Inertial Dampening Field archtype power from level 27 (9th now 10th power) to level 14 (6th power)
if (value['type'] == 'power' && archetype == 20 && pos == 22 && framework == 3 && power == 14) return dataPower[dataArchetype[archetype].powerList[10]].framework;
// move The Specialist: Form of the Tempest archtype power from level 22 (8th now 9th power) to level 14 (6th power)
if (value['type'] == 'power' && archetype == 21 && pos == 21 && framework == 10 && power == 6) return dataPower[dataArchetype[archetype].powerList[9]].framework;
// move The Savage: Devour Essence archtype power from level 32 (10th now 11th power) to level 40 (12th power)
if (value['type'] == 'power' && archetype == 22 && pos == 23 && framework == 26 && power == 3) return dataPower[dataArchetype[archetype].powerList[11][1]].framework;
// move The Savage: Aspect of the Bestial archtype power from level 40 (11th now 12th power) to level 14 (6th power)
if (value['type'] == 'power' && archetype == 22 && pos == 24 && framework == 25 && power == 11) return dataPower[dataArchetype[archetype].powerList[12]].framework;
// move The Cursed: Aspect of the Infernal archtype power from level 27 (9th now 10th power) to level 14 (6th power)
if (value['type'] == 'power' && archetype == 26 && pos == 22 && framework == 26 && power == 16) return dataPower[dataArchetype[archetype].powerList[10]].framework;
// remove Infernal Supernatural: Aspect of the Ethereal power
if (codeNum1 == 26 && codeNum2 == 17) return 0;
return framework;
case 'power':
var power = value['power'];
// update archetype powers
var archetype = value['archetype'];
var pos = value['pos'];
var framework = value['framework'];
// all archetypes get an extra power at level 14 (6th power)
if (value['type'] == 'power' && archetype > 1 && pos == 18) return dataPower[dataArchetype[archetype].powerList[6]].power;
// move The Scourge: Aspect of the Infernal archtype power from level 27 (9th now 10th power) to level 14 (6th power)
if (value['type'] == 'power' && archetype == 5 && pos == 22 && framework == 26 && power == 16) return dataPower[dataArchetype[archetype].powerList[10]].power;
// move The Master: Form of the Master archtype power from level 22 (8th now 9th power) to level 14 (6th power)
if (value['type'] == 'power' && archetype == 10 && pos == 21 && framework == 13 && power == 8) return dataPower[dataArchetype[archetype].powerList[9]].power;
// move The Disciple: Mental Discipline archtype power from level 32 (10th now 11th power) to level 14 (6th power)
if (value['type'] == 'power' && archetype == 13 && pos == 23 && framework == 14 && power == 16) return dataPower[dataArchetype[archetype].powerList[11][1]].power;
// move The Unleashed: Form of the Tempest archtype power from level 22 (8th now 9th power) to level 14 (6th power)
if (value['type'] == 'power' && archetype == 14 && pos == 21 && framework == 10 && power == 6) return dataPower[dataArchetype[archetype].powerList[9]].power;
// move The Unleashed: Bountiful Chi Resurgence archtype power from level 27 (9th now 10th power) to level 25 (9th power)
if (value['type'] == 'power' && archetype == 14 && pos == 22 && framework == 13 && power == 18) return dataPower[dataArchetype[archetype].powerList[10][1]].power;
// move The Unleashed: Intensity archtype power from level 27 (9th now 10th power) to level 30 (10th power)
if (value['type'] == 'power' && archetype == 14 && pos == 22 && framework == 13 && power == 11) return dataPower[dataArchetype[archetype].powerList[10][1]].power;
// move The Blade: Form of the Swordsman archtype power from level 22 (8th now 9th power) to level 14 (6th power)
if (value['type'] == 'power' && archetype == 15 && pos == 21 && framework == 12 && power == 6) return dataPower[dataArchetype[archetype].powerList[9]].power;
// move The Blade: Dragon's Bite archtype power from level 27 (9th now 10th power) to level 25 (9th power)
if (value['type'] == 'power' && archetype == 15 && pos == 22 && framework == 12 && power == 12) return dataPower[dataArchetype[archetype].powerList[10]].power;
// move The Blade: Inexorable Tides archtype power from level 32 (10th now 11th power) to level 30 (10th power)
if (value['type'] == 'power' && archetype == 15 && pos == 23 && framework == 13 && power == 6) return dataPower[dataArchetype[archetype].powerList[11][1]].power;
// move The Fist: Form of the Tempest archtype power from level 22 (8th now 9th power) to level 14 (6th power)
if (value['type'] == 'power' && archetype == 17 && pos == 21 && framework == 10 && power == 6) return dataPower[dataArchetype[archetype].powerList[9]].power;
// move The Impulse: Inertial Dampening Field archtype power from level 27 (9th now 10th power) to level 14 (6th power)
if (value['type'] == 'power' && archetype == 20 && pos == 22 && framework == 3 && power == 14) return dataPower[dataArchetype[archetype].powerList[10]].power;
// move The Specialist: Form of the Tempest archtype power from level 22 (8th now 9th power) to level 14 (6th power)
if (value['type'] == 'power' && archetype == 21 && pos == 21 && framework == 10 && power == 6) return dataPower[dataArchetype[archetype].powerList[9]].power;
// move The Savage: Devour Essence archtype power from level 32 (10th now 11th power) to level 40 (12th power)
if (value['type'] == 'power' && archetype == 22 && pos == 23 && framework == 26 && power == 3) return dataPower[dataArchetype[archetype].powerList[11][1]].power;
// move The Savage: Aspect of the Bestial archtype power from level 40 (11th now 12th power) to level 14 (6th power)
if (value['type'] == 'power' && archetype == 22 && pos == 24 && framework == 25 && power == 11) return dataPower[dataArchetype[archetype].powerList[12]].power;
// move The Cursed: Aspect of the Infernal archtype power from level 27 (9th now 10th power) to level 14 (6th power)
if (value['type'] == 'power' && archetype == 26 && pos == 22 && framework == 26 && power == 16) return dataPower[dataArchetype[archetype].powerList[10]].power;
// add Power Armor powers
if (codeNum1 == 9 && codeNum2 >= 14) power += 2; // Fire All Weapons and Reconstruction Circuits
if (codeNum1 == 9 && codeNum2 >= 10) power++; // Plasma Beam
if (codeNum1 == 9 && codeNum2 >= 8) power += 3; // Lightspeed Dash, Overdrive, and Plasma Cutter
if (codeNum1 == 9 && codeNum2 >= 7) power++; // Concentration
if (codeNum1 == 9 && codeNum2 >= 5) power++; // Lightwave Slash
if (codeNum1 == 9 && codeNum2 >= 2) power++; // Tactical Missiles
if (codeNum1 == 9 && codeNum2 >= 1) power += 2; // Power Bolts and Laser Edge
// move Power Armor: Mini Gun up 7 (it's now a tier 1 power)
if (codeNum1 == 9 && power >= 9 && power <= 15) power++;
if (codeNum1 == 9 && codeNum2 == 8) power = 9;
// move Power Armor: Chest Beam up 3 (it's now a tier 2 powers)
if (codeNum1 == 9 && power >= 18 && power <= 20) power++;
if (codeNum1 == 9 && codeNum2 == 12) power = 18;
// remove Infernal Supernatural: Aspect of the Ethereal power
if (codeNum1 == 26 && codeNum2 == 17) return 0;
if (codeNum1 == 26 && codeNum2 > 17) power--;
// add Technology: Concentration power
if (codeNum1 == 6 && codeNum2 >= 5) power++;
if (codeNum1 == 7 && codeNum2 >= 12) power++;
if (codeNum1 == 8 && codeNum2 >= 8) power++;
// add Mystic: Compassion power
if (codeNum1 == 19 && codeNum2 >= 8) power++;
if (codeNum1 == 20 && codeNum2 >= 6) power++;
if (codeNum1 == 21 && codeNum2 >= 6) power++;
if (codeNum1 == 22 && codeNum2 >= 6) power++;
if (codeNum1 == 23 && codeNum2 >= 6) power++;
if (codeNum1 == 24 && codeNum2 >= 5) power++;
if (codeNum1 == 25 && codeNum2 >= 7) power++;
if (codeNum1 == 26 && codeNum2 >= 10) power++;
// add Mind: Manipulator power
if (codeNum1 == 14 && codeNum2 >= 9) power++;
if (codeNum1 == 15 && codeNum2 >= 6) power++;
return power;
case 'mask':
// all archetypes get an extra power at level 14 (6th power)
var archetype = value['archetype'];
var pos = value['pos'];
var framework = value['framework'];
var power = value['power'];
if (value['type'] == 'power' && archetype > 1 && pos == 18) return 0;
// move The Scourge: Aspect of the Infernal archtype power from level 27 (9th now 10th power) to level 14 (6th power)
if (value['type'] == 'power' && archetype == 5 && pos == 22 && framework == 26 && power == 16) {
setAdvantage(1, 6, value['mask']);
return 0;
}
// move The Master: Form of the Master archtype power from level 22 (8th now 9th power) to level 14 (6th power)
if (value['type'] == 'power' && archetype == 10 && pos == 21 && framework == 13 && power == 8) {
setAdvantage(1, 6, value['mask']);
return 0;
}
// move The Disciple: Mental Discipline archtype power from level 32 (10th now 11th power) to level 14 (6th power)
if (value['type'] == 'power' && archetype == 13 && pos == 23 && framework == 14 && power == 16) {
setAdvantage(1, 6, value['mask']);
return 0;
}
// move The Unleashed: Form of the Tempest archtype power from level 22 (8th now 9th power) to level 14 (6th power)
if (value['type'] == 'power' && archetype == 14 && pos == 21 && framework == 10 && power == 6) {
setAdvantage(1, 6, value['mask']);
return 0;
}
// move The Unleashed: Bountiful Chi Resurgence archtype power from level 27 (9th now 10th power) to level 25 (9th power)
if (value['type'] == 'power' && archetype == 14 && pos == 22 && framework == 13 && power == 18) {
setAdvantage(1, 9, value['mask']);
return 0;
}
// move The Blade: Form of the Swordsman archtype power from level 22 (8th now 9th power) to level 14 (6th power)
if (value['type'] == 'power' && archetype == 15 && pos == 21 && framework == 12 && power == 6) {
setAdvantage(1, 6, value['mask']);
return 0;
}
// move The Blade: Dragon's Bite archtype power from level 27 (9th now 10th power) to level 25 (9th power)
if (value['type'] == 'power' && archetype == 15 && pos == 22 && framework == 12 && power == 12) {
setAdvantage(1, 9, value['mask']);
return 0;
}
// move The Blade: Inexorable Tides archtype power from level 32 (10th now 11th power) to level 30 (10th power)
if (value['type'] == 'power' && archetype == 15 && pos == 23 && framework == 13 && power == 6) {
setAdvantage(1, 10, value['mask']);
return 0;
}
// move The Fist: Form of the Tempest archtype power from level 22 (8th now 9th power) to level 14 (6th power)
if (value['type'] == 'power' && archetype == 17 && pos == 21 && framework == 10 && power == 6) {
setAdvantage(1, 6, value['mask']);
return 0;
}
// move The Impulse: Inertial Dampening Field archtype power from level 27 (9th now 10th power) to level 14 (6th power)
if (value['type'] == 'power' && archetype == 20 && pos == 22 && framework == 3 && power == 14) {
setAdvantage(1, 6, value['mask']);
return 0;
}
// move The Specialist: Form of the Tempest archtype power from level 22 (8th now 9th power) to level 14 (6th power)
if (value['type'] == 'power' && archetype == 21 && pos == 21 && framework == 10 && power == 6) {
setAdvantage(1, 6, value['mask']);
return 0;
}
// move The Savage: Devour Essence archtype power from level 32 (10th now 11th power) to level 40 (12th power)
if (value['type'] == 'power' && archetype == 22 && pos == 23 && framework == 26 && power == 3) {
var powerCode = numToUrlCode(framework) + numToUrlCode(power);
var powerId = dataPowerIdFromCode[powerCode];
var num = 12;
selectFramework(framework);
selectPower(num);
setPower(powerId);
setAdvantage(1, num, value['mask']);
return 0;
}
// move The Savage: Aspect of the Bestial archtype power from level 40 (11th now 12th power) to level 14 (6th power)
if (value['type'] == 'power' && archetype == 22 && pos == 24 && framework == 25 && power == 11) {
setAdvantage(1, 6, value['mask']);
return phPowerAdvantage[12];
}
// move The Cursed: Aspect of the Infernal archtype power from level 27 (9th now 10th power) to level 14 (6th power)
if (value['type'] == 'power' && archetype == 26 && pos == 22 && framework == 26 && power == 16) {
setAdvantage(1, 6, value['mask']);
return 0;
}
// add Power Armor: Mini Gun: Infrared Guidance System advantage
if (value['type'] == 'power' && codeNum1 == 9 && codeNum2 == 8) return value['mask'] + (value['mask']&48);
return value['mask'];
case 'specializationTree':
// fix bug with version 3 corrupting the specializaton mastery value by resetting or clearing the value
if (value['pos'] == 27) {
if (value['specializationTree'] < 9) return 1;
else return 0;
}
return value['specializationTree'];
case 'specialization': return value['specialization'];
}
});
// version 4 => 5
dataVersionUpdate[dataVersionUpdate.length] = new VersionUpdate(
dataVersionUpdate.length, 4,
function(thing, value) {
var codeNum1 = (value['code1'] == undefined) ? 0 : urlCodeToNum(value['code1']); // framework
var codeNum2 = (value['code2'] == undefined) ? 0 : urlCodeToNum(value['code2']); // power
// var codeNum3 = (value['code3'] == undefined) ? 0 : urlCodeToNum(value['code3']);
// var codeNum4 = (value['code4'] == undefined) ? 0 : urlCodeToNum(value['code4']);
switch (thing) {
case 'data': return value['data'];
case 'pos': return value['pos'];
case 'i': return value['i'];
case 'inc': return value['inc'];
case 'code1': return value['code1'];
case 'code2': return value['code2'];
case 'code3': return value['code3'];
case 'code4': return value['code4'];
case 'archetype':
// add Archetype: The Night Avenger
if (value['archetype'] > 22) return value['archetype'] + 1;
return value['archetype'];
case 'superStat': return value['superStat'];
case 'innateTalent': return value['innateTalent'];
case 'talent': return value['talent'];
case 'travelPower': return value['travelPower'];
case 'framework':
// remove Martial Arts: Sneak power
if (codeNum1 == 10 && codeNum2 == 16) return 0;
if (codeNum1 == 11 && codeNum2 == 15) return 0;
if (codeNum1 == 12 && codeNum2 == 15) return 0;
if (codeNum1 == 13 && codeNum2 == 19) return 0;
return value['framework'];
case 'power':
var power = value['power'];
// add Gadgeteering: Boomerang Toss power
if (codeNum1 == 7 && codeNum2 >= 2) power++;
// add Gadgeteering: Ricochet Throw and Grapple Gun Pull powers
if (codeNum1 == 7 && codeNum2 >= 4) power += 2;
// add Gadgeteering: Throwing Blades and Gas Pellets powers
if (codeNum1 == 7 && codeNum2 >= 16) power += 2;
// add Gadgeteering: Bolas power
if (codeNum1 == 7 && codeNum2 >= 17) power++;
// add Gadgeteering: Strafing Run power
if (codeNum1 == 7 && codeNum2 >= 23) power++;
// add Martial Arts: Night Warrior power
if (codeNum1 == 10 && codeNum2 >= 10) power++;
if (codeNum1 == 11 && codeNum2 >= 10) power++;
if (codeNum1 == 12 && codeNum2 >= 10) power++;
if (codeNum1 == 13 && codeNum2 >= 12) power++;
// add Martial Arts: Smoke Bomb Lunge power
if (codeNum1 == 10 && codeNum2 >= 12) power++;
if (codeNum1 == 11 && codeNum2 >= 12) power++;
if (codeNum1 == 12 && codeNum2 >= 12) power++;
if (codeNum1 == 13 && codeNum2 >= 14) power++;
// remove Martial Arts: Sneak power
if (codeNum1 == 10 && codeNum2 == 16) return 0;
if (codeNum1 == 10 && codeNum2 > 16) power--;
if (codeNum1 == 11 && codeNum2 == 15) return 0;
if (codeNum1 == 11 && codeNum2 > 15) power--;
if (codeNum1 == 12 && codeNum2 == 15) return 0;
if (codeNum1 == 12 && codeNum2 > 15) power--;
if (codeNum1 == 13 && codeNum2 == 19) return 0;
if (codeNum1 == 13 && codeNum2 > 19) power--;
return power;
case 'mask': return value['mask'];
case 'specializationTree': return value['specializationTree'];
case 'specialization': return value['specialization'];
}
});
// version 5 => 6
dataVersionUpdate[dataVersionUpdate.length] = new VersionUpdate(
dataVersionUpdate.length, 5,
function(thing, value) {
var codeNum1 = (value['code1'] == undefined) ? 0 : urlCodeToNum(value['code1']); // framework
var codeNum2 = (value['code2'] == undefined) ? 0 : urlCodeToNum(value['code2']); // power
// var codeNum3 = (value['code3'] == undefined) ? 0 : urlCodeToNum(value['code3']);
// var codeNum4 = (value['code4'] == undefined) ? 0 : urlCodeToNum(value['code4']);
switch (thing) {
case 'data': return value['data'];
case 'pos': return value['pos'];
case 'i': return value['i'];
case 'inc': return value['inc'];
case 'code1': return value['code1'];
case 'code2': return value['code2'];
case 'code3': return value['code3'];
case 'code4': return value['code4'];
case 'archetype': return value['archetype'];
case 'superStat': return value['superStat'];
case 'innateTalent': return value['innateTalent'];
case 'talent': return value['talent'];
case 'travelPower': return value['travelPower'];
case 'framework': return value['framework'];
case 'power':
var power = value['power'];
// add Fire: Rimefire Burst power
if (codeNum1 == 2 && codeNum2 >= 9) power++;
// add Force: Redirected Force power
if (codeNum1 == 3 && codeNum2 >= 12) power++;
// add Telepathy: Mind Break and Shadow of Doubt powers
if (codeNum1 == 15 && codeNum2 >= 2) power += 2;
// add Telepathy: Mental Leech power
if (codeNum1 == 15 && codeNum2 >= 3) power++;
// add Telepathy: Congress of Selves power
if (codeNum1 == 15 && codeNum2 >= 6) power++;
// add Telepathy: Mental Storm power
if (codeNum1 == 15 && codeNum2 >= 12) power++;
// add Telepathy: Master of the Mind power
if (codeNum1 == 15 && codeNum2 >= 15) power++;
return power;
case 'mask': return value['mask'];
case 'specializationTree': return value['specializationTree'];
case 'specialization': return value['specialization'];
}
});
// version 6 => 7
dataVersionUpdate[dataVersionUpdate.length] = new VersionUpdate(
dataVersionUpdate.length, 6,
function(thing, value) {
var codeNum1 = (value['code1'] == undefined) ? 0 : urlCodeToNum(value['code1']); // framework
var codeNum2 = (value['code2'] == undefined) ? 0 : urlCodeToNum(value['code2']); // power
// var codeNum3 = (value['code3'] == undefined) ? 0 : urlCodeToNum(value['code3']);
// var codeNum4 = (value['code4'] == undefined) ? 0 : urlCodeToNum(value['code4']);
switch (thing) {
case 'data': return value['data'];
case 'pos': return value['pos'];
case 'i': return value['i'];
case 'inc': return value['inc'];
case 'code1': return value['code1'];
case 'code2': return value['code2'];
case 'code3': return value['code3'];
case 'code4': return value['code4'];
case 'archetype': return value['archetype'];
case 'superStat': return value['superStat'];
case 'innateTalent': return value['innateTalent'];
case 'talent': return value['talent'];
case 'travelPower': return value['travelPower'];
case 'framework': return value['framework'];
case 'power':
var power = value['power'];
// add Power Armor: Particle Accelerator power
if (codeNum1 == 9 && codeNum2 >= 6) power++;
// add Power Armor: Particle Smash and Unified Theory powers
if (codeNum1 == 9 && codeNum2 >= 17) power += 2;
return power;
case 'mask': return value['mask'];
case 'specializationTree': return value['specializationTree'];
case 'specialization': return value['specialization'];
}
});
// version 7 => 8
dataVersionUpdate[dataVersionUpdate.length] = new VersionUpdate(
dataVersionUpdate.length, 7,
function(thing, value) {
var codeNum1 = (value['code1'] == undefined) ? 0 : urlCodeToNum(value['code1']); // framework
var codeNum2 = (value['code2'] == undefined) ? 0 : urlCodeToNum(value['code2']); // power
// var codeNum3 = (value['code3'] == undefined) ? 0 : urlCodeToNum(value['code3']);
// var codeNum4 = (value['code4'] == undefined) ? 0 : urlCodeToNum(value['code4']);
switch (thing) {
case 'data': return value['data'];
case 'pos': return value['pos'];
case 'i': return value['i'];
case 'inc': return value['inc'];
case 'code1': return value['code1'];
case 'code2': return value['code2'];
case 'code3': return value['code3'];
case 'code4': return value['code4'];
case 'archetype': return value['archetype'];
case 'superStat': return value['superStat'];
case 'innateTalent': return value['innateTalent'];
case 'talent': return value['talent'];
case 'travelPower': return value['travelPower'];
case 'framework': return value['framework'];
case 'power':
var power = value['power'];
// add Earth: Earth Form power
if (codeNum1 == 17 && codeNum2 >= 4) power++;
return power;
case 'mask': return value['mask'];
case 'specializationTree': return value['specializationTree'];
case 'specialization': return value['specialization'];
}
});
// version 8 => 9
dataVersionUpdate[dataVersionUpdate.length] = new VersionUpdate(
dataVersionUpdate.length, 8,
function(thing, value) {
var codeNum1 = (value['code1'] == undefined) ? 0 : urlCodeToNum(value['code1']); // framework
var codeNum2 = (value['code2'] == undefined) ? 0 : urlCodeToNum(value['code2']); // power
// var codeNum3 = (value['code3'] == undefined) ? 0 : urlCodeToNum(value['code3']);
// var codeNum4 = (value['code4'] == undefined) ? 0 : urlCodeToNum(value['code4']);
switch (thing) {
case 'data': return value['data'];
case 'pos': return value['pos'];
case 'i': return value['i'];
case 'inc': return value['inc'];
case 'code1': return value['code1'];
case 'code2': return value['code2'];
case 'code3': return value['code3'];
case 'code4': return value['code4'];
case 'archetype': return value['archetype'];
case 'superStat': return value['superStat'];
case 'innateTalent': return value['innateTalent'];
case 'talent': return value['talent'];
case 'travelPower': return value['travelPower'];
case 'framework': return value['framework'];
case 'power':
var power = value['power'];
// add Martial Arts: Fluidity power
if (codeNum1 >= 10 && codeNum1 <= 13 && codeNum2 >= 12) power++;
return power;
case 'mask':
// remove Radiant Sorcery: Aura of Radiant Protection: Runic Glow advantage
if (value['type'] == 'power' && codeNum1 == 24 && codeNum2 == 4) return value['mask']&~8;
return value['mask'];
case 'specializationTree': return value['specializationTree'];
case 'specialization': return value['specialization'];
}
});
// version 9 => 10
dataVersionUpdate[dataVersionUpdate.length] = new VersionUpdate(
dataVersionUpdate.length, 9,
function(thing, value) {
var codeNum1 = (value['code1'] == undefined) ? 0 : urlCodeToNum(value['code1']); // framework
var codeNum2 = (value['code2'] == undefined) ? 0 : urlCodeToNum(value['code2']); // power
// var codeNum3 = (value['code3'] == undefined) ? 0 : urlCodeToNum(value['code3']);
// var codeNum4 = (value['code4'] == undefined) ? 0 : urlCodeToNum(value['code4']);
switch (thing) {
case 'data': return value['data'];
case 'pos': return value['pos'];
case 'i': return value['i'];
case 'inc': return value['inc'];
case 'code1': return value['code1'];
case 'code2': return value['code2'];
case 'code3': return value['code3'];
case 'code4': return value['code4'];
case 'archetype': return value['archetype'];
case 'superStat': return value['superStat'];
case 'innateTalent': return value['innateTalent'];
case 'talent': return value['talent'];
case 'travelPower': return value['travelPower'];
case 'framework': return value['framework'];
case 'power':
var power = value['power'];
// add Power Armor: Rocket Punch power
if (codeNum1 == 9 && codeNum2 >= 9) power++;
// add Power Armor: Aspect of the Machine power
if (codeNum1 == 9 && codeNum2 >= 13) power++;
return power;
case 'mask': return value['mask'];
case 'specializationTree': return value['specializationTree'];
case 'specialization': return value['specialization'];
}
});
// version 10 => 11
dataVersionUpdate[dataVersionUpdate.length] = new VersionUpdate(
dataVersionUpdate.length, 10,
function(thing, value) {
var codeNum1 = (value['code1'] == undefined) ? 0 : urlCodeToNum(value['code1']); // framework
var codeNum2 = (value['code2'] == undefined) ? 0 : urlCodeToNum(value['code2']); // power
// var codeNum3 = (value['code3'] == undefined) ? 0 : urlCodeToNum(value['code3']);
// var codeNum4 = (value['code4'] == undefined) ? 0 : urlCodeToNum(value['code4']);
switch (thing) {
case 'data': return value['data'];
case 'pos': return value['pos'];
case 'i': return value['i'];
case 'inc': return value['inc'];
case 'code1': return value['code1'];
case 'code2': return value['code2'];
case 'code3': return value['code3'];
case 'code4': return value['code4'];
case 'archetype': return value['archetype'];
case 'superStat': return value['superStat'];
case 'innateTalent': return value['innateTalent'];
case 'talent': return value['talent'];
case 'travelPower': return value['travelPower'];
case 'framework': return value['framework'];
case 'power':
var power = value['power'];
// add Power Armor: Binding Shot power
if (codeNum1 == 9 && codeNum2 >= 19) power++;
return power;
case 'mask': return value['mask'];
case 'specializationTree': return value['specializationTree'];
case 'specialization': return value['specialization'];
}
});
// version 11 => 12
dataVersionUpdate[dataVersionUpdate.length] = new VersionUpdate(
dataVersionUpdate.length, 11,
function(thing, value) {
var codeNum1 = (value['code1'] == undefined) ? 0 : urlCodeToNum(value['code1']); // framework
var codeNum2 = (value['code2'] == undefined) ? 0 : urlCodeToNum(value['code2']); // power
// var codeNum3 = (value['code3'] == undefined) ? 0 : urlCodeToNum(value['code3']);
// var codeNum4 = (value['code4'] == undefined) ? 0 : urlCodeToNum(value['code4']);
switch (thing) {
case 'data': return value['data'];
case 'pos': return value['pos'];
case 'i': return value['i'];
case 'inc': return value['inc'];
case 'code1': return value['code1'];
case 'code2': return value['code2'];
case 'code3': return value['code3'];
case 'code4': return value['code4'];
case 'archetype':
// add Archetype: The Icicle
if (value['archetype'] > 5) return value['archetype'] + 1;
return value['archetype'];
case 'superStat': return value['superStat'];
case 'innateTalent': return value['innateTalent'];
case 'talent': return value['talent'];
case 'travelPower': return value['travelPower'];
case 'framework': return value['framework'];
case 'power':
var power = value['power'];
// add Force: Gravitic Ripple
if (codeNum1 == 3 && codeNum2 >= 13) power++;
// add Ice: Chilled Form power
if (codeNum1 == 5 && codeNum2 >= 8) power++;
// add Ice: Icy Embrace power
if (codeNum1 == 5 && codeNum2 >= 9) power++;
// add Ice: Icicle Spear power
if (codeNum1 == 5 && codeNum2 >= 12) power++;
// add Telekinesis: Lance Rain
if (codeNum1 == 14 && codeNum2 >= 23) power++;
// add Might: Nuclear Shockwave
if (codeNum1 == 18 && codeNum2 >= 21) power++;
return power;
case 'mask':
// add Ice: Ice Blast: Frost Bite advantage
if (value['type'] == 'power' && codeNum1 == 5 && codeNum2 == 1) return value['mask'] + (value['mask']&48);
return value['mask'];
case 'specializationTree': return value['specializationTree'];
case 'specialization': return value['specialization'];
}
});
// version 12 => 13
dataVersionUpdate[dataVersionUpdate.length] = new VersionUpdate(
dataVersionUpdate.length, 12,
function(thing, value) {
var codeNum1 = (value['code1'] == undefined) ? 0 : urlCodeToNum(value['code1']); // framework
var codeNum2 = (value['code2'] == undefined) ? 0 : urlCodeToNum(value['code2']); // power
// var codeNum3 = (value['code3'] == undefined) ? 0 : urlCodeToNum(value['code3']);
// var codeNum4 = (value['code4'] == undefined) ? 0 : urlCodeToNum(value['code4']);
switch (thing) {
case 'data': return value['data'];
case 'pos': return value['pos'];
case 'i': return value['i'];
case 'inc': return value['inc'];
case 'code1': return value['code1'];
case 'code2': return value['code2'];
case 'code3': return value['code3'];
case 'code4': return value['code4'];
case 'archetype': return value['archetype'];
case 'superStat': return value['superStat'];
case 'innateTalent': return value['innateTalent'];
case 'talent': return value['talent'];
case 'travelPower': return value['travelPower'];
case 'framework': return value['framework'];
case 'power':
var power = value['power'];
// add Electricity: Neuroelectric Pulse
if (codeNum1 == 1 && codeNum2 >= 10) power++;
// add Telepathy: Mind Control
if (codeNum1 == 15 && codeNum2 >= 14) power++;
return power;
case 'mask': return value['mask'];
case 'specializationTree': return value['specializationTree'];
case 'specialization': return value['specialization'];
}
});
//==============================================================================
// Get Methods
//==============================================================================
// get data methods
getDataVersionUpdate = function() { return dataVersionUpdate; }
//==============================================================================
// powerhouse-version.js ends here
//==============================================================================