forked from az64/mm-rando
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Items.cs
543 lines (533 loc) · 19.7 KB
/
Items.cs
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
using System;
using System.Collections.Generic;
namespace MMRando
{
public partial class mmrMain
{
//free
const int Deku_Mask = 0;
//items
const int Hero_Bow = 1;
const int Fire_Arrow = 2;
const int Ice_Arrow = 3;
const int Light_Arrow = 4;
const int Bomb_Bag = 5;
const int Magic_Bean = 6;
const int Powder_Keg = 7;
const int Pictobox = 8;
const int Lens = 9;
const int Hookshot = 10;
const int Fairy_Sword = 11;
const int Bottle_W = 12;
const int Bottle_A = 13;
const int Bottle_G = 14;
const int Bottle_B = 15;
const int Bottle_D = 16;
const int Bottle_M = 17;
const int Notebook = 18;
//upgrades
const int R_Sword = 19;
const int G_Sword = 20;
const int M_Shield = 21;
const int Quiver_1 = 22;
const int Quiver_2 = 23;
const int Bomb_Bag_1 = 24;
const int Bomb_Bag_2 = 25;
const int Wallet_1 = 26;
const int Wallet_2 = 27;
//trades
const int Moon_Tear = 28;
const int Land_Deed = 29;
const int Swamp_Deed = 30;
const int Mountain_Deed = 31;
const int Ocean_Deed = 32;
const int Room_Key = 33;
const int Kafei_Letter = 34;
const int Pendant = 35;
const int Mama_Letter = 36;
//notebook hp
const int HP_Mayor = 37;
const int HP_Postman = 38;
const int HP_Rosa = 39;
const int HP_Hand = 40;
const int HP_Gran_1 = 41;
const int HP_Gran_2 = 42;
//other hp
const int HP_Keaton = 43;
const int HP_DekuP = 44;
const int HP_ArchT = 45;
const int HP_HnD = 46;
const int HP_SwSch = 47;
const int HP_PostB = 48;
const int HP_GosTF = 49;
const int HP_ScrTF = 50;
const int HP_ArchS = 51;
const int HP_Picto = 52;
const int HP_ArchB = 53;
const int HP_Choir = 54;
const int HP_BeavR = 55;
const int HP_SHors = 56;
const int HP_FishG = 57;
const int HP_EvanP = 58;
const int HP_DogR = 59;
const int HP_PoeH = 60;
const int HP_TCGame = 61;
const int HP_Peahat = 62;
const int HP_Dodong = 63;
const int HP_WFChest = 64;
const int HP_TIChest = 65;
const int HP_OceanSH = 66;
const int HP_Knuckle = 67;
//mask
const int Postman_Hat = 68;
const int All_Night = 69;
const int Blast_Mask = 70;
const int Stone_Mask = 71;
const int GF_Mask = 72;
const int Keaton_Mask = 73;
const int Bremen_Mask = 74;
const int Bunny_Hood = 75;
const int DonGero_Mask = 76;
const int Scents_Mask = 77;
const int Romani_Mask = 78;
const int Circus_Leader = 79;
const int Kafei_Mask = 80;
const int Couple_Mask = 81;
const int Truth_Mask = 82;
const int Kamaro_Mask = 83;
const int Gibdo_Mask = 84;
const int Garo_Mask = 85;
const int Captain_Hat = 86;
const int Giant_Mask = 87;
const int Goron_Mask = 88;
const int Zora_Mask = 89;
//song
const int Song_Soaring = 90;
const int Song_Epona = 91;
const int Song_Storms = 92;
const int Song_Sonata = 93;
const int Song_Lullaby = 94;
const int Song_NWBN = 95;
const int Song_Elegy = 96;
const int Song_Oath = 97;
//areas/other
const int SOUTH_ACCESS = 98;
const int WF_ACCESS = 99;
const int WF_CLEAR = 100;
const int NORTH_ACCESS = 101;
const int SH_ACCESS = 102;
const int SH_CLEAR = 103;
const int EPONA = 104;
const int WEST_ACCESS = 105;
const int PF_ACCESS = 106;
const int GB_ACCESS = 107;
const int GB_CLEAR = 108;
const int EAST_ACCESS = 109;
const int IC_ACCESS = 110;
const int ST_ACCESS = 111;
const int IST_ACCESS = 112;
const int ST_CLEAR = 113;
const int EXPLOSIVE = 114;
const int ARROW = 115;
const int WF_NEW = 116;
const int SH_NEW = 117;
const int GB_NEW = 118;
const int LA_NEW = 119;
const int IST_NEW = 120;
//keysanity items
const int WF_Map = 121;
const int WF_Comp = 122;
const int WF_BK = 123;
const int WF_Key1 = 124;
const int SH_Map = 125;
const int SH_Comp = 126;
const int SH_BK = 127;
const int SH_Key1 = 128;
const int SH_Key2 = 129;
const int SH_Key3 = 130;
const int GB_Map = 131;
const int GB_Comp = 132;
const int GB_BK = 133;
const int GB_Key1 = 134;
const int ST_Map = 135;
const int ST_Comp = 136;
const int ST_BK = 137;
const int ST_Key1 = 138;
const int ST_Key2 = 139;
const int ST_Key3 = 140;
const int ST_Key4 = 141;
//shop items
const int TP_RP = 142;
const int TP_GP = 143;
const int TP_Shield = 144;
const int TP_Fairy = 145;
const int TP_Stick = 146;
const int TP_Arrow30 = 147;
const int TP_Nut10 = 148;
const int TP_Arrow50 = 149;
const int WS_BP = 150;
const int WS_RP = 151;
const int WS_GP = 152;
const int BS_Bomb10 = 153;
const int BS_Chu10 = 154;
const int GS_Bomb10 = 155;
const int GS_Arrow10 = 156;
const int GS_RP = 157;
const int ZS_Shield = 158;
const int ZS_Arrow10 = 159;
const int ZS_RP = 160;
//bottle catch
const int B_Fairy = 161;
const int B_Princess = 162;
const int B_Fish = 163;
const int B_Bug = 164;
const int B_Poe = 165;
const int B_BigPoe = 166;
const int B_SW = 167;
const int B_HSW = 168;
const int B_Egg = 169;
const int B_Mushroom = 170;
//other chests and grottos
const int Lens_Cave_RR = 171;
const int Lens_Cave_PR = 172;
const int Bean_Grotto_RR = 173;
const int HSW_Grotto_RR = 174;
const int BG_Bad_Bats = 175;
const int Ikana_Grotto = 176;
const int PF_RR_1 = 177;
const int PF_RR_2 = 178;
const int PFI_Tank_RR = 179;
const int PFI_Guard_SR = 180;
const int PFI_HP_Room_RR = 181;
const int PFI_HP_Room_BR = 182;
const int PFI_Maze_RR = 183;
const int PR_RR1 = 184;
const int PR_RR2 = 185;
const int Bomber_Hideout_SR = 186;
const int Termina_Bombchu_Grotto = 187;
const int Termina_RR_Grotto = 188;
const int Termina_Underwater_RR = 189;
const int Termina_Grass_RR = 190;
const int Termina_Stump_RR = 191;
const int GB_Coast_Grotto = 192;
const int GB_Cape_Ledge_1 = 193;
const int GB_Cape_Ledge_2 = 194;
const int GB_Cape_Grotto = 195;
const int GB_Cape_Underwater = 196;
const int PFE_RR_1 = 197;
const int PFE_RR_2 = 198;
const int PFE_RR_3 = 199;
const int To_Swamp_Grotto = 200;
const int Dog_Race_PR = 201;
const int Graveyard_Grotto = 202;
const int Swamp_Grotto = 203;
const int WF_BR = 204;
const int WF_RR = 205;
const int Well_Right_PR = 206;
const int Well_Left_PR = 207;
const int MV_Chest = 208;
const int MV_Grotto = 209;
const int To_Ikana_RR = 210;
const int To_Ikana_Grotto = 211;
const int IST_SR = 212;
const int IST_10Chu = 213;
const int IST_Bean = 214;
const int To_SH_Grotto = 215;
const int To_GV_RR = 216;
const int Secret_Shrine_HP = 217;
const int Secret_Shrine_Dino = 218;
const int Secret_Shrine_Wizz = 219;
const int Secret_Shrine_Wart = 220;
const int Secret_Shrine_Garo = 221;
const int Inn_Staff_Room = 222;
const int Inn_Guest_Room = 223;
const int Woods_Grotto = 224;
const int ECT_SR = 225;
const int SCT_RR = 226;
const int SCT_PR = 227;
const int Bank_HP = 228;
//standing HPs
const int SCT_HP = 229;
const int NCT_HP = 230;
const int To_Swamp_HP = 231;
const int Swamp_Scrub_HP = 232;
const int Deku_Palace_HP = 233;
const int GV_Scrub_HP = 234;
const int Zora_Grotto_HP = 235;
const int Lab_Fish_HP = 236;
const int GB_Cape_LikeLike_HP = 237;
const int PF_HP = 238;
const int ZH_Scrub_HP = 239;
const int To_Snowhead_HP = 240;
const int GB_Coast_HP = 241;
const int Ikana_HP = 242;
const int Castle_HP = 243;
const int WF_HC = 244;
const int SH_HC = 245;
const int GB_HC = 246;
const int ST_HC = 247;
//maps
const int TM_Town = 248;
const int TM_Woodfall = 249;
const int TM_Snowhead = 250;
const int TM_Ranch = 251;
const int TM_GreatBay = 252;
const int TM_StoneTower = 253;
//oops I forgot one
const int To_GR_Grotto = 254;
int[] REPEATABLE = new int[] { Moon_Tear, Land_Deed, Swamp_Deed, Mountain_Deed, Ocean_Deed, Room_Key, Kafei_Letter,
Pendant, Mama_Letter, WF_BK, WF_Key1, SH_BK, SH_Key1, SH_Key2, SH_Key3, GB_BK, GB_Key1, ST_BK, ST_Key1, ST_Key2,
ST_Key3, ST_Key4, TP_RP, TP_GP, TP_Shield, TP_Fairy, TP_Stick, TP_Arrow30, TP_Nut10, TP_Arrow50, WS_BP, WS_RP, WS_GP,
BS_Bomb10, BS_Chu10, GS_Bomb10, GS_Arrow10, GS_RP, ZS_Shield, ZS_Arrow10, ZS_RP, M_Shield, G_Sword, Quiver_2, Bomb_Bag_2,
Wallet_2, Lens_Cave_RR, Lens_Cave_PR, Bean_Grotto_RR, HSW_Grotto_RR, BG_Bad_Bats, Ikana_Grotto, PF_RR_1, PF_RR_2, PFI_Tank_RR, PFI_Guard_SR,
PFI_HP_Room_RR, PFI_HP_Room_BR, PFI_Maze_RR, PR_RR1, PR_RR2, Bomber_Hideout_SR, Termina_Bombchu_Grotto,
Termina_RR_Grotto, Termina_Underwater_RR, Termina_Grass_RR, Termina_Stump_RR, GB_Coast_Grotto, GB_Cape_Ledge_1,
GB_Cape_Ledge_2, GB_Cape_Underwater, GB_Cape_Grotto, PFE_RR_1, PFE_RR_2, PFE_RR_3, To_Swamp_Grotto,
Dog_Race_PR, Graveyard_Grotto, Swamp_Grotto, WF_BR, WF_RR, Well_Right_PR, Well_Left_PR, MV_Chest, MV_Grotto,
To_Ikana_Grotto, To_Ikana_RR, IST_Bean, IST_10Chu, IST_SR, To_SH_Grotto, To_GV_RR, Secret_Shrine_Dino,
Secret_Shrine_Wizz, Secret_Shrine_Wart, Secret_Shrine_Garo, Inn_Staff_Room, Inn_Guest_Room, Woods_Grotto,
ECT_SR, SCT_RR, SCT_PR };
int[] CYCLE_REPEATABLE = new int[] { TP_RP, TP_GP, TP_Fairy, TP_Shield, TP_Stick, TP_Nut10, TP_Arrow30, TP_Arrow50,
WS_BP, WS_GP, WS_RP, GS_RP, GS_Bomb10, GS_Arrow10, BS_Bomb10, BS_Chu10, ZS_Arrow10, ZS_RP, ZS_Shield, GB_Cape_Grotto,
To_Ikana_Grotto, Graveyard_Grotto, Termina_Bombchu_Grotto, IST_Bean, IST_10Chu };
int[] ITEM_ADDRS = new int[]
{
0xC5CE41,
0xC5CE25,
0xC5CE26,
0xC5CE27,
0xC5CE28,
0xC5CE2A,
0xC5CE2E,
0xC5CE30,
0xC5CE31,
0xC5CE32,
0xC5CE33,
0xC5CE34,
0xC5CE36,
0xC5CE37,
0xC5CE38,
0xC5CE39,
0xC5CE3A,
0xC5CE3B,
0xC5CE71,
0xC5CE21,
0xC5CE21,
0xC5CE21,
0xC5CE25,
0xC5CE25,
0xC5CE2A,
0xC5CE2A,
0xC5CE6E,
0xC5CE6E,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0xC5CE70,
0xC5CE70,
0xC5CE70,
0xC5CE70,
0xC5CE70,
0xC5CE70,
0xC5CE70,
0xC5CE70,
0xC5CE70,
0xC5CE70,
0xC5CE70,
0xC5CE70,
0xC5CE70,
0xC5CE70,
0xC5CE70,
0xC5CE70,
0xC5CE70,
0xC5CE70,
0xC5CE70,
0xC5CE70,
0xC5CE70,
0xC5CE70,
0xC5CE70,
0xC5CE70,
0xC5CE70,
0xC5CE70,
0xC5CE70,
0xC5CE70,
0xC5CE70,
0xC5CE70,
0xC5CE70,
0xC5CE3C,
0xC5CE3D,
0xC5CE3E,
0xC5CE3F,
0xC5CE40,
0xC5CE42,
0xC5CE43,
0xC5CE44,
0xC5CE45,
0xC5CE46,
0xC5CE48,
0xC5CE49,
0xC5CE4A,
0xC5CE4B,
0xC5CE4C,
0xC5CE4E,
0xC5CE4F,
0xC5CE50,
0xC5CE51,
0xC5CE52,
0xC5CE47,
0xC5CE4D,
0xC5CE72,
0xC5CE72,
0xC5CE71,
0xC5CE73,
0xC5CE73,
0xC5CE72,
0xC5CE72,
0xC5CE72
};
byte[] ITEM_VALUES = new byte[]
{
0x32,
0x01,
0x02,
0x03,
0x04,
0x06,
0x0A,
0x0C,
0x0D,
0x0E,
0x0F,
0x10,
0x12,
0x12,
0x12,
0x12,
0x12,
0x12,
0x04,
0x12,
0x13,
0x21,
0x01,
0x01,
0x06,
0x06,
0x10,
0x20,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0x10,
0x10,
0x10,
0x10,
0x10,
0x10,
0x10,
0x10,
0x10,
0x10,
0x10,
0x10,
0x10,
0x10,
0x10,
0x10,
0x10,
0x10,
0x10,
0x10,
0x10,
0x10,
0x10,
0x10,
0x10,
0x10,
0x10,
0x10,
0x10,
0x10,
0x10,
0x3E,
0x38,
0x47,
0x45,
0x40,
0x3A,
0x46,
0x39,
0x42,
0x48,
0x3C,
0x3D,
0x37,
0x3F,
0x36,
0x43,
0x41,
0x3B,
0x44,
0x49,
0x33,
0x34,
0xB0,
0x70,
0x01,
0x40,
0x80,
0x31,
0x32,
0x34
};
string[] ITEM_NAMES = new string[] { "Deku Mask", "Hero's Bow", "Fire Arrow", "Ice Arrow", "Light Arrow", "Bomb Bag", "Magic Bean",
"Powder Keg", "Pictobox", "Lens of Truth", "Hookshot", "Great Fairy's Sword", "Witch Bottle", "Aliens Bottle", "Goron Race Bottle",
"Beaver Race Bottle", "Dampe Bottle", "Chateau Bottle", "Bombers' Notebook", "Razor Sword", "Gilded Sword", "Mirror Shield",
"Town Archery Quiver", "Swamp Archery Quiver", "Town Bomb Bag", "Mountain Bomb Bag", "Town Wallet", "Ocean Wallet", "Moon's Tear",
"Land Title Deed", "Swamp Title Deed", "Mountain Title Deed", "Ocean Title Deed", "Room Key", "Letter to Kafei", "Pendant of Memories",
"Letter to Mama", "Mayor Dotour HP", "Postman HP", "Rosa Sisters HP", "??? HP", "Grandma Short Story HP", "Grandma Long Story HP",
"Keaton Quiz HP", "Deku Playground HP", "Town Archery HP", "Honey and Darling HP", "Swordsman's School HP", "Postbox HP",
"Termina Field Gossips HP", "Termina Field Business Scrub HP", "Swamp Archery HP", "Pictograph Contest HP", "Boat Archery HP",
"Frog Choir HP", "Beaver Race HP", "Seahorse HP", "Fisherman Game HP", "Evan HP", "Dog Race HP", "Poe Hut HP",
"Treasure Chest Game HP", "Peahat Grotto HP", "Dodongo Grotto HP", "Woodfall Chest HP", "Twin Islands Chest HP",
"Ocean Spider House HP", "Graveyard Iron Knuckle HP", "Postman's Hat", "All Night Mask", "Blast Mask", "Stone Mask", "Great Fairy's Mask",
"Keaton Mask", "Bremen Mask", "Bunny Hood", "Don Gero's Mask", "Mask of Scents", "Romani Mask", "Circus Leader's Mask", "Kafei's Mask",
"Couple's Mask", "Mask of Truth", "Kamaro's Mask", "Gibdo Mask", "Garo Mask", "Captain's Hat", "Giant's Mask", "Goron Mask", "Zora Mask",
"Song of Soaring", "Epona's Song", "Song of Storms", "Sonata of Awakening", "Goron Lullaby", "New Wave Bossa Nova",
"Elegy of Emptiness", "Oath to Order", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"Woodfall Map", "Woodfall Compass", "Woodfall Boss Key", "Woodfall Key 1", "Snowhead Map", "Snowhead Compass", "Snowhead Boss Key",
"Snowhead Key 1", "Snowhead Key 2", "Snowhead Key 3", "Great Bay Map", "Great Bay Compass", "Great Bay Boss Key", "Great Bay Key 1",
"Stone Tower Map", "Stone Tower Compass", "Stone Tower Boss Key", "Stone Tower Key 1", "Stone Tower Key 2", "Stone Tower Key 3",
"Stone Tower Key 4", "Trading Post Red Potion", "Trading Post Green Potion", "Trading Post Shield", "Trading Post Fairy",
"Trading Post Stick", "Trading Post Arrow 30", "Trading Post Nut 10", "Trading Post Arrow 50", "Witch Shop Blue Potion",
"Witch Shop Red Potion", "Witch Shop Green Potion", "Bomb Shop Bomb 10", "Bomb Shop Chu 10", "Goron Shop Bomb 10", "Goron Shop Arrow 10",
"Goron Shop Red Potion", "Zora Shop Shield", "Zora Shop Arrow 10", "Zora Shop Red Potion", "Bottle: Fairy", "Bottle: Deku Princess",
"Bottle: Fish", "Bottle: Bug", "Bottle: Poe", "Bottle: Big Poe", "Bottle: Spring Water", "Bottle: Hot Spring Water", "Bottle: Zora Egg",
"Bottle: Mushroom", "Lens Cave 20r", "Lens Cave 50r", "Bean Grotto 20r", "HSW Grotto 20r", "Graveyard Bad Bats", "Ikana Grotto",
"PF 20r Lower", "PF 20r Upper", "PF Tank 20r", "PF Guard Room 100r", "PF HP Room 20r", "PF HP Room 5r", "PF Maze 20r", "PR 20r (1)", "PR 20r (2)",
"Bombers' Hideout 100r", "Termina Bombchu Grotto", "Termina 20r Grotto", "Termina Underwater 20r", "Termina Grass 20r", "Termina Stump 20r",
"Great Bay Coast Grotto", "Great Bay Cape Ledge (1)", "Great Bay Cape Ledge (2)", "Great Bay Cape Grotto", "Great Bay Cape Underwater",
"PF Exterior 20r (1)", "PF Exterior 20r (2)", "PF Exterior 20r (3)", "Path to Swamp Grotto", "Doggy Racetrack 50r", "Graveyard Grotto",
"Swamp Grotto", "Woodfall 5r", "Woodfall 20r", "Well Right Path 50r", "Well Left Path 50r", "Mountain Village Chest (Spring)",
"Mountain Village Grotto (Spring)", "Path to Ikana 20r", "Path to Ikana Grotto", "Stone Tower 100r", "Stone Tower Bombchu 10",
"Stone Tower Magic Bean", "Path to Snowhead Grotto", "Twin Islands 20r", "Secret Shrine HP", "Secret Shrine Dinolfos",
"Secret Shrine Wizzrobe", "Secret Shrine Wart", "Secret Shrine Garo Master", "Inn Staff Room", "Inn Guest Room", "Mystery Woods Grotto",
"East Clock Town 100r", "South Clock Town 20r", "South Clock Town 50r", "Bank HP", "South Clock Town HP", "North Clock Town HP",
"Path to Swamp HP", "Swamp Scrub HP", "Deku Palace HP", "Goron Village Scrub HP", "Bio Baba Grotto HP", "Lab Fish HP", "Great Bay Like-Like HP",
"Pirates' Fortress HP", "Zora Hall Scrub HP", "Path to Snowhead HP", "Great Bay Coast HP", "Ikana Scrub HP", "Ikana Castle HP",
"Odolwa Heart Container", "Goht Heart Container", "Gyorg Heart Container", "Twinmold Heart Container", "Map: Clock Town", "Map: Woodfall",
"Map: Snowhead", "Map: Romani Ranch", "Map: Great Bay", "Map: Stone Tower", "Goron Racetrack Grotto" };
}
}