-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSettingsGUI.js
More file actions
5585 lines (5136 loc) · 320 KB
/
SettingsGUI.js
File metadata and controls
5585 lines (5136 loc) · 320 KB
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
function automationMenuSettingsInit() {
const settingsRow = document.getElementById('settingsRow');
const autoSettings = document.createElement('DIV');
autoSettings.id = 'autoSettings';
autoSettings.style.display = 'none';
autoSettings.style.maxHeight = '92.5vh';
autoSettings.style.overflow = 'auto';
autoSettings.classList.add('niceScroll');
settingsRow.appendChild(autoSettings);
}
function initialiseAllTabs() {
const addTabsDiv = document.createElement('div');
const addtabsUL = document.createElement('ul');
addtabsUL.id = 'autoTrimpsTabBarMenu';
addtabsUL.className = 'tab';
addtabsUL.style.display = 'none';
const settingsRow = document.getElementById('settingsRow');
settingsRow.insertBefore(addtabsUL, settingsRow.childNodes[2]);
const tabs = [
['Core', 'Core - Main Controls for the script'],
['Jobs', 'Geneticassist Settings'],
['Buildings', 'Building Settings'],
['Equipment', 'Equipment Settings'],
['Combat', 'Combat & Stance Settings'],
['Maps', 'Maps - Auto Maps Settings'],
['Challenges', 'Challenges - Settings for Specific Challenges'],
['C2', 'C2 - Settings for C2s'],
['Daily', 'Dailies - Settings for Dailies'],
['Heirloom', 'Heirloom Settings'],
['Golden', 'Golden Upgrade Settings'],
['Spire', 'Spire - Settings for Spires'],
['Magma', 'Dimensional Generator & Magmite Settings'],
['Nature', 'Nature Settings'],
['Fluffy', 'Fluffy Evolution Settings'],
['Time Warp', 'Time Warp Settings'],
['Display', 'Display & Spam Settings'],
['Import Export', 'Import & Export Settings'],
['Help', 'Helpful information (hopefully)'],
['Test', 'Basic testing functions - Should never be seen by users'],
['Beta', "Beta features - Should never be seen by users as they aren't user ready"]
];
tabs.forEach(([tabName, tabDescription]) => _createTab(tabName, tabDescription, addTabsDiv, addtabsUL));
_createControlTab('x', 'autoToggle', 'Exit', addtabsUL);
_createControlTab('+', '_maximizeAllTabs', 'Maximize all tabs', addtabsUL);
_createControlTab('-', '_minimizeAllTabs', 'Minimize all tabs', addtabsUL);
document.getElementById('autoSettings').appendChild(addTabsDiv);
document.getElementById('Core').style.display = 'block';
document.getElementsByClassName('tablinks')[0].className += ' active';
}
function _createTab(tabName, tabDescription, addTabsDiv, addtabsUL) {
const tabItem = document.createElement('li');
const tabLink = document.createElement('a');
tabLink.className = 'tablinks';
tabLink.setAttribute('onclick', `_toggleTab(event, '${tabName}')`);
tabLink.href = '#';
tabLink.appendChild(document.createTextNode(tabName));
tabItem.id = 'tab' + tabName;
tabItem.appendChild(tabLink);
addtabsUL.appendChild(tabItem);
const tabContent = document.createElement('div');
tabContent.className = 'tabcontent';
tabContent.id = tabName;
const contentDiv = document.createElement('div');
contentDiv.style.margin = '0.25vw 1vw';
const contentHeader = document.createElement('h4');
contentHeader.style.fontSize = '1.2vw';
contentHeader.appendChild(document.createTextNode(tabDescription));
contentDiv.appendChild(contentHeader);
tabContent.appendChild(contentDiv);
addTabsDiv.appendChild(tabContent);
}
function _createControlTab(icon, action, tooltipText, addtabsUL) {
const controlItem = document.createElement('li');
const controlLink = document.createElement('a');
controlLink.className = `tablinks ${action}`;
controlLink.setAttribute('onclick', `${action}();`);
controlLink.appendChild(document.createTextNode(icon));
controlItem.appendChild(controlLink);
controlItem.style.float = 'right';
controlItem.setAttribute('onmouseover', `tooltip("${tooltipText}", "customText", event, "${tooltipText} all of the settings tabs.")`);
controlItem.setAttribute('onmouseout', 'tooltip("hide")');
addtabsUL.appendChild(controlItem);
}
function _toggleTab(event, tabName) {
const target = event.currentTarget;
const tab = document.getElementById(tabName);
if (target.classList.contains('active')) {
tab.style.display = 'none';
target.classList.remove('active');
} else {
tab.style.display = 'block';
target.classList.add('active');
}
}
function _minimizeAllTabs() {
const tabs = document.getElementsByClassName('tabcontent');
const links = document.getElementsByClassName('tablinks');
for (let tab of tabs) {
tab.style.display = 'none';
}
for (let link of links) {
link.classList.remove('active');
}
}
function _maximizeAllTabs() {
const tabs = document.getElementsByClassName('tabcontent');
const links = document.getElementsByClassName('tablinks');
for (let tab of tabs) {
if (tab.id.toLowerCase() === 'test' || tab.id.toLowerCase() === 'beta') continue;
tab.style.display = 'block';
}
for (let link of links) {
if (link.id.toLowerCase() === 'test' || link.id.toLowerCase() === 'beta') continue;
link.style.display = 'block';
if (!link.classList.contains('active')) {
link.classList.add('active');
}
}
}
// prettier-ignore
function initialiseAllSettings() {
const displayCore = true;
if (displayCore) {
createSetting('gatherType',
function () { return (['Manual Gather', 'Auto Gather', 'Mining Only', 'Science Research Off']) },
function () {
let description = "<p>Controls what you gather/build.</p>";
description += "<p><b>Manual Gather</b><br>Disables this setting.</p>";
description += "<p><b>Auto Gather</b><br>Automatically switch your gathering between different resources and the building queue depending on what it deems necessary.</p>";
description += "<p><b>Mining Only</b><br>Sets gather to Mining.<br>If buildings are in the queue then they will override this.<br>Only use this if you are past the early stages of the game and have Foremany unlocked.</p>";
description += "<p><b>Science Research Off</b><br>Works the same as <b>Auto Gather</b> but stops Science from being gathered.</p>";
description += "<p><b>Recommended:</b> Auto Gather</p>";
return description;
}, 'multitoggle', 1, null, 'Core', [1, 2]);
createSetting('upgradeType',
function () { return (['Manual Upgrades', 'Buy All Upgrades', 'Upgrades No Coords']) },
function () {
let description = "<p>Controls what you upgrade.</p>";
description += "<p><b>Manual Upgrades</b><br>Disables this setting.</p>";
description += "<p><b>Buy All Upgrades</b><br>Automatically purchases non-equipment upgrades. Equipment upgrades are controlled by settings in the <b>Equipment</b> tab.</p>";
description += "<p><b>Upgrades no Coords</b><br>Works the same as <b>Buy All Upgrades</b> but stops Coordination upgrades from being purchased.</p>";
description += "<p><b>Recommended:</b> Buy All Upgrades</p>";
if (currSettingUniverse === 1) {
description += "<p>Will purchase the following upgrades when on your next <b>Scientist</b> challenge run: ";
if (game.global.sLevel === 0) description += "Battle, Miners, Coordination x9, Megamace, Bestplate.</p>";
if (game.global.sLevel === 1) description += "Battle, Miners, Coordination x8, Bestplate.</p>";
if (game.global.sLevel === 2) description += "Battle, Miners, Coordination x3, Speedminer.</p>";
if (game.global.sLevel === 3) description += "Battle, Miners.</p>";
if (game.global.sLevel >= 4) description += "Battle, Miners, Coordination x3, Speedminer, Egg.</p>";
}
return description;
}, 'multitoggle', 1, null, 'Core', [1, 2]);
createSetting('trapTrimps',
function () { return ('Trap Trimps') },
function () {
let description = "<p>Automatically builds traps and traps trimps when needed.</p>";
description += "<p>The upgrades setting must be set to <b>Buy All Upgrades</b> for this to work.</p>";
description += "<p><b>Recommended:</b> On whilst highest zone is below 30</p>";
return description;
}, 'boolean', true, null, 'Core', [1, 2]);
createSetting('downloadSaves',
function () { return ('Download Saves') },
function () { return ('Will automatically download saves when the script portals.') },
'boolean', false, null, 'Core', [1, 2]);
createSetting('portalVoidIncrement',
function () { return ('Void Map Liquification') },
function () {
let description = "<p>Delays portaling into your Auto Portal challenge and instead " + (currSettingUniverse === 2 ? "switches to universe 1 and" : "") + " portals until your bone void map counter is 1 drop away from a guaranteed extra void map.</p>";
description += "<p>If you have not reached the void map counter target by either zone 99 or the end of your liquification zone count then it will portal and repeat this process until you have.</p>";
description += "<p>Additionally if you finish your run without a perk respec available this setting will portal to obtain a respec.</p>";
description += "<p><b>Recommended:</b> " + (currSettingUniverse !== 1 ? "On" : "Off") + "</p>";
return description;
}, 'boolean', false, null, 'Core', [1, 2],
function () { return (game.permaBoneBonuses.voidMaps.owned >= 5 && checkLiqZoneCount(1) >= 20) });
createSetting('autoHeirlooms',
function () { return ('Auto Allocate Heirlooms') },
function () {
let description = "<p>Uses a modified version of the <b>Heirloom</b> calculator to identify the most optimal heirloom modifier distribution when auto portaling.</p>";
description += "<p>There are inputs you can adjust in the <b>Heirloom</b> window to allow you to adjust how it distributes nullifium.</p>";
description += "<p>If you want more advanced settings import your save into the <b>Heirloom</b> calculator.</p>";
description += "<p>Will <b>only</b> allocate nullifium on heirlooms that you have bought an upgrade or swapped modifiers on.</p>";
description += "<p><b>Recommended:</b> On</p>";
return description;
}, 'boolean', false, null, 'Core', [1, 2]);
createSetting('autoPerks',
function () { return ('Auto Allocate Perks') },
function () {
const calcName = currSettingUniverse === 2 ? "Surky" : "Perky";
let description = "<p>Uses a modified version of <b>" + calcName + "</b> to identify the most optimal perk distribution when auto portaling.</p>";
description += "<p>There are inputs you can adjust in the <b>Portal</b> window to allow you to adjust how it distributes perks.</p>";
description += "<p>If you want more advanced settings import your save into <b>" + calcName + "</b>.</p>";
description += "<p><b>Recommended:</b> On</p>";
return description;
}, 'boolean', false, null, 'Core', [1, 2]);
createSetting('presetSwap',
function () { return ('Preset Swapping') },
function () {
const calcName = currSettingUniverse === 2 ? "Surky" : "Perky";
const fillerPreset = currSettingUniverse === 2 ? "Easy Radon Challenge" : "the most appropriate zone progression preset";
const dailyPreset = currSettingUniverse === 2 ? "Difficult Radon Challenge" : "the most appropriate zone progression preset";
const c2Preset = currSettingUniverse === 2 ? "Push/C3/Mayhem" : "Other c²";
const universeChallenges = currSettingUniverse === 2 ? "Downsize, Duel, Berserk, Alchemy, Smithless" : "Metal, Trimp, Coord, Experience";
let description = "<p>Will automatically swap <b>" + calcName + "</b> presets when portaling into runs.</p>";
description += "<p>Fillers (non daily/" + _getChallenge2Info() + " runs) will load <b>" + fillerPreset + ".</b></p>";
description += "<p>Dailies will load <b>" + dailyPreset + "</b>.</p>";
description += _getSpecialChallengeDescription() + " runs will load <b>" + c2Preset + "</b>.</p>";
description += "Challenges that have a dedicated preset (<b>" + universeChallenges + "</b>) will be loaded when starting that challenge.</p>";
description += "<p><b>Recommended:</b> On</p>";
return description;
}, 'boolean', false, null, 'Core', [1, 2],
function () { return (getPageSetting('autoPerks', currSettingUniverse)) });
createSetting('presetCombatRespec',
function () {
const trimple = currSettingUniverse === 1 ? "Trimple" : "Atlantrimp";
return ([trimple + ' Respec Off', trimple + ' Respec Popup', trimple + ' Respec Force'])
},
function () {
const calcName = currSettingUniverse === 2 ? "Surky" : "Perky";
const trimple = currSettingUniverse === 1 ? "<b>Trimple Of Doom</b>" : "<b>Atlantrimp</b>";
const trimpleShortened = currSettingUniverse === 1 ? "Trimple" : "Atlantrimp";
let respecName = !trimpStats.isC3 ? "Radon " : "" + "Combat Respec";
if (currSettingUniverse === 1) respecName = 'Spire';
let description = '';
if (currSettingUniverse === 1) {
description += "<p>Will only run during the highest Spire you have reached and will respec into the Perky <b>Spire</b> preset to maximise your combat stats during it.</p>";
}
if (currSettingUniverse === 2) {
description += "<p>Will respec into the <b>Combat Respec</b> preset when running " + _getSpecialChallengeDescription() + " <b>OR</b> you have more golden battle than golden radon upgrades. Otherwise it will assume it's a radon run and respec into the <b>Radon Combat Respec</b> preset.</p>";
}
description += "<p><b>" + trimpleShortened + " Respec Off</b><br>Disables this setting.</p>";
description += "<p><b>" + trimpleShortened + " Respec Popup</b><br>Will display a popup after completing " + trimple + " asking whether you would like to respec into the preset listed above.</p>";
description += "<p><b>" + trimpleShortened + " Respec Force</b><br>4 seconds after completing " + trimple + " the script will respec you into the <b>" + calcName + "</b> preset listed above to maximise combat stats. Has a popup that allows you to disable the respec.</p>";
description += "<p>I'd recommend only using this with both the <b>Auto Allocate Perks</b> and <b>Void Map Liquification</b> settings enabled. Without these you will go into your next run in a suboptimal perk setup.</p>";
if (currSettingUniverse === 1) description += "<p>Has an additional setting (<b>Spire Respec Cell</b>) which has a <b>5</b> second delay after toggling this setting before it will function.</p>";
description += "<p><b>Recommended:</b> " + trimpleShortened + " Respec Off</p>";
return description
},
'multitoggle', [0], null, 'Core', [1, 2],
function () { return (game.stats.highestLevel.valueTotal() >= 170 || currSettingUniverse === 2) });
createSetting('presetCombatRespecCell',
function () { return ('Spire Respec Cell') },
function () {
const trimple = currSettingUniverse === 1 ? "<b>Trimple Of Doom</b>" : "<b>Atlantrimp</b>";
const trimpleShortened = currSettingUniverse === 1 ? "Trimple" : "Atlantrimp";
let description = "<p>An override for the " + trimple + " requirement for the <b>" + trimpleShortened + " Respec</b> setting. Will either give you a popup or automatically respec depending on your <b>" + trimpleShortened + " Respec</b> setting when you reach this cell and don't have any mapping to do on it.</p>";
description += "<p>Will only function on your <b>highest Spire reached.</b></p>";
description += "<p>Set to <b>0 or below</b> to disable this way to Spire respec.</p>";
description += "<p><b>Recommended:</b> cell after your farming has finished.</p>";
return description;
}, 'value', -1, null, 'Core', [1],
function () { return (getPageSetting('presetCombatRespec', currSettingUniverse) > 0 && game.stats.highestLevel.valueTotal() >= 170) });
createSetting('presetSwapMutators',
function () { return ('Preset Swap Mutators') },
function () {
let description = "<p>Will automatically load the preset that corresponds to your run type after auto portaling.</p>";
description += "<p>For info on which preset is loaded and when, mouseover the presets in the games <b>Mutators</b> window.</p>";
description += "<p><b>Recommended:</b> On</p>";
return description;
}, 'boolean', false, null, 'Core', [2],
function () { return (game.stats.highestRadLevel.valueTotal() >= 201) });
createSetting('universeSetting',
function () {
let portalOptions = ['Helium Settings'];
if (Fluffy.checkU2Allowed()) portalOptions.push('Radon Settings');
return portalOptions;
},
function () { return ('Switch between settings for universes you have unlocked.') },
'multitoggle', 0, null, 'Core', [0]);
let $universeSetting = document.getElementById('universeSetting');
$universeSetting.parentNode.style.setProperty('float', 'right');
$universeSetting.parentNode.style.setProperty('margin-right', '1.1vw');
$universeSetting.parentNode.style.setProperty('margin-left', '0');
createSetting('autoPortal',
function () { return ('Auto Portal') },
function () {
const c2setting = currSettingUniverse === 2 ? "Challenge 3" : "Challenge 2";
const specialChall = "Special challenges (" + (currSettingUniverse === 2 ? "Mayhem, Pandemonium, Desolation" : "Frigid, Experience") + ") can be run with this but they will ignore the " + _getChallenge2Info() + " portal settings and use the <b>Portal Zone</b> input for when to finish the run and portal.";
let description = "<p>Will automatically portal into different challenges depending on the way you setup the Auto Portal related settings.</p>";
description += "<p><b>" + _getPrimaryResourceInfo().name + " Challenges will appear here when they've been unlocked in the game.</b></p>";
description += "<p>Additional settings appear when <b>" + _getPrimaryResourceInfo().name + " Per Hour</b>, <b>Custom</b> or <b>One Off Challenges</b> are selected.</p>";
description += "<p><b>Off</b><br>Disables this setting.</p>";
description += "<p><b>" + _getPrimaryResourceInfo().name + " Per Hour</b><br>Portals into new runs when your " + _getPrimaryResourceInfo().name.toLowerCase() + " per hour goes below your current runs best " + _getPrimaryResourceInfo().name.toLowerCase() + " per hour.</p>";
description += "<p>There is a <b>Buffer</b> setting, which lowers the check from best " + _getPrimaryResourceInfo().name.toLowerCase() + " per hour to (best - buffer setting) " + _getPrimaryResourceInfo().name.toLowerCase() + " per hour.</p>";
description += "<p><b>Specific Challenges</b><br>If a specific challenge has been selected it will automatically portal into it when you don't have a challenge active.</p>";
description += "<p><b>Custom</b>/<b>One Off Challenges</b><br>Will portal into the challenge selected in the <b>Challenge</b> setting at the zone specified in the <b>Portal Zone</b> setting.</p>";
if (game.stats.highestLevel.valueTotal() >= 65) description += "<p><b>" + c2setting + "</b><br>Will portal into the challenge selected in the <b>" + _getChallenge2Info() + "</b> setting. If not inside of a " + _getChallenge2Info() + " then it will use the zone specified in the <b>Portal Zone</b> setting. When inside of " + _getChallenge2Info() + "s it will use <b>" + _getChallenge2Info() + " Runner Portal</b> for your portal zone. If <b>" + _getChallenge2Info() + " Runner</b> is enabled otherwise will use the zone specified in the <b>Finish " + _getChallenge2Info() + "</b> setting in the " + _getChallenge2Info() + " settings tab.</p>"
description += "<p>" + specialChall + "</p>";
description += "<p><b>Recommended:</b> " + (currSettingUniverse === 2 ? "Custom with a specified endzone to make use of Scruffy's level 3 ability" : "Specific challenges until you reach zone 230 then " + _getPrimaryResourceInfo().name + " Per Hour") + "</p>";
return description;
}, 'dropdown', 'Off', function () { return autoPortalChallenges('autoPortal') }, 'Core', [1, 2]);
createSetting('heliumHourChallenge',
function () { return ('Challenge') },
function () {
let description = "<p>Automatically portal into this challenge when using the <b>" + _getPrimaryResourceInfo().name + " Per Hour</b> or <b>Custom</b> Auto Portal settings.</p>";
description += "<p><b>" + _getPrimaryResourceInfo().name + " challenges will appear here when they've been unlocked in the game.</b></p>";
description += "<p><b>Recommended:</b> Last challenge available</p>";
return description;
}, 'dropdown', 'None', function () { return autoPortalChallenges('heHr') }, 'Core', [1, 2],
function () {
const namesToCheck = ['Helium Per Hour', 'Radon Per Hour', 'Custom'];
return (
namesToCheck.indexOf(getPageSetting('autoPortal', currSettingUniverse)) !== -1);
});
createSetting('heliumOneOffChallenge',
function () { return ('Challenge') },
function () {
let description = "<p>Automatically portal into this challenge when using the <b>One Off Challenges</b> Auto Portal setting.</p>";
description += "<p><b>Challenges that are only worthwhile running once for perks/special unlocks will appear here when they've been unlocked in the game.</b></p>";
description += "<p><b>Recommended:</b> Last challenge available</p>";
return description;
}, 'dropdown', 'None', function () { return autoPortalChallenges('oneOff') }, 'Core', [1, 2],
function () {
const namesToCheck = ['One Off Challenges'];
return (
namesToCheck.indexOf(getPageSetting('autoPortal', currSettingUniverse)) !== -1);
});
createSetting('heliumC2Challenge',
function () { return (_getChallenge2Info()) },
function () {
const specialChall = "Special challenges (" + (currSettingUniverse === 2 ? "Mayhem, Pandemonium, Desolation" : "Frigid, Experience") + ") can be run with this but they will ignore the " + _getChallenge2Info() + " settings and use the <b>Portal Zone</b> input for when to finish the run and portal.";
let description = "<p>Automatically portal into this C" + _getChallenge2Info()[1] + " when using the <b>Challenge " + _getChallenge2Info()[1] + "</b> Auto Portal setting.</p>";
description += "<p>C" + _getChallenge2Info()[1] + " challenges will appear here when they've been unlocked in the game.</p>";
description += "<p>When running a " + _getChallenge2Info() + ", <b>" + _getChallenge2Info() + " Runner Portal</b> will be used for your portal zone if <b>" + _getChallenge2Info() + " Runner</b> is enabled otherwise it will use the <b>Finish " + _getChallenge2Info() + "</b> setting. These can be found in the <b>" + _getChallenge2Info() + "</b> settings tab.</p>"
description += "<p>" + specialChall + "</p>";
return description;
}, 'dropdown', 'None', function () { return autoPortalChallenges('c2') }, 'Core', [1, 2],
function () {
const namesToCheck = ['Helium Per Hour', 'Radon Per Hour', 'Custom'];
return (
getPageSetting('autoPortal', currSettingUniverse) === 'Challenge 2' || getPageSetting('autoPortal', currSettingUniverse) === 'Challenge 3' || (namesToCheck.indexOf(getPageSetting('autoPortal', currSettingUniverse)) !== -1 && getPageSetting('heliumHourChallenge', currSettingUniverse).includes('Challenge')))
});
createSetting('autoPortalZone',
function () { return ('Portal Zone') },
function () {
let description = "<p>Will automatically portal once this zone is reached when using the <b>Custom OR One Off Challenges</b> Auto Portal settings.</p>";
description += "<p>Setting this to <b>200</b> would portal when you reach <b>zone 200</b>.</p>";
description += "<p>If this is set above your highest zone reached then it will allow you to pick not yet unlocked challenges up to this zone.</p>";
description += "<p><b>Recommended:</b> The zone you would like your run to end</p>";
return description;
}, 'value', 999, null, 'Core', [1, 2],
function () {
const namesToCheck = ['Challenge 2', 'Challenge 3', 'Custom', 'One Off Challenges'];
return (
namesToCheck.indexOf(getPageSetting('autoPortal', currSettingUniverse)) !== -1);
});
createSetting('heliumHrDontPortalBefore',
function () { return ("Don't Portal Before") },
function () {
let description = "<p>Will stop the script from automatically portaling before the specified zone when using the <b>" + _getPrimaryResourceInfo().name + " Per Hour</b> Auto Portal setting.</p>";
description += "<p>This is an additional check that prevents drops in " + _getPrimaryResourceInfo().name.toLowerCase() + " per hour from triggering Auto Portal.</p>";
description += "<p>If this is set above your highest zone reached then it will allow you to pick not yet unlocked challenges up to this zone.</p>";
description += "<p>Set to <b>0 or below</b> to disable this setting and assume any zone is okay to portal on.</p>";
description += "<p><b>Recommended:</b> The minimum zone you would like your run to reach</p>";
return description;
}, 'value', -1, null, 'Core', [1, 2],
function () {
return (
getPageSetting('autoPortal', currSettingUniverse).includes('Hour'))
});
createSetting('heliumHrBuffer',
function () { return (_getPrimaryResourceInfo().abv + '/Hr Buffer %') },
function () {
let description = "<p>When using the <b>" + _getPrimaryResourceInfo().name + " Per Hour</b> Auto Portal setting, it will portal if your " + _getPrimaryResourceInfo().name.toLowerCase() + " per hour drops by this settings % input lower than your best for current run.</p>";
description += "<p>Allows portaling midzone if you exceed the set buffer amount by 5x. For example a normal 2% buffer setting would now portal mid-zone if you fall below 10% buffer.</p>";
description += "<p><b>Set to 0 to disable this setting.</b></p>";
description += "<p><b>Recommended:</b> 4</p>";
return description;
}, 'value', 0, null, 'Core', [1, 2],
function () {
return (getPageSetting('autoPortal', currSettingUniverse).includes('Hour'))
});
createSetting('heliumHrPortal',
function () {
let hze =game.stats.highestLevel.valueTotal();
let portalOptions =['Auto Portal Immediately', 'Portal After Voids'];
if (currSettingUniverse === 1 && hze >= 230) portalOptions.push('Portal After Poison Voids');
return portalOptions;
},
function () {
let description = "<p>How you would like to portal when below your " + _getPrimaryResourceInfo().name.toLowerCase() + " per hour threshold.</p>";
description += "<p><b>Auto Portal Immediately</b><br>Will auto portal straight away.</p>";
description += "<p><b>Portal After Voids</b><br>Will run any remaining void maps then proceed to portal.</p>";
if (currSettingUniverse === 1 && game.stats.highestLevel.valueTotal() >= 230) description += "<p><b>Portal After Poison Voids</b><br>Will continue your run until you reach the next poison zone and run void maps there.</p>";
description += "<p><b>Recommended:</b> Portal After Voids</p>";
return description;
}, 'multitoggle', 0, null, 'Core', [1, 2],
function () {
return (getPageSetting('autoPortal', currSettingUniverse).includes('Hour'))
});
createSetting('heliumHrExitSpire',
function () { return ('Exit Spires for Voids') },
function () {
let description = "<p>Will automatically exit Spires to run your voids earlier when the <b>" + _getPrimaryResourceInfo().name + " Per Hour</b> Auto Portal setting is wanting to portal.</p>";
description += "<p><b>Recommended:</b> On</p>";
return description;
}, 'boolean', false, null, 'Core', [1],
function () { return (getPageSetting('autoPortal', currSettingUniverse).includes('Hour') && game.stats.highestLevel.valueTotal() >= 170) });
createSetting('autoPortalUniverseSwap',
function () { return ('Swap To Next Universe') },
function () {
let description = "<p>Will automatically swap to the next available universe when auto portaling.</p>";
description += "<p><b>You <b>must</b> have Auto Portal setup in both the current <b>and</b> following universe or Auto Portal will contiunue to portal into your current universe.</p>";
description += "<p><b>If enabled in all available universes it will portal into universe 1.</p>";
description += "<p><b>Recommended:</b> Off</p>";
return description;
}, 'boolean', false, null, 'Core', [1, 2],
function () { return (Fluffy.checkU2Allowed()) });
createSetting('pauseScript',
function () { return ('Pause AutoTrimps') },
function () {
let description = "<p>Pauses the AutoTrimps script.</p>";
description += "<p><b>Graphs will continue tracking data while paused.</b></p>";
return description;
}, 'boolean', null, null, 'Core', [0]);
let $pauseScript = document.getElementById('pauseScript');
$pauseScript.parentNode.style.setProperty('float', 'right');
$pauseScript.parentNode.style.setProperty('margin-right', '1.2vw');
$pauseScript.parentNode.style.setProperty('margin-left', '0');
createSetting('autoEggs',
function () { return ('Auto Eggs') },
function () {
let description = "<p>Clicks easter eggs when they are active in the world.</p>";
description += "<p><b>Recommended:</b> On</p>";
return description;
},
'boolean', false, null, 'Core', [0],
function () { return (!game.worldUnlocks.easterEgg.locked) });
let $eggSettings = document.getElementById('autoEggs');
$eggSettings.parentNode.style.setProperty('float', 'right');
$eggSettings.parentNode.style.setProperty('margin-right', '1vw');
$eggSettings.parentNode.style.setProperty('margin-left', '0');
}
const displayJobs = true;
if (displayJobs) {
createSetting('jobType',
function () { return (["Don't Buy Jobs", 'Auto Ratios', 'Manual Ratios']) },
function () {
let description = "<p>Click the left side of the button to toggle between the AutoJobs settings. Each of them will adjust the 3 primary resource jobs but you'll have to manually set the rest by clicking the cogwheel on the right side of this button.</p>";
description += "<p><b>Don't Buy Jobs</b><br>Will disable the script from purchasing any jobs.</p>";
description += "<p><b>Auto Ratios</b><br>Automatically adjusts the 3 primary resource job worker ratios based on current game progress. For more detailed information on this check out the Help section for this setting by clicking on the cogwheel.</p>";
description += "<p><b>Manual Ratios</b><br>Buys jobs for your trimps according to the ratios set in the cogwheel popup.</p>";
description += "<p>Automatically swaps the games default hiring setting <b>Not Firing For Jobs</b> to <b>Firing For Jobs</b>.</p>";
description += "<p>Map setting job ratios always override both <b>Auto Ratios</b> & <b>Manual Ratios</b> when AutoMaps is enabled.</p>";
return description;
}, 'multitoggle', 1, null, 'Jobs', [1, 2],
function () { return (false) });
createSetting('jobSettingsArray',
function () { return ('Job Settings') },
function () { return ('Click to adjust settings.') },
'mazDefaultArray', {
Farmer: { enabled: true, ratio: 1 },
Lumberjack: { enabled: true, ratio: 1 },
Miner: { enabled: true, ratio: 1 },
Explorer: { enabled: true, percent: 10 },
Trainer: { enabled: true, percent: 25 },
Magmamancer: { enabled: true, percent: 100 },
Meteorologist: { enabled: true, percent: 100 },
Worshipper: { enabled: true, percent: 5 },
FarmersUntil: { enabled: false, zone: 999 },
NoLumberjacks: { enabled: false }
}, null, 'Jobs', [1, 2],
function () { return false });
createSetting('geneAssist',
function () { return ('Gene Assist') },
function () {
let description = "<p>Master switch for whether the script will do any form of Geneticist purchasing.</p>";
description += "<p>Additional settings appear when enabled.</p>";
description += "<p><b>Will disable the ingame Geneticistassist setting.</b></p>";
description += "<p><b>Recommended:</b> On</p>";
return description;
}, 'boolean', false, null, 'Jobs', [1]);
createSetting('geneAssistPercent',
function () { return ('GA: Gene Assist %') },
function () {
let description = "<p>Gene Assist will only hire geneticists if they cost less than this value.</p>";
description += "<p>If this setting is 1 it will only buy geneticists if they cost less than 1% of your food.</p>";
description += "<p>Setting this to 0 or -1 will disable all of the <b>Gene Assist</b> settings.</p>";
description += "<p><b>Recommended:</b> 1</p>";
return description;
}, 'value', 1, null, 'Jobs', [1],
function () { return (autoTrimpSettings.geneAssist.enabled) });
createSetting('geneAssistTimer',
function () { return ('GA: Timer') },
function () {
let description = "<p>This is the default time your gene assist settings will use.</p>";
description += "<p>Setting this to 0 or -1 will disable all of the <b>Gene Assist</b> settings.</p>";
description += "<p><b>Recommended:</b> 10</p>";
return description;
}, 'value', -1, null, 'Jobs', [1],
function () { return (autoTrimpSettings.geneAssist.enabled) });
createSetting('geneAssistTimerHard',
function () { return ('GA: Hard Chall Timer') },
function () {
let description = "<p>Gene Assist will use the value set here when running challenges that are considered hard (Nom, Toxicity, Lead). </p>";
description += "<p>Setting this to 0 or -1 will disable this setting.</p>";
description += "<p>This setting is disabled if you have the <b>Angelic</b> mastery.</p>";
description += "<p>Overwrites <b>GA: Timer</b>, <b>GA: Before Z</b> and <b>GA: After Z</b> settings.</p>";
description += "<p><b>Recommended:</b> 8</p>";
return description;
}, 'value', 8, null, 'Jobs', [1],
function () { return (autoTrimpSettings.geneAssist.enabled) });
createSetting('geneAssistTimerBleedVoids',
function () { return ('GA: Bleed Voids') },
function () {
let description = "<p>Gene Assist will use the value set here when you don't have a Void Hits Survived value of Infinity and you're running bleed void maps. </p>";
description += "<p>Setting this to 0 or -1 will disable this setting.</p>";
description += "<p>Overwrites <b>GA: Timer</b>, <b>GA: Before Z</b> and <b>GA: After Z</b> settings.</p>";
description += "<p><b>Recommended:</b> 6</p>";
return description;
}, 'value', -1, null, 'Jobs', [1],
function () { return (autoTrimpSettings.geneAssist.enabled) });
createSetting('geneAssistTimerElectricity',
function () { return ('GA: Electricity Timer') },
function () {
let description = "<p>Gene Assist will use the value set here when running the Electricity challenge. </p>";
description += "<p>Setting this to 0 or -1 will disable this setting.</p>";
description += "<p>This also overwrites your breed timer in the <b>Mapocalypse</b> challenge.</p>";
description += "<p>Overwrites <b>GA: Timer</b>, <b>GA: Before Z</b> and <b>GA: After Z</b> settings.</p>";
description += "<p><b>Recommended:</b> 2.5</p>";
return description;
}, 'value', 2.5, null, 'Jobs', [1],
function () { return (autoTrimpSettings.geneAssist.enabled) });
createSetting('geneAssistTimerSpire',
function () { return ('GA: Spire Timer') },
function () {
let description = "<p>Gene Assist will use the value set here when inside of active Spires.</p>";
description += "<p>Setting this to 0 or -1 will disable this setting.</p>";
description += "<p>Overwrites <b>GA: Timer</b>, <b>GA: Before Z</b> and <b>GA: After Z</b> settings.</p>";
return description;
}, 'value', -1, null, 'Jobs', [1],
function () { return (autoTrimpSettings.geneAssist.enabled) });
createSetting('geneAssistZoneBefore',
function () { return ('GA: Before Z') },
function () {
let description = "<p>Gene Assist will use the value set in <b>GA: Before Z Timer</b> when below this zone.</p>";
description += "<p>Setting this to 0 or -1 will disable this setting.</p>";
description += "<p><b>Recommended:</b> The zone where you stop 1 shotting in a new portal</p>";
return description;
}, 'value', -1, null, 'Jobs', [1],
function () { return (autoTrimpSettings.geneAssist.enabled) });
createSetting('geneAssistTimerBefore',
function () { return ('GA: Before Z Timer') },
function () {
let description = "<p>Gene Assist will use the value set here when below the zone in <b>GA: Before Z Timer</b>.</p>";
description += "<p>Setting this to 0 or -1 will disable this setting.</p>";
description += "<p><b>Recommended:</b> 2</p>";
return description;
}, 'value', -1, null, 'Jobs', [1],
function () { return (autoTrimpSettings.geneAssist.enabled) });
createSetting('geneAssistZoneAfter',
function () { return ('GA: After Z') },
function () {
let description = "<p>Gene Assist will use the value set in <b>GA: After Z Timer</b> when after this zone.</p>";
description += "<p>Setting this to 0 or -1 will disable this setting.</p>";
description += "<p><b>Recommended:</b> The zone where you stop 1 shotting after using your <b>GA: Timer</b> setting in a new portal</p>";
return description;
}, 'value', -1, null, 'Jobs', [1],
function () { return (autoTrimpSettings.geneAssist.enabled) });
createSetting('geneAssistTimerAfter',
function () { return ('GA: After Z Timer') },
function () {
let description = "<p>Gene Assist will use the value set here when below the zone in <b>GA: After Z Timer</b>.</p>";
description += "<p>Setting this to 0 or -1 will disable this setting.</p>";
description += "<p><b>Recommended:</b> Your <b>Anticipation</b> perk timer</p>";
return description;
}, 'value', -1, null, 'Jobs', [1],
function () { return (autoTrimpSettings.geneAssist.enabled) });
createSetting('geneAssistTimerDaily',
function () { return ('GA: Daily Timer') },
function () {
let description = "<p>Gene Assist will use the value set here when running dailies. </p>";
description += "<p>Setting this to 0 or -1 will disable this setting.</p>";
description += "<p>Overwrites <b>GA: Timer</b>, <b>GA: Before Z</b> and <b>GA: After Z</b> settings.</p>";
description += "<p><b>Recommended:</b> 2</p>";
return description;
}, 'value', -1, null, 'Jobs', [1],
function () { return (autoTrimpSettings.geneAssist.enabled) });
createSetting('geneAssistTimerDailyHard',
function () { return ('GA: Daily Timer Hard') },
function () {
let description = "<p>Gene Assist will use the value set here when running dailies that are considered hard (Plagued, Bogged). </p>";
description += "<p>Setting this to 0 or -1 will disable this setting.</p>";
description += "<p>This setting won't do anything on Bogged dailies if you have the <b>Angelic</b> mastery.</p>";
description += "<p>Overwrites <b>GA: Timer</b>, <b>GA: Before Z</b> and <b>GA: After Z</b> settings.</p>";
description += "<p><b>Recommended:</b> 2</p>";
return description;
}, 'value', -1, null, 'Jobs', [1],
function () { return (autoTrimpSettings.geneAssist.enabled) });
createSetting('geneAssistTimerSpireDaily',
function () { return ('GA: Daily Spire Timer') },
function () {
let description = "<p>Gene Assist will use the value set here when inside of active Spires in dailies.</p>";
description += "<p>Setting this to 0 or -1 will disable this setting.</p>";
description += "<p>Overwrites <b>GA: Timer</b>, <b>GA: Before Z</b> and <b>GA: After Z</b> settings.</p>";
description += "<p><b>Recommended:</b> Your <b>Anticipation</b> perk timer</p>";
return description;
}, 'value', -1, null, 'Jobs', [1],
function () { return (autoTrimpSettings.geneAssist.enabled) });
createSetting('geneAssistTimerC2',
function () { return ('GA: ' + _getChallenge2Info() + ' Timer') },
function () {
let description = "<p>Gene Assist will use the value set here when running " + _getChallenge2Info() + "s.</p>";
description += "<p>Setting this to 0 or -1 will disable this setting.</p>";
description += "<p>Overwrites <b>GA: Timer</b>, <b>GA: Before Z</b> and <b>GA: After Z</b> settings.</p>";
description += "<p><b>Recommended:</b> Use regular Gene Assist settings instead of this</p>";
return description;
}, 'value', -1, null, 'Jobs', [1],
function () { return (autoTrimpSettings.geneAssist.enabled) });
createSetting('geneAssistTimerSpireC2',
function () { return ('GA: ' + _getChallenge2Info() + ' Spire Timer') },
function () {
let description = "<p>Gene Assist will use the value set here when inside of active Spires in " + _getChallenge2Info() + "s.</p>";
description += "<p>Setting this to 0 or -1 will disable this setting.</p>";
description += "<p>Overwrites <b>GA: Timer</b>, <b>GA: Before Z</b> and <b>GA: After Z</b> settings.</p>";
description += "<p><b>Recommended:</b> Your <b>Anticipation</b> perk timer</p>";
return description;
}, 'value', -1, null, 'Jobs', [1],
function () { return (autoTrimpSettings.geneAssist.enabled) });
}
const displayBuildings = true;
if (displayBuildings) {
createSetting('buildingsType',
function () { return ('AT AutoStructure') },
function () {
let description = "Click the left side of the button to toggle this on or off.</p>";
description += "<p>Click the cog icon on the right side of this button to tell your Foremen what you want and when you want it.</p>";
description += "For more detailed information for this setting check out its Help section.</p>";
return description;
}, 'boolean', 'true', null, 'Buildings', [1, 2],
function () { return (false) });
createSetting('buildingSettingsArray',
function () { return ('Building Settings') },
function () { return ('Click to adjust settings.') },
'mazDefaultArray', {
Hut: { enabled: true, percent: 80, buyMax: 200 },
House: { enabled: true, percent: 80, buyMax: 200 },
Mansion: { enabled: true, percent: 80, buyMax: 200 },
Hotel: { enabled: true, percent: 80, buyMax: 200 },
Wormhole: { enabled: false, percent: 1, buyMax: 1 },
Resort: { enabled: true, percent: 100, buyMax: 200 },
Gateway: { enabled: true, percent: 10, buyMax: 200 },
Collector: { enabled: true, percent: 100, buyMax: 200 },
Gym: { enabled: true, percent: 75, buyMax: 0 },
Tribute: { enabled: true, percent: 20, buyMax: 0 },
Nursery: { enabled: true, percent: 100, buyMax: 0, fromZ: 0 },
Smithy: { enabled: true, percent: 100, buyMax: 0 },
Laboratory: { enabled: true, percent: 100, buyMax: 0 },
SafeGateway: { enabled: false, mapCount: 1, zone: 0 }
}, null, 'Buildings', [1, 2],
function () { return false });
createSetting('warpstation',
function () { return ('Warpstations') },
function () {
let description = "<p>Enable this to allow Warpstation purchasing.</p>";
description += "<p><b>Will only function properly with AT AutoStructure enabled.</b></p>";
description += "<p><b>Recommended:</b> On</p>";
return description;
}, 'boolean', false, null, 'Buildings', [1],
function () { return (game.stats.highestLevel.valueTotal() >= 60) });
createSetting('warpstationPct',
function () { return ('Warpstation Percent') },
function () {
let description = "<p>What percentage of resources to spend on Warpstations.</p>";
description += "<p><b>The script will still purchase Gigastations at 100% resources.</b></p>";
description += "<p><b>Recommended:</b> 25</p>";
return description;
}, 'value', 25, null, 'Buildings', [1],
function () { return (autoTrimpSettings.warpstation.enabled) });
createSetting('firstGigastation',
function () { return ('First Gigastation') },
function () {
let description = "<p>The amount of warpstations to purchase before your first gigastation.</p>";
description += "<p><b>Recommended:</b> 20</p>";
return description;
}, 'value', 20, null, 'Buildings', [1],
function () { return (autoTrimpSettings.warpstation.enabled) });
createSetting('deltaGigastation',
function () { return ('Delta Gigastation') },
function () {
let description = "<p>How many extra warpstations to buy for each gigastation.</p>";
description += "<pSupports decimal values. For example 2.5 will buy +2/+3/+2/+3...</p>";
description += "<p>Once your first gigastation of a run has been purchased this setting won't be evaluated again until your next run.</p>";
description += "<p><b>You must have buy upgrades enabled!</b></p>";
description += "<p><b>Recommended:</b> 2</p>";
return description;
}, 'value', 2, null, 'Buildings', [1],
function () { return (autoTrimpSettings.warpstation.enabled) }
);
createSetting('autoGigas',
function () { return ('Auto Gigas') },
function () {
let description = "<p>If enabled, the script will buy its first Gigastation if: <br>A) Has more than 2 Warps & <br>B) Can\'t afford more Coords & <br>C) (Only if Custom Delta Factor > 20) Lacking Health or Damage & <br>D) (Only if Custom Delta Factor > 20) Has run at least 1 map stack.</p>";
description += "<p>Then, it'll calculate the delta based on your Custom Delta Factor and your Auto Portal/VM zone (whichever is higher), or Daily Auto Portal/VM zone, or " + _getChallenge2Info() + " zone, or Custom AutoGiga Zone.</p>";
description += "<p>Once your first gigastation of a run has been purchased this setting won't be evaluated again until your next run.</p>";
description += "<p><b>You must have the upgrades setting enabled for this setting to run!</b></p>";
description += "<p><b>Recommended:</b> On</p>";
return description;
},
'boolean', 'true', null, 'Buildings', [1],
function () { return (autoTrimpSettings.warpstation.enabled) });
createSetting('autoGigaTargetZone',
function () { return ('Custom Target Zone') },
function () {
let description = "<p>The zone to be used as a the target zone when calculating the Auto Gigas delta.</p>";
description += "<pValues below 60 will be discarded.</p>";
description += "<p>Once your first gigastation of a run has been purchased this setting won't be evaluated again until your next run.</p>";
description += "<p><b>Recommended:</b> Current challenge end zone</p>";
return description;
}, 'value', -1, null, 'Buildings', [1],
function () { return (autoTrimpSettings.warpstation.enabled && autoTrimpSettings.autoGigas.enabled) });
createSetting('autoGigaDeltaFactor',
function () { return ('Custom Delta Factor') },
function () {
let description = "<p>This setting is used to calculate a better Delta. Think of this setting as how long your target zone takes to complete divided by the zone you bought your first giga in.</p>";
description += "<p>Basically, a higher number means a higher delta.</p>";
description += "<p>Values below 1 will default to 10.</p>";
description += "<p>Once your first gigastation of a run has been purchased this setting won't be evaluated again until your next run.</p>";
description += "<p><b>Recommended:</b> 1-2 for very quick runs. 5-10 for regular runs where you slow down at the end. 20-100+ for very pushy runs</p>";
return description;
}, 'value', -1, null, 'Buildings', [1],
function () { return (autoTrimpSettings.warpstation.enabled && autoTrimpSettings.autoGigas.enabled) });
createSetting('advancedNurseries',
function () { return ('Advanced Nurseries') },
function () {
let description = "<p>Will only buy nurseries if you need more health and you have more map stacks than the <b>Map Bonus Health</b> setting, which becomes a very important setting.</p>"
description += "<p>Requires Nurseries to be setup in the AT AutoStructure setting and will only buy Nurseries if past the 'From' input. Overrides the 'Up To' input and allows you to set 0 without it buying as many as possible.</p>"
description += "<p><b>Recommended:</b> On. Nurseries set to <b>Up To: 0</b> and <b>From: 230</b></p>";
return description;
},
'boolean', true, null, 'Buildings', [1],
function () { return (game.stats.highestLevel.valueTotal() >= 230) });
createSetting('advancedNurseriesMapCap',
function () { return ('AN: Hits Survived Maps') },
function () {
let description = "<p>The amount of Hits Survived maps you want to start buying nurseries from.</p>"
description += "<p>If your Hits Survived setting is set to run less maps than this then it will use that value instead.</p>";
description += "<p><b>Recommended:</b> 3</p>";
return description;
},
'value', -1, null, 'Buildings', [1],
function () { return (game.stats.highestLevel.valueTotal() >= 230 && autoTrimpSettings.advancedNurseries.enabled) });
createSetting('advancedNurseriesAmount',
function () { return ('AN: Amount') },
function () {
let description = "<p>The amount of Nurseries that the script will attempt to purchase everytime you need additional health from Advanced Nurseries.</p>"
description += "<p><b>Recommended:</b> 2</p>";
return description;
},
'value', 2, null, 'Buildings', [1],
function () { return (game.stats.highestLevel.valueTotal() >= 230 && autoTrimpSettings.advancedNurseries.enabled) });
createSetting('advancedNurseriesIce',
function () { return (['AN: Buy In Ice', "AN: Disable In Ice", 'AN: Disable In Ice (Spire)']) },
function () {
let description = "<p>How you would like Nursery purchasing to be handled during Ice empowerment zones.</p>";
description += "<p><b>AN: Buy In Ice</b><br>Will purchase Nurseries regardless of if you're in an Ice empowerment zone.</p>";
description += "<p><b>AN: Disable In Ice</b><br>Will stop <b>Advanced Nurseries</b> from purchasing any nurseries during <b>Ice</b> empowerment zones.</p>";
description += "<p><b>AN: Disable Ice (Spire)</b><br>Works the same as <b>AN: Disable In Ice</b> except this setting will still purchase nurseries when inside of a Spire</p>";
description += "<p><b>Recommended:</b> AN: Buy In Ice</p>";
return description;
},
'multitoggle', 0, null, 'Buildings', [1],
function () { return (game.stats.highestLevel.valueTotal() >= 236 && autoTrimpSettings.advancedNurseries.enabled) });
}
const displayEquipment = true;
if (displayEquipment) {
createSetting('equipOn',
function () { return ('Auto Equip') },
function () {
let description = "<p>Master switch for whether the script will do any form of equipment purchasing.</p>";
description += "<p>There's settings in here to identify when to purchase gear and if it should purchase prestiges.<br></p>";
description += "<p><b>Recommended:</b> On</p>";
return description;
}, 'boolean', true, null, 'Equipment', [1, 2]);
createSetting('equipCutOffHD',
function () { return ('AE: HD Cut-off') },
function () {
let description = "<p>If your H:D (enemyHealth/trimpDamage) ratio is above this value it will override your <b>AE: Percent</b> input when looking at " + (currSettingUniverse !== 2 ? "weapon purchases " : "") + "and set your spending percentage to 100% of resources available.</p>";
description += "<p>Goal with this setting is to have it purchase gear whenever you slow down in world.<br></p>";
description += "<p>Your HD ratio can be seen in either the <b>Auto Maps status tooltip</b> or the AutoTrimp settings <b>Help</b> tab.</p>";
description += "<p><b>Recommended:</b> 1</p>";
return description;
}, 'value', 1, null, 'Equipment', [1, 2],
function () { return (getPageSetting('equipOn', currSettingUniverse)) });
createSetting('equipCutOffHS',
function () { return ('AE: HS Cut-off') },
function () {
let description = "<p>If your Hits Survived (trimpHealth/enemyDamage) ratio is below this value it will override your <b>AE: Percent</b> input when looking at armor purchases and set your spending percentage to 100% of resources available.</p>";
description += "<p>Goal with this setting is to have it purchase gear whenever you slow down in world.<br></p>";
description += "<p>Your Hits Survived ratio can be seen in either the <b>Auto Maps status tooltip</b> or the AutoTrimp settings <b>Help</b> tab.</p>";
description += "<p><b>Recommended:</b> 2.5</p>";
return description;
}, 'value', 2.5, null, 'Equipment', [1, 2],
function () { return (getPageSetting('equipOn', currSettingUniverse)) });
createSetting('equipCapAttack',
function () { return ('AE: Weapon Cap') },
function () {
let description = "<p>The value you want weapon equipment to stop being purchased at.</p>";
description += "<p>Equipment levels are capped at <b>9</b> when a prestige is available for that equip to ensure the script doesn't unnecessarily spend resources on them when prestiges would be more efficient.</p>";
description += "<p><b>Recommended:</b> 20 during earlygame and gradually raise it to 250 as needed.</p>";
return description;
}, 'value', 20, null, 'Equipment', [1, 2],
function () { return (getPageSetting('equipOn', currSettingUniverse)) });
createSetting('equipCapHealth',
function () { return ('AE: Armour Cap') },
function () {
let description = "<p>The value you want armor equipment to stop being purchased at.</p>";
description += "<p>Equipment levels are capped at <b>9</b> when a prestige is available for that equip to ensure the script doesn't unnecessarily spend resources on them when prestiges would be more efficient.</p>";
description += "<p><b>Recommended:</b> 20 during earlygame and gradually raise it to 250 as needed.</p>";
return description;
}, 'value', 20, null, 'Equipment', [1, 2],
function () { return (getPageSetting('equipOn', currSettingUniverse)) });
createSetting('equipZone',
function () { return ('AE: Zone') },
function () {
let description = "<p>What zone to stop caring about what percentage of resources you're spending and buy as many prestiges and equipment as possible.</p>";
description += "<p>Can input multiple zones such as <b>200,231,251</b>, doing this will spend all your resources purchasing gear and prestiges on each zone input.</p>";
description += "<p>You are able to enter a zone range, this can be done by using a decimal point between number ranges e.g. <b>23.120</b> which will cause the zone check to set your purchasing percentage to 100% between zones 23 and 120. <b>This can be used in conjunction with other zones too, just seperate inputs with commas!</b></p>";
description += "<p>If inside one of these zones it will override your <b>AE: Percent</b> input and set your spending percentage to 100% of resources available.</p>"
description += "<p><b>Recommended:</b> 999</p>";
return description;
}, 'multiValue', [-1], null, 'Equipment', [1, 2],
function () { return (getPageSetting('equipOn', currSettingUniverse)) });
createSetting('equipPercent',
function () { return ('AE: Percent') },
function () {
let description = "<p>What percent of resources you'd like to spend on equipment.</p>";
description += "<p>If set to <b>0 or below</b> it will overide this and set the equip spending percent to 100%.</p>";
description += "<p><b>Recommended:</b> 10</p>";
return description;
}, 'value', 10, null, 'Equipment', [1, 2],
function () { return (getPageSetting('equipOn', currSettingUniverse)) });
createSetting('equip2',
function () { return ('AE: 2') },
function () {
let description = "<p>This will make the script always purchase a second level of weapons and armor regardless of efficiency.</p>";
description += "<p><b>Recommended:</b> On</p>";
return description;
}, 'boolean', true, null, 'Equipment', [1, 2],
function () { return (getPageSetting('equipOn', currSettingUniverse)) });
createSetting('equipPrestige',
function () { return (['AE: Prestige Off', 'AE: Maybe Prestige', 'AE: Prestige', 'AE: Always Prestige']) },
function () {
const trimple = currSettingUniverse === 1 ? "<b>Trimple Of Doom</b>" : "<b>Atlantrimp</b>";
let description = "<p>Will control how equipment levels & prestiges are purchased.</p>";
description += "<p>Equipment levels are capped at <b>9</b> when a prestige is available for that equip to ensure the script doesn't unnecessarily spend resources on them when prestiges would be more efficient.</p>";
description += "<p><b>AE: Prestige Off</b><br>Will only purchase prestiges for equipment when you have 6 or more levels in it.</p>";
description += "<p><b>AE: Maybe Prestige</b><br>Will only purchase prestiges when they are more efficient than leveling the piece of equipment further.</p>";
description += "<p><b>AE: Prestige</b><br>Overrides the need for levels in your current equips before a prestige will be purchased. Will purchase gear levels again when you have run " + trimple + ".";
description += "<br>If <b>" + trimple + "</b> has been run it will buy any prestiges that cost less than what you have input in the <b>AE: Prestige Pct</b> setting then spend your remaining resources on equipment levels.</p>";
description += "<p><b>AE: Always Prestige</b><br>Always buys prestiges of weapons and armor regardless of efficiency. Will override the <b>AE: Zone</b> setting for an equip if it has a prestige available.</p>";
description += "<p><b>Recommended:</b> AE: Prestige</p>";
return description;
}, 'multitoggle', 2, null, 'Equipment', [1, 2],
function () { return (getPageSetting('equipOn', currSettingUniverse)) });
createSetting('equipPrestigePct',
function () { return ('AE: Prestige Pct') },
function () {
const trimple = currSettingUniverse === 1 ? "<b>Trimple Of Doom</b>" : "<b>Atlantrimp</b>";
let description = "<p>What percent of resources you'd like to spend on equipment before prestiges will be priorities over them.</p>";
description += "Only impacts prestige purchasing when <b>AE: Prestige</b> is selected and " + trimple + " has been run.</p>";
description += "<p><b>Recommended:</b> 6</p>";
return description;
}, 'value', 6, null, 'Equipment', [1, 2],
function () { return (getPageSetting('equipOn', currSettingUniverse) && getPageSetting('equipPrestige', currSettingUniverse) === 2) });
createSetting('equipNoShields',
function () { return ('AE: No Shields') },
function () {
let description = "<p>Will stop the purchase of Shield equipment levels & prestiges.</p>";
description += "<p><b>This is only ever useful in very niche scenarios.</b></p>";
description += "<p><b>Recommended:</b> Off</p>";
return description;
}, 'boolean', false, null, 'Equipment', [1, 2],
function () { return (getPageSetting('equipOn', currSettingUniverse)) });
createSetting('equipPortal',
function () { return ('AE: Portal') },
function () {
let description = "<p>Will ensure Auto Equip is enabled after portalling.</p>";
description += "<p><b>Recommended:</b> On</p>";
return description;
}, 'boolean', false, null, 'Equipment', [1, 2]);
createSetting('equipShieldBlock',
function () { return ('Buy Shield Block') },
function () {
let description = "<p>Will allow the purchase of the shield block upgrade.</p>";
description += "<p><b>When this setting is enabled it will cause the script to automatically run <b>The Block</b> unique map when it gets unlocked.</b></p>";
description += "<p><b>Recommended:</b> On until you can reach zone 40</p>";
return description;
}, 'boolean', 55 > game.stats.highestLevel.valueTotal(), null, 'Equipment', [1]);
}
const displayCombat = true;
if (displayCombat) {
createSetting('autoFight',
function () { return (['Better Auto Fight Off', 'Better Auto Fight', 'Vanilla Auto Fight']) },
function () {
let description = "<p>Controls how combat is handled by the script.</p>";
description += "<p><b>Better Auto Fight Off</b><br>Disables this setting.</p>";
description += "<p><b>Better Auto Fight</b><br>Sends a new army to fight if your current army is dead, new squad ready, new squad breed timer target exceeded, and if breeding takes under 0.5 seconds.</p>";
description += "<p><b>Vanilla Auto Fight</b><br>Will make sure the games AutoFight setting is enabled at all times and ensures you start fighting on portal until you get the Bloodlust upgrade.</p>";
description += "<p><b>Recommended:</b> Better Auto Fight</p>";
return description;
}, 'multitoggle', 1, null, 'Combat', [1, 2]);
createSetting('autoAbandon',
function () { return (['Never Abandon', 'Always Abandon', 'Smart Abandon']) },
function () {
let description = "<p>Controls whether to force abandon trimps for mapping.</p>";
description += "<p><b>Never Abandon</b><br>Never abandon trimps.</p>";
description += "<p><b>Always Abandon</b><br>Always abandon trimps.</p>";
description += "<p><b>Smart Abandon</b><br>Abandon trimps when the next group of trimps is ready, or when (0 + overkill) cells away from cell 100.</p>";
description += "<p><b>Recommended:</b> Smart Abandon</p>";
return description;
}, 'multitoggle', 2, null, 'Combat', [1, 2]);
createSetting('floorCritCalc',
function () { return ('Never Crit Calc') },
function () {
let description = "<p>When doing trimp damage calculations this will floor your crit chance to make the script assume you will never crit.</p>";
description += "<p><b>Recommended:</b> Off</p>";
return description;
}, 'boolean', false, null, 'Combat', [1, 2]);
createSetting('ignoreCrits',
function () { return (['Safety First', 'Ignore Void Strength', 'Ignore All Crits']) },
function () {
let description = "<p>Enabling this setting will force any enemy damage calculations to ignore enemy crits.</p>";
description += "<p><b>Safety First</b><br>Disables this setting.</p>";
description += "<p><b>Ignore Void Strength</b><br>Will ignore crits from enemies in Void maps.</p>";
description += "<p><b>Ignore All Crits</b><br>Will ignore crits from enemies in challenges, daily mods or void maps.</p>";
description += "<p><b>Recommended:</b> Safety First</p>";
return description;
}, 'multitoggle', 0, null, 'Combat', [1, 2],
function () { return (game.global.totalPortals > 0) });
createSetting('AutoStance',
function () { return (['Auto Stance Off', 'Auto Stance', 'D Stance']) },
function () {
let description = "<p>Enabling this setting will allow the script to swap stances to stop you having to do it manually.</p>";
description += "<p><b>Auto Stance Off</b><br>Disables this setting.</p>";
description += "<p><b>Auto Stance</b><br>Automatically swap stances to avoid death. Prioritises damage when you have enough health to survive.</p>";
description += "<p><b>D stance</b><br>Keeps you in D stance regardless of your armies health.</p>";
description += "<p><b>Recommended:</b> Auto Stance</p>";