-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathlogic.js
More file actions
2028 lines (1904 loc) · 194 KB
/
Copy pathlogic.js
File metadata and controls
2028 lines (1904 loc) · 194 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 refreshLogicForStuff() {
if(Known.kokiri_sword == true) {Logic.kokiri_sword = Location_Logic[Location.kokiri_sword];} else{Logic.kokiri_sword = false;}
if(Known.farores_wind == true) {Logic.farores_wind = Location_Logic[Location.farores_wind];} else{Logic.farores_wind = false;}
if(Known.slingshot1 == true) {Logic.slingshot1 = Location_Logic[Location.slingshot1];}
if(Known.slingshot2 == true) {Logic.slingshot2 = Location_Logic[Location.slingshot2];}
if(Known.slingshot3 == true) {Logic.slingshot3 = Location_Logic[Location.slingshot3];}
Logic.slingshot = Logic.slingshot1 || Logic.slingshot2 || Logic.slingshot3;
if(Known.boomerang == true) {Logic.boomerang = Location_Logic[Location.boomerang];} else{Logic.boomerang = false;}
if(Known.rutos_letter == true) {Logic.rutos_letter = Location_Logic[Location.rutos_letter];} else{Logic.rutos_letter = false;}
if(Known.bottle1 == true) {Logic.bottle1 = Location_Logic[Location.bottle1];}
if(Known.bottle2 == true) {Logic.bottle2 = Location_Logic[Location.bottle2];}
if(Known.bottle3 == true) {Logic.bottle3 = Location_Logic[Location.bottle3];}
if(Known.bottle4 == true) {Logic.bottle4 = Location_Logic[Location.bottle4];}
Logic.bottle = (Logic.rutos_letter && Logic.child_can_enter_domain) || Logic.bottle1 || Logic.bottle2 || Logic.bottle3 || Logic.bottle4;
if(Known.scale1 == true) {Logic.scale1 = Location_Logic[Location.scale1]; }
if(Known.scale2 == true) {Logic.scale2 = Location_Logic[Location.scale2]; }
Logic.silver_scale = Logic.scale1 || Logic.scale2;
Logic.golden_scale = Logic.scale1 && Logic.scale2;
if(Known.bomb_bag1 == true) {Logic.bomb_bag1 = Location_Logic[Location.bomb_bag1];}
if(Known.bomb_bag2 == true) {Logic.bomb_bag2 = Location_Logic[Location.bomb_bag2];}
if(Known.bomb_bag3 == true) {Logic.bomb_bag3 = Location_Logic[Location.bomb_bag3];}
Logic.bomb_bag = Logic.bomb_bag1 || Logic.bomb_bag2 || Logic.bomb_bag3;
if(Known.hammer == true) {Logic.hammer = Location_Logic[Location.hammer];} else{Logic.hammer= false;}
if(Known.bow1 == true) {Logic.bow1 = Location_Logic[Location.bow1];}
if(Known.bow2 == true) {Logic.bow2 = Location_Logic[Location.bow2];}
if(Known.bow3 == true) {Logic.bow3 = Location_Logic[Location.bow3];}
Logic.bow = Logic.bow1 || Logic.bow2 || Logic.bow3;
if(Known.hookshot1 == true) {Logic.hookshot1 = Location_Logic[Location.hookshot1];}
if(Known.hookshot2 == true) {Logic.hookshot2 = Location_Logic[Location.hookshot2];}
Logic.hookshot = Logic.hookshot1 || Logic.hookshot2;
Logic.longshot = Logic.hookshot1 && Logic.hookshot2;
if(Known.strength1 == true) {Logic.strength1 = Location_Logic[Location.strength1];}
if(Known.strength2 == true) {Logic.strength2 = Location_Logic[Location.strength2];}
if(Known.strength3 == true) {Logic.strength3 = Location_Logic[Location.strength3];}
Logic.goron_bracelet = Logic.strength1 || Logic.strength2 || Logic.strength3;
Logic.silver_gauntlets = (Logic.strength1 && Logic.strength2) || (Logic.strength1 && Logic.strength3) || (Logic.strength2 && Logic.strength3)
Logic.golden_gauntlets = Logic.strength1 && Logic.strength2 && Logic.strength3;
if(Known.mirror_shield == true) {Logic.mirror_shield = Location_Logic[Location.mirror_shield];} else{Logic.mirror_shield = false;}
if(Known.big_poe == true) {Logic.big_poe = Location_Logic[Location.big_poe];} else{Logic.big_poe= false;}
if(Known.iron_boots == true) {Logic.iron_boots = Location_Logic[Location.iron_boots];} else{Logic.iron_boots = false;}
if(Known.hover_boots == true) {Logic.hover_boots = Location_Logic[Location.hover_boots];} else{Logic.hover_boots = false;}
if(Known.magic1 == true) {Logic.magic1 = Location_Logic[Location.magic1];}
if(Known.magic2 == true) {Logic.magic2 = Location_Logic[Location.magic2];}
Logic.magic = Logic.magic1 || Logic.magic2;
if(Known.dins_fire == true) {Logic.dins_fire = Location_Logic[Location.dins_fire];} else{Logic.dins_fire = false;}
if(Known.fire_arrows == true) {Logic.fire_arrows = Location_Logic[Location.fire_arrows];} else{Logic.fire_arrows = false;}
if(Known.wallet1 == true) {Logic.wallet1 = Location_Logic[Location.wallet1];}
if(Known.wallet2 == true) {Logic.wallet2 = Location_Logic[Location.wallet2];}
if(Known.wallet3 == true) {Logic.wallet3 = Location_Logic[Location.wallet3];}
Logic.adults_wallet = Logic.wallet1 || Logic.wallet2 || Logic.wallet3;
Logic.giants_wallet = (Logic.wallet1 && Logic.wallet2) || (Logic.wallet1 && Logic.wallet3) || (Logic.wallet2 && Logic.wallet3);
Logic.tycoon_wallet = Logic.wallet1 && Logic.wallet2 && Logic.wallet3;
if(Known.goron_tunic == true) {Logic.goron_tunic = Location_Logic[Location.goron_tunic];} else{Logic.goron_tunic = false;}
if(Known.zora_tunic == true) {Logic.zora_tunic = Location_Logic[Location.zora_tunic];} else{Logic.zora_tunic = false;}
if(Known.lens == true) {Logic.lens = Location_Logic[Location.lens];} else{Logic.lens = false;}
if(Known.stone_of_agony == true) {Logic.stone_of_agony = Location_Logic[Location.stone_of_agony];} else{Logic.stone_of_agony = false;}
if(Known.prescription == true) {Logic.prescription = Location_Logic[Location.prescription];} else{Logic.prescription = false;}
if(Known.claim_check == true) {Logic.claim_check = Location_Logic[Location.claim_check];} else{Logic.claim_check = false;}
Logic.trade = Logic.claim_check || Logic.prescription;
if(Known.light_arrows == true) {Logic.light_arrows = Location_Logic[Location.light_arrows];}
if(Known.ice_arrows == true) {Logic.ice_arrows = Location_Logic[Location.ice_arrows];}
if(Known.forest_key_ring == true) {Logic.forest_key_ring = Location_Logic[Location.forest_key_ring];}
if(Known.fire_key_ring == true) {Logic.fire_key_ring = Location_Logic[Location.fire_key_ring];}
if(Known.water_key_ring == true) {Logic.water_key_ring = Location_Logic[Location.water_key_ring];}
if(Known.spirit_key_ring == true) {Logic.spirit_key_ring = Location_Logic[Location.spirit_key_ring];}
if(Known.shadow_key_ring == true) {Logic.shadow_key_ring = Location_Logic[Location.shadow_key_ring];}
if(Known.well_key_ring == true) {Logic.well_key_ring = Location_Logic[Location.well_key_ring];}
if(Known.gtg_key_ring == true) {Logic.gtg_key_ring = Location_Logic[Location.gtg_key_ring];}
if(Known.ganons_key_ring == true) {Logic.ganons_key_ring = Location_Logic[Location.ganons_key_ring];}
if(Known.gerudo_card == true) {Logic.gerudo_card = Location_Logic[Location.gerudo_card];}
if(Known.magic_bean_pack == true) {Logic.magic_bean_pack = Location_Logic[Location.magic_bean_pack];}
if(Known.lullaby == true) {Logic.lullaby = Location_Logic[Location.lullaby]; }
if(Known.eponas == true) {Logic.eponas = Location_Logic[Location.eponas]; }
if(Known.sarias == true) {Logic.sarias = Location_Logic[Location.sarias]; }
if(Known.suns == true) {Logic.suns = Location_Logic[Location.suns]; }
if(Known.time == true) {Logic.time = Location_Logic[Location.time]; }
if(Known.storms == true) {Logic.storms = Location_Logic[Location.storms]; }
if(Known.minuet == true) {Logic.minuet = Location_Logic[Location.minuet]; }
if(Known.bolero == true) {Logic.bolero = Location_Logic[Location.bolero]; }
if(Known.serenade == true) {Logic.serenade = Location_Logic[Location.serenade]; }
if(Known.requiem == true) {Logic.requiem = Location_Logic[Location.requiem]; }
if(Known.nocturne == true) {Logic.nocturne = Location_Logic[Location.nocturne]; }
if(Known.prelude == true) {Logic.prelude = Location_Logic[Location.prelude]; }
Player.bomb_bag = false;
if (Player.bomb_bag1 || Player.bomb_bag2 || Player.bomb_bag3) {Player.bomb_bag = true;}
Player.bow = false;
if (Player.bow1 || Player.bow2 || Player.bow3) {Player.bow = true;}
Player.bottle = false;
if (Player.bottle1 || Player.bottle2 || Player.bottle3 || Player.bottle4) {Player.bottle = true;}
Player.trade = false;
if (Player.prescription || Player.claim_check) {Player.trade = true;}
Player.hookshot = false;
if (Player.hookshot1 || Player.hookshot2) {Player.hookshot = true;}
Player.longshot = false;
if (Player.hookshot1 && Player.hookshot2) {Player.longshot = true;}
Player.slingshot = false;
if (Player.slingshot1 || Player.slingshot2 || Player.slingshot3) {Player.slingshot = true;}
Player.adults_wallet = false;
if (Player.wallet1 || Player.wallet2 || Player.wallet3) {Player.adults_wallet = true;}
Player.giants_wallet = false;
if ((Player.wallet1 && Player.wallet2) || (Player.wallet1 && Player.wallet3) || (Player.wallet2 && Player.wallet3)) {Player.giants_wallet = true;}
Player.tycoon_wallet = false;
if (Player.wallet1 && Player.wallet2 && Player.wallet3) {Player.tycoon_wallet = true;}
Player.goron_bracelet = false;
if (Player.strength1 || Player.strength2 || Player.strength3) {Player.goron_bracelet = true;}
Player.silver_gauntlets = false;
if (Player.strength1 && Player.strength3) {Player.silver_gauntlets = true;}
else if (Player.strength2 && Player.strength3) {Player.silver_gauntlets = true;}
else if (Player.strength1 && Player.strength2) {Player.silver_gauntlets = true;}
Player.golden_gauntlets = false;
if (Player.strength1 && Player.strength2 && Player.strength3) {Player.golden_gauntlets = true;}
Player.silver_scale = false;
if (Player.scale1 || Player.scale2) {Player.silver_scale = true;}
Player.golden_scale = false;
if (Player.scale1 && Player.scale2) {Player.golden_scale = true;}
if(Player.golden_scale == true) {document.getElementById("silverscaleimg").src = Player.golden_scale_img;}
else {document.getElementById("silverscaleimg").src = Player.silver_scale_img;}
Player.magic = false;
if (Player.magic1 || Player.magic2) {Player.magic = true;}
Player.double_magic = false;
if (Player.magic1 && Player.magic2) {Player.double_magic = true;}
for (var q = 0; q < 30; q++) {
for (var i = 0; i < Items.length; i++) {
if(Location_Could_Access[Location[Items[i]]] || Player[Items[i]])
CouldHave[Items[i]] = true;
else
CouldHave[Items[i]] = false;
}
if(Location_Could_Access[Location["big_poe"]] || Player["big_poe"])
CouldHave["big_poe"] = true;
else
CouldHave["big_poe"] = false;
}
CouldHave.bomb_bag = false;
if (CouldHave.bomb_bag1 || CouldHave.bomb_bag2 || CouldHave.bomb_bag3) {CouldHave.bomb_bag = true;}
CouldHave.bow = false;
if (CouldHave.bow1 || CouldHave.bow2 || CouldHave.bow3) {CouldHave.bow = true;}
CouldHave.trade = false;
if (CouldHave.prescription || CouldHave.claim_check) {CouldHave.trade = true;}
CouldHave.hookshot = false;
if (CouldHave.hookshot1 || CouldHave.hookshot2) {CouldHave.hookshot = true;}
CouldHave.longshot = false;
if (CouldHave.hookshot1 && CouldHave.hookshot2) {CouldHave.longshot = true;}
CouldHave.slingshot = false;
if (CouldHave.slingshot1 || CouldHave.slingshot2 || CouldHave.slingshot3) {CouldHave.slingshot = true;}
CouldHave.adults_wallet = false;
if (CouldHave.wallet1 || CouldHave.wallet2 || CouldHave.wallet3) {CouldHave.adults_wallet = true;}
CouldHave.giants_wallet = false;
if ((CouldHave.wallet1 && CouldHave.wallet2) || (CouldHave.wallet1 && CouldHave.wallet3) || (CouldHave.wallet2 && CouldHave.wallet3)) {CouldHave.giants_wallet = true;}
CouldHave.tycoon_wallet = false;
if (CouldHave.wallet1 && CouldHave.wallet2 && CouldHave.wallet3) {CouldHave.tycoon_wallet = true;}
CouldHave.goron_bracelet = false;
if (CouldHave.strength1 || CouldHave.strength2 || CouldHave.strength3) {CouldHave.goron_bracelet = true;}
CouldHave.silver_gauntlets = false;
if (CouldHave.strength1 && CouldHave.strength3) {CouldHave.silver_gauntlets = true;}
else if (CouldHave.strength2 && CouldHave.strength3) {CouldHave.silver_gauntlets = true;}
else if (CouldHave.strength1 && CouldHave.strength2) {CouldHave.silver_gauntlets = true;}
CouldHave.golden_gauntlets = false;
if (CouldHave.strength1 && CouldHave.strength2 && CouldHave.strength3) {CouldHave.golden_gauntlets = true;}
CouldHave.silver_scale = false;
if (CouldHave.scale1 || CouldHave.scale2) {CouldHave.silver_scale = true;}
CouldHave.golden_scale = false;
if (CouldHave.scale1 && CouldHave.scale2) {CouldHave.golden_scale = true;}
CouldHave.magic = false;
if (CouldHave.magic1 || CouldHave.magic2) {CouldHave.magic = true;}
Logic.forest_boss_key = Logic.forced_forest_boss_key;
Logic.fire_boss_key = Logic.forced_fire_boss_key;
Logic.water_boss_key = Logic.forced_water_boss_key;
Logic.spirit_boss_key = Logic.forced_spirit_boss_key;
Logic.shadow_boss_key = Logic.forced_shadow_boss_key;
CouldHave.forest_boss_key = Logic.forced_forest_boss_key;
CouldHave.fire_boss_key = Logic.forced_fire_boss_key;
CouldHave.water_boss_key = Logic.forced_water_boss_key;
CouldHave.spirit_boss_key = Logic.forced_spirit_boss_key;
CouldHave.shadow_boss_key = Logic.forced_shadow_boss_key;
if(Player.forest_boss_key == true) {Logic.forest_boss_key = Location_Logic[Location.forest_boss_key]; CouldHave.forest_boss_key = true; }
if(Player.fire_boss_key == true) {Logic.fire_boss_key = Location_Logic[Location.fire_boss_key]; CouldHave.fire_boss_key = true; }
if(Player.water_boss_key == true) {Logic.water_boss_key = Location_Logic[Location.water_boss_key]; CouldHave.water_boss_key = true; }
if(Player.spirit_boss_key == true) {Logic.spirit_boss_key = Location_Logic[Location.spirit_boss_key]; CouldHave.spirit_boss_key = true; }
if(Player.shadow_boss_key == true) {Logic.shadow_boss_key = Location_Logic[Location.shadow_boss_key]; CouldHave.shadow_boss_key = true; }
if(nerfed) {
Logic.bomb_bag = false;
if (Player.bomb_bag1 || Player.bomb_bag2 || Player.bomb_bag3 || CouldHave.bomb_bag1 || CouldHave.bomb_bag2 || CouldHave.bomb_bag3) {Logic.bomb_bag = true;}
Logic.bow = false;
if (Player.bow1 || Player.bow2 || Player.bow3 || CouldHave.bow1 || CouldHave.bow2 || CouldHave.bow3) {Logic.bow = true;}
Logic.bottle = false;
if (Player.bottle1 || Player.bottle2 || Player.bottle3 || Player.bottle4 || CouldHave.bottle1 || CouldHave.bottle2 || CouldHave.bottle3 || CouldHave.bottle4 || (Player.rutos_letter && Player.child_can_enter_domain) || (CouldHave.rutos_letter && CouldHave.child_can_enter_domain)) {Logic.bottle = true;}
Logic.trade = false;
if (Player.prescription || Player.claim_check || CouldHave.prescription || CouldHave.claim_check) {Logic.trade = true;}
Logic.hookshot = false;
if (Player.hookshot1 || Player.hookshot2 || CouldHave.hookshot1 || CouldHave.hookshot2) {Logic.hookshot = true;}
Logic.longshot = false;
if ((Player.hookshot1 || CouldHave.hookshot1) && (Player.hookshot2 || CouldHave.hookshot2)) {Logic.longshot = true;}
Logic.slingshot = false;
if (Player.slingshot1 || Player.slingshot2 || Player.slingshot3 || CouldHave.slingshot1 || CouldHave.slingshot2 || CouldHave.slingshot3) {Logic.slingshot = true;}
Logic.adults_wallet = false;
if (Player.wallet1 || Player.wallet2 || CouldHave.wallet1 || CouldHave.wallet2 || CouldHave.wallet3 || CouldHave.wallet3) {Logic.adults_wallet = true;}
Logic.giants_wallet = false;
if (((Player.wallet1 || CouldHave.wallet1) && (Player.wallet2 || CouldHave.wallet2)) || ((Player.wallet1 || CouldHave.wallet1) && (Player.wallet3 || CouldHave.wallet3)) || ((Player.wallet2 || CouldHave.wallet2) && (Player.wallet3 || CouldHave.wallet3))) {Logic.giants_wallet = true;}
Logic.tycoon_wallet = false;
if ((Player.wallet1 || CouldHave.wallet1) && (Player.wallet2 || CouldHave.wallet2) && (Player.wallet3 || CouldHave.wallet3)) {Logic.tycoon_wallet = true;}
Logic.goron_bracelet = false;
if (Player.strength1 || Player.strength2 || Player.strength3 || CouldHave.strength1 || CouldHave.strength2 || CouldHave.strength3) {Logic.goron_bracelet = true;}
Logic.silver_gauntlets = false;
if ((Player.strength1 || CouldHave.strength1) && (Player.strength3 || CouldHave.strength3)) {Logic.silver_gauntlets = true;}
else if ((Player.strength2 || CouldHave.strength2) && (Player.strength3 || CouldHave.strength3)) {Logic.silver_gauntlets = true;}
else if ((Player.strength1 || CouldHave.strength1) && (Player.strength2 || CouldHave.strength2)) {Logic.silver_gauntlets = true;}
Logic.golden_gauntlets = false;
if ((Player.strength1 || CouldHave.strength1) && (Player.strength2 || CouldHave.strength2) && (Player.strength3 || CouldHave.strength3)) {Logic.golden_gauntlets = true;}
Logic.silver_scale = false;
if (Player.scale1 || Player.scale2 || CouldHave.scale1 || CouldHave.scale2) {Logic.silver_scale = true;}
Logic.golden_scale = false;
if ((Player.scale1 || CouldHave.scale1) && (Player.scale2 || CouldHave.scale2)) {Logic.golden_scale = true;}
Logic.magic = false;
if (Player.magic1 || Player.magic2 || CouldHave.magic1 || CouldHave.magic2) {Logic.magic = true;}
Logic.double_magic = false;
if ((Player.magic1 || CouldHave.magic1) && (Player.magic2 || CouldHave.magic2)) {Logic.double_magic = true;}
Logic.kokiri_sword = Player.kokiri_sword || CouldHave.kokiri_sword;
Logic.farores_wind = Player.farores_wind || CouldHave.farores_wind;
Logic.boomerang = Player.boomerang || CouldHave.boomerang;
Logic.rutos_letter = Player.rutos_letter || CouldHave.rutos_letter;
Logic.hammer = Player.hammer || CouldHave.hammer;
Logic.mirror_shield = Player.mirror_shield || CouldHave.mirror_shield;
Logic.big_poe = Player.big_poe || CouldHave.big_poe;
Logic.iron_boots = Player.iron_boots || CouldHave.iron_boots;
Logic.hover_boots = Player.hover_boots || CouldHave.hover_boots;
Logic.dins_fire = Player.dins_fire || CouldHave.dins_fire;
Logic.fire_arrows = Player.fire_arrows || CouldHave.fire_arrows;
Logic.goron_tunic = Player.goron_tunic || CouldHave.goron_tunic;
Logic.zora_tunic = Player.zora_tunic || CouldHave.zora_tunic;
Logic.lens = Player.lens || CouldHave.lens;
Logic.stone_of_agony = Player.stone_of_agony || CouldHave.stone_of_agony;
Logic.prescription = Player.prescription || CouldHave.prescription;
Logic.claim_check = Player.claim_check || CouldHave.claim_check;
Logic.light_arrows = Player.light_arrows || CouldHave.light_arrows;
Logic.ice_arrows = Player.ice_arrows || CouldHave.ice_arrows;
Logic.forest_key_ring = Player.forest_key_ring || CouldHave.forest_key_ring;
Logic.fire_key_ring = Player.fire_key_ring || CouldHave.fire_key_ring;
Logic.water_key_ring = Player.water_key_ring || CouldHave.water_key_ring;
Logic.spirit_key_ring = Player.spirit_key_ring || CouldHave.spirit_key_ring;
Logic.shadow_key_ring = Player.shadow_key_ring || CouldHave.shadow_key_ring;
Logic.well_key_ring = Player.well_key_ring || CouldHave.well_key_ring;
Logic.gtg_key_ring = Player.gtg_key_ring || CouldHave.gtg_key_ring;
Logic.ganons_key_ring = Player.ganons_key_ring || CouldHave.ganons_key_ring;
Logic.gerudo_card = Player.gerudo_card || CouldHave.gerudo_card;
Logic.magic_bean_pack = Player.magic_bean_pack || CouldHave.magic_bean_pack;
Logic.lullaby = Player.lullaby || CouldHave.lullaby;
Logic.eponas = Player.eponas || CouldHave.eponas;
Logic.sarias = Player.sarias || CouldHave.sarias;
Logic.suns = Player.suns || CouldHave.suns;
Logic.time = Player.time || CouldHave.time;
Logic.storms = Player.storms || CouldHave.storms;
Logic.minuet = Player.minuet || CouldHave.minuet;
Logic.bolero = Player.bolero || CouldHave.bolero;
Logic.serenade = Player.serenade || CouldHave.serenade;
Logic.requiem = Player.requiem || CouldHave.requiem;
Logic.nocturne = Player.nocturne || CouldHave.nocturne;
Logic.prelude = Player.prelude || CouldHave.prelude;
Logic.forest_boss_key = Player.forest_boss_key || CouldHave.forest_boss_key;
Logic.fire_boss_key = Player.fire_boss_key || CouldHave.fire_boss_key;
Logic.water_boss_key = Player.water_boss_key || CouldHave.water_boss_key;
Logic.spirit_boss_key = Player.spirit_boss_key || CouldHave.spirit_boss_key;
Logic.shadow_boss_key = Player.shadow_boss_key || CouldHave.shadow_boss_key;
}
Player.forest = false;
CouldHave.forest = false;
Location_Access.forest_medallion_location = false;
if(Logic.forest_medallion_location == "deku") {if (Check.deku_queen_gohma != "unknown") {Player.forest = true;} Logic.forest_medallion = Location_Logic.deku_queen_gohma; Location_Access.forest_medallion_location = Location_Access.deku_queen_gohma; CouldHave.forest = Location_Could_Access.deku_queen_gohma;}
else if(Logic.forest_medallion_location == "dodongos") {if (Check.dodongos_king_dodongo != "unknown") {Player.forest = true;} Logic.forest_medallion = Location_Logic.dodongos_king_dodongo; Location_Access.forest_medallion_location = Location_Access.dodongos_king_dodongo; CouldHave.forest = Location_Could_Access.dodongos_king_dodongo;}
else if(Logic.forest_medallion_location == "jabu") {if (Check.jabu_barinade != "unknown") {Player.forest = true;} Logic.forest_medallion = Location_Logic.jabu_barinade; Location_Access.forest_medallion_location = Location_Access.jabu_barinade; CouldHave.forest = Location_Could_Access.jabu_barinade;}
else if(Logic.forest_medallion_location == "forest") {if (Check.forest_phantomGanon != "unknown") {Player.forest = true;} Logic.forest_medallion = Location_Logic.forest_phantomGanon; Location_Access.forest_medallion_location = Location_Access.forest_phantomGanon; CouldHave.forest = Location_Could_Access.forest_phantomGanon;}
else if(Logic.forest_medallion_location == "fire") {if (Check.fire_volvagia != "unknown") {Player.forest = true;} Logic.forest_medallion = Location_Logic.fire_volvagia; Location_Access.forest_medallion_location = Location_Access.fire_volvagia; CouldHave.forest = Location_Could_Access.fire_volvagia;}
else if(Logic.forest_medallion_location == "water") {if (Check.water_morpha != "unknown") {Player.forest = true;} Logic.forest_medallion = Location_Logic.water_morpha; Location_Access.forest_medallion_location = Location_Access.water_morpha; CouldHave.forest = Location_Could_Access.water_morpha;}
else if(Logic.forest_medallion_location == "spirit") {if (Check.spirit_twinrova != "unknown") {Player.forest = true;} Logic.forest_medallion = Location_Logic.spirit_twinrova; Location_Access.forest_medallion_location = Location_Access.spirit_twinrova; CouldHave.forest = Location_Could_Access.spirit_twinrova;}
else if(Logic.forest_medallion_location == "shadow") {if (Check.shadow_bongo != "unknown") {Player.forest = true;} Logic.forest_medallion = Location_Logic.shadow_bongo; Location_Access.forest_medallion_location = Location_Access.shadow_bongo; CouldHave.forest = Location_Could_Access.shadow_bongo;}
else if(Logic.forest_medallion_location == "pocket") {Player.forest = true; Logic.forest_medallion = true; Location_Access.forest_medallion_location = true; CouldHave.forest = true;}
else {Logic.forest_medallion_location == "unknown"; Logic.forest_medallion = false;}
Player.fire = false;
CouldHave.fire = false;
Location_Access.fire_medallion_location = false;
if(Logic.fire_medallion_location == "deku") {if (Check.deku_queen_gohma != "unknown") {Player.fire = true;} Logic.fire_medallion = Location_Logic.deku_queen_gohma; Location_Access.fire_medallion_location = Location_Access.deku_queen_gohma; CouldHave.fire = Location_Could_Access.deku_queen_gohma;}
else if(Logic.fire_medallion_location == "dodongos") {if (Check.dodongos_king_dodongo != "unknown") {Player.fire = true;} Logic.fire_medallion = Location_Logic.dodongos_king_dodongo; Location_Access.fire_medallion_location = Location_Access.dodongos_king_dodongo; CouldHave.fire = Location_Could_Access.dodongos_king_dodongo;}
else if(Logic.fire_medallion_location == "jabu") {if (Check.jabu_barinade != "unknown") {Player.fire = true;} Logic.fire_medallion = Location_Logic.jabu_barinade; Location_Access.fire_medallion_location = Location_Access.jabu_barinade; CouldHave.fire = Location_Could_Access.jabu_barinade;}
else if(Logic.fire_medallion_location == "forest") {if (Check.forest_phantomGanon != "unknown") {Player.fire = true;} Logic.fire_medallion = Location_Logic.forest_phantomGanon; Location_Access.fire_medallion_location = Location_Access.forest_phantomGanon; CouldHave.fire = Location_Could_Access.forest_phantomGanon;}
else if(Logic.fire_medallion_location == "fire") {if (Check.fire_volvagia != "unknown") {Player.fire = true;} Logic.fire_medallion = Location_Logic.fire_volvagia; Location_Access.fire_medallion_location = Location_Access.fire_volvagia; CouldHave.fire = Location_Could_Access.fire_volvagia;}
else if(Logic.fire_medallion_location == "water") {if (Check.water_morpha != "unknown") {Player.fire = true;} Logic.fire_medallion = Location_Logic.water_morpha; Location_Access.fire_medallion_location = Location_Access.water_morpha; CouldHave.fire = Location_Could_Access.water_morpha;}
else if(Logic.fire_medallion_location == "spirit") {if (Check.spirit_twinrova != "unknown") {Player.fire = true;} Logic.fire_medallion = Location_Logic.spirit_twinrova; Location_Access.fire_medallion_location = Location_Access.spirit_twinrova; CouldHave.fire = Location_Could_Access.spirit_twinrova;}
else if(Logic.fire_medallion_location == "shadow") {if (Check.shadow_bongo != "unknown") {Player.fire = true;} Logic.fire_medallion = Location_Logic.shadow_bongo; Location_Access.fire_medallion_location = Location_Access.shadow_bongo; CouldHave.fire = Location_Could_Access.shadow_bongo;}
else if(Logic.fire_medallion_location == "pocket") {Player.fire = true; Logic.fire_medallion = true; Location_Access.fire_medallion_location = true; CouldHave.fire = true;}
else {Logic.fire_medallion_location == "unknown"; Logic.fire_medallion = false;}
Player.water = false;
CouldHave.water = false;
Location_Access.water_medallion_location = false;
if(Logic.water_medallion_location == "deku") {if (Check.deku_queen_gohma != "unknown") {Player.water = true;} Logic.water_medallion = Location_Logic.deku_queen_gohma; Location_Access.water_medallion_location = Location_Access.deku_queen_gohma; CouldHave.water = Location_Could_Access.deku_queen_gohma;}
else if(Logic.water_medallion_location == "dodongos") {if (Check.dodongos_king_dodongo != "unknown") {Player.water = true;} Logic.water_medallion = Location_Logic.dodongos_king_dodongo; Location_Access.water_medallion_location = Location_Access.dodongos_king_dodongo; CouldHave.water = Location_Could_Access.dodongos_king_dodongo;}
else if(Logic.water_medallion_location == "jabu") {if (Check.jabu_barinade != "unknown") {Player.water = true;} Logic.water_medallion = Location_Logic.jabu_barinade; Location_Access.water_medallion_location = Location_Access.jabu_barinade; CouldHave.water = Location_Could_Access.jabu_barinade;}
else if(Logic.water_medallion_location == "forest") {if (Check.forest_phantomGanon != "unknown") {Player.water = true;} Logic.water_medallion = Location_Logic.forest_phantomGanon; Location_Access.water_medallion_location = Location_Access.forest_phantomGanon; CouldHave.water = Location_Could_Access.forest_phantomGanon;}
else if(Logic.water_medallion_location == "fire") {if (Check.fire_volvagia != "unknown") {Player.water = true;} Logic.water_medallion = Location_Logic.fire_volvagia; Location_Access.water_medallion_location = Location_Access.fire_volvagia; CouldHave.water = Location_Could_Access.fire_volvagia;}
else if(Logic.water_medallion_location == "water") {if (Check.water_morpha != "unknown") {Player.water = true;} Logic.water_medallion = Location_Logic.water_morpha; Location_Access.water_medallion_location = Location_Access.water_morpha; CouldHave.water = Location_Could_Access.water_morpha;}
else if(Logic.water_medallion_location == "spirit") {if (Check.spirit_twinrova != "unknown") {Player.water = true;} Logic.water_medallion = Location_Logic.spirit_twinrova; Location_Access.water_medallion_location = Location_Access.spirit_twinrova; CouldHave.water = Location_Could_Access.spirit_twinrova;}
else if(Logic.water_medallion_location == "shadow") {if (Check.shadow_bongo != "unknown") {Player.water = true;} Logic.water_medallion = Location_Logic.shadow_bongo; Location_Access.water_medallion_location = Location_Access.shadow_bongo; CouldHave.water = Location_Could_Access.shadow_bongo;}
else if(Logic.water_medallion_location == "pocket") {Player.water = true; Logic.water_medallion = true; Location_Access.water_medallion_location = true; CouldHave.water = true;}
else {Logic.water_medallion_location == "unknown"; Logic.water_medallion = false;}
Logic.shadow_medallion = false;
Logic.spirit_medallion = false;
Logic.light_medallion = false;
Player.shadow_medallion = false;
Player.spirit_medallion = false;
Player.light_medallion = false;
CouldHave.shadow_medallion = false;
CouldHave.spirit_medallion = false;
CouldHave.light_medallion = false;
Location_Access.shadow_medallion_location = false;
Location_Access.spirit_medallion_location = false;
Location_Access.light_medallion_location = false;
for (var i = 1; i <=3; i++) {
str = "generic" + i;
str2 = "gen" + i;
Player[str2] = false;
if(Logic[str] == "deku") {if (Check.deku_queen_gohma != "unknown") {Player[str2] = true;} Logic[str2] = Location_Logic.deku_queen_gohma; if(document.getElementById("text_" + dekuPlacement).style.color=="rgb(238, 130, 238)") {document.getElementById(dekuPlacement + "_icon").src = dungIconSources[6]; Logic.shadow_medallion = Location_Logic.deku_queen_gohma; CouldHave.shadow_medallion = Location_Could_Access.deku_queen_gohma; Location_Access.shadow_medallion_location = Location_Access.deku_queen_gohma;if (Check.deku_queen_gohma != "unknown") {Player.shadow_medallion = true;};} else if(document.getElementById("text_" + dekuPlacement).style.color=="rgb(255, 165, 0)") {document.getElementById(dekuPlacement + "_icon").src = dungIconSources[7]; Logic.spirit_medallion = Location_Logic.deku_queen_gohma; CouldHave.spirit_medallion = Location_Could_Access.deku_queen_gohma; Location_Access.spirit_medallion_location = Location_Access.deku_queen_gohma;if (Check.deku_queen_gohma != "unknown") {Player.spirit_medallion = true;};} else {Logic.light_medallion = Location_Logic.deku_queen_gohma;if (Check.deku_queen_gohma != "unknown") {Player.light_medallion = true;};CouldHave.light_medallion = Location_Could_Access.deku_queen_gohma;Location_Access.light_medallion_location = Player[Check["deku_queen_gohma"]];}}
else if(Logic[str] == "dodongos") {if (Check.dodongos_king_dodongo != "unknown") {Player[str2] = true;} Logic[str2] = Location_Logic.dodongos_king_dodongo; if(document.getElementById("text_" + dodongosPlacement).style.color=="rgb(238, 130, 238)") {document.getElementById(dodongosPlacement + "_icon").src = dungIconSources[6]; Logic.shadow_medallion = Location_Logic.dodongos_king_dodongo; CouldHave.shadow_medallion = Location_Could_Access.dodongos_king_dodongo; Location_Access.shadow_medallion_location = Location_Access.dodongos_king_dodongo;if (Check.dodongos_king_dodongo != "unknown") {Player.shadow_medallion = true;};} else if(document.getElementById("text_" + dodongosPlacement).style.color=="rgb(255, 165, 0)") {document.getElementById(dodongosPlacement + "_icon").src = dungIconSources[7]; Logic.spirit_medallion = Location_Logic.dodongos_king_dodongo; CouldHave.spirit_medallion = Location_Could_Access.dodongos_king_dodongo; Location_Access.spirit_medallion_location = Location_Access.dodongos_king_dodongo;if (Check.dodongos_king_dodongo != "unknown") {Player.spirit_medallion = true;};} else {Logic.light_medallion = Location_Logic.dodongos_king_dodongo;if (Check.dodongos_king_dodongo != "unknown") {Player.light_medallion = true;};CouldHave.light_medallion = Location_Could_Access.dodongos_king_dodongo;Location_Access.light_medallion_location = Player[Check["dodongos_king_dodongo"]];}}
else if(Logic[str] == "jabu") {if (Check.jabu_barinade != "unknown") {Player[str2] = true;} Logic[str2] = Location_Logic.jabu_barinade; if(document.getElementById("text_" + jabuPlacement).style.color=="rgb(238, 130, 238)") {document.getElementById(jabuPlacement + "_icon").src = dungIconSources[6]; Logic.shadow_medallion = Location_Logic.jabu_barinade; CouldHave.shadow_medallion = Location_Could_Access.jabu_barinade; Location_Access.shadow_medallion_location = Location_Access.jabu_barinade;if (Check.jabu_barinade != "unknown") {Player.shadow_medallion = true;};} else if(document.getElementById("text_" + jabuPlacement).style.color=="rgb(255, 165, 0)") {document.getElementById(jabuPlacement + "_icon").src = dungIconSources[7]; Logic.spirit_medallion = Location_Logic.jabu_barinade; CouldHave.spirit_medallion = Location_Could_Access.jabu_barinade; Location_Access.spirit_medallion_location = Location_Access.jabu_barinade;if (Check.jabu_barinade != "unknown") {Player.spirit_medallion = true;};} else {Logic.light_medallion = Location_Logic.jabu_barinade;if (Check.jabu_barinade != "unknown") {Player.light_medallion = true;};CouldHave.light_medallion = Location_Could_Access.jabu_barinade;Location_Access.light_medallion_location = Player[Check["jabu_barinade"]];}}
else if(Logic[str] == "forest") {if (Check.forest_phantomGanon != "unknown") {Player[str2] = true;} Logic[str2] = Location_Logic.forest_phantomGanon; if(document.getElementById("text_" + forestPlacement).style.color=="rgb(238, 130, 238)") {document.getElementById(forestPlacement + "_icon").src = dungIconSources[6]; Logic.shadow_medallion = Location_Logic.forest_phantomGanon; CouldHave.shadow_medallion = Location_Could_Access.forest_phantomGanon; Location_Access.shadow_medallion_location = Location_Access.forest_phantomGanon;if (Check.forest_phantomGanon != "unknown") {Player.shadow_medallion = true;};} else if(document.getElementById("text_" + forestPlacement).style.color=="rgb(255, 165, 0)") {document.getElementById(forestPlacement + "_icon").src = dungIconSources[7]; Logic.spirit_medallion = Location_Logic.forest_phantomGanon; CouldHave.spirit_medallion = Location_Could_Access.forest_phantomGanon; Location_Access.spirit_medallion_location = Location_Access.forest_phantomGanon;if (Check.forest_phantomGanon != "unknown") {Player.spirit_medallion = true;};} else {Logic.light_medallion = Location_Logic.forest_phantomGanon;if (Check.forest_phantomGanon != "unknown") {Player.light_medallion = true;};CouldHave.light_medallion = Location_Could_Access.forest_phantomGanon;Location_Access.light_medallion_location = Player[Check["forest_phantomGanon"]];}}
else if(Logic[str] == "fire") {if (Check.fire_volvagia != "unknown") {Player[str2] = true;} Logic[str2] = Location_Logic.fire_volvagia; if(document.getElementById("text_" + firePlacement).style.color=="rgb(238, 130, 238)") {document.getElementById(firePlacement + "_icon").src = dungIconSources[6]; Logic.shadow_medallion = Location_Logic.fire_volvagia; CouldHave.shadow_medallion = Location_Could_Access.fire_volvagia; Location_Access.shadow_medallion_location = Location_Access.fire_volvagia;if (Check.fire_volvagia != "unknown") {Player.shadow_medallion = true;};} else if(document.getElementById("text_" + firePlacement).style.color=="rgb(255, 165, 0)") {document.getElementById(firePlacement + "_icon").src = dungIconSources[7]; Logic.spirit_medallion = Location_Logic.fire_volvagia; CouldHave.spirit_medallion = Location_Could_Access.fire_volvagia; Location_Access.spirit_medallion_location = Location_Access.fire_volvagia;if (Check.fire_volvagia != "unknown") {Player.spirit_medallion = true;};} else {Logic.light_medallion = Location_Logic.fire_volvagia;if (Check.fire_volvagia != "unknown") {Player.light_medallion = true;};CouldHave.light_medallion = Location_Could_Access.fire_volvagia;Location_Access.light_medallion_location = Player[Check["fire_volvagia"]];}}
else if(Logic[str] == "water") {if (Check.water_morpha != "unknown") {Player[str2] = true;} Logic[str2] = Location_Logic.water_morpha; if(document.getElementById("text_" + waterPlacement).style.color=="rgb(238, 130, 238)") {document.getElementById(waterPlacement + "_icon").src = dungIconSources[6]; Logic.shadow_medallion = Location_Logic.water_morpha; CouldHave.shadow_medallion = Location_Could_Access.water_morpha; Location_Access.shadow_medallion_location = Location_Access.water_morpha;if (Check.water_morpha != "unknown") {Player.shadow_medallion = true;};} else if(document.getElementById("text_" + waterPlacement).style.color=="rgb(255, 165, 0)") {document.getElementById(waterPlacement + "_icon").src = dungIconSources[7]; Logic.spirit_medallion = Location_Logic.water_morpha; CouldHave.spirit_medallion = Location_Could_Access.water_morpha; Location_Access.spirit_medallion_location = Location_Access.water_morpha;if (Check.water_morpha != "unknown") {Player.spirit_medallion = true;};} else {Logic.light_medallion = Location_Logic.water_morpha;if (Check.water_morpha != "unknown") {Player.light_medallion = true;};CouldHave.light_medallion = Location_Could_Access.water_morpha;Location_Access.light_medallion_location = Player[Check["water_morpha"]];}}
else if(Logic[str] == "spirit") {if (Check.spirit_twinrova != "unknown") {Player[str2] = true;} Logic[str2] = Location_Logic.spirit_twinrova; if(document.getElementById("text_" + spiritPlacement).style.color=="rgb(238, 130, 238)") {document.getElementById(spiritPlacement + "_icon").src = dungIconSources[6]; Logic.shadow_medallion = Location_Logic.spirit_twinrova; CouldHave.shadow_medallion = Location_Could_Access.spirit_twinrova; Location_Access.shadow_medallion_location = Location_Access.spirit_twinrova;if (Check.spirit_twinrova != "unknown") {Player.shadow_medallion = true;};} else if(document.getElementById("text_" + spiritPlacement).style.color=="rgb(255, 165, 0)") {document.getElementById(spiritPlacement + "_icon").src = dungIconSources[7]; Logic.spirit_medallion = Location_Logic.spirit_twinrova; CouldHave.spirit_medallion = Location_Could_Access.spirit_twinrova; Location_Access.spirit_medallion_location = Location_Access.spirit_twinrova;if (Check.spirit_twinrova != "unknown") {Player.spirit_medallion = true;};} else {Logic.light_medallion = Location_Logic.spirit_twinrova;if (Check.spirit_twinrova != "unknown") {Player.light_medallion = true;};CouldHave.light_medallion = Location_Could_Access.spirit_twinrova;Location_Access.light_medallion_location = Player[Check["spirit_twinrova"]];}}
else if(Logic[str] == "shadow") {if (Check.shadow_bongo != "unknown") {Player[str2] = true;} Logic[str2] = Location_Logic.shadow_bongo; if(document.getElementById("text_" + shadowPlacement).style.color=="rgb(238, 130, 238)") {document.getElementById(shadowPlacement + "_icon").src = dungIconSources[6]; Logic.shadow_medallion = Location_Logic.shadow_bongo; CouldHave.shadow_medallion = Location_Could_Access.shadow_bongo; Location_Access.shadow_medallion_location = Location_Access.shadow_bongo;if (Check.shadow_bongo != "unknown") {Player.shadow_medallion = true;};} else if(document.getElementById("text_" + shadowPlacement).style.color=="rgb(255, 165, 0)") {document.getElementById(shadowPlacement + "_icon").src = dungIconSources[7]; Logic.spirit_medallion = Location_Logic.shadow_bongo; CouldHave.spirit_medallion = Location_Could_Access.shadow_bongo; Location_Access.spirit_medallion_location = Location_Access.shadow_bongo;if (Check.shadow_bongo != "unknown") {Player.spirit_medallion = true;};} else {Logic.light_medallion = Location_Logic.shadow_bongo;if (Check.shadow_bongo != "unknown") {Player.light_medallion = true;};CouldHave.light_medallion = Location_Could_Access.shadow_bongo;Location_Access.light_medallion_location = Player[Check["shadow_bongo"]];}}
else if(Logic[str] == "pocket") {Player[str2] = true; Logic[str2] = true; if(document.getElementById("text_" + pocketPlacement).style.color=="rgb(238, 130, 238)") {document.getElementById(pocketPlacement + "_icon").src = dungIconSources[6]; Logic.shadow_medallion = true; CouldHave.shadow_medallion = true; Location_Access.shadow_medallion_location = true;Player.shadow_medallion = true;} else if(document.getElementById("text_" + pocketPlacement).style.color=="rgb(255, 165, 0)") {document.getElementById(pocketPlacement + "_icon").src = dungIconSources[7]; Logic.spirit_medallion = true; CouldHave.spirit_medallion = true; Location_Access.spirit_medallion_location = true;Player.spirit_medallion = true;} else {Logic.light_medallion = true;Player.light_medallion = true;CouldHave.light_medallion = true;Location_Access.light_medallion_location = true;}}
else {Logic[str2] = false;}
}
Player.emerald = false;
CouldHave.emerald = false;
Location_Access.emerald_location = false;
if(Logic.emerald == "deku") {if (Check.deku_queen_gohma != "unknown") {Player.emerald = true;} Logic.kokiri_emerald = Location_Logic.deku_queen_gohma; Location_Access.emerald_location = Location_Access.deku_queen_gohma; CouldHave.emerald = Location_Could_Access.deku_queen_gohma;}
if(Logic.emerald == "dodongos") {if (Check.dodongos_king_dodongo != "unknown") {Player.emerald = true;} Logic.kokiri_emerald = Location_Logic.dodongos_king_dodongo; Location_Access.emerald_location = Location_Access.dodongos_king_dodongo; CouldHave.emerald = Location_Could_Access.dodongos_king_dodongo;}
if(Logic.emerald == "jabu") {if (Check.jabu_barinade != "unknown") {Player.emerald = true;} Logic.kokiri_emerald = Location_Logic.jabu_barinade; Location_Access.emerald_location = Location_Access.jabu_barinade; CouldHave.emerald = Location_Could_Access.jabu_barinade;}
if(Logic.emerald == "forest") {if (Check.forest_phantomGanon != "unknown") {Player.emerald = true;} Logic.kokiri_emerald = Location_Logic.forest_phantomGanon; Location_Access.emerald_location = Location_Access.forest_phantomGanon; CouldHave.emerald = Location_Could_Access.forest_phantomGanon;}
if(Logic.emerald == "fire") {if (Check.fire_volvagia != "unknown") {Player.emerald = true;} Logic.kokiri_emerald = Location_Logic.fire_volvagia; Location_Access.emerald_location = Location_Access.fire_volvagia; CouldHave.emerald = Location_Could_Access.fire_volvagia;}
if(Logic.emerald == "water") {if (Check.water_morpha != "unknown") {Player.emerald = true;} Logic.kokiri_emerald = Location_Logic.water_morpha; Location_Access.emerald_location = Location_Access.water_morpha; CouldHave.emerald = Location_Could_Access.water_morpha;}
if(Logic.emerald == "spirit") {if (Check.spirit_twinrova != "unknown") {Player.emerald = true;} Logic.kokiri_emerald = Location_Logic.spirit_twinrova; Location_Access.emerald_location = Location_Access.spirit_twinrova; CouldHave.emerald = Location_Could_Access.spirit_twinrova;}
if(Logic.emerald == "shadow") {if (Check.shadow_bongo != "unknown") {Player.emerald = true;} Logic.kokiri_emerald = Location_Logic.shadow_bongo; Location_Access.emerald_location = Location_Access.shadow_bongo; CouldHave.emerald = Location_Could_Access.shadow_bongo;}
if(Logic.emerald == "pocket") {Player.emerald = true; Logic.kokiri_emerald = true; Location_Access.emerald_location = true; CouldHave.emerald = true;}
Player.ruby = false;
CouldHave.ruby = false;
Location_Access.ruby_location = false;
if(Logic.ruby == "deku") {if (Check.deku_queen_gohma != "unknown") {Player.ruby = true;} Logic.goron_ruby = Location_Logic.deku_queen_gohma; Location_Access.ruby_location = Location_Access.deku_queen_gohma; CouldHave.ruby = Location_Could_Access.deku_queen_gohma;}
if(Logic.ruby == "dodongos") {if (Check.dodongos_king_dodongo != "unknown") {Player.ruby = true;} Logic.goron_ruby = Location_Logic.dodongos_king_dodongo; Location_Access.ruby_location = Location_Access.dodongos_king_dodongo; CouldHave.ruby = Location_Could_Access.dodongos_king_dodongo;}
if(Logic.ruby == "jabu") {if (Check.jabu_barinade != "unknown") {Player.ruby = true;} Logic.goron_ruby = Location_Logic.jabu_barinade; Location_Access.ruby_location = Location_Access.jabu_barinade; CouldHave.ruby = Location_Could_Access.jabu_barinade;}
if(Logic.ruby == "forest") {if (Check.forest_phantomGanon != "unknown") {Player.ruby = true;} Logic.goron_ruby = Location_Logic.forest_phantomGanon; Location_Access.ruby_location = Location_Access.forest_phantomGanon; CouldHave.ruby = Location_Could_Access.forest_phantomGanon;}
if(Logic.ruby == "fire") {if (Check.fire_volvagia != "unknown") {Player.ruby = true;} Logic.goron_ruby = Location_Logic.fire_volvagia; Location_Access.ruby_location = Location_Access.fire_volvagia; CouldHave.ruby = Location_Could_Access.fire_volvagia;}
if(Logic.ruby == "water") {if (Check.water_morpha != "unknown") {Player.ruby = true;} Logic.goron_ruby = Location_Logic.water_morpha; Location_Access.ruby_location = Location_Access.water_morpha; CouldHave.ruby = Location_Could_Access.water_morpha;}
if(Logic.ruby == "spirit") {if (Check.spirit_twinrova != "unknown") {Player.ruby = true;} Logic.goron_ruby = Location_Logic.spirit_twinrova; Location_Access.ruby_location = Location_Access.spirit_twinrova; CouldHave.ruby = Location_Could_Access.spirit_twinrova;}
if(Logic.ruby == "shadow") {if (Check.shadow_bongo != "unknown") {Player.ruby = true;} Logic.goron_ruby = Location_Logic.shadow_bongo; Location_Access.ruby_location = Location_Access.shadow_bongo; CouldHave.ruby = Location_Could_Access.shadow_bongo;}
if(Logic.ruby == "pocket") {Player.ruby = true; Logic.goron_ruby = true; Location_Access.ruby_location = true; CouldHave.ruby = true;}
Player.sapphire = false;
CouldHave.sapphire = false;
Location_Access.sapphire_location = false;
if(Logic.sapphire == "deku") {if (Check.deku_queen_gohma != "unknown") {Player.sapphire = true;} Logic.zora_sapphire = Location_Logic.deku_queen_gohma; Location_Access.sapphire_location = Location_Access.deku_queen_gohma; CouldHave.sapphire = Location_Could_Access.deku_queen_gohma;}
if(Logic.sapphire == "dodongos") {if (Check.dodongos_king_dodongo != "unknown") {Player.sapphire = true;} Logic.zora_sapphire = Location_Logic.dodongos_king_dodongo; Location_Access.sapphire_location = Location_Access.dodongos_king_dodongo; CouldHave.sapphire = Location_Could_Access.dodongos_king_dodongo;}
if(Logic.sapphire == "jabu") {if (Check.jabu_barinade != "unknown") {Player.sapphire = true;} Logic.zora_sapphire = Location_Logic.jabu_barinade; Location_Access.sapphire_location = Location_Access.jabu_barinade; CouldHave.sapphire = Location_Could_Access.jabu_barinade;}
if(Logic.sapphire == "forest") {if (Check.forest_phantomGanon != "unknown") {Player.sapphire = true;} Logic.zora_sapphire = Location_Logic.forest_phantomGanon; Location_Access.sapphire_location = Location_Access.forest_phantomGanon; CouldHave.sapphire = Location_Could_Access.forest_phantomGanon;}
if(Logic.sapphire == "fire") {if (Check.fire_volvagia != "unknown") {Player.sapphire = true;} Logic.zora_sapphire = Location_Logic.fire_volvagia; Location_Access.sapphire_location = Location_Access.fire_volvagia; CouldHave.sapphire = Location_Could_Access.fire_volvagia;}
if(Logic.sapphire == "water") {if (Check.water_morpha != "unknown") {Player.sapphire = true;} Logic.zora_sapphire = Location_Logic.water_morpha; Location_Access.sapphire_location = Location_Access.water_morpha; CouldHave.sapphire = Location_Could_Access.water_morpha;}
if(Logic.sapphire == "spirit") {if (Check.spirit_twinrova != "unknown") {Player.sapphire = true;} Logic.zora_sapphire = Location_Logic.spirit_twinrova; Location_Access.sapphire_location = Location_Access.spirit_twinrova; CouldHave.sapphire = Location_Could_Access.spirit_twinrova;}
if(Logic.sapphire == "shadow") {if (Check.shadow_bongo != "unknown") {Player.sapphire = true;} Logic.zora_sapphire = Location_Logic.shadow_bongo; Location_Access.sapphire_location = Location_Access.shadow_bongo; CouldHave.sapphire = Location_Could_Access.shadow_bongo;}
if(Logic.sapphire == "pocket") {Player.sapphire = true; Logic.zora_sapphire = true; Location_Access.sapphire_location = true; CouldHave.sapphire = true;}
if(Logic.emerald == "unknown") {Logic.kokiri_emerald = false;}
if(Logic.ruby == "unknown") {Logic.goron_ruby = false;}
if(Logic.sapphire == "unknown") {Logic.zora_sapphire = false;}
if(Logic.forest_medallion_location == "unknown") {Logic.forest_medallion = false;}
if(Logic.fire_medallion_location == "unknown") {Logic.fire_medallion = false;}
if(Logic.water_medallion_location == "unknown") {Logic.water_medallion = false;}
if(document.getElementById("keysanity").value != "KEYSEY" && document.getElementById("keysanity").value != "KEY RINGS") {
Logic.current_forest_keys = Logic.forced_forest_keys;
for (i = AreaIndexes[AreaNames.indexOf("Forest")-1]; i < AreaIndexes[AreaNames.indexOf("Forest")]; i++) {
str = Locations[i];
if (Check[str] == "small_key" && Location_Logic[str]) {Logic.current_forest_keys +=1;}
}
Logic.current_fire_keys = Logic.forced_fire_keys;
for (i = AreaIndexes[AreaNames.indexOf("Fire")-1]; i < AreaIndexes[AreaNames.indexOf("Fire")]; i++) {
str = Locations[i];
if (Check[str] == "small_key" && Location_Logic[str]) {Logic.current_fire_keys +=1;}
}
Logic.current_water_keys = Logic.forced_water_keys;
for (i = AreaIndexes[AreaNames.indexOf("Water")-1]; i < AreaIndexes[AreaNames.indexOf("Water")]; i++) {
str = Locations[i];
if (Check[str] == "small_key" && Location_Logic[str]) {Logic.current_water_keys +=1;}
}
Logic.current_spirit_keys = Logic.forced_spirit_keys;
for (i = AreaIndexes[AreaNames.indexOf("Spirit")-1]; i < AreaIndexes[AreaNames.indexOf("Spirit")]; i++) {
str = Locations[i];
if (Check[str] == "small_key" && Location_Logic[str]) {Logic.current_spirit_keys +=1;}
}
Logic.current_shadow_keys = Logic.forced_shadow_keys;
for (i = AreaIndexes[AreaNames.indexOf("Shadow")-1]; i < AreaIndexes[AreaNames.indexOf("Shadow")]; i++) {
str = Locations[i];
if (Check[str] == "small_key" && Location_Logic[str]) {Logic.current_shadow_keys +=1;}
}
Logic.current_ganons_keys = Logic.forced_ganons_keys;
for (i = AreaIndexes[AreaNames.indexOf("Ganon's")-1]; i < AreaIndexes[AreaNames.indexOf("Ganon's")]; i++) {
str = Locations[i];
if (Check[str] == "small_key" && Location_Logic[str]) {Logic.current_ganons_keys +=1;}
}
Logic.current_gtg_keys = Logic.forced_gtg_keys;
for (i = AreaIndexes[AreaNames.indexOf("GTG")-1]; i < AreaIndexes[AreaNames.indexOf("GTG")]; i++) {
str = Locations[i];
if (Check[str] == "small_key" && Location_Logic[str]) {Logic.current_gtg_keys +=1;}
}
Logic.current_well_keys = Logic.forced_well_keys;
for (i = AreaIndexes[AreaNames.indexOf("Well")-1]; i < AreaIndexes[AreaNames.indexOf("Well")]; i++) {
str = Locations[i];
if (Check[str] == "small_key" && Location_Logic[str]) {Logic.current_well_keys +=1;}
}
if (Logic.current_forest_keys < 5) {
var for_keys = [["forest_first","forest_stalfos","forest_midCourtyard","forest_highCourtyard","forest_lowCourtyard"], ["forest_blockRoom","forest_floormaster"], ["forest_bossKey"], ["forest_red","forest_bow","forest_blue"]]
var done = false;
Logic.min_forest_keys = 0;
for (i = 0; i < for_keys.length; i++) {
for (j = 0; j < for_keys[i].length; j++) {
str = for_keys[i][j];
if (!(Location_Logic[str]) && (Check[str] == "small_key" || Check[str] == "unknown" )) {
Logic.min_forest_keys = i;
done = true;
break;
}
}
if (done) {break;}
}
if (!done) {Logic.min_forest_keys = 5;}
}
Logic.forest_keys = Math.max(Logic.min_forest_keys,Logic.current_forest_keys);
if (!Logic.forest_boss_key) {
var bk = true;
for (i = AreaIndexes[AreaNames.indexOf("Forest")-1]; i < AreaIndexes[AreaNames.indexOf("Forest")]-1; i++) {
str = Locations[i];
if (!Location_Logic[str] && (Check[str] == "boss_key" || Check[str] == "unknown")) {
bk = false;
break;
}
}
Logic.forest_boss_key = bk;
}
if (Logic.current_fire_keys < 8 && ((Logic.can_wear_goron_tunic && Logic.hammer && Logic.hover_boots) || (Check["fire_volvagia"] != "small_key" && Check["fire_volvagia"] != "unknown"))) {
var fir_keys = [["fire_nearBoss","fire_hammer1","fire_hammer2"], ["fire_lavaOpen","fire_lavaBomb"],[], ["fire_lowerMaze","fire_sideRoom"],["fire_map"], ["fire_upperMaze","fire_shortcut","fire_scarecrow"]]
var done = false;
for (i = 0; i < fir_keys.length; i++) {
for (j = 0; j < fir_keys[i].length; j++) {
str = fir_keys[i][j];
if (!(Location_Logic[str]) && (Check[str] == "small_key" || Check[str] == "unknown" || (Check[str] == "boss_key" && (Check["fire_volvagia"] == "small_key" || Check["fire_volvagia"] == "unknown")))) {
Logic.min_fire_keys = i;
done = true;
break;
}
}
if (done) {break;}
}
if (!done) {Logic.min_fire_keys = 8;}
}
Logic.fire_keys = Math.max(Logic.min_fire_keys,Logic.current_fire_keys);
if (!Logic.fire_boss_key) {
var bk = true;
for (i = AreaIndexes[AreaNames.indexOf("Fire")-1]; i < AreaIndexes[AreaNames.indexOf("Fire")]; i++) {
if (Locations[i] == "fire_volvagia" || Locations[i].includes("gs_")) {
continue;
}
str = Locations[i];
if (!Location_Logic[str] && (Check[str] == "boss_key" || Check[str] == "unknown")) {
bk = false;
break;
}
}
Logic.fire_boss_key = bk;
}
if (Logic.current_water_keys < 6 && (Logic.longshot && Logic.iron_boots || (Check["water_morpha"] != "small_key" && Check["water_morpha"] != "unknown"))) {
var wat_keys = [["water_compass","water_map","water_cracked","water_torches","water_block","water_pillar","water_dragon"]]
var done = false;
for (i = 0; i < wat_keys.length; i++) {
for (j = 0; j < wat_keys[i].length; j++) {
str = wat_keys[i][j];
if (!(Location_Logic[str]) && (Check[str] == "small_key" || Check[str] == "unknown"|| (Check[str] == "boss_key" && (Check["water_morpha"] == "small_key" || Check["water_morpha"] == "unknown")))) {
Logic.min_water_keys = i;
done = true;
break;
}
}
if (done) {break;}
}
if (!done) {Logic.min_water_keys = 6;}
}
else
Logic.min_water_keys = 0;
Logic.water_keys = Math.max(Logic.min_water_keys,Logic.current_water_keys);
if (!Logic.water_boss_key) {
var bk = true;
for (i = AreaIndexes[AreaNames.indexOf("Water")-1]; i < AreaIndexes[AreaNames.indexOf("Water")]-1; i++) {4
if(Locations[i] == "water_morpha" || Locations[i].includes("gs_"))
continue;
str = Locations[i];
if (!Location_Logic[str] && (Check[str] == "boss_key" || Check[str] == "unknown")) {
bk = false;
break;
}
}
Logic.water_boss_key = bk;
}
if (Logic.current_spirit_keys < 5) {
var spi_keys = [["spirit_childLeft","spirit_childRight","spirit_adultLeft","spirit_adultRight"], ["spirit_childClimb1","spirit_childClimb2","spirit_map","spirit_sunRoom"], [], ["spirit_rightHand","spirit_rotatingMirror1","spirit_rotatingMirror2","spirit_lullabyHigh","spirit_lullabyHand"],["spirit_nearFourArmos","spirit_invisible1","spirit_invisible2","spirit_leftHand"],["spirit_bossKey","spirit_tippyTop"]]
var done = false;
for (i = 0; i < spi_keys.length; i++) {
for (j = 0; j < spi_keys[i].length; j++) {
str = spi_keys[i][j];
if (!(Location_Logic[str]) && (Check[str] == "small_key" || Check[str] == "unknown" )) {
Logic.min_spirit_keys = i;
done = true;
break;
}
}
if (done) {break;}
}
if (!done) {Logic.min_spirit_keys = 5;}
}
Logic.spirit_keys = Math.max(Logic.min_spirit_keys,Logic.current_spirit_keys);
if (!Logic.spirit_boss_key) {
var bk = true;
for (i = AreaIndexes[AreaNames.indexOf("Spirit")-1]; i < AreaIndexes[AreaNames.indexOf("Spirit")]-1; i++) {
if(Locations[i] == "spirit_twinrova" || Locations[i].includes("gs_"))
continue;
str = Locations[i];
if (!Location_Logic[str] && (Check[str] == "boss_key" || Check[str] == "unknown")) {
bk = false;
break;
}
}
Logic.spirit_boss_key = bk;
}
if (Logic.current_shadow_keys < 5) {
var sha_keys = [["shadow_map","shadow_hovers","shadow_compass","shadow_earlySilvers"], ["shadow_spinning1","shadow_spinning2","shadow_spikesLower","shadow_spikesUpper","shadow_spikesSwitch"], ["shadow_pot","shadow_redeadSilvers"],["shadow_wind","shadow_bombable","shadow_gibdos"],["shadow_dins1","shadow_dins2","shadow_floormaster"]]
var done = false;
for (i = 0; i < sha_keys.length; i++) {
for (j = 0; j < sha_keys[i].length; j++) {
str = sha_keys[i][j];
if (!(Location_Logic[str]) && (Check[str] == "small_key" || Check[str] == "unknown" )) {
Logic.min_shadow_keys = i;
done = true;
break;
}
}
if (done) {break;}
}
if (!done) {Logic.min_shadow_keys = 5;}
}
Logic.shadow_keys = Math.max(Logic.min_shadow_keys,Logic.current_shadow_keys);
if (!Logic.shadow_boss_key) {
var bk = true;
for (i = AreaIndexes[AreaNames.indexOf("Shadow")-1]; i < AreaIndexes[AreaNames.indexOf("Shadow")]-1; i++) {
if(Locations[i] == "shadow_bongo" || Locations[i].includes("gs_"))
continue;
str = Locations[i];
if (!Location_Logic[str] && (Check[str] == "boss_key" || Check[str] == "unknown")) {
bk = false;
break;
}
}
Logic.shadow_boss_key = bk;
}
if (Logic.current_ganons_keys < 2) {
Logic.min_ganons_keys = 2;
var done = false;
for (i = AreaIndexes[AreaNames.indexOf("Ganon's")-1]; i < AreaIndexes[AreaNames.indexOf("Ganon's")]; i++) {
if (Locations[i] == "ganons_lightTrialLullaby") {continue;}
str = Locations[i];
if (!(Location_Logic[str]) && (Check[str] == "small_key" || Check[str] == "unknown" )) {
Logic.min_ganons_keys = 0;
break;
}
}
}
Logic.ganons_keys = Math.max(Logic.min_ganons_keys,Logic.current_ganons_keys);
if (Logic.current_gtg_keys < 9) {
var ger_keys = [["lobbyLeft","lobbyRight","stalfos","wolfos","silvers1","silvers2","silvers3","silvers4","eyes","aboveEyes","keese","fireChest","freestanding","right2","right3","beamos","toilet"], [],[],["left1"],["left2"],[],["left3"],["left4"]]
var done = false;
for (i = 0; i < ger_keys.length; i++) {
for (j = 0; j < ger_keys[i].length; j++) {
str = "gtg_" + ger_keys[i][j];
if (!(Location_Logic[str]) && (Check[str] == "small_key" || Check[str] == "unknown" )) {
Logic.min_gtg_keys = i;
done = true;
break;
}
}
if (done) {break;}
}
if (!done) {Logic.min_gtg_keys = 9;}
}
Logic.gtg_keys = Math.max(Logic.min_gtg_keys,Logic.current_gtg_keys);
if (Logic.current_well_keys < 3) {
Logic.min_well_keys = 3;
for (i = AreaIndexes[AreaNames.indexOf("Well")-1]; i < AreaIndexes[AreaNames.indexOf("Well")]; i++) {
if (Locations[i] == "well_locked1" || Locations[i] == "well_locked2" || Locations[i].includes("gs_")) {continue;}
str = Locations[i];
if (!(Location_Logic[str]) && (Check[str] == "small_key" || Check[str] == "unknown" )) {
Logic.min_well_keys = 0;
break;
}
}
}
Logic.well_keys = Math.max(Logic.min_well_keys,Logic.current_well_keys);
if(Logic.can_enter_ganons && Logic.golden_gauntlets) {Logic.min_ganons_keys = 1;}
Logic.ganons_keys = Math.max(Logic.min_ganons_keys,Logic.current_ganons_keys);
}
if(document.getElementById("keysanity").value == "KEY RINGS" && !Player.forest_key_ring) {
Logic.forest_keys = Player.current_forest_keys = 0;
Logic.forest_boss_key = Player.forest_boss_key = false;
}
if(document.getElementById("keysanity").value == "KEY RINGS" && !Player.fire_key_ring) {
Logic.fire_keys = Player.current_fire_keys = 0;
Logic.fire_boss_key = Player.fire_boss_key = false;
}
if(document.getElementById("keysanity").value == "KEY RINGS" && !Player.water_key_ring) {
Logic.water_keys = Player.current_water_keys = 0;
Logic.water_boss_key = Player.water_boss_key = false;
}
if(document.getElementById("keysanity").value == "KEY RINGS" && !Player.shadow_key_ring) {
Logic.shadow_keys = Player.current_shadow_keys = 0;
Logic.shadow_boss_key = Player.shadow_boss_key = false;
}
if(document.getElementById("keysanity").value == "KEY RINGS" && !Player.spirit_key_ring) {
Logic.spirit_keys = Player.current_spirit_keys = 0;
Logic.spirit_boss_key = Player.spirit_boss_key = false;
}
if(document.getElementById("keysanity").value == "KEY RINGS" && !Player.gtg_key_ring) {
Logic.gtg_keys = Player.current_gtg_keys = 0;
}
if(document.getElementById("keysanity").value == "KEY RINGS" && !Player.well_key_ring) {
Logic.well_keys = Player.current_well_keys = 0;
}
if(document.getElementById("keysanity").value == "KEY RINGS" && !Player.ganons_key_ring) {
Logic.ganons_keys = Player.current_ganons_keys = 0;
}
}
function logicShortcuts() {
Logic.child_can_enter_river = Logic.bomb_bag || Logic.silver_scale || Spawn.child_zd || Spawn.child_zr;
Logic.bean_access = ((Logic.child_can_enter_river && document.getElementById("shuffleBeanPack").value == "OFF") || (Logic.magic_bean_pack && document.getElementById("shuffleBeanPack").value == "ON") || (document.getElementById("preplantedBeans").value == "ON"));
Logic.child_can_enter_domain = (Logic.child_can_enter_river && Logic.lullaby) || Logic.silver_scale || Spawn.child_zd;
Logic.jabu_entrance_access = ((Logic.rutos_letter || document.getElementById("closedFountain").value == "OPEN") && Logic.child_can_enter_domain) || Spawn.child_zf;
Logic.can_hit_jabu_switch = Logic.jabu_access && Logic.bomb_bag || ((Logic.boomerang || Logic.slingshot) && Logic.jabu_child_access) || ((Logic.hookshot || Logic.bow) && Logic.jabu_adult_access);
Logic.fortress_access = Logic.eponas || Logic.longshot || Spawn.adult_gf || Spawn.adult_wasteland || (Spawn.child_gv_gf && Logic.kokiri_sword);
Logic.can_save_carpenters = (Spawn.child_gv_gf && Logic.kokiri_sword) || (Logic.fortress_access && ((Logic.bow || Logic.hookshot || Logic.hover_boots) || true)) /*fast carpenter fix**/;
Logic.gtg_entrance_access = (Logic.can_save_carpenters && document.getElementById("shuffleGerudoCard").value == "OFF") || (Logic.fortress_access && Logic.gerudo_card && document.getElementById("shuffleGerudoCard").value == "ON");
Logic.can_cross_quicksand = Logic.fortress_access && (Logic.longshot || Logic.hover_boots) && (document.getElementById("shuffleGerudoCard").value == "OFF" || Logic.gerudo_card || Spawn.adult_wasteland);
Logic.can_enter_colossus = (Logic.can_cross_quicksand && (Logic.brackets || Logic.can_see)) || Logic.requiem || Spawn.child_colossus || Spawn.adult_colossus || Location_Logic.spirit_leftHand || Location_Logic.spirit_rightHand;
Logic.can_enter_child_colossus = Logic.requiem || Spawn.child_colossus || Location_Logic.spirit_rightHand;
Logic.can_use_fire = (Logic.dins_fire || (Logic.bow && Logic.fire_arrows)) && Logic.magic;
Logic.can_use_dins = Logic.dins_fire && Logic.magic;
Logic.can_shoot_blue_fire_arrows = Logic.ice_arrows && Logic.bow && Logic.magic && document.getElementById("blueFireArrows").value == "ON";
Logic.can_use_farores = Logic.farores_wind && Logic.magic;
Logic.can_see = Logic.lens && Logic.magic;
Logic.can_blast_or_smash = Logic.bomb_bag || Logic.hammer;
Logic.can_enter_child_dodongos = Logic.bomb_bag || Logic.goron_bracelet;
Logic.can_break_dodongos_wall = Logic.dodongos_access && (Logic.goron_bracelet || Logic.bomb_bag || (Logic.dodongos_adult_access && Logic.hammer));
Logic.dodongos_climb = Logic.can_break_dodongos_wall && (Logic.bomb_bag || Logic.goron_bracelet || Logic.can_use_dins);
Logic.can_enter_shadow_entrance = (Logic.nocturne || Spawn.adult_nocturne) && Logic.can_use_dins;//&& Logic.can_see;
Logic.can_cross_shadow_gap= Logic.shadow_temple_adult_access && Logic.hover_boots;
Logic.can_bomb_shadow_wall = Logic.can_cross_shadow_gap && Logic.bomb_bag && (document.getElementById("keysanity").value != "KEY RINGS" || CouldHave.shadow_key_ring);
Logic.can_pass_shadow_hookshot_door = Logic.can_bomb_shadow_wall && Logic.hookshot;
Logic.can_ride_shadow_boat = Logic.can_pass_shadow_hookshot_door && Logic.lullaby;
Logic.can_beat_shadow_boss = Logic.can_ride_shadow_boat && (Logic.bow || Logic.longshot);
Logic.can_stop_link_the_goron = Logic.bomb_bag || Logic.bow || Logic.goron_bracelet;
Logic.can_enter_adult_domain = Logic.lullaby || Spawn.adult_zd;
Logic.ice_entrance_access = (Logic.can_enter_adult_domain && ((Logic.rutos_letter && Logic.child_can_enter_domain) || document.getElementById("closedFountain").value == "OPEN")) || Spawn.adult_zf;
Logic.reverse_crater = (Logic.hover_boots || Logic.hookshot || Logic.child_can_enter_river) && Logic.bolero;
Logic.can_enter_fire_temple_entrance = (Logic.crater_by_city && (Logic.hookshot || Logic.hover_boots)) || Logic.bolero;
Logic.crater_by_city = Logic.bow || Logic.bomb_bag || Logic.goron_bracelet || Logic.reverse_crater ||((Logic.hammer || Spawn.adult_upper_dmc) && Logic.hover_boots) || (Logic.longshot && Logic.goron_tunic && (Logic.hammer || Spawn.adult_upper_dmc)) || Spawn.adult_lower_dmc;
Logic.crater_top = Logic.crater_by_city || Logic.hammer || Spawn.adult_upper_dmc;
Logic.can_push_spirit_silver_block = Logic.spirit_temple_adult_access && Logic.silver_gauntlets;
Logic.can_pass_mido_as_adult = Logic.minuet || Logic.sarias || Spawn.adult_meadow;
Logic.can_enter_forest_temple_entrance = Logic.can_pass_mido_as_adult && Logic.hookshot;
Logic.can_enter_well_entrance = Logic.storms;
Logic.medalCount = 0; if (Logic.forest_medallion) {Logic.medalCount += 1;} if (Logic.fire_medallion) {Logic.medalCount += 1;} if (Logic.water_medallion) {Logic.medalCount += 1;} if (Logic.shadow_medallion) {Logic.medalCount += 1;} if (Logic.spirit_medallion) {Logic.medalCount += 1;} if (Logic.light_medallion) {Logic.medalCount += 1;}
Logic.stoneCount = 0; if (Logic.kokiri_emerald) {Logic.stoneCount += 1;} if (Logic.goron_ruby) {Logic.stoneCount += 1;} if (Logic.zora_sapphire) {Logic.stoneCount += 1;}
Logic.rewardCount = Logic.medalCount + Logic.stoneCount;
Logic.can_enter_ganons = (Logic.medalCount == 6 && document.getElementById("ganonsBridge").value == "ALL_MED") || document.getElementById("ganonsBridge").value == "OPEN" || (document.getElementById("ganonsBridge").value == "5_MEDALS" && Logic.medalCount >= 5) || (document.getElementById("ganonsBridge").value == "4_MEDALS" && Logic.medalCount >= 4) || (document.getElementById("ganonsBridge").value == "3_MEDALS" && Logic.medalCount >= 3) || (document.getElementById("ganonsBridge").value == "2_MEDALS" && Logic.medalCount >= 2) || (document.getElementById("ganonsBridge").value == "3_STONES" && Logic.stoneCount == 3) || (document.getElementById("ganonsBridge").value == "1_REWARD" && Logic.rewardCount >= 1) || (document.getElementById("ganonsBridge").value == "2_REWARDS" && Logic.rewardCount >= 2) || (document.getElementById("ganonsBridge").value == "3_REWARDS" && Logic.rewardCount >= 3) || (document.getElementById("ganonsBridge").value == "4_REWARDS" && Logic.rewardCount >= 4) || (document.getElementById("ganonsBridge").value == "5_REWARDS" && Logic.rewardCount >= 5) || (document.getElementById("ganonsBridge").value == "6_REWARDS" && Logic.rewardCount >= 6) || (document.getElementById("ganonsBridge").value == "7_REWARDS" && Logic.rewardCount >= 7) || (document.getElementById("ganonsBridge").value == "8_REWARDS" && Logic.rewardCount >= 8) || (document.getElementById("ganonsBridge").value == "9_REWARDS" && Logic.rewardCount >= 9) || (document.getElementById("ganonsBridge").value == "VANILLA" && Logic.spirit_medallion && Logic.shadow_medallion && Logic.light_arrows);
Logic.can_climb_fire_temple = Logic.fire_temple_adult_access && Logic.fire_keys >=3 && Logic.can_wear_goron_tunic && Logic.goron_bracelet && (Logic.bow || Logic.hookshot || Logic.bomb_bag);
Logic.can_enter_water_entrance = (Logic.hookshot && Logic.iron_boots) || (Logic.longshot && Logic.golden_scale);
Logic.can_do_water_checks = Logic.water_temple_adult_access && Logic.iron_boots;
Logic.middle_water = Logic.can_do_water_checks && Logic.lullaby && (Logic.bow || Logic.can_use_dins);
Logic.projectile_both = Logic.bomb_bag || ((Logic.slingshot || Logic.boomerang) && (Logic.bow || Logic.hookshot));
Logic.projectile_child = Logic.bomb_bag || Logic.slingshot || Logic.boomerang;
Logic.projectile_adult = Logic.bomb_bag || Logic.bow || Logic.hookshot;
Logic.can_wear_goron_tunic = Logic.goron_tunic || (Logic.adults_wallet && (Logic.bomb_bag || Logic.goron_bracelet || Logic.bow || Spawn.adult_gc_shop));
Logic.can_wear_zora_tunic = Logic.zora_tunic || (Logic.giants_wallet && (((Logic.lullaby || Spawn.adult_zd) && Logic.bottle) || Spawn.adult_zd_shop));
Logic.child_can_get_past_mido = document.getElementById("closedDeku").value == "OPEN" || Logic.kokiri_sword;
Logic.can_enter_deku_entrance = Logic.child_can_get_past_mido;
Player.child_can_enter_river = Player.bomb_bag || Player.has_chus || Player.silver_scale || Spawn.child_zd || Spawn.child_zr;
Player.child_can_enter_domain = Player.silver_scale || Spawn.child_zd || Spawn.child_zr || Player.bomb_bag || Player.has_chus;
Player.bean_access = ((Player.child_can_enter_river && document.getElementById("shuffleBeanPack").value == "OFF") || (Player.magic_bean_pack && document.getElementById("shuffleBeanPack").value == "ON") || (document.getElementById("preplantedBeans").value == "ON"));
Player.jabu_entrance_access = (Player.child_can_enter_domain && (Player.rutos_letter || document.getElementById("closedFountain").value == "OPEN")) || Spawn.child_zf;
Player.can_hit_jabu_switch = Player.jabu_access && Player.bomb_bag || Player.has_chus || ((Player.boomerang || Player.slingshot) && Player.jabu_child_access) || ((Player.hookshot || Player.bow) && Player.jabu_adult_access);
Player.fortress_access = Player.eponas || Player.longshot || Player.requiem || Spawn.adult_gf || Spawn.adult_wasteland || Player.hookshot;
Player.can_save_carpenters = Spawn.child_gv_gf || (Player.fortress_access && ((Player.bow || Player.hookshot || Player.hover_boots) || true)) /*fast carpenter fix**/;
Player.gtg_entrance_access = (Player.can_save_carpenters && document.getElementById("shuffleGerudoCard").value == "OFF") || (Player.fortress_access && Player.gerudo_card && document.getElementById("shuffleGerudoCard").value == "ON");
Player.can_cross_quicksand = Player.fortress_access && (document.getElementById("shuffleGerudoCard").value == "OFF" || Player.gerudo_card);
Player.can_enter_colossus = (Player.can_cross_quicksand) || Player.requiem || Spawn.child_colossus || Spawn.adult_colossus || Spawn.adult_wasteland || Spawn.child_wasteland || Location_Access.spirit_leftHand || Location_Access.spirit_rightHand;
Player.can_enter_child_colossus = Player.requiem || Spawn.child_colossus || Spawn.child_wasteland || Location_Access.spirit_rightHand;
Player.can_use_fire_arrows = Player.fire_arrows && Player.magic && Player.bow;
Player.can_use_fire = (Player.dins_fire || (Player.bow && Player.fire_arrows)) && Player.magic;
Player.can_use_dins = Player.dins_fire && Player.magic;
Player.can_shoot_blue_fire_arrows = Player.ice_arrows && Player.bow && Player.magic && document.getElementById("blueFireArrows").value == "ON";
Player.can_use_farores = Player.farores_wind && Player.magic;
Player.can_use_bottle = (Player.bottle1 || Player.bottle2 || Player.bottle3 || Player.bottle4 || (Player.rutos_letter && Player.child_can_enter_river));
Player.can_see = Player.lens && Player.magic;
Player.can_use_explosives = Player.bomb_bag || Player.has_chus;
Player.can_blast_or_smash = Player.bomb_bag || Player.hammer || Player.has_chus;
Player.can_enter_child_dodongos = Player.bomb_bag || Player.goron_bracelet || Player.has_chus;
Player.can_break_dodongos_wall = Player.dodongos_access && (Player.bomb_bag || Player.has_chus || Player.goron_bracelet || (Player.dodongos_adult_access && (Player.hammer || Player.can_shoot_blue_fire_arrows)));
Player.dodongos_climb = Player.can_break_dodongos_wall && (Player.bomb_bag || Player.has_chus || Player.goron_bracelet || Player.can_use_dins || (Player.dodongos_adult_access && Player.bow));
Player.can_enter_shadow_entrance= (Player.nocturne || Spawn.adult_nocturne) && (Player.can_use_dins || (document.getElementById("FAE_option").value == "ALLOWED" && Player.can_use_fire));//&& Player.can_see;
Player.can_cross_shadow_gap= Player.shadow_temple_adult_access && Player.hover_boots;
Player.can_bomb_shadow_wall = Player.can_cross_shadow_gap && (Player.bomb_bag || Player.has_chus) && (document.getElementById("keysanity").value != "KEY RINGS" || Player.shadow_key_ring);
Player.can_pass_shadow_hookshot_door = Player.can_bomb_shadow_wall && Player.hookshot;
Player.can_ride_shadow_boat = Player.can_pass_shadow_hookshot_door && Player.lullaby;
Player.can_beat_shadow_boss = Player.can_ride_shadow_boat && (Player.bow || Player.longshot || Player.has_chus) && Player.shadow_boss_key;
Player.can_stop_link_the_goron = Player.bomb_bag || Player.bow || Player.goron_bracelet || Player.has_chus;
Player.can_enter_adult_domain = Player.lullaby || Player.hover_boots || Spawn.adult_zd;
Player.ice_entrance_access = (Player.can_enter_adult_domain && ((Player.rutos_letter && Player.child_can_enter_domain) || document.getElementById("closedFountain").value == "OPEN" || Rules.kzSkip)) || Spawn.adult_zf;
Player.reverse_crater = (Player.hover_boots || Player.hookshot || Player.child_can_enter_river) && Player.bolero;
Player.crater_by_city = Player.can_stop_link_the_goron || Player.reverse_crater || Player.hammer || (Player.longshot && Player.hammer) || Spawn.adult_lower_dmc;
Player.crater_top = Player.crater_by_city || Player.hammer || Spawn.adult_upper_dmc;
Player.can_enter_fire_temple_entrance = (Player.crater_by_city && (Player.hookshot || Player.hover_boots)) || Player.bolero;
Player.can_push_spirit_silver_block = Player.spirit_temple_adult_access && Player.silver_gauntlets;
Player.can_enter_forest_temple_entrance = Player.hookshot;
Player.can_enter_well_entrance = Player.storms;
Player.medalCount = 0; if (Player.forest) {Player.medalCount += 1;} if (Player.fire) {Player.medalCount += 1;} if (Player.water) {Player.medalCount += 1;} if (Player.shadow_medallion) {Player.medalCount += 1;} if (Player.spirit_medallion) {Player.medalCount += 1;} if (Player.light_medallion) {Player.medalCount += 1;}
Player.stoneCount = 0; if (Player.emerald) {Player.stoneCount += 1;} if (Player.ruby) {Player.stoneCount += 1;} if (Player.sapphire) {Player.stoneCount += 1;}
Player.rewardCount = Player.medalCount + Player.stoneCount;
Player.can_enter_ganons = (Player.medalCount == 6 && document.getElementById("ganonsBridge").value == "ALL_MED") || document.getElementById("ganonsBridge").value == "OPEN" || (document.getElementById("ganonsBridge").value == "5_MEDALS" && Player.medalCount >= 5) || (document.getElementById("ganonsBridge").value == "4_MEDALS" && Player.medalCount >= 4) || (document.getElementById("ganonsBridge").value == "3_MEDALS" && Player.medalCount >= 3) || (document.getElementById("ganonsBridge").value == "2_MEDALS" && Player.medalCount >= 2) || (document.getElementById("ganonsBridge").value == "3_STONES" && Player.stoneCount == 3) || (document.getElementById("ganonsBridge").value == "1_REWARD" && Player.rewardCount >= 1) || (document.getElementById("ganonsBridge").value == "2_REWARDS" && Player.rewardCount >= 2) || (document.getElementById("ganonsBridge").value == "3_REWARDS" && Player.rewardCount >= 3) || (document.getElementById("ganonsBridge").value == "4_REWARDS" && Player.rewardCount >= 4) || (document.getElementById("ganonsBridge").value == "5_REWARDS" && Player.rewardCount >= 5) || (document.getElementById("ganonsBridge").value == "6_REWARDS" && Player.rewardCount >= 6) || (document.getElementById("ganonsBridge").value == "7_REWARDS" && Player.rewardCount >= 7) || (document.getElementById("ganonsBridge").value == "8_REWARDS" && Player.rewardCount >= 8) || (document.getElementById("ganonsBridge").value == "9_REWARDS" && Player.rewardCount >= 9) || (document.getElementById("ganonsBridge").value == "VANILLA" && Player.spirit_medallion && Player.shadow_medallion && Player.light_arrows);
Player.can_climb_fire_temple = Player.fire_temple_adult_access && Player.current_fire_keys >=3 && (Player.bow || Player.hookshot || Player.bomb_bag || Player.has_chus);
Player.can_enter_water_entrance = Player.hookshot && (Player.iron_boots || Player.golden_scale);
Player.can_do_water_checks = Player.water_temple_adult_access && (Player.iron_boots || Player.longshot);
Player.middle_water = Player.can_do_water_checks && Player.lullaby && (Player.bow || Player.can_use_dins || Player.current_water_keys >= 1);
Player.projectile_both = Player.bomb_bag || Player.has_chus || ((Player.slingshot || Player.boomerang) && (Player.bow || Player.hookshot));
Player.projectile_child = Player.bomb_bag || Player.has_chus || Player.slingshot || Player.boomerang;
Player.projectile_adult = Player.bomb_bag || Player.has_chus || Player.bow || Player.hookshot;
Player.can_wear_goron_tunic = true;
Player.can_wear_zora_tunic = true;
Player.can_climb_gtg_hole = Player.hookshot || Player.hover_boots || Player.bomb_bag;
Player.child_can_get_past_mido = document.getElementById("closedDeku").value == "OPEN" || Player.kokiri_sword;
Player.can_enter_deku_entrance = Player.child_can_get_past_mido;
CouldHave.child_can_enter_river = CouldHave.bomb_bag || Player.has_chus || CouldHave.silver_scale || Spawn.child_zd || Spawn.child_zr;
CouldHave.bean_access = ((CouldHave.child_can_enter_river && document.getElementById("shuffleBeanPack").value == "OFF") || (CouldHave.magic_bean_pack && document.getElementById("shuffleBeanPack").value == "ON") || (document.getElementById("preplantedBeans").value == "ON"));
CouldHave.child_can_enter_domain = CouldHave.silver_scale || Spawn.child_zd || Spawn.child_zr || CouldHave.bomb_bag || Player.has_chus;
CouldHave.jabu_entrance_access = (CouldHave.child_can_enter_domain && (CouldHave.rutos_letter || document.getElementById("closedFountain").value == "OPEN")) || Spawn.child_zf;
CouldHave.can_hit_jabu_switch = CouldHave.jabu_access && CouldHave.bomb_bag || Player.has_chus || ((CouldHave.boomerang || CouldHave.slingshot) && CouldHave.jabu_child_access) || ((CouldHave.hookshot || CouldHave.bow) && CouldHave.jabu_adult_access);
CouldHave.fortress_access = CouldHave.eponas || CouldHave.longshot || CouldHave.requiem || Spawn.adult_gf || Spawn.adult_wasteland || CouldHave.hookshot;
CouldHave.can_save_carpenters = Spawn.child_gv_gf || (CouldHave.fortress_access && ((CouldHave.bow || CouldHave.hookshot || CouldHave.hover_boots) || true)) /*fast carpenter fix**/;
CouldHave.gtg_entrance_access = (CouldHave.can_save_carpenters && document.getElementById("shuffleGerudoCard").value == "OFF") || (CouldHave.fortress_access && CouldHave.gerudo_card && document.getElementById("shuffleGerudoCard").value == "ON");
CouldHave.can_cross_quicksand = CouldHave.fortress_access && (document.getElementById("shuffleGerudoCard").value == "OFF" || CouldHave.gerudo_card);
CouldHave.can_enter_colossus = (CouldHave.can_cross_quicksand) || CouldHave.requiem || Spawn.child_colossus || Spawn.adult_colossus || Spawn.adult_wasteland || Spawn.child_wasteland || Location_Could_Access.spirit_leftHand || Location_Could_Access.spirit_rightHand;
CouldHave.can_enter_child_colossus = CouldHave.requiem || Spawn.child_colossus || Spawn.child_wasteland || Location_Could_Access.spirit_rightHand;
CouldHave.can_use_fire = (CouldHave.dins_fire || (CouldHave.bow && CouldHave.fire_arrows)) && CouldHave.magic;
CouldHave.can_use_dins = CouldHave.dins_fire && CouldHave.magic;
CouldHave.can_shoot_blue_fire_arrows = CouldHave.ice_arrows && CouldHave.bow && CouldHave.magic && document.getElementById("blueFireArrows").value == "ON";
CouldHave.can_use_farores = CouldHave.farores_wind && CouldHave.magic;
CouldHave.can_use_bottle = (CouldHave.bottle1 || CouldHave.bottle2 || CouldHave.bottle3 || CouldHave.bottle4 || (CouldHave.rutos_letter && CouldHave.child_can_enter_river));
CouldHave.can_see = CouldHave.lens && CouldHave.magic;
CouldHave.can_blast_or_smash = CouldHave.bomb_bag || CouldHave.hammer || Player.has_chus;
CouldHave.can_enter_child_dodongos = CouldHave.bomb_bag || CouldHave.goron_bracelet || Player.has_chus;
CouldHave.can_break_dodongos_wall = CouldHave.dodongos_access && (CouldHave.bomb_bag || Player.has_chus || CouldHave.goron_bracelet || (CouldHave.dodongos_adult_access && (CouldHave.hammer || CouldHave.can_shoot_blue_fire_arrows)))
CouldHave.dodongos_climb = CouldHave.can_break_dodongos_wall && (CouldHave.bomb_bag || Player.has_chus || CouldHave.goron_bracelet || CouldHave.can_use_dins || (Player.dodongos_adult_access && CouldHave.bow));
CouldHave.can_enter_shadow_entrance= (CouldHave.nocturne || Spawn.adult_nocturne) && (CouldHave.can_use_dins || (document.getElementById("FAE_option").value == "ALLOWED" && Player.can_use_fire));//&& CouldHave.can_see;
CouldHave.can_cross_shadow_gap= CouldHave.shadow_temple_adult_access && CouldHave.hover_boots;
CouldHave.can_bomb_shadow_wall = CouldHave.can_cross_shadow_gap && (CouldHave.bomb_bag || Player.has_chus) && (document.getElementById("keysanity").value != "KEY RINGS" || CouldHave.shadow_key_ring);
CouldHave.can_pass_shadow_hookshot_door = CouldHave.can_bomb_shadow_wall && CouldHave.hookshot;
CouldHave.can_ride_shadow_boat = CouldHave.can_pass_shadow_hookshot_door && CouldHave.lullaby;
CouldHave.can_beat_shadow_boss = CouldHave.can_ride_shadow_boat && (CouldHave.bow || CouldHave.longshot || Player.has_chus || CouldHave.bomb_bag) && (document.getElementById("erOption").value != "DUNGEONS" || Player.shadow_boss_key);
CouldHave.can_stop_link_the_goron = CouldHave.bomb_bag || CouldHave.bow || CouldHave.goron_bracelet || Player.has_chus;
CouldHave.ice_entrance_access = (CouldHave.can_enter_adult_domain && ((CouldHave.rutos_letter && CouldHave.child_can_enter_domain) || document.getElementById("closedFountain").value == "OPEN" || Rules.kzSkip)) || Spawn.adult_zf;
CouldHave.can_enter_adult_domain = CouldHave.lullaby || CouldHave.hover_boots || Spawn.adult_zd;
CouldHave.reverse_crater = (CouldHave.hover_boots || CouldHave.hookshot || CouldHave.child_can_enter_river) && CouldHave.bolero;
CouldHave.crater_by_city = CouldHave.can_stop_link_the_goron || CouldHave.reverse_crater || CouldHave.hammer || (CouldHave.longshot && CouldHave.hammer) || Spawn.adult_lower_dmc;
CouldHave.crater_top = CouldHave.crater_by_city || CouldHave.hammer || Spawn.adult_upper_dmc;
CouldHave.can_enter_fire_temple_entrance = (CouldHave.crater_by_city && (CouldHave.hookshot || CouldHave.hover_boots)) || CouldHave.bolero;
CouldHave.can_push_spirit_silver_block = CouldHave.spirit_temple_adult_access && CouldHave.silver_gauntlets;
CouldHave.can_enter_forest_temple_entrance = CouldHave.hookshot;
CouldHave.can_enter_well_entrance = CouldHave.storms;
CouldHave.medalCount = 0; if (CouldHave.forest || Player.forest || Location_Access.forest_medallion_location) {CouldHave.medalCount += 1;} if (CouldHave.fire || Player.fire || Location_Access.fire_medallion_location) {CouldHave.medalCount += 1;} if (CouldHave.water || Player.water || Location_Access.water_medallion_location) {CouldHave.medalCount += 1;} if (Player.shadow_medallion || CouldHave.shadow_medallion || Location_Access.shadow_medallion_location) {CouldHave.medalCount += 1;} if (Player.spirit_medallion || CouldHave.spirit_medallion || Location_Access.spirit_medallion_location) {CouldHave.medalCount += 1;} if (Player.light_medallion || CouldHave.light_medallion || Location_Peek.light_medallion_location) {CouldHave.medalCount += 1;}
CouldHave.stoneCount = 0; if (CouldHave.emerald || Player.emerald || Location_Access.emerald_location) {CouldHave.stoneCount += 1;} if (CouldHave.ruby || Player.ruby || Location_Access.ruby_location) {CouldHave.stoneCount += 1;} if (CouldHave.sapphire || Player.sapphire || Location_Access.sapphire_location) {CouldHave.stoneCount += 1;}
CouldHave.rewardCount = CouldHave.medalCount + CouldHave.stoneCount;
CouldHave.can_enter_ganons = (CouldHave.medalCount == 6 && document.getElementById("ganonsBridge").value == "ALL_MED") || document.getElementById("ganonsBridge").value == "OPEN" || (document.getElementById("ganonsBridge").value == "5_MEDALS" && CouldHave.medalCount >= 5) || (document.getElementById("ganonsBridge").value == "4_MEDALS" && CouldHave.medalCount >= 4) || (document.getElementById("ganonsBridge").value == "3_MEDALS" && CouldHave.medalCount >= 3) || (document.getElementById("ganonsBridge").value == "2_MEDALS" && CouldHave.medalCount >= 2) || (document.getElementById("ganonsBridge").value == "3_STONES" && CouldHave.stoneCount == 3) || (document.getElementById("ganonsBridge").value == "1_REWARD" && CouldHave.rewardCount >= 1) || (document.getElementById("ganonsBridge").value == "2_REWARDS" && CouldHave.rewardCount >= 2) || (document.getElementById("ganonsBridge").value == "3_REWARDS" && CouldHave.rewardCount >= 3) || (document.getElementById("ganonsBridge").value == "4_REWARDS" && CouldHave.rewardCount >= 4) || (document.getElementById("ganonsBridge").value == "5_REWARDS" && CouldHave.rewardCount >= 5) || (document.getElementById("ganonsBridge").value == "6_REWARDS" && CouldHave.rewardCount >= 6) || (document.getElementById("ganonsBridge").value == "7_REWARDS" && CouldHave.rewardCount >= 7) || (document.getElementById("ganonsBridge").value == "8_REWARDS" && CouldHave.rewardCount >= 8) || (document.getElementById("ganonsBridge").value == "9_REWARDS" && CouldHave.rewardCount >= 9) || (document.getElementById("ganonsBridge").value == "VANILLA" && (Player.spirit_medallion || CouldHave.spirit_medallion || Location_Access.spirit_medallion_location) && (Player.shadow_medallion || CouldHave.shadow_medallion || Location_Access.shadow_medallion_location) && CouldHave.light_arrows);
CouldHave.can_climb_fire_temple = CouldHave.fire_temple_adult_access && (Player.current_fire_keys >=3 || (CouldHave.hammer && (CouldHave.bomb_bag || Player.has_chus))) && (CouldHave.bow || CouldHave.hookshot || CouldHave.bomb_bag || Player.has_chus) && (document.getElementById("keysanity").value != "KEY RINGS" || CouldHave.fire_key_ring);
CouldHave.can_enter_water_entrance = CouldHave.hookshot && (CouldHave.iron_boots || CouldHave.golden_scale);
CouldHave.can_do_water_checks = CouldHave.water_temple_adult_access && (CouldHave.iron_boots || CouldHave.longshot);
CouldHave.middle_water = CouldHave.can_do_water_checks && CouldHave.lullaby && (CouldHave.bow || CouldHave.can_use_dins || Player.current_water_keys >= 1);
CouldHave.projectile_both = CouldHave.bomb_bag || Player.has_chus || ((CouldHave.slingshot || CouldHave.boomerang) && (CouldHave.bow || CouldHave.hookshot));
CouldHave.projectile_child = CouldHave.bomb_bag || Player.has_chus || CouldHave.slingshot || CouldHave.boomerang;
CouldHave.projectile_adult = CouldHave.bomb_bag || Player.has_chus || CouldHave.bow || CouldHave.hookshot;
CouldHave.can_wear_goron_tunic = true;
CouldHave.can_wear_zora_tunic = true;
CouldHave.can_climb_gtg_hole = CouldHave.hookshot || CouldHave.hover_boots || CouldHave.bomb_bag;
CouldHave.child_can_get_past_mido = document.getElementById("closedDeku").value == "OPEN" || CouldHave.kokiri_sword;
CouldHave.can_enter_deku_entrance = CouldHave.child_can_get_past_mido;
}
function locationLogic(){
Location_Logic.kokiri_mido_1 = true;
Location_Logic.kokiri_mido_2 = true;
Location_Logic.kokiri_mido_3 = true;
Location_Logic.kokiri_mido_4 = true;
Location_Logic.kokiri_sword = true;
Location_Logic.kokiri_storms = Logic.storms;
Location_Logic.talons_chickens = true;
Location_Logic.back_of_ranch = true;
Location_Logic.hyrule_remoteGrotto = Logic.can_blast_or_smash;
Location_Logic.hyrule_openGrotto = true;
Location_Logic.hyrule_hp_scrub = Logic.can_blast_or_smash;
Location_Logic.hyrule_marketGrotto = Logic.can_blast_or_smash;
Location_Logic.hyrule_tektite_grotto = Logic.can_blast_or_smash && (Logic.golden_scale || Logic.iron_boots);
Location_Logic.hyrule_ocarina = Logic.kokiri_emerald && Logic.goron_ruby && Logic.zora_sapphire;
Location_Logic.gerudovalley_box = true;
Location_Logic.gerudovalley_fall = true;
Location_Logic.gerudo_hammer = Logic.fortress_access && Logic.hammer;
Location_Logic.hylia_child_fishing = true;
Location_Logic.hylia_bottle = Logic.silver_scale;
Location_Logic.hylia_adult_fishing = Logic.hookshot || Logic.bean_access || Spawn.adult_fishing;
Location_Logic.hylia_lab_top = Logic.hookshot || Logic.bean_access;
Location_Logic.hylia_lab_dive = Logic.golden_scale;
Location_Logic.hylia_sun_shoot = Logic.longshot && Logic.bow;
Location_Logic.market_slingshot_game = true;
Location_Logic.richard = true;
Location_Logic.market_bowling_1 = Logic.bomb_bag;
Location_Logic.market_bowling_2 = Logic.bomb_bag;
Location_Logic.market_lens_game = Logic.can_see;
Location_Logic.poes= (Logic.bow && Logic.eponas && Logic.bottle) || Logic.big_poe;
Location_Logic.dins_fairy = (Logic.bomb_bag || Spawn.child_hyrule_fairy) && Logic.lullaby;
Location_Logic.g_fairy = (Logic.golden_gauntlets || Spawn.adult_ogc) && Logic.lullaby;
Location_Logic.lacs = Logic.shadow_medallion && Logic.spirit_medallion;
Location_Logic.fountain_fairy = ((Logic.ice_entrance_access && Logic.bomb_bag) || Spawn.child_zf_fairy || Spawn.adult_zf_fairy || (Logic.bomb_bag && Spawn.child_zf)) && Logic.lullaby;
Location_Logic.glacier_hp = Logic.ice_entrance_access;
Location_Logic.bottom_of_fountain = Logic.ice_entrance_access && Logic.iron_boots;
Location_Logic.ice_map = Logic.ice_adult_access && (Logic.bottle || Logic.can_shoot_blue_fire_arrows);
Location_Logic.ice_compass = Logic.ice_access && (Logic.bottle || Logic.can_shoot_blue_fire_arrows) && (Logic.ice_adult_access || Logic.giants_wallet);
Location_Logic.ice_hp = Logic.ice_access && (Logic.bottle || Logic.can_shoot_blue_fire_arrows) && (Logic.ice_adult_access || Logic.giants_wallet);
Location_Logic.ice_irons = Logic.ice_access && (Logic.bottle || Logic.can_shoot_blue_fire_arrows) && (Logic.ice_adult_access || Logic.giants_wallet);
Location_Logic.deku_lobby = Logic.deku_access;
Location_Logic.deku_slingshot = Logic.deku_access;
Location_Logic.deku_slingshot_room_side = Logic.deku_access;
Location_Logic.deku_compass = Logic.deku_access;
Location_Logic.deku_compass_room_side = Logic.deku_access;
Location_Logic.deku_basement = Logic.deku_access;
if (document.getElementById("presets").value == "SGL_2025")
Location_Logic.deku_queen_gohma = Logic.deku_access;
else
Location_Logic.deku_queen_gohma = Logic.deku_access && ((Logic.deku_child_access && Logic.slingshot) || (Logic.deku_adult_access && Logic.can_use_fire));
Location_Logic.lost_woods_fairy_ocarina = true;
Location_Logic.ocarina_game = true;
Location_Logic.lw_generic = Logic.can_blast_or_smash;
Location_Logic.lost_woods_scrub_grotto = Logic.bomb_bag || (Logic.can_pass_mido_as_adult && Logic.hammer);
Location_Logic.bridge_scrub = true;
Location_Logic.target = Logic.slingshot;
Location_Logic.skull_kid = Logic.sarias;
Location_Logic.theater_skull = true;
Location_Logic.theater_truth = Logic.kokiri_emerald && Logic.goron_ruby && Logic.zora_sapphire && Logic.sarias;
Location_Logic.wolfos_grotto = Logic.bomb_bag || (Logic.can_pass_mido_as_adult && Logic.hammer);
Location_Logic.rolling_goron = Logic.bomb_bag;
Location_Logic.goron_dance = (Logic.lullaby || Spawn.child_lower_dmc) && Logic.sarias;
Location_Logic.goron_pot = Logic.bomb_bag && (Logic.lullaby || Logic.can_use_dins || Spawn.child_lower_dmc);
Location_Logic.goron_maze_1 = Logic.can_blast_or_smash || Logic.silver_gauntlets;
Location_Logic.goron_maze_2 = Logic.can_blast_or_smash || Logic.silver_gauntlets;
Location_Logic.goron_maze_3 = Logic.hammer || Logic.silver_gauntlets;
Location_Logic.goron_link = Logic.can_stop_link_the_goron;
Location_Logic.goron_medigoron = (Logic.can_blast_or_smash || Logic.goron_bracelet) && Logic.adults_wallet;
Location_Logic.dodongos_map = Logic.can_break_dodongos_wall;
Location_Logic.dodongos_compass = Logic.can_break_dodongos_wall;
Location_Logic.dodongos_bomb_flower_platform = Logic.dodongos_climb;
Location_Logic.dodongos_bomb_bag = Logic.dodongos_climb;
Location_Logic.dodongos_end_of_bridge = Logic.dodongos_climb && (Logic.bomb_bag || (Logic.dodongos_adult_access && Logic.hammer));
Location_Logic.dodongos_above_king = Logic.dodongos_climb && Logic.bomb_bag;
Location_Logic.dodongos_king_dodongo = Logic.dodongos_climb && Logic.bomb_bag;
Location_Logic.trail_bombable = Logic.can_blast_or_smash;
Location_Logic.trail_top = true;
Location_Logic.trail_storms = Logic.storms;
Location_Logic.trail_fairy = (Logic.can_blast_or_smash || Spawn.child_dmt_fairy || Spawn.adult_dmt_fairy) && Logic.lullaby;
Location_Logic.trade_quest = ((((Logic.ice_access && Logic.bottle) || ((Logic.giants_wallet || Logic.can_enter_ganons) && (Logic.lullaby || Spawn.adult_zd) && Logic.bottle)) && Logic.prescription) || Logic.claim_check) && Logic.crater_top;
Location_Logic.crater_bean = (Logic.bolero && Logic.bean_access) || (Logic.hover_boots && Logic.crater_by_city);
Location_Logic.crater_hammer_fairy = ((Logic.crater_by_city && Logic.hammer) || Spawn.child_lower_dmc_fairy || Spawn.adult_lower_dmc_fairy) && Logic.lullaby;
Location_Logic.crater_grotto = Logic.can_blast_or_smash;
Location_Logic.crater_nook_hp = Logic.crater_top || Spawn.child_upper_dmc;
Location_Logic.man_on_roof = true;//Logic.hookshot;