-
-
Notifications
You must be signed in to change notification settings - Fork 78
/
std_constants.zh
3926 lines (3580 loc) · 132 KB
/
std_constants.zh
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
// std_constants.zh
// 12th Jun, 2022 for ZC 2.55 Alpha 107
// Contains required constants for std.zh and ZScript functions.
//some type shorthands
typedef const int DEFINE;
typedef const float DEFINEF;
typedef const long DEFINEL;
typedef const bool DEFINEB;
typedef const untyped DEFINEU;
typedef const int CONFIG;
typedef const float CONFIGF;
typedef const long CONFIGL;
typedef const bool CONFIGB;
typedef const untyped CONFIGU;
DEFINE ERR_RETURN = -1;
///////////////////////
/// Mathematical values
DEFINEF PI = 3.1416;
DEFINEF PI2 = 6.2832;
DEFINEF E = 2.7183;
DEFINEU NULL = 0;
DEFINEU null = 0;
DEFINEU Null = 0;
const rgb INVALID_COLOR = <rgb>(-1);
DEFINEF RADIAN = 57.2958; //Multiplication value for converting radians to degrees.
DEFINEF DEGREE = 0.0174; //Multiplication value for converting degrees to radians.
DEFINE SQRT_ERROR = 464; // The return value of SafeSqrt() if a negative value is passed.
DEFINEF SQRT_MAX = 463.4095; //The largest square root thet ZC can return.
////////////////////////////
/// ZC Minimums and Maximums
DEFINEF MAX_CONSTANT = 214747.9999 + (OPTION_VALUE(TRUE_INT_SIZE) ? 0.3648 : 0);
//DEFINEF MAX_VARIABLE = 214748.3648; //Obviously this is truncated as a constant. Equal to ((2^31)-1)/10000
DEFINEF MIN_CONSTANT = -214747.9999 - (OPTION_VALUE(TRUE_INT_SIZE) ? 0.3649 : 0);
DEFINE MAX_SCRIPTDRAWINGCOMMANDS = 1000;
DEFINE MAX_INT = 214747 + (OPTION_VALUE(TRUE_INT_SIZE) ? 1 : 0);
DEFINE MIN_INT = -214747 - (OPTION_VALUE(TRUE_INT_SIZE) ? 1 : 0);
DEFINE MAX_FLOAT = 214747.9999 + (OPTION_VALUE(TRUE_INT_SIZE) ? 0.3648 : 0);
DEFINE MIN_FLOAT = -214747.9999 - (OPTION_VALUE(TRUE_INT_SIZE) ? 0.3649 : 0);
DEFINE MAX_SHORT = 32767;
DEFINE MIN_SHORT = -32768;
DEFINE MAX_BYTE = 255;
DEFINE MIN_BYTE = 0;
DEFINE MAX_COUNTER = WORD_MAX;
DEFINE MIN_COUNTER = WORD_MIN;
DEFINEL MAX_TIME = 1944000000L; //Max value of 'Game->Time'
DEFINE MIN_LWEAPON = 1; //Lowest numbered objects.
DEFINE MIN_EWEAPON = 1;
DEFINE MIN_NPC = 1;
DEFINE MIN_ITEM = 1;
DEFINE MAX_LWEAPON = 255; //1 to 255.
DEFINE MAX_EWEAPON = 255; //1 to 255.
DEFINE MAX_NPCS = 255; //1 to 255.
DEFINE MAX_ITEM = 255; //1 to 255;
DEFINE MIN_FFC = 1;
DEFINE MAX_FFC = 128;
DEFINE MIN_OBJ = 1; //Short, const for loops.
DEFINE MIN_COUNTER_INDEX = 0;
DEFINE MAX_COUNTER_INDEX = 106;
DEFINE NUM_COUNTERS = 107; //0 to 106
DEFINE MIN_COMBO_POS = 0;
DEFINE MAX_COMBO_POS = 175;
DEFINE NUM_COMBO_POS = 176;
DEFINE MAX_OBJECT_POINTERS = 255; //Max of any one type.
DEFINE MAX_WEAPON_POINTERS = 510; //eweapon and lweapon combined.
DEFINE MAX_TOTAL_OBJECT_POINTERS = 1020; //Max shared, across the three types.
DEFINE MAX_SPRITES = 1020; //npc, eweapon, and lweapon
DEFINE MAX_DRAWING = 1000; //Maximum number of simultaneous drawing commands.
DEFINE MIN_BITMAP_X = 0; //Legal Bitmap Region for Drawing
DEFINE MAX_BITMAP_X = 511;
DEFINE MIN_BITMAP_Y = 0;
DEFINE MAX_BITMAP_Y = 511;
DEFINE MAX_GLOBAL_VARIABLES = 255;
DEFINE MAX_VARIABLES = 255; //Vars in operation at any one time.
DEFINE MAX_BITSPERVARIABLE = 18;
DEFINE MIN_ITEMDATA = 0;
DEFINE MAX_ITEMDATA = 255;
DEFINE NUM_ITEMDATA = 256;
DEFINE NUM_LEVELS = 512;
DEFINE MAX_ARRAY_POINTERS = 4095; //Arrays in operation.
DEFINE MAX_TILES = 214499;
DEFINE MAX_COMBOS = 65279;
DEFINE MAX_STRINGS = 65519; //Strings in String Editor
DEFINE HP_PER_HEART = 16;
DEFINE MP_PER_BLOCK = 32;
DEFINE MAX_MESSAGES = 65535;
DEFINE MAX_MESSAGELENGTH = 145; //Pass an array of (at least) this size to Game->GetMessage
DEFINE MAX_MAPS = 256;
DEFINE MAX_DMAPS = 512;
DEFINE MAX_DMAPNAMELENGTH = 21; //Size of arrays to pass to Game->GetDMapX
DEFINE MAX_DMAPTITLELENGTH = 21;
DEFINE MAX_DMAPINTROLENGTH = 73;
//FFC Size Limitations
DEFINE MAX_FFC_W = 4; //Four tiles wide
DEFINE MAX_FFC_H = 4; //Four tiles high
DEFINE MAX_FFC_EFFECT_W = 64; //Sixty-four pixels wide.
DEFINE MAX_FFC_EFFECT_H = 64; //Sixty four pixels high.
//Default array sizes
DEFINE INIT_D_SIZE = 8;
DEFINE INIT_A_SIZE = 2;
DEFINE MISC_SIZE = 32;
DEFINE NPC_ATTRIBUTES_SIZE = 32;
DEFINE ITEM_ATTRIBUTES_SIZE = 10;
DEFINE GAMEMISC_SIZE = 32;
DEFINE MAX_DEFENSE = 42;
DEFINE MAX_DEFENCE = 42;
/////////////////////
/// Screen Dimensions
DEFINE SCREEN_W = 256; //X width of the Screen, starting at 0 (left) and goign right).
//!SCREEN_WIDTH is already called in stdExtra.zh
DEFINE SCREEN_H = 176; //Y height of the screen, starting at 0 (top), going down.
//!SCREEN_HEIGHT is already called in stdExtra.zh
DEFINE SCREEN_RIGHT = 255; //The rightmost screen pixel.
DEFINE SCREEN_LEFT = 0; //The leftmost screen pixel.
DEFINE SCREEN_TOP = 0; //The top screen pixel, below the subscreen.
DEFINE SCREEN_BOTTOM = 175; //The lowest screen pixel.
DEFINE SUBSCREEN_BOTTOM = -1; //Bottom of passive subscreen.
DEFINE SUBSCREEN_TOP = -56; //Top of passive subscreen.
//! In stdExtra.zh, this is -64. ?!
DEFINE SCREEN_CENTER_X = 128;
DEFINE SCREEN_CENTRE_X = 128;
DEFINE SCREEN_CENTER_Y = 88;
DEFINE SCREEN_CENTRE_Y = 88;
///////////////////
/// Game Properties
//Defaults from Init Data
DEFINEF GRAVITY = 0.16;
DEFINEF TERMINAL_VELOCITY = 3.20;
DEFINE JUMPING_LAYER_THRESHOLD = 16;
//CSet Initial Colour Swatch positions
DEFINE CSET_0 = 0; //Sixteen colours per, starting at '0' each.
DEFINE CSET_1 = 16;
DEFINE CSET_2 = 32;
DEFINE CSET_3 = 48;
DEFINE CSET_4 = 64;
DEFINE CSET_5 = 80;
DEFINE CSET_6 = 96;
DEFINE CSET_7 = 112;
DEFINE CSET_8 = 128;
DEFINE CSET_9 = 144;
DEFINE CSET_10 = 160;
DEFINE CSET_11 = 176;
DEFINE CSET_12 = 192;
DEFINE CSET_13 = 208; //Warning: Using CSets 13 through 15 is not officially supported,
DEFINE CSET_14 = 224; // and may affect compatibility with future ZC builds.
DEFINE CSET_15 = 240;
//Sound effect IDs. To be used for PlaySound().
DEFINE SFX_ARROW = 1; // Arrow is fired.
DEFINE SFX_BEAM = 2; // Sword beam is fired.
DEFINE SFX_BOMB = 3; // Bomb explodes.
DEFINE SFX_BRANG = 4; // Boomerang spinning.
DEFINE SFX_CHARGE1 = 35; // Sword powering up.
DEFINE SFX_CHARGE2 = 36; // Sword powering up again (Hurricane Spin).
DEFINE SFX_CURSOR = 5; // Subscreen cursor.
DEFINE SFX_CLINK = 6; // Shield is hit.
DEFINE SFX_CLEARED = 7; // Chime when screen item appears.
DEFINE SFX_DINSFIRE = 37; // Din's Fire blast.
DEFINE SFX_DODONGO = 8; // Dodongo's roar.
DEFINE SFX_SHUTTER = 9; // Shutter bang.
DEFINE SFX_EDEAD = 10; // Enemy is killed.
DEFINE SFX_EHIT = 11; // Enemy is hit.
DEFINE SFX_LOWHP = 12; // Low hearts warning beep.
DEFINE SFX_FALL = 38; // Enemy falls from ceiling (unused).
DEFINE SFX_FARORESWIND = 39; // Farore's Wind spell.
DEFINE SFX_FIRE = 13; // Flame roar.
DEFINE SFX_FIREBALL = 40; // Enemy fireball.
DEFINE SFX_GANON = 14; // Music when Ganon appears/dies.
DEFINE SFX_GASP = 15; // Boss is hit.
DEFINE SFX_GRASSCUT = 41; // Grass or bush slashed.
DEFINE SFX_HAMMER = 16; // Hammer pound.
DEFINE SFX_HAMMERPOST = 42; // Pounded a post.
DEFINE SFX_HOOKSHOT = 17; // Hookshot chain rattle.
DEFINE SFX_HOVER = 43; // Hover boots.
DEFINE SFX_ICE = 44; // Unused.
DEFINE SFX_JUMP = 45; // Jumping.
DEFINE SFX_LENSOFF = 46; // Lens of Truth off.
DEFINE SFX_LENSON = 47; // Lens of Truth on.
DEFINE SFX_MSG = 18; // Message typing.
DEFINE SFX_NAYRUSLOVE1 = 48; // Nayru's Love shield hum.
DEFINE SFX_NAYRUSLOVE2 = 49; // Nayru's Love shield running out.
DEFINE SFX_OUCH = 19; // Link is hit.
DEFINE SFX_PICKUP = 20; // Chime when item is held above head.
DEFINE SFX_PLACE = 21; // Bomb is placed.
DEFINE SFX_PLINK = 22; // Heart/Rupee is collected.
DEFINE SFX_PUSHBLOCK = 50; // Pushed a block.
DEFINE SFX_REFILL = 23; // Hearts being refilled.
DEFINE SFX_ROAR = 24; // Aquamentus, Gleeok and Ganon's roar.
DEFINE SFX_ROCK = 51; // Octorok rock is fired.
DEFINE SFX_ROCKETDOWN = 52; // Spell rocket descends.
DEFINE SFX_ROCKETUP = 53; // Spell rocket launched.
DEFINE SFX_SCALE = 25; // Chime when fairy appears/is picked up.
DEFINE SFX_SEA = 26; // "Ocean SFX" ambience.
DEFINE SFX_SECRET = 27; // Chime when secret is discovered.
DEFINE SFX_SPINATTACK = 54; // Sword spin.
DEFINE SFX_SPIRAL = 28; // Link dies.
DEFINE SFX_SPLASH = 55; // Splashing in shallow water.
DEFINE SFX_STAIRS = 29; // Link marches down stairs.
DEFINE SFX_SUMMON = 56; // Summoner magic.
DEFINE SFX_SWORD = 30; // Sword swipe.
DEFINE SFX_TAP1 = 57; // Sword taps wall.
DEFINE SFX_TAP2 = 58; // Sword taps bombable wall.
DEFINE SFX_PATRA = 31; // Patra and Manhandla's shriek.
DEFINE SFX_WAND = 32; // Magic is fired by Wizzrobes or Link.
DEFINE SFX_WHIRLWIND = 59; // Whistle whirlwind.
DEFINE SFX_WHISTLE = 33; // Whistle is played.
DEFINE SFX_ZELDA = 34; // Music when ending sequence begins.
//Sprite IDs. To be used with UseSprite().
DEFINE SP_ARROW_ENEMY = 19;
DEFINE SP_ARROW1 = 10; //Wooden Arrow
DEFINE SP_ARROW2 = 11; //Silver Arrow
DEFINE SP_ARROW3 = 34; //Golden Arrow
DEFINE SP_BAIT = 14; //Enemy bait
DEFINE SP_BOMB_ENEMY = 76; //Bomb (Enemy, normal)
DEFINE SP_SBOMB_ENEMY = 77; //Bomb (Enemy, Super)
DEFINE SP_BOMB = 7; //Normal Bomb
DEFINE SP_SBOMB = 8; //Super Bomb
DEFINE SP_BRANG1 = 4; //Wooden Boomerang
DEFINE SP_BRANG2 = 5; //Magical Boomerang
DEFINE SP_BRANG3 = 6; //Fire Boomerang
DEFINE SP_CANEOFBYRNA = 69; //Cane of Byrna Object
DEFINE SP_BYRNABEAM = 87; //Cane of Byrna Orbiter
DEFINE SP_BYRNASLASH = 70; //Cane of Byrna Slashing Sprite
DEFINE SP_DINSFIRE_FALL = 39; //Din's Fire (Falling)
DEFINE SP_DINSFIRE_RISE = 38; //Din's Fire (Rising)
DEFINE SP_DINSFIRE_TRAIL_FALL = 41; //Din's Fire (Trail, Falling)
DEFINE SP_DINSFIRE_TRAIL_RISE = 40; //Din's Fire (Trail, Rising)
DEFINE SP_BOMB_ENEMY_EXPLOSION = 78; //Normal Bomb Exploion (Enemy)
DEFINE SP_SBOMB_ENEMY_EXPLOSION = 79; //Super Bomb Explosion (Enemy)
DEFINE SP_BOMB_EXPLOSION = 9; //Normal Bomb Explosion
DEFINE SP_SBOMB_EXPLOSION = 75; //Super Bomb Explosion
DEFINE SP_FIRE_ENEMY = 35; //Fire (Enemy)
DEFINE SP_FIRE2_ENEMY = 81; //Fire 2 (Enemy)
DEFINE SP_FIRETRAIL2 = 82; //Fire Trail 2 (Enemy) [Unused]
DEFINE SP_FIRETRAIL = 80; //Fire Trail (Enemy)
DEFINE SP_FIREBALL = 17; //Fireball (Enemy)
DEFINE SP_FLAME = 12; //Candle Fire
DEFINE SP_FIRE = 12; //Candle Fire
DEFINE SP_HAMMER = 25; //Hammer
DEFINE SP_HOOKSHOT1_CHAIN_H = 27; //Hookshot (Short, Chain, Horizontal)
DEFINE SP_HOOKSHOT1_CHAIN_V = 42; //Hookshot (Short, Chain, Vertical)
DEFINE SP_HOOKSHOT1_HANDLE = 28; //Hookshot Handle (Short)
DEFINE SP_HOOKSHOT1_HEAD = 26; //Hookshot Head (Short)
DEFINE SP_HOOKSHOT2_CHAIN_H = 72; //Hookshot (Short, Chain, Horizontal)
DEFINE SP_HOOKSHOT2_CHAIN_V = 74; //Hookshot (Short, Chain, Vertical)
DEFINE SP_HOOKSHOT2_HANDLE = 73; //Hookshot Handle (Short)
DEFINE SP_HOOKSHOT2_HEAD = 71; //Hookshot Head (Short)
DEFINE SP_ICE = 83; //Ice Magic (Enemy, Unused)
DEFINE SP_MAGIC_ENEMY = 21; //Magic (Enemy)
DEFINE SP_MAGIC_FIRE = 85; //Magic (Fire)
DEFINE SP_MAGIC = 16; //Magic (Wand)
DEFINE SP_MISC44 = 44; //Misc 44, unused
DEFINE SP_MISC45 = 45; //Misc 45, unused
DEFINE SP_MISC57 = 57; //Misc 57, unused
DEFINE SP_MISC24 = 24; //Misc 24, unused
DEFINE SP_MISC_ARROW2 = 29; //Silver Arrow Sparkles
DEFINE SP_MISC_ARROW3 = 30; //Golden Arrow Sparkles
DEFINE SP_MISC_BRANG2 = 31; //Magic Boomerang Sparkles
DEFINE SP_MISC_BRANG3 = 32; //Fire Boomerang Sparkles
DEFINE SP_MISC_BUSH = 52; //Bush Leaf Clippings
DEFINE SP_MISC_DEATH = 23; //Link Death Winkout
DEFINE SP_MISC_FLOWER = 53; //Flower Clippings
DEFINE SP_MISC_GRASS = 54; //Grass Clippings
DEFINE SP_MISC_HAMMER = 33; //Hammer Impact
DEFINE SP_MISC_HOVER = 84; //Hover Boots Glow
DEFINE SP_MISC_MAGICMETER = 37; //Magic Meter
DEFINE SP_MISC_MORE = 43; //More Indicator
DEFINE SP_MISC_QHEART = 86; //Quarter Heart
DEFINE SP_MISC_RIPPLE = 56; //Ripples
DEFINE SP_MISC_SHADOW2 = 51; //Shadow (Large)
DEFINE SP_MISC_SHADOW1 = 50; //Shadow (Small)
DEFINE SP_SPAWN = 22; //Enemy Spawn Poof
DEFINE SP_MISC_SSVINE = 68; //Subscreen Vine
DEFINE SP_TALLGRASS = 55; //Tall Grass Movement
DEFINE SP_NAYRU_LEFT = 58; //Nayru's Love (Left)
DEFINE SP_NAYRU_LEFT2 = 59; //Nayru's Love (Left, Returning)
DEFINE SP_NAYRU_RIGHT = 62; //Nayru's Love (Right)
DEFINE SP_NAYRU_RIGHT2 = 63; //Nayru's Love (Right, Returning)
DEFINE SP_NAYRU_BACK = 67; //Nayru's Love Shield (Back)
DEFINE SP_NAYRU_FRONT = 66; //Nayru's Love Shield (Front)
DEFINE SP_NAYRU_TRAIL_LEFT = 60; //Nayru's Love Trail (Left)
DEFINE SP_NAYRU_TRAIL_LEFT2 = 61; //Nayru's Love Trail (Left, Returning)
DEFINE SP_NAYRU_TRAIL_RIGHT = 64; //Nayru's Love Trail (Right)
DEFINE SP_NAYRU_TRAIL_RIGHT2 = 65; //Nayru's Love Trail (Right, Returning)
DEFINE SP_ROCK = 18; //Rock
DEFINE SP_SWORD_ENEMY = 20; //Enemy Sword Beam
DEFINE SP_SWORD1 = 0; //Wooden Sword
DEFINE SP_SLASH1 = 46; //Wooden Sword Slash
DEFINE SP_SWORD2 = 1; //White Sword
DEFINE SP_SLASH2 = 47; //White Sword Slash
DEFINE SP_SWORD3 = 2; //Magical Sword
DEFINE SP_SLASH3 = 48; //Magical Sword Slash
DEFINE SP_SWORD4 = 3; //Master Sword
DEFINE SP_SLASH4 = 49; //master Sword Slash
DEFINE SP_WAND = 15; //Wand Object
DEFINE SP_WHIRL = 13; //Whiste Whirlwind
DEFINE SP_WIND = 36; //Wind Magic (Enemy)
//User-Defined Sprites Range 088 to 255
//Directions. Use with Link->Dir, etc.
DEFINE DIR_UP = 0; //000b
DEFINE DIR_DOWN = 1; //001b
DEFINE DIR_LEFT = 2; //010b
DEFINE DIR_RIGHT = 3; //011b
DEFINE DIR_LEFTUP = 4; //100b
DEFINE DIR_RIGHTUP = 5; //101b
DEFINE DIR_LEFTDOWN = 6; //110b
DEFINE DIR_RIGHTDOWN = 7; //111b
//Repeat in DOWN*/UP* format
DEFINE DIR_UPLEFT = 4; //100b
DEFINE DIR_UPRIGHT = 5; //101b
DEFINE DIR_DOWNLEFT = 6; //110b
DEFINE DIR_DOWNRIGHT = 7; //111b
//Extra Directions. Used with some stuff?
DEFINE DIR2_UP = 8;
DEFINE DIR2_RIGHTUP = 9;
DEFINE DIR2_RIGHT = 10;
DEFINE DIR2_RIGHTDOWN = 11;
DEFINE DIR2_DOWN = 12;
DEFINE DIR2_LEFTDOWN = 13;
DEFINE DIR2_LEFT = 14;
DEFINE DIR2_LEFTUP = 15;
//Repeat in DOWN*/UP* format
DEFINE DIR2_UPRIGHT = 9;
DEFINE DIR2_DOWNRIGHT = 11;
DEFINE DIR2_DOWNLEFT = 13;
DEFINE DIR2_UPLEFT = 15;
//Equivalent Degrees and Radians for Cardinal Directions
//Degrees
DEFINE DEG_DIR_RIGHTUP = 315;
DEFINE DEG_DIR_UPRIGHT = 315;
DEFINE DEG_DIR_UP = 270;
DEFINE DEG_DIR_UPLEFT = 225;
DEFINE DEG_DIR_LEFTUP = 225;
DEFINE DEG_DIR_LEFT = 180;
DEFINE DEG_DIR_LEFTDOWN = 135;
DEFINE DEG_DIR_DOWNLEFT = 135;
DEFINE DEG_DIR_DOWN = 90;
DEFINE DEG_DIR_RIGHTDOWN = 45;
DEFINE DEG_DIR_DOWNRIGHT = 45;
DEFINE DEG_DIR_RIGHT = 0;
//Radians
DEFINEF RAD_DIR_RIGHTUP = 5.4978;
DEFINEF RAD_DIR_UPRIGHT = 5.4978;
DEFINEF RAD_DIR_UP = 4.7214;
DEFINEF RAD_DIR_UPLEFT = 3.927;
DEFINEF RAD_DIR_LEFTUP = 3.927;
DEFINEF RAD_DIR_LEFT = 3.1416; //3.1519; //Pi
DEFINEF RAD_DIR_LEFTDOWN = 2.3562; //Pi
DEFINEF RAD_DIR_DOWNLEFT = 2.3562; //Pi
DEFINEF RAD_DIR_DOWN = 1.5708;
DEFINEF RAD_DIR_RIGHTDOWN = 0.7854;
DEFINEF RAD_DIR_DOWNRIGHT = 0.7854;
DEFINEF RAD_DIR_RIGHT = 0;
//Flip Types for Tiles, or Sprites
DEFINE FLIP_NONE = 0;
DEFINE FLIP_HORIZONTAL = 1; //Horizontal Flip
//!This is already called in stdExtra.zh
//Fixed
DEFINE FLIP_VERTICAL = 2; //Vertical Flip
//!This is already called in stdExtra.zh
//Fixed
DEFINE FLIP_HV = 3; //Horizontal and vertical Flip
DEFINE FLIP_VH = 3;
DEFINE FLIP_BOTH = 3;
//Rotations + Flip
DEFINE ROT_CW = 4;
DEFINE ROT_CW_FLIP = 5;
DEFINE ROT_CCW_FLIP = 6;
DEFINE ROT_CCW = 7;
DEFINE ROT_ACW_FLIP = 6; //Anticlockwise, please.
DEFINE ROT_ACW = 7;
//Sprite extending methods. Use with item->Extend,
//npc->Extend, eweapon->Extend and lweapon->Extend.
DEFINE EXT_NONE = 0; // Not extended
DEFINE EXT_16X32 = 1; // Object is extended as 16x32; or Link is extended in Sprites->Link to 16x32.
DEFINE EXT_32X32 = 2; // Object is extended as 32x32; or Link is extended in Sprites->Link to 32x32.
DEFINE EXT_NORMAL = 3; // Extended
DEFINE EXT_EXTENDED = 3; // Extended
DEFINE EXT_NOSHADOW = 4; // Extended; NPC has no shadow.
//! We need some better names for Extend constants.
//Generic counters. Use with itemclass->Counter, Game->Counter[], Game->MCounter[] and Game->DCounter[]
enum
{
CR_NONE = -1,
CR_LIFE, CR_MONEY, CR_BOMBS, CR_ARROWS, CR_MAGIC,
CR_KEYS, CR_SBOMBS, CR_CUSTOM1, CR_CUSTOM2, CR_CUSTOM3,
CR_CUSTOM4, CR_CUSTOM5, CR_CUSTOM6, CR_CUSTOM7, CR_CUSTOM8,
CR_CUSTOM9, CR_CUSTOM10, CR_CUSTOM11, CR_CUSTOM12, CR_CUSTOM13,
CR_CUSTOM14, CR_CUSTOM15, CR_CUSTOM16, CR_CUSTOM17, CR_CUSTOM18,
CR_CUSTOM19, CR_CUSTOM20, CR_CUSTOM21, CR_CUSTOM22, CR_CUSTOM23,
CR_CUSTOM24, CR_CUSTOM25, CR_CUSTOM26, CR_CUSTOM27, CR_CUSTOM28,
CR_CUSTOM29, CR_CUSTOM30, CR_CUSTOM31, CR_CUSTOM32, CR_CUSTOM33,
CR_CUSTOM34, CR_CUSTOM35, CR_CUSTOM36, CR_CUSTOM37, CR_CUSTOM38,
CR_CUSTOM39, CR_CUSTOM40, CR_CUSTOM41, CR_CUSTOM42, CR_CUSTOM43,
CR_CUSTOM44, CR_CUSTOM45, CR_CUSTOM46, CR_CUSTOM47, CR_CUSTOM48,
CR_CUSTOM49, CR_CUSTOM50, CR_CUSTOM51, CR_CUSTOM52, CR_CUSTOM53,
CR_CUSTOM54, CR_CUSTOM55, CR_CUSTOM56, CR_CUSTOM57, CR_CUSTOM58,
CR_CUSTOM59, CR_CUSTOM60, CR_CUSTOM61, CR_CUSTOM62, CR_CUSTOM63,
CR_CUSTOM64, CR_CUSTOM65, CR_CUSTOM66, CR_CUSTOM67, CR_CUSTOM68,
CR_CUSTOM69, CR_CUSTOM70, CR_CUSTOM71, CR_CUSTOM72, CR_CUSTOM73,
CR_CUSTOM74, CR_CUSTOM75, CR_CUSTOM76, CR_CUSTOM77, CR_CUSTOM78,
CR_CUSTOM79, CR_CUSTOM80, CR_CUSTOM81, CR_CUSTOM82, CR_CUSTOM83,
CR_CUSTOM84, CR_CUSTOM85, CR_CUSTOM86, CR_CUSTOM87, CR_CUSTOM88,
CR_CUSTOM89, CR_CUSTOM90, CR_CUSTOM91, CR_CUSTOM92, CR_CUSTOM93,
CR_CUSTOM94, CR_CUSTOM95, CR_CUSTOM96, CR_CUSTOM97, CR_CUSTOM98,
CR_CUSTOM99, CR_CUSTOM100,
//
CR_SCRIPT1 = CR_CUSTOM1, CR_SCRIPT2, CR_SCRIPT3,
CR_SCRIPT4, CR_SCRIPT5, CR_SCRIPT6, CR_SCRIPT7, CR_SCRIPT8,
CR_SCRIPT9, CR_SCRIPT10, CR_SCRIPT11, CR_SCRIPT12, CR_SCRIPT13,
CR_SCRIPT14, CR_SCRIPT15, CR_SCRIPT16, CR_SCRIPT17, CR_SCRIPT18,
CR_SCRIPT19, CR_SCRIPT20, CR_SCRIPT21, CR_SCRIPT22, CR_SCRIPT23,
CR_SCRIPT24, CR_SCRIPT25, CR_SCRIPT26, CR_SCRIPT27, CR_SCRIPT28,
CR_SCRIPT29, CR_SCRIPT30, CR_SCRIPT31, CR_SCRIPT32, CR_SCRIPT33,
CR_SCRIPT34, CR_SCRIPT35, CR_SCRIPT36, CR_SCRIPT37, CR_SCRIPT38,
CR_SCRIPT39, CR_SCRIPT40, CR_SCRIPT41, CR_SCRIPT42, CR_SCRIPT43,
CR_SCRIPT44, CR_SCRIPT45, CR_SCRIPT46, CR_SCRIPT47, CR_SCRIPT48,
CR_SCRIPT49, CR_SCRIPT50, CR_SCRIPT51, CR_SCRIPT52, CR_SCRIPT53,
CR_SCRIPT54, CR_SCRIPT55, CR_SCRIPT56, CR_SCRIPT57, CR_SCRIPT58,
CR_SCRIPT59, CR_SCRIPT60, CR_SCRIPT61, CR_SCRIPT62, CR_SCRIPT63,
CR_SCRIPT64, CR_SCRIPT65, CR_SCRIPT66, CR_SCRIPT67, CR_SCRIPT68,
CR_SCRIPT69, CR_SCRIPT70, CR_SCRIPT71, CR_SCRIPT72, CR_SCRIPT73,
CR_SCRIPT74, CR_SCRIPT75, CR_SCRIPT76, CR_SCRIPT77, CR_SCRIPT78,
CR_SCRIPT79, CR_SCRIPT80, CR_SCRIPT81, CR_SCRIPT82, CR_SCRIPT83,
CR_SCRIPT84, CR_SCRIPT85, CR_SCRIPT86, CR_SCRIPT87, CR_SCRIPT88,
CR_SCRIPT89, CR_SCRIPT90, CR_SCRIPT91, CR_SCRIPT92, CR_SCRIPT93,
CR_SCRIPT94, CR_SCRIPT95, CR_SCRIPT96, CR_SCRIPT97, CR_SCRIPT98,
CR_SCRIPT99, CR_SCRIPT100
};
//Generic data indices. Use this with Game->Generic[]
DEFINE GEN_HEARTPIECES = 0; // Heart Pieces currently possessed
DEFINE GEN_MAGICDRAINRATE = 1; // Link's magic usage equals n / 2.
DEFINE GEN_CANSLASH = 2; // Link can slash with the sword.
DEFINE GEN_WARPLEVEL = 3; // Warp Ring number that a Whirlwind warp will send Link to.
// It is set every time that Link uses the Whistle.
DEFINE GEN_HCPPERHC = 4; // How many Pieces of Heart form a complete Heart Container?
DEFINE GEN_CONTINUEHEARTS = 5; // Amount of life that Link continues with
DEFINE GEN_CONTINUEISPERCENT = 6; // ...Or a percentage of his total life
DEFINE GEN_HP_PER_HEART = 7; //How much HP makes a 'heart'
DEFINE GEN_MP_PER_BLOCK = 8; //How much MP makes a 'block'
DEFINE GEN_HERO_DMG_MULT = 9; //Damage multiplier for damage by Link
DEFINE GEN_ENEM_DMG_MULT = 10; //Damage multiplier for damage by enemies
DEFINE GEN_DITHER_TYPE = 11; //Type of dithering used with dark rooms
DEFINE GEN_DITHER_ARG = 12; //Dithering argument used with dark rooms
DEFINE GEN_DITHER_PERCENT = 13; //Percent of light circles taken up by dithering
DEFINE GEN_DEFAULT_LIGHT_RAD = 14; //Default light radius initialized to enemies
DEFINE GEN_TRANS_PERCENT = 15; //Percent of light circles taken up by transparency
DEFINE GEN_DARKNESS_COLOR = 16; //Color of darkness
DEFINE GEN_WATERGRAVITY = 17; //Y position addition when not moving when sideview swimming,
//can be negative
DEFINE GEN_SIDESWIM_STEP_UP = 18; //Hero step speed when sideview swimming, moving up
DEFINE GEN_SIDESWIM_STEP_SIDE = 19; //Hero step speed when sideview swimming, moving left and right
DEFINE GEN_SIDESWIM_STEP_DOWN = 20; //Hero step speed when sideview swimming, moving down
DEFINE GEN_SIDESWIM_EXITJUMP = 21; //Jump value when exiting water from the top.
//If 0, Link can only leave the top of the water via
//sideview ladder.
DEFINE GEN_BUNNY_TILEMOD = 22; //Tile modifier to apply while player is bunnified
DEFINE GEN_SWITCHHOOK_STYLE = 23; //Which 'SW_EFF' style to use for the 'Switch w/ Player' enemy defense
DEFINE GEN_MAX = 24;
//Level item flags. Or (|) these together and use with Game->LItems[]
DEFINE LI_TRIFORCE = 0x01; // The Triforce of this Level has been obtained
DEFINE LI_MAP = 0x02; // The Dungeon Map of this Level has been obtained
DEFINE LI_COMPASS = 0x04; // The Compass of this Level has been obtained
DEFINE LI_BOSS = 0x08; // A "Dungeon Boss" enemy has been slain
DEFINE LI_BOSSKEY = 0x10; // The Boss Key of this Level has been obtained
//Mouse buttons
DEFINE MB_LEFTCLICK = 0x1; //AND (&) these with Link->InputMouseB to get the current button state of the mouse
DEFINE MB_RIGHTCLICK = 0x2;
DEFINE MB_MIDDLECLICK = 0x4; //Keep in in mind that not all mice/touchpads have a middle mouse button
//Controller buttons
DEFINE CB_UP = 0;
DEFINE CB_DOWN = 1;
DEFINE CB_LEFT = 2;
DEFINE CB_RIGHT = 3;
DEFINE CB_A = 4;
DEFINE CB_B = 5;
DEFINE CB_START = 6;
DEFINE CB_L = 7;
DEFINE CB_R = 8;
DEFINE CB_MAP = 9;
DEFINE CB_EX1 = 10;
DEFINE CB_X = 10;
DEFINE CB_EX2 = 11;
DEFINE CB_Y = 11;
DEFINE CB_EX3 = 12;
DEFINE CB_EX4 = 13;
DEFINE CB_STICKUP = 14;
DEFINE CB_STICKDOWN = 15;
DEFINE CB_STICKLEFT = 16;
DEFINE CB_STICKRIGHT = 17;
DEFINE CB_AXIS_UP = 14;
DEFINE CB_AXIS_DOWN = 15;
DEFINE CB_AXIS_LEFT = 16;
DEFINE CB_AXIS_RIGHT = 17;
DEFINE CB_MAX = 18;
////////////////////
/// Items & Itemdata
//Item class ids. Use as comparisons with Itemdata->Family
DEFINE IC_SWORD = 0;
DEFINE IC_BRANG = 1;
DEFINE IC_ARROW = 2;
DEFINE IC_CANDLE = 3;
DEFINE IC_WHISTLE = 4;
DEFINE IC_BAIT = 5;
DEFINE IC_LETTER = 6;
DEFINE IC_POTION = 7;
DEFINE IC_WAND = 8;
DEFINE IC_RING = 9;
DEFINE IC_WALLET = 10;
DEFINE IC_AMULET = 11;
DEFINE IC_SHIELD = 12;
DEFINE IC_BOW = 13;
DEFINE IC_RAFT = 14;
DEFINE IC_LADDER = 15;
DEFINE IC_BOOK = 16;
DEFINE IC_MAGICKEY = 17;
DEFINE IC_BRACELET = 18;
DEFINE IC_FLIPPERS = 19;
DEFINE IC_BOOTS = 20;
DEFINE IC_HOOKSHOT = 21;
DEFINE IC_LENS = 22;
DEFINE IC_HAMMER = 23;
DEFINE IC_DINSFIRE = 24;
DEFINE IC_FARORESWIND = 25;
DEFINE IC_NAYRUSLOVE = 26;
DEFINE IC_BOMB = 27;
DEFINE IC_SBOMB = 28;
DEFINE IC_CLOCK = 29;
DEFINE IC_KEY = 30;
DEFINE IC_MAGICCONTAINER = 31;
DEFINE IC_TRIFORCE = 32;
DEFINE IC_MAP = 33;
DEFINE IC_COMPASS = 34;
DEFINE IC_BOSSKEY = 35;
DEFINE IC_QUIVER = 36;
DEFINE IC_LEVELKEY = 37;
DEFINE IC_CBYRNA = 38;
DEFINE IC_RUPEE = 39;
DEFINE IC_ARROWAMMO = 40;
DEFINE IC_FAIRY = 41;
DEFINE IC_MAGIC = 42;
DEFINE IC_HEART = 43;
DEFINE IC_HEARTCONTAINER = 44;
DEFINE IC_HEARTPIECE = 45;
DEFINE IC_KILLALL = 46;
DEFINE IC_BOMBAMMO = 47;
DEFINE IC_BOMBBAG = 48;
DEFINE IC_ROCS = 49;
DEFINE IC_HOVERBOOTS = 50;
DEFINE IC_SPINSCROLL = 51;
DEFINE IC_CROSSSCROLL = 52;
DEFINE IC_QUAKESCROLL = 53;
DEFINE IC_WHISPRING = 54;
DEFINE IC_CHARGERING = 55;
DEFINE IC_PERILSCROLL = 56;
DEFINE IC_WEALTHMEDAL = 57;
DEFINE IC_HEARTRING = 58;
DEFINE IC_MAGICRING = 59;
DEFINE IC_HURRICANESCROLL = 60;
DEFINE IC_SQUAKESCROLL = 61;
DEFINE IC_STONEAGONY = 62;
DEFINE IC_STOMPBOOTS = 63;
DEFINE IC_WHIMSICALRING = 64;
DEFINE IC_PERILRING = 65;
DEFINE IC_MISC = 66;
DEFINE IC_CUSTOM1 = 67;
DEFINE IC_CUSTOM2 = 68;
DEFINE IC_CUSTOM3 = 69;
DEFINE IC_CUSTOM4 = 70;
DEFINE IC_CUSTOM5 = 71;
DEFINE IC_CUSTOM6 = 72;
DEFINE IC_CUSTOM7 = 73;
DEFINE IC_CUSTOM8 = 74;
DEFINE IC_CUSTOM9 = 75;
DEFINE IC_CUSTOM10 = 76;
DEFINE IC_CUSTOM11 = 77;
DEFINE IC_CUSTOM12 = 78;
DEFINE IC_CUSTOM13 = 79;
DEFINE IC_CUSTOM14 = 80;
DEFINE IC_CUSTOM15 = 81;
DEFINE IC_CUSTOM16 = 82;
DEFINE IC_CUSTOM17 = 83;
DEFINE IC_CUSTOM18 = 84;
DEFINE IC_CUSTOM19 = 85;
DEFINE IC_CUSTOM20 = 86;
DEFINE IC_BOWANDARROW = 87;
DEFINE IC_LETTERPOTION = 88;
// 89-255 free use
// These item classes create a projectile of the
// type LW_CUSTOM/LW_SCRIPT, 01 to 10
DEFINE IC_WPN_CUSTOM_01 = 256;
DEFINE IC_WPN_SCRIPT_01 = 256;
DEFINE IC_WPN_CUSTOM_02 = 257;
DEFINE IC_WPN_SCRIPT_02 = 257;
DEFINE IC_WPN_CUSTOM_03 = 258;
DEFINE IC_WPN_SCRIPT_03 = 258;
DEFINE IC_WPN_CUSTOM_04 = 259;
DEFINE IC_WPN_SCRIPT_04 = 259;
DEFINE IC_WPN_CUSTOM_05 = 260;
DEFINE IC_WPN_SCRIPT_05 = 260;
DEFINE IC_WPN_CUSTOM_06 = 261;
DEFINE IC_WPN_SCRIPT_06 = 261;
DEFINE IC_WPN_CUSTOM_07 = 262;
DEFINE IC_WPN_SCRIPT_07 = 262;
DEFINE IC_WPN_CUSTOM_08 = 263;
DEFINE IC_WPN_SCRIPT_08 = 263;
DEFINE IC_WPN_CUSTOM_09 = 264;
DEFINE IC_WPN_SCRIPT_09 = 264;
DEFINE IC_WPN_CUSTOM_10 = 265;
DEFINE IC_WPN_SCRIPT_10 = 265;
DEFINE IC_ICEROD = 266; //Not Implemented
DEFINE IC_ATKRING = 267;
DEFINE IC_LANTERN = 268;
DEFINE IC_PEARL = 269;
DEFINE IC_BOTTLE = 270;
DEFINE IC_BOTTLE_FILL = 271;
DEFINE IC_BUG_NET = 272;
DEFINE IC_MIRRORS = 273;
DEFINE IC_SWITCHHOOK = 274;
DEFINE IC_ITEM_BUNDLE = 275;
DEFINE IC_PROGRESSIVE = 276;
DEFINE IC_NOTE = 277;
DEFINE IC_REFILL = 278;
DEFINE IC_LIFTGLOVE = 279;
//Itemclasses not less than this are reserved for future engine itemclasses
DEFINE IC_MAXUSABLE = 280;
DEFINE IC_MAX = 512; //Last of enum. All itemclassesare < this.
//Item IDs. Use with CreateItem() and Link->Item[].
//These are DEFAULT values, and may not be correct for custom quests which
//have overridden item action data.
DEFINE I_AMULET1 = 50;
DEFINE I_AMULET2 = 63;
DEFINE I_ARROW1 = 13;
DEFINE I_ARROW2 = 14;
DEFINE I_ARROW3 = 57;
DEFINE I_ARROWAMMO1 = 70;
DEFINE I_ARROWAMMO10 = 72;
DEFINE I_ARROWAMMO30 = 73;
DEFINE I_ARROWAMMO5 = 71;
DEFINE I_BAIT = 16;
DEFINE I_BOMB = 3;
DEFINE I_BOMBAMMO1 = 77;
DEFINE I_BOMBAMMO30 = 80;
DEFINE I_BOMBAMMO4 = 78;
DEFINE I_BOMBAMMO8 = 79;
DEFINE I_BOMBBAG1 = 81;
DEFINE I_BOMBBAG2 = 82;
DEFINE I_BOMBBAG3 = 83;
DEFINE I_BOMBBAG4 = 106;
DEFINE I_BOOK = 32;
DEFINE I_BOOTS = 55;
DEFINE I_BOSSKEY = 67;
DEFINE I_BOW1 = 15;
DEFINE I_BOW2 = 68;
DEFINE I_BRACELET1 = 107;
DEFINE I_BRACELET2 = 19;
DEFINE I_BRACELET3 = 56;
DEFINE I_BRANG1 = 23;
DEFINE I_BRANG2 = 24;
DEFINE I_BRANG3 = 35;
DEFINE I_CANDLE1 = 10;
DEFINE I_CANDLE2 = 11;
DEFINE I_CBYRNA = 88;
DEFINE I_CHARGERING1 = 101;
DEFINE I_CHARGERING2 = 102;
DEFINE I_CLOCK = 4;
DEFINE I_COMPASS = 22;
DEFINE I_CROSSSCROLL = 95;
DEFINE I_DINSFIRE = 64;
DEFINE I_DUST_PILE = 43;
DEFINE I_FAIRY = 34;
DEFINE I_FAIRYSTILL = 69;
DEFINE I_FARORESWIND = 65;
DEFINE I_FLIPPERS = 51;
DEFINE I_HAMMER = 54;
DEFINE I_HCPIECE = 49;
DEFINE I_HEART = 2;
DEFINE I_HEARTCONTAINER = 28;
DEFINE I_HEARTRING1 = 112;
DEFINE I_HEARTRING2 = 113;
DEFINE I_HEARTRING3 = 114;
DEFINE I_HOOKSHOT1 = 52;
DEFINE I_HOOKSHOT2 = 89;
DEFINE I_HOVERBOOTS = 92;
DEFINE I_KEY = 9;
DEFINE I_KILLALL = 62;
DEFINE I_LADDER1 = 27;
DEFINE I_LADDER2 = 108;
DEFINE I_LENS = 53;
DEFINE I_LETTER = 12;
DEFINE I_LETTERUSED = 90;
DEFINE I_LEVELKEY = 84;
DEFINE I_MAGICCONTAINER = 58;
DEFINE I_MAGICJAR1 = 59;
DEFINE I_MAGICJAR2 = 60;
DEFINE I_MAGICKEY = 33;
DEFINE I_MAGICRING1 = 115;
DEFINE I_MAGICRING2 = 116;
DEFINE I_MAGICRING3 = 117;
DEFINE I_MAGICRING4 = 118;
DEFINE I_MAP = 21;
DEFINE I_MISC1 = 46;
DEFINE I_MISC2 = 47;
DEFINE I_NAYRUSLOVE = 66;
DEFINE I_PERILRING = 121;
DEFINE I_PERILSCROLL = 103;
DEFINE I_POTION1 = 29;
DEFINE I_POTION2 = 30;
DEFINE I_QUAKESCROLL1 = 96;
DEFINE I_QUAKESCROLL2 = 97;
DEFINE I_QUIVER1 = 74;
DEFINE I_QUIVER2 = 75;
DEFINE I_QUIVER3 = 76;
DEFINE I_QUIVER4 = 105;
DEFINE I_RAFT = 26;
DEFINE I_RING1 = 17;
DEFINE I_RING2 = 18;
DEFINE I_RING3 = 61;
DEFINE I_ROCSFEATHER = 91;
DEFINE I_RUPEE1 = 0;
DEFINE I_RUPEE10 = 86;
DEFINE I_RUPEE100 = 87;
DEFINE I_RUPEE20 = 38;
DEFINE I_RUPEE200 = 40;
DEFINE I_RUPEE5 = 1;
DEFINE I_RUPEE50 = 39;
DEFINE I_SBOMB = 48;
DEFINE I_SELECTA = 45;
DEFINE I_SELECTB = 85;
DEFINE I_SHIELD1 = 93;
DEFINE I_SHIELD2 = 8;
DEFINE I_SHIELD3 = 37;
DEFINE I_SPINSCROLL1 = 94;
DEFINE I_SPINSCROLL2 = 98;
DEFINE I_STOMPBOOTS = 120;
DEFINE I_STONEAGONY = 119;
DEFINE I_SWORD1 = 5;
DEFINE I_SWORD2 = 6;
DEFINE I_SWORD3 = 7;
DEFINE I_SWORD4 = 36;
DEFINE I_TRIFORCE = 20;
DEFINE I_TRIFORCEBIG = 44;
DEFINE I_WALLET500 = 41;
DEFINE I_WALLET999 = 42;
DEFINE I_WALLETA = 104;
DEFINE I_WAND = 25;
DEFINE I_WEALTHMEDAL = 109;
DEFINE I_WEALTHMEDAL2 = 110;
DEFINE I_WEALTHMEDAL3 = 111;
DEFINE I_WHIMSICALRING = 122;
DEFINE I_WHISPRING1 = 99;
DEFINE I_WHISPRING2 = 100;
DEFINE I_WHISTLE = 31;
//Item pickup flags. OR (|) these together to use with item->Pickup
//Other values are reserved for internal usage, and have no effect
DEFINE IP_BIGRANGE = 0x0001; //INTERNAL Collision rectangle is large
DEFINE IP_HOLDUP = 0x0002; //Link holds it up when collecting it.
DEFINE IP_ST_ITEM = 0x0004; //Sets the screen state "Item" when collected.
DEFINE IP_DUMMY = 0x0008; //A 'dummy' item, such as rupee markers in shops. Can't be collected and ignores gravity.
DEFINE IP_CHECK = 0x0010; //INTERNAL Check restrictions (money in a shop, etc.)
DEFINE IP_MONEY = 0x0020; //INTERNAL This item causes money loss (bomb upgrade, swindle room, etc.)
DEFINE IP_FADE = 0x0040; //INTERNAL Blinks if fadeclk>0
DEFINE IP_ENEMYCARRIED = 0x0080; //The item-carrying NPC carries it. If no NPC has an item, the most recently created NPC carries it.
DEFINE IP_TIMEOUT = 0x0100; //Disappears after 512 frames. Can be collected by melee weapons if the related quest rule is not set.
DEFINE IP_BIGTRIFORCE = 0x0200; //INTERNAL Large collision rectangle (used for large triforce)
DEFINE IP_NODRAW = 0x0400; //INTERNAL Don't draw this (for underwater items)
DEFINE IP_ST_SPECIALITEM = 0x0800; //Sets the screen state "Special Item" when collected.
DEFINE IP_TRIGGERSECRETS = 0x1000; // Triggers screen secrets when collected
DEFINE IP_ALWAYSGRAB = 0x2000; // Item is always able to be picked up (ex. brang/hshot/arrows/melee weapons)
/////////////////////////
/// EWeapons and LWeapons
//LWeapon types. Use with Screen->CreateLWeapon() and Screen->LoadLWeapon().
DEFINE LW_SWORD = 1; // This cannot be created
DEFINE LW_WAND = 12; // This cannot be created
DEFINE LW_CANDLE = 12; // This cannot be created
DEFINE LW_HAMMER = 19; // This cannot be created
DEFINE LW_HOOKSHOT = 20; // This cannot be created
DEFINE LW_CANEOFBYRNA = 27; // This cannot be created
DEFINE LW_BUGNET = 52; // This cannot be created
DEFINE LW_ARROW = 8;
DEFINE LW_BEAM = 2; // Sword beam
DEFINE LW_BRANG = 3;
DEFINE LW_BOMB = 6;
DEFINE LW_BOMBBLAST = 4; // Bomb explosion
DEFINE LW_SBOMB = 7;
DEFINE LW_SBOMBBLAST = 5; // Super Bomb explosion
DEFINE LW_FIRE = 9;
DEFINE LW_WHISTLE = 10; // Whistle music - kills Digdogger
DEFINE LW_BAIT = 11;
DEFINE LW_MAGIC = 13; // Wand magic
DEFINE LW_WIND = 15; // Whistle whirlwind
DEFINE LW_REFMAGIC = 16; // Reflected wand magic
DEFINE LW_REFFIREBALL = 17; // Reflected fireball
DEFINE LW_REFROCK = 18; // Reflected rock
DEFINE LW_REFBEAM = 28; // Reflected sword beam
DEFINE LW_SPARKLE = 23;
DEFINE LW_FIRESPARKLE = 24; // Damages enemies
// Dummy weapons, for use with scripts.
DEFINE LW_SCRIPT1 = 31;
DEFINE LW_SCRIPT2 = 32;
DEFINE LW_SCRIPT3 = 33;
DEFINE LW_SCRIPT4 = 34;
DEFINE LW_SCRIPT5 = 35;
DEFINE LW_SCRIPT6 = 36;
DEFINE LW_SCRIPT7 = 37;
DEFINE LW_SCRIPT8 = 38;
DEFINE LW_SCRIPT9 = 39;
DEFINE LW_SCRIPT10 = 40;
//Planned for 2.6
DEFINE LW_ICE = 41;
DEFINE LW_THROWN = 44;
//EWeapon types. Use with Screen->CreateEWeapon() and Screen->LoadEWeapon().
DEFINE EW_ARROW = 130;
DEFINE EW_BRANG = 131;
DEFINE EW_BEAM = 132; // Sword beam
DEFINE EW_ROCK = 133;
DEFINE EW_MAGIC = 134;
DEFINE EW_FIREBALL = 129;
DEFINE EW_FIREBALL2 = 145; // Arcing boss fireball
DEFINE EW_BOMB = 137; // Projectile bomb
DEFINE EW_BOMBBLAST = 135; // Bomb explosion
DEFINE EW_SBOMB = 138; // Projectile super bomb
DEFINE EW_SBOMBBLAST = 136; // Super bomb explosion
DEFINE EW_FIRETRAIL = 139;
DEFINE EW_FIRE = 140;
DEFINE EW_WIND = 141; // Wind wizzrobe magic
DEFINE EW_FIRE2 = 142; //! What is 'Fire 2' ?
// Dummy weapons, for use with scripts.
DEFINE EW_SCRIPT1 = 31;
DEFINE EW_SCRIPT2 = 32;
DEFINE EW_SCRIPT3 = 33;
DEFINE EW_SCRIPT4 = 34;
DEFINE EW_SCRIPT5 = 35;
DEFINE EW_SCRIPT6 = 36;
DEFINE EW_SCRIPT7 = 37;
DEFINE EW_SCRIPT8 = 38;
DEFINE EW_SCRIPT9 = 39;
DEFINE EW_SCRIPT10 = 40;
//Weapon DeadState values. Use with Weapon->DeadState.
DEFINE WDS_NOHIT = -10; // This value switches collision detection off. Deprecated by weapon->CollDetection.
DEFINE WDS_ALIVE = -1; // Weapon is currently 'alive'.
DEFINE WDS_DEAD = 0; // Use to dispose of most weapons.
DEFINE WDS_BEAMSHARDS = 23; // Use with LW_BEAMs to shatter it into shards.
DEFINE WDS_ARROW = 4; // Use with LW_ARROWs to make them 'wink out' using tile 54.
DEFINE WDS_BOUNCE = 1; // Use with LW_BRANGs or LW_HOOKSHOTs to
// make it 'bounce off' and begin returning to Link.
////////////////////
/// NPCs and Enemies
//NPC Types. Compare against npc->Type.
DEFINE NPCT_GUY = 0;
DEFINE NPCT_WALK = 1;
DEFINE NPCT_TEKTITE = 3;
DEFINE NPCT_LEEVER = 4;
DEFINE NPCT_PEAHAT = 5;
DEFINE NPCT_ZORA = 6;
DEFINE NPCT_ROCK = 7;
DEFINE NPCT_GHINI = 8;
DEFINE NPCT_ARMOS = 9;
DEFINE NPCT_KEESE = 10;
DEFINE NPCT_TRAP = 15;
DEFINE NPCT_WALLMASTER = 16;
DEFINE NPCT_WIZZROBE = 21;
DEFINE NPCT_AQUAMENTUS = 22;
DEFINE NPCT_MOLDORM = 23;
DEFINE NPCT_DODONGO = 24;
DEFINE NPCT_MANHANDLA = 25;
DEFINE NPCT_GLEEOK = 26;
DEFINE NPCT_DIGDOGGER = 27;
DEFINE NPCT_GOHMA = 28;
DEFINE NPCT_LANMOLA = 29;
DEFINE NPCT_PATRA = 30;
DEFINE NPCT_GANON = 31;
DEFINE NPCT_PROJECTILE = 32;
DEFINE NPCT_SPINTILE = 37;
DEFINE NPCT_NONE = 38;
DEFINE NPCT_FAIRY = 39;
DEFINE NPCT_OTHERFLOAT = 40;
DEFINE NPCT_OTHER = 41;
DEFINE NPCT_CUSTOM_01 = 43;
DEFINE NPCT_SCRIPT_01 = 43;
DEFINE NPCT_CUSTOM_02 = 44;
DEFINE NPCT_SCRIPT_02 = 44;
DEFINE NPCT_CUSTOM_03 = 45;
DEFINE NPCT_SCRIPT_03 = 45;
DEFINE NPCT_CUSTOM_04 = 46;
DEFINE NPCT_SCRIPT_04 = 46;
DEFINE NPCT_CUSTOM_05 = 47;
DEFINE NPCT_SCRIPT_05 = 47;
DEFINE NPCT_CUSTOM_06 = 48;
DEFINE NPCT_SCRIPT_06 = 48;
DEFINE NPCT_CUSTOM_07 = 49;
DEFINE NPCT_SCRIPT_07 = 49;
DEFINE NPCT_CUSTOM_08 = 50;
DEFINE NPCT_SCRIPT_08 = 50;
DEFINE NPCT_CUSTOM_09 = 51;
DEFINE NPCT_SCRIPT_09 = 51;
DEFINE NPCT_CUSTOM_10 = 52;
DEFINE NPCT_SCRIPT_10 = 52;
DEFINE NPCT_CUSTOM_11 = 53;
DEFINE NPCT_SCRIPT_11 = 53;
DEFINE NPCT_CUSTOM_12 = 54;
DEFINE NPCT_SCRIPT_12 = 54;
DEFINE NPCT_CUSTOM_13 = 55;
DEFINE NPCT_SCRIPT_13 = 55;
DEFINE NPCT_CUSTOM_14 = 56;
DEFINE NPCT_SCRIPT_14 = 56;
DEFINE NPCT_CUSTOM_15 = 57;