code:
#ifndef GUARD_CONSTANTS_SPECIES_H
#define GUARD_CONSTANTS_SPECIES_H

#define SPECIES_NONE 0
#define SPECIES_BULBASAUR 1
#define SPECIES_IVYSAUR 2
#define SPECIES_VENUSAUR 3
#define SPECIES_CHARMANDER 4
#define SPECIES_CHARMELEON 5
#define SPECIES_CHARIZARD 6
#define SPECIES_SQUIRTLE 7
#define SPECIES_WARTORTLE 8
#define SPECIES_BLASTOISE 9
#define SPECIES_CATERPIE 10
#define SPECIES_METAPOD 11
#define SPECIES_BUTTERFREE 12
#define SPECIES_WEEDLE 13
#define SPECIES_KAKUNA 14
#define SPECIES_BEEDRILL 15
#define SPECIES_PIDGEY 16
#define SPECIES_PIDGEOTTO 17
#define SPECIES_PIDGEOT 18
#define SPECIES_RATTATA 19
#define SPECIES_RATICATE 20
#define SPECIES_SPEAROW 21
#define SPECIES_FEAROW 22
#define SPECIES_EKANS 23
#define SPECIES_ARBOK 24
#define SPECIES_PIKACHU 25
#define SPECIES_RAICHU 26
#define SPECIES_SANDSHREW 27
#define SPECIES_SANDSLASH 28
#define SPECIES_NIDORAN_F 29
#define SPECIES_NIDORINA 30
#define SPECIES_NIDOQUEEN 31
#define SPECIES_NIDORAN_M 32
#define SPECIES_NIDORINO 33
#define SPECIES_NIDOKING 34
#define SPECIES_CLEFAIRY 35
#define SPECIES_CLEFABLE 36
#define SPECIES_VULPIX 37
#define SPECIES_NINETALES 38
#define SPECIES_JIGGLYPUFF 39
#define SPECIES_WIGGLYTUFF 40
#define SPECIES_ZUBAT 41
#define SPECIES_GOLBAT 42
#define SPECIES_ODDISH 43
#define SPECIES_GLOOM 44
#define SPECIES_VILEPLUME 45
#define SPECIES_PARAS 46
#define SPECIES_PARASECT 47
#define SPECIES_VENONAT 48
#define SPECIES_VENOMOTH 49
#define SPECIES_DIGLETT 50
#define SPECIES_DUGTRIO 51
#define SPECIES_MEOWTH 52
#define SPECIES_PERSIAN 53
#define SPECIES_PSYDUCK 54
#define SPECIES_GOLDUCK 55
#define SPECIES_MANKEY 56
#define SPECIES_PRIMEAPE 57
#define SPECIES_GROWLITHE 58
#define SPECIES_ARCANINE 59
#define SPECIES_POLIWAG 60
#define SPECIES_POLIWHIRL 61
#define SPECIES_POLIWRATH 62
#define SPECIES_ABRA 63
#define SPECIES_KADABRA 64
#define SPECIES_ALAKAZAM 65
#define SPECIES_MACHOP 66
#define SPECIES_MACHOKE 67
#define SPECIES_MACHAMP 68
#define SPECIES_BELLSPROUT 69
#define SPECIES_WEEPINBELL 70
#define SPECIES_VICTREEBEL 71
#define SPECIES_TENTACOOL 72
#define SPECIES_TENTACRUEL 73
#define SPECIES_GEODUDE 74
#define SPECIES_GRAVELER 75
#define SPECIES_GOLEM 76
#define SPECIES_PONYTA 77
#define SPECIES_RAPIDASH 78
#define SPECIES_SLOWPOKE 79
#define SPECIES_SLOWBRO 80
#define SPECIES_MAGNEMITE 81
#define SPECIES_MAGNETON 82
#define SPECIES_FARFETCHD 83
#define SPECIES_DODUO 84
#define SPECIES_DODRIO 85
#define SPECIES_SEEL 86
#define SPECIES_DEWGONG 87
#define SPECIES_GRIMER 88
#define SPECIES_MUK 89
#define SPECIES_SHELLDER 90
#define SPECIES_CLOYSTER 91
#define SPECIES_GASTLY 92
#define SPECIES_HAUNTER 93
#define SPECIES_GENGAR 94
#define SPECIES_ONIX 95
#define SPECIES_DROWZEE 96
#define SPECIES_HYPNO 97
#define SPECIES_KRABBY 98
#define SPECIES_KINGLER 99
#define SPECIES_VOLTORB 100
#define SPECIES_ELECTRODE 101
#define SPECIES_EXEGGCUTE 102
#define SPECIES_EXEGGUTOR 103
#define SPECIES_CUBONE 104
#define SPECIES_MAROWAK 105
#define SPECIES_HITMONLEE 106
#define SPECIES_HITMONCHAN 107
#define SPECIES_LICKITUNG 108
#define SPECIES_KOFFING 109
#define SPECIES_WEEZING 110
#define SPECIES_RHYHORN 111
#define SPECIES_RHYDON 112
#define SPECIES_CHANSEY 113
#define SPECIES_TANGELA 114
#define SPECIES_KANGASKHAN 115
#define SPECIES_HORSEA 116
#define SPECIES_SEADRA 117
#define SPECIES_GOLDEEN 118
#define SPECIES_SEAKING 119
#define SPECIES_STARYU 120
#define SPECIES_STARMIE 121
#define SPECIES_MR_MIME 122
#define SPECIES_SCYTHER 123
#define SPECIES_JYNX 124
#define SPECIES_ELECTABUZZ 125
#define SPECIES_MAGMAR 126
#define SPECIES_PINSIR 127
#define SPECIES_TAUROS 128
#define SPECIES_MAGIKARP 129
#define SPECIES_GYARADOS 130
#define SPECIES_LAPRAS 131
#define SPECIES_DITTO 132
#define SPECIES_EEVEE 133
#define SPECIES_VAPOREON 134
#define SPECIES_JOLTEON 135
#define SPECIES_FLAREON 136
#define SPECIES_PORYGON 137
#define SPECIES_OMANYTE 138
#define SPECIES_OMASTAR 139
#define SPECIES_KABUTO 140
#define SPECIES_KABUTOPS 141
#define SPECIES_AERODACTYL 142
#define SPECIES_SNORLAX 143
#define SPECIES_ARTICUNO 144
#define SPECIES_ZAPDOS 145
#define SPECIES_MOLTRES 146
#define SPECIES_DRATINI 147
#define SPECIES_DRAGONAIR 148
#define SPECIES_DRAGONITE 149
#define SPECIES_MEWTWO 150
#define SPECIES_MEW 151
#define SPECIES_CHIKORITA 152
#define SPECIES_BAYLEEF 153
#define SPECIES_MEGANIUM 154
#define SPECIES_CYNDAQUIL 155
#define SPECIES_QUILAVA 156
#define SPECIES_TYPHLOSION 157
#define SPECIES_TOTODILE 158
#define SPECIES_CROCONAW 159
#define SPECIES_FERALIGATR 160
#define SPECIES_SENTRET 161
#define SPECIES_FURRET 162
#define SPECIES_HOOTHOOT 163
#define SPECIES_NOCTOWL 164
#define SPECIES_LEDYBA 165
#define SPECIES_LEDIAN 166
#define SPECIES_SPINARAK 167
#define SPECIES_ARIADOS 168
#define SPECIES_CROBAT 169
#define SPECIES_CHINCHOU 170
#define SPECIES_LANTURN 171
#define SPECIES_PICHU 172
#define SPECIES_CLEFFA 173
#define SPECIES_IGGLYBUFF 174
#define SPECIES_TOGEPI 175
#define SPECIES_TOGETIC 176
#define SPECIES_NATU 177
#define SPECIES_XATU 178
#define SPECIES_MAREEP 179
#define SPECIES_FLAAFFY 180
#define SPECIES_AMPHAROS 181
#define SPECIES_BELLOSSOM 182
#define SPECIES_MARILL 183
#define SPECIES_AZUMARILL 184
#define SPECIES_SUDOWOODO 185
#define SPECIES_POLITOED 186
#define SPECIES_HOPPIP 187
#define SPECIES_SKIPLOOM 188
#define SPECIES_JUMPLUFF 189
#define SPECIES_AIPOM 190
#define SPECIES_SUNKERN 191
#define SPECIES_SUNFLORA 192
#define SPECIES_YANMA 193
#define SPECIES_WOOPER 194
#define SPECIES_QUAGSIRE 195
#define SPECIES_ESPEON 196
#define SPECIES_UMBREON 197
#define SPECIES_MURKROW 198
#define SPECIES_SLOWKING 199
#define SPECIES_MISDREAVUS 200
#define SPECIES_UNOWN 201
#define SPECIES_WOBBUFFET 202
#define SPECIES_GIRAFARIG 203
#define SPECIES_PINECO 204
#define SPECIES_FORRETRESS 205
#define SPECIES_DUNSPARCE 206
#define SPECIES_GLIGAR 207
#define SPECIES_STEELIX 208
#define SPECIES_SNUBBULL 209
#define SPECIES_GRANBULL 210
#define SPECIES_QWILFISH 211
#define SPECIES_SCIZOR 212
#define SPECIES_SHUCKLE 213
#define SPECIES_HERACROSS 214
#define SPECIES_SNEASEL 215
#define SPECIES_TEDDIURSA 216
#define SPECIES_URSARING 217
#define SPECIES_SLUGMA 218
#define SPECIES_MAGCARGO 219
#define SPECIES_SWINUB 220
#define SPECIES_PILOSWINE 221
#define SPECIES_CORSOLA 222
#define SPECIES_REMORAID 223
#define SPECIES_OCTILLERY 224
#define SPECIES_DELIBIRD 225
#define SPECIES_MANTINE 226
#define SPECIES_SKARMORY 227
#define SPECIES_HOUNDOUR 228
#define SPECIES_HOUNDOOM 229
#define SPECIES_KINGDRA 230
#define SPECIES_PHANPY 231
#define SPECIES_DONPHAN 232
#define SPECIES_PORYGON2 233
#define SPECIES_STANTLER 234
#define SPECIES_SMEARGLE 235
#define SPECIES_TYROGUE 236
#define SPECIES_HITMONTOP 237
#define SPECIES_SMOOCHUM 238
#define SPECIES_ELEKID 239
#define SPECIES_MAGBY 240
#define SPECIES_MILTANK 241
#define SPECIES_BLISSEY 242
#define SPECIES_RAIKOU 243
#define SPECIES_ENTEI 244
#define SPECIES_SUICUNE 245
#define SPECIES_LARVITAR 246
#define SPECIES_PUPITAR 247
#define SPECIES_TYRANITAR 248
#define SPECIES_LUGIA 249
#define SPECIES_HO_OH 250
#define SPECIES_CELEBI 251

#define SPECIES_OLD_UNOWN_B 252
#define SPECIES_OLD_UNOWN_C 253
#define SPECIES_OLD_UNOWN_D 254
#define SPECIES_OLD_UNOWN_E 255
#define SPECIES_OLD_UNOWN_F 256
#define SPECIES_OLD_UNOWN_G 257
#define SPECIES_OLD_UNOWN_H 258
#define SPECIES_OLD_UNOWN_I 259
#define SPECIES_OLD_UNOWN_J 260
#define SPECIES_OLD_UNOWN_K 261
#define SPECIES_OLD_UNOWN_L 262
#define SPECIES_OLD_UNOWN_M 263
#define SPECIES_OLD_UNOWN_N 264
#define SPECIES_OLD_UNOWN_O 265
#define SPECIES_OLD_UNOWN_P 266
#define SPECIES_OLD_UNOWN_Q 267
#define SPECIES_OLD_UNOWN_R 268
#define SPECIES_OLD_UNOWN_S 269
#define SPECIES_OLD_UNOWN_T 270
#define SPECIES_OLD_UNOWN_U 271
#define SPECIES_OLD_UNOWN_V 272
#define SPECIES_OLD_UNOWN_W 273
#define SPECIES_OLD_UNOWN_X 274
#define SPECIES_OLD_UNOWN_Y 275
#define SPECIES_OLD_UNOWN_Z 276

#define SPECIES_TREECKO 277
#define SPECIES_GROVYLE 278
#define SPECIES_SCEPTILE 279
#define SPECIES_TORCHIC 280
#define SPECIES_COMBUSKEN 281
#define SPECIES_BLAZIKEN 282
#define SPECIES_MUDKIP 283
#define SPECIES_MARSHTOMP 284
#define SPECIES_SWAMPERT 285
#define SPECIES_POOCHYENA 286
#define SPECIES_MIGHTYENA 287
#define SPECIES_ZIGZAGOON 288
#define SPECIES_LINOONE 289
#define SPECIES_WURMPLE 290
#define SPECIES_SILCOON 291
#define SPECIES_BEAUTIFLY 292
#define SPECIES_CASCOON 293
#define SPECIES_DUSTOX 294
#define SPECIES_LOTAD 295
#define SPECIES_LOMBRE 296
#define SPECIES_LUDICOLO 297
#define SPECIES_SEEDOT 298
#define SPECIES_NUZLEAF 299
#define SPECIES_SHIFTRY 300
#define SPECIES_NINCADA 301
#define SPECIES_NINJASK 302
#define SPECIES_SHEDINJA 303
#define SPECIES_TAILLOW 304
#define SPECIES_SWELLOW 305
#define SPECIES_SHROOMISH 306
#define SPECIES_BRELOOM 307
#define SPECIES_SPINDA 308
#define SPECIES_WINGULL 309
#define SPECIES_PELIPPER 310
#define SPECIES_SURSKIT 311
#define SPECIES_MASQUERAIN 312
#define SPECIES_WAILMER 313
#define SPECIES_WAILORD 314
#define SPECIES_SKITTY 315
#define SPECIES_DELCATTY 316
#define SPECIES_KECLEON 317
#define SPECIES_BALTOY 318
#define SPECIES_CLAYDOL 319
#define SPECIES_NOSEPASS 320
#define SPECIES_TORKOAL 321
#define SPECIES_SABLEYE 322
#define SPECIES_BARBOACH 323
#define SPECIES_WHISCASH 324
#define SPECIES_LUVDISC 325
#define SPECIES_CORPHISH 326
#define SPECIES_CRAWDAUNT 327
#define SPECIES_FEEBAS 328
#define SPECIES_MILOTIC 329
#define SPECIES_CARVANHA 330
#define SPECIES_SHARPEDO 331
#define SPECIES_TRAPINCH 332
#define SPECIES_VIBRAVA 333
#define SPECIES_FLYGON 334
#define SPECIES_MAKUHITA 335
#define SPECIES_HARIYAMA 336
#define SPECIES_ELECTRIKE 337
#define SPECIES_MANECTRIC 338
#define SPECIES_NUMEL 339
#define SPECIES_CAMERUPT 340
#define SPECIES_SPHEAL 341
#define SPECIES_SEALEO 342
#define SPECIES_WALREIN 343
#define SPECIES_CACNEA 344
#define SPECIES_CACTURNE 345
#define SPECIES_SNORUNT 346
#define SPECIES_GLALIE 347
#define SPECIES_LUNATONE 348
#define SPECIES_SOLROCK 349
#define SPECIES_AZURILL 350
#define SPECIES_SPOINK 351
#define SPECIES_GRUMPIG 352
#define SPECIES_PLUSLE 353
#define SPECIES_MINUN 354
#define SPECIES_MAWILE 355
#define SPECIES_MEDITITE 356
#define SPECIES_MEDICHAM 357
#define SPECIES_SWABLU 358
#define SPECIES_ALTARIA 359
#define SPECIES_WYNAUT 360
#define SPECIES_DUSKULL 361
#define SPECIES_DUSCLOPS 362
#define SPECIES_ROSELIA 363
#define SPECIES_SLAKOTH 364
#define SPECIES_VIGOROTH 365
#define SPECIES_SLAKING 366
#define SPECIES_GULPIN 367
#define SPECIES_SWALOT 368
#define SPECIES_TROPIUS 369
#define SPECIES_WHISMUR 370
#define SPECIES_LOUDRED 371
#define SPECIES_EXPLOUD 372
#define SPECIES_CLAMPERL 373
#define SPECIES_HUNTAIL 374
#define SPECIES_GOREBYSS 375
#define SPECIES_ABSOL 376
#define SPECIES_SHUPPET 377
#define SPECIES_BANETTE 378
#define SPECIES_SEVIPER 379
#define SPECIES_ZANGOOSE 380
#define SPECIES_RELICANTH 381
#define SPECIES_ARON 382
#define SPECIES_LAIRON 383
#define SPECIES_AGGRON 384
#define SPECIES_CASTFORM 385
#define SPECIES_VOLBEAT 386
#define SPECIES_ILLUMISE 387
#define SPECIES_LILEEP 388
#define SPECIES_CRADILY 389
#define SPECIES_ANORITH 390
#define SPECIES_ARMALDO 391
#define SPECIES_RALTS 392
#define SPECIES_KIRLIA 393
#define SPECIES_GARDEVOIR 394
#define SPECIES_BAGON 395
#define SPECIES_SHELGON 396
#define SPECIES_SALAMENCE 397
#define SPECIES_BELDUM 398
#define SPECIES_METANG 399
#define SPECIES_METAGROSS 400
#define SPECIES_REGIROCK 401
#define SPECIES_REGICE 402
#define SPECIES_REGISTEEL 403
#define SPECIES_KYOGRE 404
#define SPECIES_GROUDON 405
#define SPECIES_RAYQUAZA 406
#define SPECIES_LATIAS 407
#define SPECIES_LATIOS 408
#define SPECIES_JIRACHI 409
#define SPECIES_DEOXYS 410
#define SPECIES_CHIMECHO 411
#define SPECIES_EGG 412

#define NUM_SPECIES SPECIES_EGG

#define SPECIES_UNOWN_B (NUM_SPECIES + 1)
#define SPECIES_UNOWN_C (SPECIES_UNOWN_B + 1)
#define SPECIES_UNOWN_D (SPECIES_UNOWN_B + 2)
#define SPECIES_UNOWN_E (SPECIES_UNOWN_B + 3)
#define SPECIES_UNOWN_F (SPECIES_UNOWN_B + 4)
#define SPECIES_UNOWN_G (SPECIES_UNOWN_B + 5)
#define SPECIES_UNOWN_H (SPECIES_UNOWN_B + 6)
#define SPECIES_UNOWN_I (SPECIES_UNOWN_B + 7)
#define SPECIES_UNOWN_J (SPECIES_UNOWN_B + 8)
#define SPECIES_UNOWN_K (SPECIES_UNOWN_B + 9)
#define SPECIES_UNOWN_L (SPECIES_UNOWN_B + 10)
#define SPECIES_UNOWN_M (SPECIES_UNOWN_B + 11)
#define SPECIES_UNOWN_N (SPECIES_UNOWN_B + 12)
#define SPECIES_UNOWN_O (SPECIES_UNOWN_B + 13)
#define SPECIES_UNOWN_P (SPECIES_UNOWN_B + 14)
#define SPECIES_UNOWN_Q (SPECIES_UNOWN_B + 15)
#define SPECIES_UNOWN_R (SPECIES_UNOWN_B + 16)
#define SPECIES_UNOWN_S (SPECIES_UNOWN_B + 17)
#define SPECIES_UNOWN_T (SPECIES_UNOWN_B + 18)
#define SPECIES_UNOWN_U (SPECIES_UNOWN_B + 19)
#define SPECIES_UNOWN_V (SPECIES_UNOWN_B + 20)
#define SPECIES_UNOWN_W (SPECIES_UNOWN_B + 21)
#define SPECIES_UNOWN_X (SPECIES_UNOWN_B + 22)
#define SPECIES_UNOWN_Y (SPECIES_UNOWN_B + 23)
#define SPECIES_UNOWN_Z (SPECIES_UNOWN_B + 24)
#define SPECIES_UNOWN_EMARK (SPECIES_UNOWN_B + 25)
#define SPECIES_UNOWN_QMARK (SPECIES_UNOWN_B + 26)

// National Dex Index Defines

#define NATIONAL_DEX_NONE           0
#define NATIONAL_DEX_BULBASAUR      1
#define NATIONAL_DEX_IVYSAUR        2
#define NATIONAL_DEX_VENUSAUR       3
#define NATIONAL_DEX_CHARMANDER     4
#define NATIONAL_DEX_CHARMELEON     5
#define NATIONAL_DEX_CHARIZARD      6
#define NATIONAL_DEX_SQUIRTLE       7
#define NATIONAL_DEX_WARTORTLE      8
#define NATIONAL_DEX_BLASTOISE      9
#define NATIONAL_DEX_CATERPIE       10
#define NATIONAL_DEX_METAPOD        11
#define NATIONAL_DEX_BUTTERFREE     12
#define NATIONAL_DEX_WEEDLE         13
#define NATIONAL_DEX_KAKUNA         14
#define NATIONAL_DEX_BEEDRILL       15
#define NATIONAL_DEX_PIDGEY         16
#define NATIONAL_DEX_PIDGEOTTO      17
#define NATIONAL_DEX_PIDGEOT        18
#define NATIONAL_DEX_RATTATA        19
#define NATIONAL_DEX_RATICATE       20
#define NATIONAL_DEX_SPEAROW        21
#define NATIONAL_DEX_FEAROW         22
#define NATIONAL_DEX_EKANS          23
#define NATIONAL_DEX_ARBOK          24
#define NATIONAL_DEX_PIKACHU        25
#define NATIONAL_DEX_RAICHU         26
#define NATIONAL_DEX_SANDSHREW      27
#define NATIONAL_DEX_SANDSLASH      28
#define NATIONAL_DEX_NIDORAN_F      29
#define NATIONAL_DEX_NIDORINA       30
#define NATIONAL_DEX_NIDOQUEEN      31
#define NATIONAL_DEX_NIDORAN_M      32
#define NATIONAL_DEX_NIDORINO       33
#define NATIONAL_DEX_NIDOKING       34
#define NATIONAL_DEX_CLEFAIRY       35
#define NATIONAL_DEX_CLEFABLE       36
#define NATIONAL_DEX_VULPIX         37
#define NATIONAL_DEX_NINETALES      38
#define NATIONAL_DEX_JIGGLYPUFF     39
#define NATIONAL_DEX_WIGGLYTUFF     40
#define NATIONAL_DEX_ZUBAT          41
#define NATIONAL_DEX_GOLBAT         42
#define NATIONAL_DEX_ODDISH         43
#define NATIONAL_DEX_GLOOM          44
#define NATIONAL_DEX_VILEPLUME      45
#define NATIONAL_DEX_PARAS          46
#define NATIONAL_DEX_PARASECT       47
#define NATIONAL_DEX_VENONAT        48
#define NATIONAL_DEX_VENOMOTH       49
#define NATIONAL_DEX_DIGLETT        50
#define NATIONAL_DEX_DUGTRIO        51
#define NATIONAL_DEX_MEOWTH         52
#define NATIONAL_DEX_PERSIAN        53
#define NATIONAL_DEX_PSYDUCK        54
#define NATIONAL_DEX_GOLDUCK        55
#define NATIONAL_DEX_MANKEY         56
#define NATIONAL_DEX_PRIMEAPE       57
#define NATIONAL_DEX_GROWLITHE      58
#define NATIONAL_DEX_ARCANINE       59
#define NATIONAL_DEX_POLIWAG        60
#define NATIONAL_DEX_POLIWHIRL      61
#define NATIONAL_DEX_POLIWRATH      62
#define NATIONAL_DEX_ABRA           63
#define NATIONAL_DEX_KADABRA        64
#define NATIONAL_DEX_ALAKAZAM       65
#define NATIONAL_DEX_MACHOP         66
#define NATIONAL_DEX_MACHOKE        67
#define NATIONAL_DEX_MACHAMP        68
#define NATIONAL_DEX_BELLSPROUT     69
#define NATIONAL_DEX_WEEPINBELL     70
#define NATIONAL_DEX_VICTREEBEL     71
#define NATIONAL_DEX_TENTACOOL      72
#define NATIONAL_DEX_TENTACRUEL     73
#define NATIONAL_DEX_GEODUDE        74
#define NATIONAL_DEX_GRAVELER       75
#define NATIONAL_DEX_GOLEM          76
#define NATIONAL_DEX_PONYTA         77
#define NATIONAL_DEX_RAPIDASH       78
#define NATIONAL_DEX_SLOWPOKE       79
#define NATIONAL_DEX_SLOWBRO        80
#define NATIONAL_DEX_MAGNEMITE      81
#define NATIONAL_DEX_MAGNETON       82
#define NATIONAL_DEX_FARFETCHD      83
#define NATIONAL_DEX_DODUO          84
#define NATIONAL_DEX_DODRIO         85
#define NATIONAL_DEX_SEEL           86
#define NATIONAL_DEX_DEWGONG        87
#define NATIONAL_DEX_GRIMER         88
#define NATIONAL_DEX_MUK            89
#define NATIONAL_DEX_SHELLDER       90
#define NATIONAL_DEX_CLOYSTER       91
#define NATIONAL_DEX_GASTLY         92
#define NATIONAL_DEX_HAUNTER        93
#define NATIONAL_DEX_GENGAR         94
#define NATIONAL_DEX_ONIX           95
#define NATIONAL_DEX_DROWZEE        96
#define NATIONAL_DEX_HYPNO          97
#define NATIONAL_DEX_KRABBY         98
#define NATIONAL_DEX_KINGLER        99
#define NATIONAL_DEX_VOLTORB        100
#define NATIONAL_DEX_ELECTRODE      101
#define NATIONAL_DEX_EXEGGCUTE      102
#define NATIONAL_DEX_EXEGGUTOR      103
#define NATIONAL_DEX_CUBONE         104
#define NATIONAL_DEX_MAROWAK        105
#define NATIONAL_DEX_HITMONLEE      106
#define NATIONAL_DEX_HITMONCHAN     107
#define NATIONAL_DEX_LICKITUNG      108
#define NATIONAL_DEX_KOFFING        109
#define NATIONAL_DEX_WEEZING        110
#define NATIONAL_DEX_RHYHORN        111
#define NATIONAL_DEX_RHYDON         112
#define NATIONAL_DEX_CHANSEY        113
#define NATIONAL_DEX_TANGELA        114
#define NATIONAL_DEX_KANGASKHAN     115
#define NATIONAL_DEX_HORSEA         116
#define NATIONAL_DEX_SEADRA         117
#define NATIONAL_DEX_GOLDEEN        118
#define NATIONAL_DEX_SEAKING        119
#define NATIONAL_DEX_STARYU         120
#define NATIONAL_DEX_STARMIE        121
#define NATIONAL_DEX_MR_MIME        122
#define NATIONAL_DEX_SCYTHER        123
#define NATIONAL_DEX_JYNX           124
#define NATIONAL_DEX_ELECTABUZZ     125
#define NATIONAL_DEX_MAGMAR         126
#define NATIONAL_DEX_PINSIR         127
#define NATIONAL_DEX_TAUROS         128
#define NATIONAL_DEX_MAGIKARP       129
#define NATIONAL_DEX_GYARADOS       130
#define NATIONAL_DEX_LAPRAS         131
#define NATIONAL_DEX_DITTO          132
#define NATIONAL_DEX_EEVEE          133
#define NATIONAL_DEX_VAPOREON       134
#define NATIONAL_DEX_JOLTEON        135
#define NATIONAL_DEX_FLAREON        136
#define NATIONAL_DEX_PORYGON        137
#define NATIONAL_DEX_OMANYTE        138
#define NATIONAL_DEX_OMASTAR        139
#define NATIONAL_DEX_KABUTO         140
#define NATIONAL_DEX_KABUTOPS       141
#define NATIONAL_DEX_AERODACTYL     142
#define NATIONAL_DEX_SNORLAX        143
#define NATIONAL_DEX_ARTICUNO       144
#define NATIONAL_DEX_ZAPDOS         145
#define NATIONAL_DEX_MOLTRES        146
#define NATIONAL_DEX_DRATINI        147
#define NATIONAL_DEX_DRAGONAIR      148
#define NATIONAL_DEX_DRAGONITE      149
#define NATIONAL_DEX_MEWTWO         150
#define NATIONAL_DEX_MEW            151

#define KANTO_DEX_COUNT             NATIONAL_DEX_MEW

#define NATIONAL_DEX_CHIKORITA      152
#define NATIONAL_DEX_BAYLEEF        153
#define NATIONAL_DEX_MEGANIUM       154
#define NATIONAL_DEX_CYNDAQUIL      155
#define NATIONAL_DEX_QUILAVA        156
#define NATIONAL_DEX_TYPHLOSION     157
#define NATIONAL_DEX_TOTODILE       158
#define NATIONAL_DEX_CROCONAW       159
#define NATIONAL_DEX_FERALIGATR     160
#define NATIONAL_DEX_SENTRET        161
#define NATIONAL_DEX_FURRET         162
#define NATIONAL_DEX_HOOTHOOT       163
#define NATIONAL_DEX_NOCTOWL        164
#define NATIONAL_DEX_LEDYBA         165
#define NATIONAL_DEX_LEDIAN         166
#define NATIONAL_DEX_SPINARAK       167
#define NATIONAL_DEX_ARIADOS        168
#define NATIONAL_DEX_CROBAT         169
#define NATIONAL_DEX_CHINCHOU       170
#define NATIONAL_DEX_LANTURN        171
#define NATIONAL_DEX_PICHU          172
#define NATIONAL_DEX_CLEFFA         173
#define NATIONAL_DEX_IGGLYBUFF      174
#define NATIONAL_DEX_TOGEPI         175
#define NATIONAL_DEX_TOGETIC        176
#define NATIONAL_DEX_NATU           177
#define NATIONAL_DEX_XATU           178
#define NATIONAL_DEX_MAREEP         179
#define NATIONAL_DEX_FLAAFFY        180
#define NATIONAL_DEX_AMPHAROS       181
#define NATIONAL_DEX_BELLOSSOM      182
#define NATIONAL_DEX_MARILL         183
#define NATIONAL_DEX_AZUMARILL      184
#define NATIONAL_DEX_SUDOWOODO      185
#define NATIONAL_DEX_POLITOED       186
#define NATIONAL_DEX_HOPPIP         187
#define NATIONAL_DEX_SKIPLOOM       188
#define NATIONAL_DEX_JUMPLUFF       189
#define NATIONAL_DEX_AIPOM          190
#define NATIONAL_DEX_SUNKERN        191
#define NATIONAL_DEX_SUNFLORA       192
#define NATIONAL_DEX_YANMA          193
#define NATIONAL_DEX_WOOPER         194
#define NATIONAL_DEX_QUAGSIRE       195
#define NATIONAL_DEX_ESPEON         196
#define NATIONAL_DEX_UMBREON        197
#define NATIONAL_DEX_MURKROW        198
#define NATIONAL_DEX_SLOWKING       199
#define NATIONAL_DEX_MISDREAVUS     200
#define NATIONAL_DEX_UNOWN          201
#define NATIONAL_DEX_WOBBUFFET      202
#define NATIONAL_DEX_GIRAFARIG      203
#define NATIONAL_DEX_PINECO         204
#define NATIONAL_DEX_FORRETRESS     205
#define NATIONAL_DEX_DUNSPARCE      206
#define NATIONAL_DEX_GLIGAR         207
#define NATIONAL_DEX_STEELIX        208
#define NATIONAL_DEX_SNUBBULL       209
#define NATIONAL_DEX_GRANBULL       210
#define NATIONAL_DEX_QWILFISH       211
#define NATIONAL_DEX_SCIZOR         212
#define NATIONAL_DEX_SHUCKLE        213
#define NATIONAL_DEX_HERACROSS      214
#define NATIONAL_DEX_SNEASEL        215
#define NATIONAL_DEX_TEDDIURSA      216
#define NATIONAL_DEX_URSARING       217
#define NATIONAL_DEX_SLUGMA         218
#define NATIONAL_DEX_MAGCARGO       219
#define NATIONAL_DEX_SWINUB         220
#define NATIONAL_DEX_PILOSWINE      221
#define NATIONAL_DEX_CORSOLA        222
#define NATIONAL_DEX_REMORAID       223
#define NATIONAL_DEX_OCTILLERY      224
#define NATIONAL_DEX_DELIBIRD       225
#define NATIONAL_DEX_MANTINE        226
#define NATIONAL_DEX_SKARMORY       227
#define NATIONAL_DEX_HOUNDOUR       228
#define NATIONAL_DEX_HOUNDOOM       229
#define NATIONAL_DEX_KINGDRA        230
#define NATIONAL_DEX_PHANPY         231
#define NATIONAL_DEX_DONPHAN        232
#define NATIONAL_DEX_PORYGON2       233
#define NATIONAL_DEX_STANTLER       234
#define NATIONAL_DEX_SMEARGLE       235
#define NATIONAL_DEX_TYROGUE        236
#define NATIONAL_DEX_HITMONTOP      237
#define NATIONAL_DEX_SMOOCHUM       238
#define NATIONAL_DEX_ELEKID         239
#define NATIONAL_DEX_MAGBY          240
#define NATIONAL_DEX_MILTANK        241
#define NATIONAL_DEX_BLISSEY        242
#define NATIONAL_DEX_RAIKOU         243
#define NATIONAL_DEX_ENTEI          244
#define NATIONAL_DEX_SUICUNE        245
#define NATIONAL_DEX_LARVITAR       246
#define NATIONAL_DEX_PUPITAR        247
#define NATIONAL_DEX_TYRANITAR      248
#define NATIONAL_DEX_LUGIA          249
#define NATIONAL_DEX_HO_OH          250
#define NATIONAL_DEX_CELEBI         251

#define JOHTO_DEX_COUNT             NATIONAL_DEX_CELEBI

#define NATIONAL_DEX_TREECKO        252
#define NATIONAL_DEX_GROVYLE        253
#define NATIONAL_DEX_SCEPTILE       254
#define NATIONAL_DEX_TORCHIC        255
#define NATIONAL_DEX_COMBUSKEN      256
#define NATIONAL_DEX_BLAZIKEN       257
#define NATIONAL_DEX_MUDKIP         258
#define NATIONAL_DEX_MARSHTOMP      259
#define NATIONAL_DEX_SWAMPERT       260
#define NATIONAL_DEX_POOCHYENA      261
#define NATIONAL_DEX_MIGHTYENA      262
#define NATIONAL_DEX_ZIGZAGOON      263
#define NATIONAL_DEX_LINOONE        264
#define NATIONAL_DEX_WURMPLE        265
#define NATIONAL_DEX_SILCOON        266
#define NATIONAL_DEX_BEAUTIFLY      267
#define NATIONAL_DEX_CASCOON        268
#define NATIONAL_DEX_DUSTOX         269
#define NATIONAL_DEX_LOTAD          270
#define NATIONAL_DEX_LOMBRE         271
#define NATIONAL_DEX_LUDICOLO       272
#define NATIONAL_DEX_SEEDOT         273
#define NATIONAL_DEX_NUZLEAF        274
#define NATIONAL_DEX_SHIFTRY        275
#define NATIONAL_DEX_TAILLOW        276
#define NATIONAL_DEX_SWELLOW        277
#define NATIONAL_DEX_WINGULL        278
#define NATIONAL_DEX_PELIPPER       279
#define NATIONAL_DEX_RALTS          280
#define NATIONAL_DEX_KIRLIA         281
#define NATIONAL_DEX_GARDEVOIR      282
#define NATIONAL_DEX_SURSKIT        283
#define NATIONAL_DEX_MASQUERAIN     284
#define NATIONAL_DEX_SHROOMISH      285
#define NATIONAL_DEX_BRELOOM        286
#define NATIONAL_DEX_SLAKOTH        287
#define NATIONAL_DEX_VIGOROTH       288
#define NATIONAL_DEX_SLAKING        289
#define NATIONAL_DEX_NINCADA        290
#define NATIONAL_DEX_NINJASK        291
#define NATIONAL_DEX_SHEDINJA       292
#define NATIONAL_DEX_WHISMUR        293
#define NATIONAL_DEX_LOUDRED        294
#define NATIONAL_DEX_EXPLOUD        295
#define NATIONAL_DEX_MAKUHITA       296
#define NATIONAL_DEX_HARIYAMA       297
#define NATIONAL_DEX_AZURILL        298
#define NATIONAL_DEX_NOSEPASS       299
#define NATIONAL_DEX_SKITTY         300
#define NATIONAL_DEX_DELCATTY       301
#define NATIONAL_DEX_SABLEYE        302
#define NATIONAL_DEX_MAWILE         303
#define NATIONAL_DEX_ARON           304
#define NATIONAL_DEX_LAIRON         305
#define NATIONAL_DEX_AGGRON         306
#define NATIONAL_DEX_MEDITITE       307
#define NATIONAL_DEX_MEDICHAM       308
#define NATIONAL_DEX_ELECTRIKE      309
#define NATIONAL_DEX_MANECTRIC      310
#define NATIONAL_DEX_PLUSLE         311
#define NATIONAL_DEX_MINUN          312
#define NATIONAL_DEX_VOLBEAT        313
#define NATIONAL_DEX_ILLUMISE       314
#define NATIONAL_DEX_ROSELIA        315
#define NATIONAL_DEX_GULPIN         316
#define NATIONAL_DEX_SWALOT         317
#define NATIONAL_DEX_CARVANHA       318
#define NATIONAL_DEX_SHARPEDO       319
#define NATIONAL_DEX_WAILMER        320
#define NATIONAL_DEX_WAILORD        321
#define NATIONAL_DEX_NUMEL          322
#define NATIONAL_DEX_CAMERUPT       323
#define NATIONAL_DEX_TORKOAL        324
#define NATIONAL_DEX_SPOINK         325
#define NATIONAL_DEX_GRUMPIG        326
#define NATIONAL_DEX_SPINDA         327
#define NATIONAL_DEX_TRAPINCH       328
#define NATIONAL_DEX_VIBRAVA        329
#define NATIONAL_DEX_FLYGON         330
#define NATIONAL_DEX_CACNEA         331
#define NATIONAL_DEX_CACTURNE       332
#define NATIONAL_DEX_SWABLU         333
#define NATIONAL_DEX_ALTARIA        334
#define NATIONAL_DEX_ZANGOOSE       335
#define NATIONAL_DEX_SEVIPER        336
#define NATIONAL_DEX_LUNATONE       337
#define NATIONAL_DEX_SOLROCK        338
#define NATIONAL_DEX_BARBOACH       339
#define NATIONAL_DEX_WHISCASH       340
#define NATIONAL_DEX_CORPHISH       341
#define NATIONAL_DEX_CRAWDAUNT      342
#define NATIONAL_DEX_BALTOY         343
#define NATIONAL_DEX_CLAYDOL        344
#define NATIONAL_DEX_LILEEP         345
#define NATIONAL_DEX_CRADILY        346
#define NATIONAL_DEX_ANORITH        347
#define NATIONAL_DEX_ARMALDO        348
#define NATIONAL_DEX_FEEBAS         349
#define NATIONAL_DEX_MILOTIC        350
#define NATIONAL_DEX_CASTFORM       351
#define NATIONAL_DEX_KECLEON        352
#define NATIONAL_DEX_SHUPPET        353
#define NATIONAL_DEX_BANETTE        354
#define NATIONAL_DEX_DUSKULL        355
#define NATIONAL_DEX_DUSCLOPS       356
#define NATIONAL_DEX_TROPIUS        357
#define NATIONAL_DEX_CHIMECHO       358
#define NATIONAL_DEX_ABSOL          359
#define NATIONAL_DEX_WYNAUT         360
#define NATIONAL_DEX_SNORUNT        361
#define NATIONAL_DEX_GLALIE         362
#define NATIONAL_DEX_SPHEAL         363
#define NATIONAL_DEX_SEALEO         364
#define NATIONAL_DEX_WALREIN        365
#define NATIONAL_DEX_CLAMPERL       366
#define NATIONAL_DEX_HUNTAIL        367
#define NATIONAL_DEX_GOREBYSS       368
#define NATIONAL_DEX_RELICANTH      369
#define NATIONAL_DEX_LUVDISC        370
#define NATIONAL_DEX_BAGON          371
#define NATIONAL_DEX_SHELGON        372
#define NATIONAL_DEX_SALAMENCE      373
#define NATIONAL_DEX_BELDUM         374
#define NATIONAL_DEX_METANG         375
#define NATIONAL_DEX_METAGROSS      376
#define NATIONAL_DEX_REGIROCK       377
#define NATIONAL_DEX_REGICE         378
#define NATIONAL_DEX_REGISTEEL      379
#define NATIONAL_DEX_LATIAS         380
#define NATIONAL_DEX_LATIOS         381
#define NATIONAL_DEX_KYOGRE         382
#define NATIONAL_DEX_GROUDON        383
#define NATIONAL_DEX_RAYQUAZA       384
#define NATIONAL_DEX_JIRACHI        385
#define NATIONAL_DEX_DEOXYS         386

#define NATIONAL_DEX_COUNT          NATIONAL_DEX_DEOXYS

#define NATIONAL_DEX_OLD_UNOWN_B    (NATIONAL_DEX_COUNT + 1)
#define NATIONAL_DEX_OLD_UNOWN_C    (NATIONAL_DEX_OLD_UNOWN_B + 1)
#define NATIONAL_DEX_OLD_UNOWN_D    (NATIONAL_DEX_OLD_UNOWN_B + 2)
#define NATIONAL_DEX_OLD_UNOWN_E    (NATIONAL_DEX_OLD_UNOWN_B + 3)
#define NATIONAL_DEX_OLD_UNOWN_F    (NATIONAL_DEX_OLD_UNOWN_B + 4)
#define NATIONAL_DEX_OLD_UNOWN_G    (NATIONAL_DEX_OLD_UNOWN_B + 5)
#define NATIONAL_DEX_OLD_UNOWN_H    (NATIONAL_DEX_OLD_UNOWN_B + 6)
#define NATIONAL_DEX_OLD_UNOWN_I    (NATIONAL_DEX_OLD_UNOWN_B + 7)
#define NATIONAL_DEX_OLD_UNOWN_J    (NATIONAL_DEX_OLD_UNOWN_B + 8)
#define NATIONAL_DEX_OLD_UNOWN_K    (NATIONAL_DEX_OLD_UNOWN_B + 9)
#define NATIONAL_DEX_OLD_UNOWN_L    (NATIONAL_DEX_OLD_UNOWN_B + 10)
#define NATIONAL_DEX_OLD_UNOWN_M    (NATIONAL_DEX_OLD_UNOWN_B + 11)
#define NATIONAL_DEX_OLD_UNOWN_N    (NATIONAL_DEX_OLD_UNOWN_B + 12)
#define NATIONAL_DEX_OLD_UNOWN_O    (NATIONAL_DEX_OLD_UNOWN_B + 13)
#define NATIONAL_DEX_OLD_UNOWN_P    (NATIONAL_DEX_OLD_UNOWN_B + 14)
#define NATIONAL_DEX_OLD_UNOWN_Q    (NATIONAL_DEX_OLD_UNOWN_B + 15)
#define NATIONAL_DEX_OLD_UNOWN_R    (NATIONAL_DEX_OLD_UNOWN_B + 16)
#define NATIONAL_DEX_OLD_UNOWN_S    (NATIONAL_DEX_OLD_UNOWN_B + 17)
#define NATIONAL_DEX_OLD_UNOWN_T    (NATIONAL_DEX_OLD_UNOWN_B + 18)
#define NATIONAL_DEX_OLD_UNOWN_U    (NATIONAL_DEX_OLD_UNOWN_B + 19)
#define NATIONAL_DEX_OLD_UNOWN_V    (NATIONAL_DEX_OLD_UNOWN_B + 20)
#define NATIONAL_DEX_OLD_UNOWN_W    (NATIONAL_DEX_OLD_UNOWN_B + 21)
#define NATIONAL_DEX_OLD_UNOWN_X    (NATIONAL_DEX_OLD_UNOWN_B + 22)
#define NATIONAL_DEX_OLD_UNOWN_Y    (NATIONAL_DEX_OLD_UNOWN_B + 23)
#define NATIONAL_DEX_OLD_UNOWN_Z    (NATIONAL_DEX_OLD_UNOWN_B + 24)

// Hoenn Dex Index Defines

#define HOENN_DEX_NONE          0
#define HOENN_DEX_TREECKO       1
#define HOENN_DEX_GROVYLE       2
#define HOENN_DEX_SCEPTILE      3
#define HOENN_DEX_TORCHIC       4
#define HOENN_DEX_COMBUSKEN     5
#define HOENN_DEX_BLAZIKEN      6
#define HOENN_DEX_MUDKIP        7
#define HOENN_DEX_MARSHTOMP     8
#define HOENN_DEX_SWAMPERT      9
#define HOENN_DEX_POOCHYENA     10
#define HOENN_DEX_MIGHTYENA     11
#define HOENN_DEX_ZIGZAGOON     12
#define HOENN_DEX_LINOONE       13
#define HOENN_DEX_WURMPLE       14
#define HOENN_DEX_SILCOON       15
#define HOENN_DEX_BEAUTIFLY     16
#define HOENN_DEX_CASCOON       17
#define HOENN_DEX_DUSTOX        18
#define HOENN_DEX_LOTAD         19
#define HOENN_DEX_LOMBRE        20
#define HOENN_DEX_LUDICOLO      21
#define HOENN_DEX_SEEDOT        22
#define HOENN_DEX_NUZLEAF       23
#define HOENN_DEX_SHIFTRY       24
#define HOENN_DEX_TAILLOW       25
#define HOENN_DEX_SWELLOW       26
#define HOENN_DEX_WINGULL       27
#define HOENN_DEX_PELIPPER      28
#define HOENN_DEX_RALTS         29
#define HOENN_DEX_KIRLIA        30
#define HOENN_DEX_GARDEVOIR     31
#define HOENN_DEX_SURSKIT       32
#define HOENN_DEX_MASQUERAIN    33
#define HOENN_DEX_SHROOMISH     34
#define HOENN_DEX_BRELOOM       35
#define HOENN_DEX_SLAKOTH       36
#define HOENN_DEX_VIGOROTH      37
#define HOENN_DEX_SLAKING       38
#define HOENN_DEX_ABRA          39
#define HOENN_DEX_KADABRA       40
#define HOENN_DEX_ALAKAZAM      41
#define HOENN_DEX_NINCADA       42
#define HOENN_DEX_NINJASK       43
#define HOENN_DEX_SHEDINJA      44
#define HOENN_DEX_WHISMUR       45
#define HOENN_DEX_LOUDRED       46
#define HOENN_DEX_EXPLOUD       47
#define HOENN_DEX_MAKUHITA      48
#define HOENN_DEX_HARIYAMA      49
#define HOENN_DEX_GOLDEEN       50
#define HOENN_DEX_SEAKING       51
#define HOENN_DEX_MAGIKARP      52
#define HOENN_DEX_GYARADOS      53
#define HOENN_DEX_AZURILL       54
#define HOENN_DEX_MARILL        55
#define HOENN_DEX_AZUMARILL     56
#define HOENN_DEX_GEODUDE       57
#define HOENN_DEX_GRAVELER      58
#define HOENN_DEX_GOLEM         59
#define HOENN_DEX_NOSEPASS      60
#define HOENN_DEX_SKITTY        61
#define HOENN_DEX_DELCATTY      62
#define HOENN_DEX_ZUBAT         63
#define HOENN_DEX_GOLBAT        64
#define HOENN_DEX_CROBAT        65
#define HOENN_DEX_TENTACOOL     66
#define HOENN_DEX_TENTACRUEL    67
#define HOENN_DEX_SABLEYE       68
#define HOENN_DEX_MAWILE        69
#define HOENN_DEX_ARON          70
#define HOENN_DEX_LAIRON        71
#define HOENN_DEX_AGGRON        72
#define HOENN_DEX_MACHOP        73
#define HOENN_DEX_MACHOKE       74
#define HOENN_DEX_MACHAMP       75
#define HOENN_DEX_MEDITITE      76
#define HOENN_DEX_MEDICHAM      77
#define HOENN_DEX_ELECTRIKE     78
#define HOENN_DEX_MANECTRIC     79
#define HOENN_DEX_PLUSLE        80
#define HOENN_DEX_MINUN         81
#define HOENN_DEX_MAGNEMITE     82
#define HOENN_DEX_MAGNETON      83
#define HOENN_DEX_VOLTORB       84
#define HOENN_DEX_ELECTRODE     85
#define HOENN_DEX_VOLBEAT       86
#define HOENN_DEX_ILLUMISE      87
#define HOENN_DEX_ODDISH        88
#define HOENN_DEX_GLOOM         89
#define HOENN_DEX_VILEPLUME     90
#define HOENN_DEX_BELLOSSOM     91
#define HOENN_DEX_DODUO         92
#define HOENN_DEX_DODRIO        93
#define HOENN_DEX_ROSELIA       94
#define HOENN_DEX_GULPIN        95
#define HOENN_DEX_SWALOT        96
#define HOENN_DEX_CARVANHA      97
#define HOENN_DEX_SHARPEDO      98
#define HOENN_DEX_WAILMER       99
#define HOENN_DEX_WAILORD       100
#define HOENN_DEX_NUMEL         101
#define HOENN_DEX_CAMERUPT      102
#define HOENN_DEX_SLUGMA        103
#define HOENN_DEX_MAGCARGO      104
#define HOENN_DEX_TORKOAL       105
#define HOENN_DEX_GRIMER        106
#define HOENN_DEX_MUK           107
#define HOENN_DEX_KOFFING       108
#define HOENN_DEX_WEEZING       109
#define HOENN_DEX_SPOINK        110
#define HOENN_DEX_GRUMPIG       111
#define HOENN_DEX_SANDSHREW     112
#define HOENN_DEX_SANDSLASH     113
#define HOENN_DEX_SPINDA        114
#define HOENN_DEX_SKARMORY      115
#define HOENN_DEX_TRAPINCH      116
#define HOENN_DEX_VIBRAVA       117
#define HOENN_DEX_FLYGON        118
#define HOENN_DEX_CACNEA        119
#define HOENN_DEX_CACTURNE      120
#define HOENN_DEX_SWABLU        121
#define HOENN_DEX_ALTARIA       122
#define HOENN_DEX_ZANGOOSE      123
#define HOENN_DEX_SEVIPER       124
#define HOENN_DEX_LUNATONE      125
#define HOENN_DEX_SOLROCK       126
#define HOENN_DEX_BARBOACH      127
#define HOENN_DEX_WHISCASH      128
#define HOENN_DEX_CORPHISH      129
#define HOENN_DEX_CRAWDAUNT     130
#define HOENN_DEX_BALTOY        131
#define HOENN_DEX_CLAYDOL       132
#define HOENN_DEX_LILEEP        133
#define HOENN_DEX_CRADILY       134
#define HOENN_DEX_ANORITH       135
#define HOENN_DEX_ARMALDO       136
#define HOENN_DEX_IGGLYBUFF     137
#define HOENN_DEX_JIGGLYPUFF    138
#define HOENN_DEX_WIGGLYTUFF    139
#define HOENN_DEX_FEEBAS        140
#define HOENN_DEX_MILOTIC       141
#define HOENN_DEX_CASTFORM      142
#define HOENN_DEX_STARYU        143
#define HOENN_DEX_STARMIE       144
#define HOENN_DEX_KECLEON       145
#define HOENN_DEX_SHUPPET       146
#define HOENN_DEX_BANETTE       147
#define HOENN_DEX_DUSKULL       148
#define HOENN_DEX_DUSCLOPS      149
#define HOENN_DEX_TROPIUS       150
#define HOENN_DEX_CHIMECHO      151
#define HOENN_DEX_ABSOL         152
#define HOENN_DEX_VULPIX        153
#define HOENN_DEX_NINETALES     154
#define HOENN_DEX_PICHU         155
#define HOENN_DEX_PIKACHU       156
#define HOENN_DEX_RAICHU        157
#define HOENN_DEX_PSYDUCK       158
#define HOENN_DEX_GOLDUCK       159
#define HOENN_DEX_WYNAUT        160
#define HOENN_DEX_WOBBUFFET     161
#define HOENN_DEX_NATU          162
#define HOENN_DEX_XATU          163
#define HOENN_DEX_GIRAFARIG     164
#define HOENN_DEX_PHANPY        165
#define HOENN_DEX_DONPHAN       166
#define HOENN_DEX_PINSIR        167
#define HOENN_DEX_HERACROSS     168
#define HOENN_DEX_RHYHORN       169
#define HOENN_DEX_RHYDON        170
#define HOENN_DEX_SNORUNT       171
#define HOENN_DEX_GLALIE        172
#define HOENN_DEX_SPHEAL        173
#define HOENN_DEX_SEALEO        174
#define HOENN_DEX_WALREIN       175
#define HOENN_DEX_CLAMPERL      176
#define HOENN_DEX_HUNTAIL       177
#define HOENN_DEX_GOREBYSS      178
#define HOENN_DEX_RELICANTH     179
#define HOENN_DEX_CORSOLA       180
#define HOENN_DEX_CHINCHOU      181
#define HOENN_DEX_LANTURN       182
#define HOENN_DEX_LUVDISC       183
#define HOENN_DEX_HORSEA        184
#define HOENN_DEX_SEADRA        185
#define HOENN_DEX_KINGDRA       186
#define HOENN_DEX_BAGON         187
#define HOENN_DEX_SHELGON       188
#define HOENN_DEX_SALAMENCE     189
#define HOENN_DEX_BELDUM        190
#define HOENN_DEX_METANG        191
#define HOENN_DEX_METAGROSS     192
#define HOENN_DEX_REGIROCK      193
#define HOENN_DEX_REGICE        194
#define HOENN_DEX_REGISTEEL     195
#define HOENN_DEX_LATIAS        196
#define HOENN_DEX_LATIOS        197
#define HOENN_DEX_KYOGRE        198
#define HOENN_DEX_GROUDON       199
#define HOENN_DEX_RAYQUAZA      200
#define HOENN_DEX_JIRACHI       201
#define HOENN_DEX_DEOXYS        202

#define HOENN_DEX_COUNT         HOENN_DEX_DEOXYS

#define HOENN_DEX_BULBASAUR     203
#define HOENN_DEX_IVYSAUR       204
#define HOENN_DEX_VENUSAUR      205
#define HOENN_DEX_CHARMANDER    206
#define HOENN_DEX_CHARMELEON    207
#define HOENN_DEX_CHARIZARD     208
#define HOENN_DEX_SQUIRTLE      209
#define HOENN_DEX_WARTORTLE     210
#define HOENN_DEX_BLASTOISE     211
#define HOENN_DEX_CATERPIE      212
#define HOENN_DEX_METAPOD       213
#define HOENN_DEX_BUTTERFREE    214
#define HOENN_DEX_WEEDLE        215
#define HOENN_DEX_KAKUNA        216
#define HOENN_DEX_BEEDRILL      217
#define HOENN_DEX_PIDGEY        218
#define HOENN_DEX_PIDGEOTTO     219
#define HOENN_DEX_PIDGEOT       220
#define HOENN_DEX_RATTATA       221
#define HOENN_DEX_RATICATE      222
#define HOENN_DEX_SPEAROW       223
#define HOENN_DEX_FEAROW        224
#define HOENN_DEX_EKANS         225
#define HOENN_DEX_ARBOK         226
#define HOENN_DEX_NIDORAN_F     227
#define HOENN_DEX_NIDORINA      228
#define HOENN_DEX_NIDOQUEEN     229
#define HOENN_DEX_NIDORAN_M     230
#define HOENN_DEX_NIDORINO      231
#define HOENN_DEX_NIDOKING      232
#define HOENN_DEX_CLEFAIRY      233
#define HOENN_DEX_CLEFABLE      234
#define HOENN_DEX_PARAS         235
#define HOENN_DEX_PARASECT      236
#define HOENN_DEX_VENONAT       237
#define HOENN_DEX_VENOMOTH      238
#define HOENN_DEX_DIGLETT       239
#define HOENN_DEX_DUGTRIO       240
#define HOENN_DEX_MEOWTH        241
#define HOENN_DEX_PERSIAN       242
#define HOENN_DEX_MANKEY        243
#define HOENN_DEX_PRIMEAPE      244
#define HOENN_DEX_GROWLITHE     245
#define HOENN_DEX_ARCANINE      246
#define HOENN_DEX_POLIWAG       247
#define HOENN_DEX_POLIWHIRL     248
#define HOENN_DEX_POLIWRATH     249
#define HOENN_DEX_BELLSPROUT    250
#define HOENN_DEX_WEEPINBELL    251
#define HOENN_DEX_VICTREEBEL    252
#define HOENN_DEX_PONYTA        253
#define HOENN_DEX_RAPIDASH      254
#define HOENN_DEX_SLOWPOKE      255
#define HOENN_DEX_SLOWBRO       256
#define HOENN_DEX_FARFETCHD     257
#define HOENN_DEX_SEEL          258
#define HOENN_DEX_DEWGONG       259
#define HOENN_DEX_SHELLDER      260
#define HOENN_DEX_CLOYSTER      261
#define HOENN_DEX_GASTLY        262
#define HOENN_DEX_HAUNTER       263
#define HOENN_DEX_GENGAR        264
#define HOENN_DEX_ONIX          265
#define HOENN_DEX_DROWZEE       266
#define HOENN_DEX_HYPNO         267
#define HOENN_DEX_KRABBY        268
#define HOENN_DEX_KINGLER       269
#define HOENN_DEX_EXEGGCUTE     270
#define HOENN_DEX_EXEGGUTOR     271
#define HOENN_DEX_CUBONE        272
#define HOENN_DEX_MAROWAK       273
#define HOENN_DEX_HITMONLEE     274
#define HOENN_DEX_HITMONCHAN    275
#define HOENN_DEX_LICKITUNG     276
#define HOENN_DEX_CHANSEY       277
#define HOENN_DEX_TANGELA       278
#define HOENN_DEX_KANGASKHAN    279
#define HOENN_DEX_MR_MIME       280
#define HOENN_DEX_SCYTHER       281
#define HOENN_DEX_JYNX          282
#define HOENN_DEX_ELECTABUZZ    283
#define HOENN_DEX_MAGMAR        284
#define HOENN_DEX_TAUROS        285
#define HOENN_DEX_LAPRAS        286
#define HOENN_DEX_DITTO         287
#define HOENN_DEX_EEVEE         288
#define HOENN_DEX_VAPOREON      289
#define HOENN_DEX_JOLTEON       290
#define HOENN_DEX_FLAREON       291
#define HOENN_DEX_PORYGON       292
#define HOENN_DEX_OMANYTE       293
#define HOENN_DEX_OMASTAR       294
#define HOENN_DEX_KABUTO        295
#define HOENN_DEX_KABUTOPS      296
#define HOENN_DEX_AERODACTYL    297
#define HOENN_DEX_SNORLAX       298
#define HOENN_DEX_ARTICUNO      299
#define HOENN_DEX_ZAPDOS        300
#define HOENN_DEX_MOLTRES       301
#define HOENN_DEX_DRATINI       302
#define HOENN_DEX_DRAGONAIR     303
#define HOENN_DEX_DRAGONITE     304
#define HOENN_DEX_MEWTWO        305
#define HOENN_DEX_MEW           306
#define HOENN_DEX_CHIKORITA     307
#define HOENN_DEX_BAYLEEF       308
#define HOENN_DEX_MEGANIUM      309
#define HOENN_DEX_CYNDAQUIL     310
#define HOENN_DEX_QUILAVA       311
#define HOENN_DEX_TYPHLOSION    312
#define HOENN_DEX_TOTODILE      313
#define HOENN_DEX_CROCONAW      314
#define HOENN_DEX_FERALIGATR    315
#define HOENN_DEX_SENTRET       316
#define HOENN_DEX_FURRET        317
#define HOENN_DEX_HOOTHOOT      318
#define HOENN_DEX_NOCTOWL       319
#define HOENN_DEX_LEDYBA        320
#define HOENN_DEX_LEDIAN        321
#define HOENN_DEX_SPINARAK      322
#define HOENN_DEX_ARIADOS       323
#define HOENN_DEX_CLEFFA        324
#define HOENN_DEX_TOGEPI        325
#define HOENN_DEX_TOGETIC       326
#define HOENN_DEX_MAREEP        327
#define HOENN_DEX_FLAAFFY       328
#define HOENN_DEX_AMPHAROS      329
#define HOENN_DEX_SUDOWOODO     330
#define HOENN_DEX_POLITOED      331
#define HOENN_DEX_HOPPIP        332
#define HOENN_DEX_SKIPLOOM      333
#define HOENN_DEX_JUMPLUFF      334
#define HOENN_DEX_AIPOM         335
#define HOENN_DEX_SUNKERN       336
#define HOENN_DEX_SUNFLORA      337
#define HOENN_DEX_YANMA         338
#define HOENN_DEX_WOOPER        339
#define HOENN_DEX_QUAGSIRE      340
#define HOENN_DEX_ESPEON        341
#define HOENN_DEX_UMBREON       342
#define HOENN_DEX_MURKROW       343
#define HOENN_DEX_SLOWKING      344
#define HOENN_DEX_MISDREAVUS    345
#define HOENN_DEX_UNOWN         346
#define HOENN_DEX_PINECO        347
#define HOENN_DEX_FORRETRESS    348
#define HOENN_DEX_DUNSPARCE     349
#define HOENN_DEX_GLIGAR        350
#define HOENN_DEX_STEELIX       351
#define HOENN_DEX_SNUBBULL      352
#define HOENN_DEX_GRANBULL      353
#define HOENN_DEX_QWILFISH      354
#define HOENN_DEX_SCIZOR        355
#define HOENN_DEX_SHUCKLE       356
#define HOENN_DEX_SNEASEL       357
#define HOENN_DEX_TEDDIURSA     358
#define HOENN_DEX_URSARING      359
#define HOENN_DEX_SWINUB        360
#define HOENN_DEX_PILOSWINE     361
#define HOENN_DEX_REMORAID      362
#define HOENN_DEX_OCTILLERY     363
#define HOENN_DEX_DELIBIRD      364
#define HOENN_DEX_MANTINE       365
#define HOENN_DEX_HOUNDOUR      366
#define HOENN_DEX_HOUNDOOM      367
#define HOENN_DEX_PORYGON2      368
#define HOENN_DEX_STANTLER      369
#define HOENN_DEX_SMEARGLE      370
#define HOENN_DEX_TYROGUE       371
#define HOENN_DEX_HITMONTOP     372
#define HOENN_DEX_SMOOCHUM      373
#define HOENN_DEX_ELEKID        374
#define HOENN_DEX_MAGBY         375
#define HOENN_DEX_MILTANK       376
#define HOENN_DEX_BLISSEY       377
#define HOENN_DEX_RAIKOU        378
#define HOENN_DEX_ENTEI         379
#define HOENN_DEX_SUICUNE       380
#define HOENN_DEX_LARVITAR      381
#define HOENN_DEX_PUPITAR       382
#define HOENN_DEX_TYRANITAR     383
#define HOENN_DEX_LUGIA         384
#define HOENN_DEX_HO_OH         385
#define HOENN_DEX_CELEBI        386

#define HOENN_DEX_OLD_UNOWN_B   (HOENN_DEX_CELEBI + 1)
#define HOENN_DEX_OLD_UNOWN_C   (HOENN_DEX_OLD_UNOWN_B + 1)
#define HOENN_DEX_OLD_UNOWN_D   (HOENN_DEX_OLD_UNOWN_B + 2)
#define HOENN_DEX_OLD_UNOWN_E   (HOENN_DEX_OLD_UNOWN_B + 3)
#define HOENN_DEX_OLD_UNOWN_F   (HOENN_DEX_OLD_UNOWN_B + 4)
#define HOENN_DEX_OLD_UNOWN_G   (HOENN_DEX_OLD_UNOWN_B + 5)
#define HOENN_DEX_OLD_UNOWN_H   (HOENN_DEX_OLD_UNOWN_B + 6)
#define HOENN_DEX_OLD_UNOWN_I   (HOENN_DEX_OLD_UNOWN_B + 7)
#define HOENN_DEX_OLD_UNOWN_J   (HOENN_DEX_OLD_UNOWN_B + 8)
#define HOENN_DEX_OLD_UNOWN_K   (HOENN_DEX_OLD_UNOWN_B + 9)
#define HOENN_DEX_OLD_UNOWN_L   (HOENN_DEX_OLD_UNOWN_B + 10)
#define HOENN_DEX_OLD_UNOWN_M   (HOENN_DEX_OLD_UNOWN_B + 11)
#define HOENN_DEX_OLD_UNOWN_N   (HOENN_DEX_OLD_UNOWN_B + 12)
#define HOENN_DEX_OLD_UNOWN_O   (HOENN_DEX_OLD_UNOWN_B + 13)
#define HOENN_DEX_OLD_UNOWN_P   (HOENN_DEX_OLD_UNOWN_B + 14)
#define HOENN_DEX_OLD_UNOWN_Q   (HOENN_DEX_OLD_UNOWN_B + 15)
#define HOENN_DEX_OLD_UNOWN_R   (HOENN_DEX_OLD_UNOWN_B + 16)
#define HOENN_DEX_OLD_UNOWN_S   (HOENN_DEX_OLD_UNOWN_B + 17)
#define HOENN_DEX_OLD_UNOWN_T   (HOENN_DEX_OLD_UNOWN_B + 18)
#define HOENN_DEX_OLD_UNOWN_U   (HOENN_DEX_OLD_UNOWN_B + 19)
#define HOENN_DEX_OLD_UNOWN_V   (HOENN_DEX_OLD_UNOWN_B + 20)
#define HOENN_DEX_OLD_UNOWN_W   (HOENN_DEX_OLD_UNOWN_B + 21)
#define HOENN_DEX_OLD_UNOWN_X   (HOENN_DEX_OLD_UNOWN_B + 22)
#define HOENN_DEX_OLD_UNOWN_Y   (HOENN_DEX_OLD_UNOWN_B + 23)
#define HOENN_DEX_OLD_UNOWN_Z   (HOENN_DEX_OLD_UNOWN_B + 24)

#endif  // GUARD_CONSTANTS_SPECIES_H


code:
#ifndef GUARD_CONSTANTS_TRADE_H
#define GUARD_CONSTANTS_TRADE_H

#define TRADE_PLAYER  0
#define TRADE_PARTNER 1

#define LINK_TRADE_TIMEOUT 300

// In-game Trade IDs
#define INGAME_TRADE_SEEDOT 0
#define INGAME_TRADE_PLUSLE 1
#define INGAME_TRADE_HORSEA 2
#define INGAME_TRADE_MEOWTH 3

// Flag IDs for sending link data
#define INITIATE_TRADE  1
#define CANCEL_TRADE    2
#define WANTS_TO_TRADE   1
#define WANTS_TO_CANCEL  2
#define READY_FINISH_TRADE  1
#define FINISH_TRADE        2

// Return values for CanTradeSelectedMon and CanSpinTradeMon
#define CAN_TRADE_MON           0
#define CANT_TRADE_LAST_MON     1
#define CANT_TRADE_NATIONAL     2
#define CANT_TRADE_EGG_YET      3
#define CANT_TRADE_INVALID_MON  4
#define CANT_TRADE_EGG_YET2     5

// Return values for CheckValidityOfTradeMons
#define PLAYER_MON_INVALID   0
#define BOTH_MONS_VALID      1
#define PARTNER_MON_INVALID  2

// Return values for GetGameProgressForLinkTrade
#define TRADE_BOTH_PLAYERS_READY      0
#define TRADE_PLAYER_NOT_READY        1
#define TRADE_PARTNER_NOT_READY       2

// Indexes for sTradeActionTexts
#define TRADE_TEXT_CANCEL        0
#define TRADE_TEXT_CHOOSE_MON    1
#define TRADE_TEXT_SUMMARY       2
#define TRADE_TEXT_TRADE         3
#define TRADE_TEXT_CANCEL_TRADE  4
#define TRADE_TEXT_JP_QUIT       5

// Checked to confirm DrawTradeMenuParty has reached final state
#define DRAW_PARTY_FINISH 5

// Message indexes for sTradeMessages
#define TRADE_MSG_STANDBY                     0
#define TRADE_MSG_CANCELED                    1
#define TRADE_MSG_ONLY_MON1                   2
#define TRADE_MSG_ONLY_MON2                   3
#define TRADE_MSG_WAITING_FOR_FRIEND          4
#define TRADE_MSG_FRIEND_WANTS_TO_TRADE       5
#define TRADE_MSG_MON_CANT_BE_TRADED          6
#define TRADE_MSG_EGG_CANT_BE_TRADED          7
#define TRADE_MSG_FRIENDS_MON_CANT_BE_TRADED  8

// IDs for QueueAction
#define QUEUE_SEND_DATA                   0
#define QUEUE_STANDBY                     1
#define QUEUE_ONLY_MON1                   2
#define QUEUE_ONLY_MON2                   3
#define QUEUE_UNUSED1                     4
#define QUEUE_UNUSED2                     5
#define QUEUE_MON_CANT_BE_TRADED          6
#define QUEUE_EGG_CANT_BE_TRADED          7
#define QUEUE_FRIENDS_MON_CANT_BE_TRADED  8

#define QUEUE_DELAY_MSG   3
#define QUEUE_DELAY_DATA  5

// IDs for CallTradeMenuFunc
#define TRADEMENUFUNC_MAIN_MENU                0
#define TRADEMENUFUNC_SELECTED_MON             1
#define TRADEMENUFUNC_SHOW_MON_SUMMARY         2
#define TRADEMENUFUNC_CONFIRM_OR_CANCEL_TRADE  3
#define TRADEMENUFUNC_CANCEL_TRADE_PROMPT      4
#define TRADEMENUFUNC_UNUSED_5                 5
#define TRADEMENUFUNC_BOTH_MONS_SELECTED       6
#define TRADEMENUFUNC_CONFIRM_TRADE_PROMPT     7
#define TRADEMENUFUNC_REDRAW_MAIN_MENU         8
#define TRADEMENUFUNC_LINK_TRADE_FADE_OUT      9
#define TRADEMENUFUNC_LINK_TRADE_WAIT_FADE     10
#define TRADEMENUFUNC_CANCEL_TRADE_1           11
#define TRADEMENUFUNC_CANCEL_TRADE_2           12
#define TRADEMENUFUNC_START_LINK_TRADE         13
#define TRADEMENUFUNC_DELAY_TRADE_CONFIRM      14
#define TRADEMENUFUNC_UNUSED_15                15
#define TRADEMENUFUNC_LINK_TRADE_WAIT_QUEUE    16
#define TRADEMENUFUNC_PARTNER_MON_INVALID      17
#define TRADEMENUFUNC_STANDBY                  100

// Message indexes for sUnionRoomTradeMessages
#define UR_TRADE_MSG_NONE                         0
#define UR_TRADE_MSG_NOT_MON_PARTNER_WANTS        1
#define UR_TRADE_MSG_NOT_EGG                      2
#define UR_TRADE_MSG_MON_CANT_BE_TRADED_1         3
#define UR_TRADE_MSG_MON_CANT_BE_TRADED_2         4
#define UR_TRADE_MSG_PARTNERS_MON_CANT_BE_TRADED  5
#define UR_TRADE_MSG_EGG_CANT_BE_TRADED           6
#define UR_TRADE_MSG_PARTNER_CANT_ACCEPT_MON      7
#define UR_TRADE_MSG_CANT_TRADE_WITH_PARTNER_1    8
#define UR_TRADE_MSG_CANT_TRADE_WITH_PARTNER_2    9

// Return values for CanRegisterMonForTradingBoard
#define CAN_REGISTER_MON   0
#define CANT_REGISTER_MON  1
#define CANT_REGISTER_EGG  2

#endif //GUARD_CONSTANTS_TRADE_H

repo_name: Lunos/pokeemerald

license: mit


code:
#ifndef GUARD_CONSTANTS_TRAINER_HILL_H
#define GUARD_CONSTANTS_TRAINER_HILL_H

#define TRAINER_HILL_1F        1
#define TRAINER_HILL_2F        2
#define TRAINER_HILL_3F        3
#define TRAINER_HILL_4F        4
#define TRAINER_HILL_ROOF      5
#define TRAINER_HILL_ENTRANCE  6

#define NUM_TRAINER_HILL_FLOORS    4
#define NUM_TRAINER_HILL_FLOORS_JP 2

#define NUM_TRAINER_HILL_PRIZE_LISTS 10

#define TRAINER_HILL_FUNC_START                 0
#define TRAINER_HILL_FUNC_GET_OWNER_STATE       1
#define TRAINER_HILL_FUNC_GIVE_PRIZE            2
#define TRAINER_HILL_FUNC_CHECK_FINAL_TIME      3
#define TRAINER_HILL_FUNC_RESUME_TIMER          4
#define TRAINER_HILL_FUNC_SET_LOST              5
#define TRAINER_HILL_FUNC_GET_CHALLENGE_STATUS  6
#define TRAINER_HILL_FUNC_GET_CHALLENGE_TIME    7
#define TRAINER_HILL_FUNC_GET_ALL_FLOORS_USED   8
#define TRAINER_HILL_FUNC_GET_IN_EREADER_MODE   9
#define TRAINER_HILL_FUNC_IN_CHALLENGE          10
#define TRAINER_HILL_FUNC_POST_BATTLE_TEXT      11
#define TRAINER_HILL_FUNC_SET_ALL_TRAINER_FLAGS 12
#define TRAINER_HILL_FUNC_GET_GAME_SAVED        13
#define TRAINER_HILL_FUNC_SET_GAME_SAVED        14
#define TRAINER_HILL_FUNC_CLEAR_GAME_SAVED      15
#define TRAINER_HILL_FUNC_GET_WON               16
#define TRAINER_HILL_FUNC_SET_TAG               17

#define TRAINER_HILL_TEXT_INTRO        2
#define TRAINER_HILL_TEXT_PLAYER_LOST  3
#define TRAINER_HILL_TEXT_PLAYER_WON   4
#define TRAINER_HILL_TEXT_AFTER        5

#define NUM_TRAINER_HILL_TRAINERS     (NUM_TRAINER_HILL_FLOORS * 2)
#define NUM_TRAINER_HILL_TRAINERS_JP  (NUM_TRAINER_HILL_FLOORS_JP * 2)

// Values returned by TrainerHillGetChallengeStatus
#define TRAINER_HILL_PLAYER_STATUS_LOST 0
#define TRAINER_HILL_PLAYER_STATUS_ECARD_SCANNED 1
#define TRAINER_HILL_PLAYER_STATUS_NORMAL 2

#endif


code:
#ifndef GUARD_CONSTANTS_TRAINER_TYPES_H
#define GUARD_CONSTANTS_TRAINER_TYPES_H

#define TRAINER_TYPE_NONE               0
#define TRAINER_TYPE_NORMAL             1
#define TRAINER_TYPE_SEE_ALL_DIRECTIONS 2
#define TRAINER_TYPE_BURIED             3

#endif  // GUARD_CONSTANTS_TRAINER_TYPES_H


code:
#ifndef GUARD_TRAINERS_H
#define GUARD_TRAINERS_H

#include "constants/opponents.h"
#include "constants/battle_frontier_trainers.h"

// Special Trainer Ids.
//      0-299 are frontier trainers
#define TRAINER_RECORD_MIXING_FRIEND        FRONTIER_TRAINERS_COUNT
#define TRAINER_RECORD_MIXING_APPRENTICE    400
#define TRAINER_EREADER                     500
#define TRAINER_FRONTIER_BRAIN              1022
#define TRAINER_PLAYER                      1023
#define TRAINER_SECRET_BASE                 1024
#define TRAINER_LINK_OPPONENT               2048
#define TRAINER_UNION_ROOM                  3072
#define TRAINER_STEVEN_PARTNER              3075

#define TRAINER_PIC_HIKER                  0
#define TRAINER_PIC_AQUA_GRUNT_M           1
#define TRAINER_PIC_POKEMON_BREEDER_F      2
#define TRAINER_PIC_COOLTRAINER_M          3
#define TRAINER_PIC_BIRD_KEEPER            4
#define TRAINER_PIC_COLLECTOR              5
#define TRAINER_PIC_AQUA_GRUNT_F           6
#define TRAINER_PIC_SWIMMER_M              7
#define TRAINER_PIC_MAGMA_GRUNT_M          8
#define TRAINER_PIC_EXPERT_M               9
#define TRAINER_PIC_AQUA_ADMIN_M          10
#define TRAINER_PIC_BLACK_BELT            11
#define TRAINER_PIC_AQUA_ADMIN_F          12
#define TRAINER_PIC_AQUA_LEADER_ARCHIE    13
#define TRAINER_PIC_HEX_MANIAC            14
#define TRAINER_PIC_AROMA_LADY            15
#define TRAINER_PIC_RUIN_MANIAC           16
#define TRAINER_PIC_INTERVIEWER           17
#define TRAINER_PIC_TUBER_F               18
#define TRAINER_PIC_TUBER_M               19
#define TRAINER_PIC_COOLTRAINER_F         20
#define TRAINER_PIC_LADY                  21
#define TRAINER_PIC_BEAUTY                22
#define TRAINER_PIC_RICH_BOY              23
#define TRAINER_PIC_EXPERT_F              24
#define TRAINER_PIC_POKEMANIAC            25
#define TRAINER_PIC_MAGMA_GRUNT_F         26
#define TRAINER_PIC_GUITARIST             27
#define TRAINER_PIC_KINDLER               28
#define TRAINER_PIC_CAMPER                29
#define TRAINER_PIC_PICNICKER             30
#define TRAINER_PIC_BUG_MANIAC            31
#define TRAINER_PIC_POKEMON_BREEDER_M     32
#define TRAINER_PIC_PSYCHIC_M             33
#define TRAINER_PIC_PSYCHIC_F             34
#define TRAINER_PIC_GENTLEMAN             35
#define TRAINER_PIC_ELITE_FOUR_SIDNEY     36
#define TRAINER_PIC_ELITE_FOUR_PHOEBE     37
#define TRAINER_PIC_ELITE_FOUR_GLACIA     38
#define TRAINER_PIC_ELITE_FOUR_DRAKE      39
#define TRAINER_PIC_LEADER_ROXANNE        40
#define TRAINER_PIC_LEADER_BRAWLY         41
#define TRAINER_PIC_LEADER_WATTSON        42
#define TRAINER_PIC_LEADER_FLANNERY       43
#define TRAINER_PIC_LEADER_NORMAN         44
#define TRAINER_PIC_LEADER_WINONA         45
#define TRAINER_PIC_LEADER_TATE_AND_LIZA  46
#define TRAINER_PIC_LEADER_JUAN           47
#define TRAINER_PIC_SCHOOL_KID_M          48
#define TRAINER_PIC_SCHOOL_KID_F          49
#define TRAINER_PIC_SR_AND_JR             50
#define TRAINER_PIC_POKEFAN_M             51
#define TRAINER_PIC_POKEFAN_F             52
#define TRAINER_PIC_YOUNGSTER             53
#define TRAINER_PIC_CHAMPION_WALLACE      54
#define TRAINER_PIC_FISHERMAN             55
#define TRAINER_PIC_CYCLING_TRIATHLETE_M  56
#define TRAINER_PIC_CYCLING_TRIATHLETE_F  57
#define TRAINER_PIC_RUNNING_TRIATHLETE_M  58
#define TRAINER_PIC_RUNNING_TRIATHLETE_F  59
#define TRAINER_PIC_SWIMMING_TRIATHLETE_M 60
#define TRAINER_PIC_SWIMMING_TRIATHLETE_F 61
#define TRAINER_PIC_DRAGON_TAMER          62
#define TRAINER_PIC_NINJA_BOY             63
#define TRAINER_PIC_BATTLE_GIRL           64
#define TRAINER_PIC_PARASOL_LADY          65
#define TRAINER_PIC_SWIMMER_F             66
#define TRAINER_PIC_TWINS                 67
#define TRAINER_PIC_SAILOR                68
#define TRAINER_PIC_MAGMA_ADMIN           69
#define TRAINER_PIC_WALLY                 70
#define TRAINER_PIC_BRENDAN               71
#define TRAINER_PIC_MAY                   72
#define TRAINER_PIC_BUG_CATCHER           73
#define TRAINER_PIC_POKEMON_RANGER_M      74
#define TRAINER_PIC_POKEMON_RANGER_F      75
#define TRAINER_PIC_MAGMA_LEADER_MAXIE    76
#define TRAINER_PIC_LASS                  77
#define TRAINER_PIC_YOUNG_COUPLE          78
#define TRAINER_PIC_OLD_COUPLE            79
#define TRAINER_PIC_SIS_AND_BRO           80
#define TRAINER_PIC_STEVEN                81
#define TRAINER_PIC_SALON_MAIDEN_ANABEL   82
#define TRAINER_PIC_DOME_ACE_TUCKER       83
#define TRAINER_PIC_PALACE_MAVEN_SPENSER  84
#define TRAINER_PIC_ARENA_TYCOON_GRETA    85
#define TRAINER_PIC_FACTORY_HEAD_NOLAND   86
#define TRAINER_PIC_PIKE_QUEEN_LUCY       87
#define TRAINER_PIC_PYRAMID_KING_BRANDON  88
#define TRAINER_PIC_RED                   89
#define TRAINER_PIC_LEAF                  90
#define TRAINER_PIC_RS_BRENDAN            91
#define TRAINER_PIC_RS_MAY                92

#define TRAINER_BACK_PIC_BRENDAN                0
#define TRAINER_BACK_PIC_MAY                    1
#define TRAINER_BACK_PIC_RED                    2
#define TRAINER_BACK_PIC_LEAF                   3
#define TRAINER_BACK_PIC_RUBY_SAPPHIRE_BRENDAN  4
#define TRAINER_BACK_PIC_RUBY_SAPPHIRE_MAY      5
#define TRAINER_BACK_PIC_WALLY                  6
#define TRAINER_BACK_PIC_STEVEN                 7

#define FACILITY_CLASS_HIKER                 0x0
#define FACILITY_CLASS_AQUA_GRUNT_M          0x1
#define FACILITY_CLASS_PKMN_BREEDER_F        0x2
#define FACILITY_CLASS_COOLTRAINER_M         0x3
#define FACILITY_CLASS_BIRD_KEEPER           0x4
#define FACILITY_CLASS_COLLECTOR             0x5
#define FACILITY_CLASS_AQUA_GRUNT_F          0x6
#define FACILITY_CLASS_SWIMMER_M             0x7
#define FACILITY_CLASS_MAGMA_GRUNT_M         0x8
#define FACILITY_CLASS_EXPERT_M              0x9
#define FACILITY_CLASS_BLACK_BELT            0xa
#define FACILITY_CLASS_AQUA_LEADER_ARCHIE    0xb
#define FACILITY_CLASS_HEX_MANIAC            0xc
#define FACILITY_CLASS_AROMA_LADY            0xd
#define FACILITY_CLASS_RUIN_MANIAC           0xe
#define FACILITY_CLASS_INTERVIEWER           0xf
#define FACILITY_CLASS_TUBER_F               0x10
#define FACILITY_CLASS_TUBER_M               0x11
#define FACILITY_CLASS_COOLTRAINER_F         0x12
#define FACILITY_CLASS_LADY                  0x13
#define FACILITY_CLASS_BEAUTY                0x14
#define FACILITY_CLASS_RICH_BOY              0x15
#define FACILITY_CLASS_EXPERT_F              0x16
#define FACILITY_CLASS_POKEMANIAC            0x17
#define FACILITY_CLASS_MAGMA_GRUNT_F         0x18
#define FACILITY_CLASS_GUITARIST             0x19
#define FACILITY_CLASS_KINDLER               0x1a
#define FACILITY_CLASS_CAMPER                0x1b
#define FACILITY_CLASS_PICNICKER             0x1c
#define FACILITY_CLASS_BUG_MANIAC            0x1d
#define FACILITY_CLASS_PSYCHIC_M             0x1e
#define FACILITY_CLASS_PSYCHIC_F             0x1f
#define FACILITY_CLASS_GENTLEMAN             0x20
#define FACILITY_CLASS_ELITE_FOUR_SIDNEY     0x21
#define FACILITY_CLASS_ELITE_FOUR_PHOEBE     0x22
#define FACILITY_CLASS_LEADER_ROXANNE        0x23
#define FACILITY_CLASS_LEADER_BRAWLY         0x24
#define FACILITY_CLASS_LEADER_TATE_AND_LIZA  0x25
#define FACILITY_CLASS_SCHOOL_KID_M          0x26
#define FACILITY_CLASS_SCHOOL_KID_F          0x27
#define FACILITY_CLASS_SR_AND_JR             0x28
#define FACILITY_CLASS_POKEFAN_M             0x29
#define FACILITY_CLASS_POKEFAN_F             0x2a
#define FACILITY_CLASS_YOUNGSTER             0x2b
#define FACILITY_CLASS_CHAMPION_WALLACE      0x2c
#define FACILITY_CLASS_FISHERMAN             0x2d
#define FACILITY_CLASS_CYCLING_TRIATHLETE_M  0x2e
#define FACILITY_CLASS_CYCLING_TRIATHLETE_F  0x2f
#define FACILITY_CLASS_RUNNING_TRIATHLETE_M  0x30
#define FACILITY_CLASS_RUNNING_TRIATHLETE_F  0x31
#define FACILITY_CLASS_SWIMMING_TRIATHLETE_M 0x32
#define FACILITY_CLASS_SWIMMING_TRIATHLETE_F 0x33
#define FACILITY_CLASS_DRAGON_TAMER          0x34
#define FACILITY_CLASS_NINJA_BOY             0x35
#define FACILITY_CLASS_BATTLE_GIRL           0x36
#define FACILITY_CLASS_PARASOL_LADY          0x37
#define FACILITY_CLASS_SWIMMER_F             0x38
#define FACILITY_CLASS_TWINS                 0x39
#define FACILITY_CLASS_SAILOR                0x3a
#define FACILITY_CLASS_WALLY                 0x3b
#define FACILITY_CLASS_BRENDAN               0x3c
#define FACILITY_CLASS_BRENDAN_2             0x3d
#define FACILITY_CLASS_BRENDAN_3             0x3e
#define FACILITY_CLASS_MAY                   0x3f
#define FACILITY_CLASS_MAY_2                 0x40
#define FACILITY_CLASS_MAY_3                 0x41
#define FACILITY_CLASS_PKMN_BREEDER_M        0x42
#define FACILITY_CLASS_BUG_CATCHER           0x43
#define FACILITY_CLASS_PKMN_RANGER_M         0x44
#define FACILITY_CLASS_PKMN_RANGER_F         0x45
#define FACILITY_CLASS_MAGMA_LEADER_MAXIE    0x46
#define FACILITY_CLASS_LASS                  0x47
#define FACILITY_CLASS_YOUNG_COUPLE          0x48
#define FACILITY_CLASS_OLD_COUPLE            0x49
#define FACILITY_CLASS_SIS_AND_BRO           0x4a
#define FACILITY_CLASS_STEVEN                0x4b
#define FACILITY_CLASS_SALON_MAIDEN_ANABEL   0x4c
#define FACILITY_CLASS_DOME_ACE_TUCKER       0x4d
#define FACILITY_CLASS_RED                   0x4e
#define FACILITY_CLASS_LEAF                  0x4f
#define FACILITY_CLASS_RS_BRENDAN            0x50
#define FACILITY_CLASS_RS_MAY                0x51

#define FACILITY_CLASSES_COUNT               0x52

#define RS_FACILITY_CLASS_AQUA_LEADER_ARCHIE    0x0
#define RS_FACILITY_CLASS_AQUA_GRUNT_M          0x1
#define RS_FACILITY_CLASS_AQUA_GRUNT_F          0x2
#define RS_FACILITY_CLASS_AROMA_LADY            0x3
#define RS_FACILITY_CLASS_RUIN_MANIAC           0x4
#define RS_FACILITY_CLASS_INTERVIEWER           0x5
#define RS_FACILITY_CLASS_TUBER_F               0x6
#define RS_FACILITY_CLASS_TUBER_M               0x7
#define RS_FACILITY_CLASS_COOLTRAINER_M         0x8
#define RS_FACILITY_CLASS_COOLTRAINER_F         0x9
#define RS_FACILITY_CLASS_HEX_MANIAC            0xA
#define RS_FACILITY_CLASS_LADY                  0xB
#define RS_FACILITY_CLASS_BEAUTY                0xC
#define RS_FACILITY_CLASS_RICH_BOY              0xD
#define RS_FACILITY_CLASS_POKEMANIAC            0xE
#define RS_FACILITY_CLASS_SWIMMER_M             0xF
#define RS_FACILITY_CLASS_BLACK_BELT            0x10
#define RS_FACILITY_CLASS_GUITARIST             0x11
#define RS_FACILITY_CLASS_KINDLER               0x12
#define RS_FACILITY_CLASS_CAMPER                0x13
#define RS_FACILITY_CLASS_BUG_MANIAC            0x14
#define RS_FACILITY_CLASS_PSYCHIC_M             0x15
#define RS_FACILITY_CLASS_PSYCHIC_F             0x16
#define RS_FACILITY_CLASS_GENTLEMAN             0x17
#define RS_FACILITY_CLASS_ELITE_FOUR_M          0x18
#define RS_FACILITY_CLASS_ELITE_FOUR_F          0x19
#define RS_FACILITY_CLASS_LEADER_F              0x1A
#define RS_FACILITY_CLASS_LEADER_M              0x1B
#define RS_FACILITY_CLASS_LEADER_MF             0x1C
#define RS_FACILITY_CLASS_SCHOOL_KID_M          0x1D
#define RS_FACILITY_CLASS_SCHOOL_KID_F          0x1E
#define RS_FACILITY_CLASS_SR_AND_JR             0x1F
#define RS_FACILITY_CLASS_POKEFAN_M             0x20
#define RS_FACILITY_CLASS_POKEFAN_F             0x21
#define RS_FACILITY_CLASS_EXPERT_M              0x22
#define RS_FACILITY_CLASS_EXPERT_F              0x23
#define RS_FACILITY_CLASS_YOUNGSTER             0x24
#define RS_FACILITY_CLASS_CHAMPION              0x25
#define RS_FACILITY_CLASS_FISHERMAN             0x26
#define RS_FACILITY_CLASS_CYCLING_TRIATHLETE_M  0x27
#define RS_FACILITY_CLASS_CYCLING_TRIATHLETE_F  0x28
#define RS_FACILITY_CLASS_RUNNING_TRIATHLETE_M  0x29
#define RS_FACILITY_CLASS_RUNNING_TRIATHLETE_F  0x2A
#define RS_FACILITY_CLASS_SWIMMING_TRIATHLETE_M 0x2B
#define RS_FACILITY_CLASS_SWIMMING_TRIATHLETE_F 0x2C
#define RS_FACILITY_CLASS_DRAGON_TAMER          0x2D
#define RS_FACILITY_CLASS_BIRD_KEEPER           0x2E
#define RS_FACILITY_CLASS_NINJA_BOY             0x2F
#define RS_FACILITY_CLASS_BATTLE_GIRL           0x30
#define RS_FACILITY_CLASS_PARASOL_LADY          0x31
#define RS_FACILITY_CLASS_SWIMMER_F             0x32
#define RS_FACILITY_CLASS_PICNICKER             0x33
#define RS_FACILITY_CLASS_TWINS                 0x34
#define RS_FACILITY_CLASS_SAILOR                0x35
#define RS_FACILITY_CLASS_BOARDER_1             0x36
#define RS_FACILITY_CLASS_BOARDER_2             0x37
#define RS_FACILITY_CLASS_COLLECTOR             0x38
#define RS_FACILITY_CLASS_WALLY                 0x39
#define RS_FACILITY_CLASS_BRENDAN_1             0x3A
#define RS_FACILITY_CLASS_BRENDAN_2             0x3B
#define RS_FACILITY_CLASS_BRENDAN_3             0x3C
#define RS_FACILITY_CLASS_MAY_1                 0x3D
#define RS_FACILITY_CLASS_MAY_2                 0x3E
#define RS_FACILITY_CLASS_MAY_3                 0x3F
#define RS_FACILITY_CLASS_PKMN_BREEDER_M        0x40
#define RS_FACILITY_CLASS_PKMN_BREEDER_F        0x41
#define RS_FACILITY_CLASS_PKMN_RANGER_M         0x42
#define RS_FACILITY_CLASS_PKMN_RANGER_F         0x43
#define RS_FACILITY_CLASS_MAGMA_LEADER          0x44
#define RS_FACILITY_CLASS_MAGMA_GRUNT_M         0x45
#define RS_FACILITY_CLASS_MAGMA_GRUNT_F         0x46
#define RS_FACILITY_CLASS_LASS                  0x47
#define RS_FACILITY_CLASS_BUG_CATCHER           0x48
#define RS_FACILITY_CLASS_HIKER                 0x49
#define RS_FACILITY_CLASS_YOUNG_COUPLE          0x4A
#define RS_FACILITY_CLASS_OLD_COUPLE            0x4B
#define RS_FACILITY_CLASS_SIS_AND_BRO           0x4C

#define RS_FACILITY_CLASSES_COUNT               0x4D

#define TRAINER_CLASS_PKMN_TRAINER_1 0x0  // Unused
#define TRAINER_CLASS_PKMN_TRAINER_2 0x1  // Unused
#define TRAINER_CLASS_HIKER          0x2
#define TRAINER_CLASS_TEAM_AQUA      0x3
#define TRAINER_CLASS_PKMN_BREEDER   0x4
#define TRAINER_CLASS_COOLTRAINER    0x5
#define TRAINER_CLASS_BIRD_KEEPER    0x6
#define TRAINER_CLASS_COLLECTOR      0x7
#define TRAINER_CLASS_SWIMMER_M      0x8
#define TRAINER_CLASS_TEAM_MAGMA     0x9
#define TRAINER_CLASS_EXPERT         0xa
#define TRAINER_CLASS_AQUA_ADMIN     0xb
#define TRAINER_CLASS_BLACK_BELT     0xc
#define TRAINER_CLASS_AQUA_LEADER    0xd
#define TRAINER_CLASS_HEX_MANIAC     0xe
#define TRAINER_CLASS_AROMA_LADY     0xf
#define TRAINER_CLASS_RUIN_MANIAC    0x10
#define TRAINER_CLASS_INTERVIEWER    0x11
#define TRAINER_CLASS_TUBER_F        0x12
#define TRAINER_CLASS_TUBER_M        0x13
#define TRAINER_CLASS_LADY           0x14
#define TRAINER_CLASS_BEAUTY         0x15
#define TRAINER_CLASS_RICH_BOY       0x16
#define TRAINER_CLASS_POKEMANIAC     0x17
#define TRAINER_CLASS_GUITARIST      0x18
#define TRAINER_CLASS_KINDLER        0x19
#define TRAINER_CLASS_CAMPER         0x1a
#define TRAINER_CLASS_PICNICKER      0x1b
#define TRAINER_CLASS_BUG_MANIAC     0x1c
#define TRAINER_CLASS_PSYCHIC        0x1d
#define TRAINER_CLASS_GENTLEMAN      0x1e
#define TRAINER_CLASS_ELITE_FOUR     0x1f
#define TRAINER_CLASS_LEADER         0x20
#define TRAINER_CLASS_SCHOOL_KID     0x21
#define TRAINER_CLASS_SR_AND_JR      0x22
#define TRAINER_CLASS_WINSTRATE      0x23
#define TRAINER_CLASS_POKEFAN        0x24
#define TRAINER_CLASS_YOUNGSTER      0x25
#define TRAINER_CLASS_CHAMPION       0x26
#define TRAINER_CLASS_FISHERMAN      0x27
#define TRAINER_CLASS_TRIATHLETE     0x28
#define TRAINER_CLASS_DRAGON_TAMER   0x29
#define TRAINER_CLASS_NINJA_BOY      0x2a
#define TRAINER_CLASS_BATTLE_GIRL    0x2b
#define TRAINER_CLASS_PARASOL_LADY   0x2c
#define TRAINER_CLASS_SWIMMER_F      0x2d
#define TRAINER_CLASS_TWINS          0x2e
#define TRAINER_CLASS_SAILOR         0x2f
#define TRAINER_CLASS_COOLTRAINER_2  0x30 // Used for only one trainer.
#define TRAINER_CLASS_MAGMA_ADMIN    0x31
#define TRAINER_CLASS_PKMN_TRAINER_3 0x32
#define TRAINER_CLASS_BUG_CATCHER    0x33
#define TRAINER_CLASS_PKMN_RANGER    0x34
#define TRAINER_CLASS_MAGMA_LEADER   0x35
#define TRAINER_CLASS_LASS           0x36
#define TRAINER_CLASS_YOUNG_COUPLE   0x37
#define TRAINER_CLASS_OLD_COUPLE     0x38
#define TRAINER_CLASS_SIS_AND_BRO    0x39
#define TRAINER_CLASS_SALON_MAIDEN   0x3a
#define TRAINER_CLASS_DOME_ACE       0x3b
#define TRAINER_CLASS_PALACE_MAVEN   0x3c
#define TRAINER_CLASS_ARENA_TYCOON   0x3d
#define TRAINER_CLASS_FACTORY_HEAD   0x3e
#define TRAINER_CLASS_PIKE_QUEEN     0x3f
#define TRAINER_CLASS_PYRAMID_KING   0x40
#define TRAINER_CLASS_RS_PROTAG      0x41

#define TRAINER_ENCOUNTER_MUSIC_MALE         0 // standard male encounter music
#define TRAINER_ENCOUNTER_MUSIC_FEMALE       1 // standard female encounter music
#define TRAINER_ENCOUNTER_MUSIC_GIRL         2 // used for male Tubers and Young Couples too
#define TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS   3
#define TRAINER_ENCOUNTER_MUSIC_INTENSE      4
#define TRAINER_ENCOUNTER_MUSIC_COOL         5
#define TRAINER_ENCOUNTER_MUSIC_AQUA         6
#define TRAINER_ENCOUNTER_MUSIC_MAGMA        7
#define TRAINER_ENCOUNTER_MUSIC_SWIMMER      8
#define TRAINER_ENCOUNTER_MUSIC_TWINS        9 // used for other trainer classes too
#define TRAINER_ENCOUNTER_MUSIC_ELITE_FOUR  10
#define TRAINER_ENCOUNTER_MUSIC_HIKER       11 // used for other trainer classes too
#define TRAINER_ENCOUNTER_MUSIC_INTERVIEWER 12
#define TRAINER_ENCOUNTER_MUSIC_RICH        13 // Rich Boys and Gentlemen

#define F_TRAINER_FEMALE (1 << 7)

// All trainer parties specify the IV, level, and species for each Pokémon in the
// party. Some trainer parties also specify held items and custom moves for each
// Pokémon.
#define F_TRAINER_PARTY_CUSTOM_MOVESET (1 << 0)
#define F_TRAINER_PARTY_HELD_ITEM      (1 << 1)

#endif  // GUARD_TRAINERS_H


code:
#ifndef GUARD_CONSTANTS_TV_H
#define GUARD_CONSTANTS_TV_H

#define POKENEWS_NONE         0
#define POKENEWS_SLATEPORT    1
#define POKENEWS_GAME_CORNER  2
#define POKENEWS_LILYCOVE     3
#define POKENEWS_BLENDMASTER  4

#define TVSHOW_OFF_AIR                              0
#define TVSHOW_FAN_CLUB_LETTER                      1
#define TVSHOW_RECENT_HAPPENINGS                    2
#define TVSHOW_PKMN_FAN_CLUB_OPINIONS               3
#define TVSHOW_UNKN_SHOWTYPE_04                     4
#define TVSHOW_NAME_RATER_SHOW                      5
#define TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE        6
#define TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE   7
#define TVSHOW_CONTEST_LIVE_UPDATES                 8
#define TVSHOW_3_CHEERS_FOR_POKEBLOCKS              9
#define TVSHOW_BATTLE_UPDATE                        10
#define TVSHOW_FAN_CLUB_SPECIAL                     11
#define TVSHOW_CONTEST_LIVE_UPDATES_2               12
//                                                  //
#define TVSHOW_POKEMON_TODAY_CAUGHT                 21
#define TVSHOW_SMART_SHOPPER                        22
#define TVSHOW_POKEMON_TODAY_FAILED                 23
#define TVSHOW_FISHING_ADVICE                       24
#define TVSHOW_WORLD_OF_MASTERS                     25
#define TVSHOW_TODAYS_RIVAL_TRAINER                 26
#define TVSHOW_TREND_WATCHER                        27
#define TVSHOW_TREASURE_INVESTIGATORS               28
#define TVSHOW_FIND_THAT_GAMER                      29
#define TVSHOW_BREAKING_NEWS                        30
#define TVSHOW_SECRET_BASE_VISIT                    31
#define TVSHOW_LOTTO_WINNER                         32
#define TVSHOW_BATTLE_SEMINAR                       33
#define TVSHOW_TRAINER_FAN_CLUB                     34
#define TVSHOW_CUTIES                               35
#define TVSHOW_FRONTIER                             36
#define TVSHOW_NUMBER_ONE                           37
#define TVSHOW_SECRET_BASE_SECRETS                  38
#define TVSHOW_SAFARI_FAN_CLUB                      39
//                                                  //
#define TVSHOW_MASS_OUTBREAK                        41

// Number of ribbons to put Spot the Cuties on air
#define NUM_CUTIES_RIBBONS  4

// TV Show states for Secret Base Secrets
#define SBSECRETS_STATE_INTRO                   0
#define SBSECRETS_STATE_DO_NEXT1                1
#define SBSECRETS_STATE_DO_NEXT2                2
#define SBSECRETS_STATE_TOOK_X_STEPS            3
#define SBSECRETS_STATE_BASE_INTEREST_LOW       4
#define SBSECRETS_STATE_BASE_INTEREST_MED       5
#define SBSECRETS_STATE_BASE_INTEREST_HIGH      6
#define SBSECRETS_STATE_OUTRO                   7
#define SBSECRETS_STATE_NOTHING_USED1           8
#define SBSECRETS_STATE_NOTHING_USED2           9
#define SBSECRETS_STATE_USED_CHAIR              10
#define SBSECRETS_STATE_USED_BALLOON            11
#define SBSECRETS_STATE_USED_TENT               12
#define SBSECRETS_STATE_USED_PLANT              13
#define SBSECRETS_STATE_USED_GOLD_SHIELD        14
#define SBSECRETS_STATE_USED_SILVER_SHIELD      15
#define SBSECRETS_STATE_USED_GLASS_ORNAMENT     16
#define SBSECRETS_STATE_USED_TV                 17
#define SBSECRETS_STATE_USED_MUD_BALL           18
#define SBSECRETS_STATE_USED_BAG                19
#define SBSECRETS_STATE_USED_CUSHION            20
#define SBSECRETS_STATE_HIT_CUSHION             21
#define SBSECRETS_STATE_HUGGED_CUSHION          22
#define SBSECRETS_STATE_BATTLED_WON             23
#define SBSECRETS_STATE_BATTLED_LOST            24
#define SBSECRETS_STATE_DECLINED_BATTLE         25
#define SBSECRETS_STATE_USED_POSTER             26
#define SBSECRETS_STATE_USED_NOTE_MAT           27
#define SBSECRETS_STATE_BATTLED_DRAW            28
#define SBSECRETS_STATE_USED_SPIN_MAT           29
#define SBSECRETS_STATE_USED_SAND_ORNAMENT      30
#define SBSECRETS_STATE_USED_DESK               31
#define SBSECRETS_STATE_USED_BRICK              32
#define SBSECRETS_STATE_USED_SOLID_BOARD        33
#define SBSECRETS_STATE_USED_FENCE              34
#define SBSECRETS_STATE_USED_GLITTER_MAT        35
#define SBSECRETS_STATE_USED_TIRE               36
#define SBSECRETS_STATE_USED_STAND              37
#define SBSECRETS_STATE_USED_BREAKABLE_DOOR     38
#define SBSECRETS_STATE_USED_DOLL               39
#define SBSECRETS_STATE_USED_SLIDE              40
#define SBSECRETS_STATE_DECLINED_SLIDE          41
#define SBSECRETS_STATE_USED_JUMP_MAT           42
#define SBSECRETS_NUM_STATES                    43

// The below flags are set when interacting with objects in a friends secret base
// Theyre set as bits in a var, and with 32 flags they're spread across 2 vars

// VAR_SECRET_BASE_LOW_TV_FLAGS
#define SECRET_BASE_USED_CHAIR          (1 << 0)
#define SECRET_BASE_USED_BALLOON        (1 << 1)
#define SECRET_BASE_USED_TENT           (1 << 2)
#define SECRET_BASE_USED_PLANT          (1 << 3)
#define SECRET_BASE_USED_GOLD_SHIELD    (1 << 4)
#define SECRET_BASE_USED_SILVER_SHIELD  (1 << 5)
#define SECRET_BASE_USED_GLASS_ORNAMENT (1 << 6)
#define SECRET_BASE_USED_TV             (1 << 7)
#define SECRET_BASE_USED_MUD_BALL       (1 << 8)
#define SECRET_BASE_USED_BAG            (1 << 9)
#define SECRET_BASE_USED_CUSHION        (1 << 10)
#define SECRET_BASE_BATTLED_WON         (1 << 11)
#define SECRET_BASE_BATTLED_LOST        (1 << 12)
#define SECRET_BASE_DECLINED_BATTLE     (1 << 13)
#define SECRET_BASE_USED_POSTER         (1 << 14)
#define SECRET_BASE_USED_NOTE_MAT       (1 << 15)

// VAR_SECRET_BASE_HIGH_TV_FLAGS
#define SECRET_BASE_BATTLED_DRAW        (1 << 0)
#define SECRET_BASE_USED_SPIN_MAT       (1 << 1)
#define SECRET_BASE_USED_SAND_ORNAMENT  (1 << 2)
#define SECRET_BASE_USED_DESK           (1 << 3)
#define SECRET_BASE_USED_BRICK          (1 << 4)
#define SECRET_BASE_USED_SOLID_BOARD    (1 << 5)
#define SECRET_BASE_USED_FENCE          (1 << 6)
#define SECRET_BASE_USED_GLITTER_MAT    (1 << 7)
#define SECRET_BASE_USED_TIRE           (1 << 8)
#define SECRET_BASE_USED_STAND          (1 << 9)
#define SECRET_BASE_USED_BREAKABLE_DOOR (1 << 10)
#define SECRET_BASE_USED_DOLL           (1 << 11)
#define SECRET_BASE_USED_SLIDE          (1 << 12)
#define SECRET_BASE_DECLINED_SLIDE      (1 << 13)
#define SECRET_BASE_USED_JUMP_MAT       (1 << 14)
#define SECRET_BASE_UNUSED_FLAG         (1 << 15)

#define NUM_SECRET_BASE_FLAGS  32  // by definition, bitfield of 2 u16s

// TV Show states for Pokemon Contest Live Updates
#define CONTESTLIVE_STATE_INTRO                 0
#define CONTESTLIVE_STATE_WON_BOTH_ROUNDS       1
#define CONTESTLIVE_STATE_BETTER_ROUND2         2
#define CONTESTLIVE_STATE_EQUAL_ROUNDS          3
#define CONTESTLIVE_STATE_BETTER_ROUND1         4
#define CONTESTLIVE_STATE_GOT_NERVOUS           5
#define CONTESTLIVE_STATE_STARTLED_OTHER        6
#define CONTESTLIVE_STATE_USED_COMBO            7
#define CONTESTLIVE_STATE_EXCITING_APPEAL       8
#define CONTESTLIVE_STATE_COOL                  9
#define CONTESTLIVE_STATE_BEAUTIFUL             10
#define CONTESTLIVE_STATE_CUTE                  11
#define CONTESTLIVE_STATE_SMART                 12
#define CONTESTLIVE_STATE_TOUGH                 13
#define CONTESTLIVE_STATE_VERY_EXCITING_APPEAL  14
#define CONTESTLIVE_STATE_VERY_COOL             15
#define CONTESTLIVE_STATE_VERY_BEAUTIFUL        16
#define CONTESTLIVE_STATE_VERY_CUTE             17
#define CONTESTLIVE_STATE_VERY_SMART            18
#define CONTESTLIVE_STATE_VERY_TOUGH            19
#define CONTESTLIVE_STATE_TOOK_BREAK            20
#define CONTESTLIVE_STATE_GOT_STARTLED          21
#define CONTESTLIVE_STATE_USED_MOVE             22
#define CONTESTLIVE_STATE_TALK_ABOUT_LOSER      23
#define CONTESTLIVE_STATE_NO_APPEALS            24
#define CONTESTLIVE_STATE_LAST_BOTH             25
#define CONTESTLIVE_STATE_NOT_EXCITING_ENOUGH   26
#define CONTESTLIVE_STATE_LOST_AFTER_ROUND1_WIN 27
#define CONTESTLIVE_STATE_NO_EXCITING_APPEALS   28
#define CONTESTLIVE_STATE_LOST_SMALL_MARGIN     29
#define CONTESTLIVE_STATE_REPEATED_APPEALS      30
#define CONTESTLIVE_STATE_LOST                  31
#define CONTESTLIVE_STATE_OUTRO                 32

// Flags used to comment on winner
#define CONTESTLIVE_FLAG_EXCITING_APPEAL   (1 << 0)
#define CONTESTLIVE_FLAG_GOT_NERVOUS       (1 << 1)
#define CONTESTLIVE_FLAG_MAXED_EXCITEMENT  (1 << 2)
#define CONTESTLIVE_FLAG_USED_COMBO        (1 << 3)
#define CONTESTLIVE_FLAG_STARTLED_OTHER    (1 << 4)
#define CONTESTLIVE_FLAG_SKIPPED_TURN      (1 << 5)
#define CONTESTLIVE_FLAG_GOT_STARTLED      (1 << 6)
#define CONTESTLIVE_FLAG_MADE_APPEAL       (1 << 7)

// Flags used to comment on loser
#define CONTESTLIVE_FLAG_LOST              (1 << 0)
#define CONTESTLIVE_FLAG_REPEATED_MOVE     (1 << 1)
#define CONTESTLIVE_FLAG_LOST_SMALL_MARGIN (1 << 2)
#define CONTESTLIVE_FLAG_NO_EXCITEMENT     (1 << 3)
#define CONTESTLIVE_FLAG_BLEW_LEAD         (1 << 4)
#define CONTESTLIVE_FLAG_MISSED_EXCITEMENT (1 << 5)
#define CONTESTLIVE_FLAG_LAST_BOTH_ROUNDS  (1 << 6)
#define CONTESTLIVE_FLAG_NO_APPEALS        (1 << 7)

#endif //GUARD_CONSTANTS_TV_H


code:
#ifndef GUARD_CONSTANTS_UNION_ROOM_H
#define GUARD_CONSTANTS_UNION_ROOM_H

#define MAX_UNION_ROOM_PLAYERS 8

#define UNION_ROOM_SPAWN_NONE 0
#define UNION_ROOM_SPAWN_IN   1
#define UNION_ROOM_SPAWN_OUT  2

#define ACTIVITY_NONE               0
#define ACTIVITY_BATTLE_SINGLE      1
#define ACTIVITY_BATTLE_DOUBLE      2
#define ACTIVITY_BATTLE_MULTI       3
#define ACTIVITY_TRADE              4
#define ACTIVITY_CHAT               5
#define ACTIVITY_WONDER_CARD        6
#define ACTIVITY_WONDER_NEWS        7
#define ACTIVITY_CARD               8
#define ACTIVITY_POKEMON_JUMP       9
#define ACTIVITY_BERRY_CRUSH        10
#define ACTIVITY_BERRY_PICK         11
#define ACTIVITY_SEARCH             12
#define ACTIVITY_SPIN_TRADE         13
#define ACTIVITY_BATTLE_TOWER_OPEN  14
#define ACTIVITY_RECORD_CORNER      15
#define ACTIVITY_BERRY_BLENDER      16

// Player response
#define ACTIVITY_ACCEPT             17
#define ACTIVITY_DECLINE            18

#define ACTIVITY_NPCTALK            19
#define ACTIVITY_PLYRTALK           20

// Duplicate IDs?
#define ACTIVITY_WONDER_CARD2       21
#define ACTIVITY_WONDER_NEWS2       22

#define ACTIVITY_CONTEST_COOL       23
#define ACTIVITY_CONTEST_BEAUTY     24
#define ACTIVITY_CONTEST_CUTE       25
#define ACTIVITY_CONTEST_SMART      26
#define ACTIVITY_CONTEST_TOUGH      27
#define ACTIVITY_BATTLE_TOWER       28
#define ACTIVITY_29                 29

#define IN_UNION_ROOM               (1 << 6)

// Used in UR_AddTextPrinterParameterized
#define UR_COLOR_DKE_WHT_LTE 0
#define UR_COLOR_RED_WHT_LTR 1
#define UR_COLOR_GRN_WHT_LTG 2
#define UR_COLOR_WHT_WHT_LTE 3
#define UR_COLOR_WHT_DKE_LTE 4
#define UR_COLOR_GRN_DN6_LTB 5
#define UR_COLOR_DN5_DN6_LTB 6

#define LINK_GROUP_SINGLE_BATTLE        0
#define LINK_GROUP_DOUBLE_BATTLE        1
#define LINK_GROUP_MULTI_BATTLE         2
#define LINK_GROUP_TRADE                3
#define LINK_GROUP_POKEMON_JUMP         4
#define LINK_GROUP_BERRY_CRUSH          5
#define LINK_GROUP_BERRY_PICKING        6
#define LINK_GROUP_WONDER_CARD          7
#define LINK_GROUP_WONDER_NEWS          8
#define LINK_GROUP_UNION_ROOM_RESUME    9
#define LINK_GROUP_UNION_ROOM_INIT      10
#define LINK_GROUP_UNK_11               11
#define LINK_GROUP_RECORD_CORNER        12
#define LINK_GROUP_BERRY_BLENDER        13
#define LINK_GROUP_UNK_14               14
#define LINK_GROUP_COOL_CONTEST         15
#define LINK_GROUP_BEAUTY_CONTEST       16
#define LINK_GROUP_CUTE_CONTEST         17
#define LINK_GROUP_SMART_CONTEST        18
#define LINK_GROUP_TOUGH_CONTEST        19
#define LINK_GROUP_BATTLE_TOWER         20
#define LINK_GROUP_BATTLE_TOWER_OPEN    21
#define NUM_LINK_GROUP_TYPES            22

#define UR_TRADE_MATCH  0
#define UR_TRADE_NOTYPE 1
#define UR_TRADE_NOEGG  2

#define UR_TRADE_READY             0
#define UR_TRADE_PLAYER_NOT_READY  1
#define UR_TRADE_PARTNER_NOT_READY 2

#define UR_INTERACT_PLAYER_1   1
#define UR_INTERACT_PLAYER_2   2
#define UR_INTERACT_PLAYER_3   3
#define UR_INTERACT_PLAYER_4   4
#define UR_INTERACT_PLAYER_5   5
#define UR_INTERACT_PLAYER_6   6
#define UR_INTERACT_PLAYER_7   7
#define UR_INTERACT_PLAYER_8   8
#define UR_INTERACT_ATTENDANT  9
#define UR_INTERACT_UNUSED     10
#define UR_INTERACT_START_MENU 11

#endif //GUARD_CONSTANTS_UNION_ROOM_H


code:
#ifndef GUARD_CONSTANTS_VARS_H
#define GUARD_CONSTANTS_VARS_H

#define VARS_START 0x4000

// temporary vars
// The first 0x10 vars are are temporary--they are cleared every time a map is loaded.
#define TEMP_VARS_START            0x4000
#define VAR_TEMP_0                 (TEMP_VARS_START + 0x0)
#define VAR_TEMP_1                 (TEMP_VARS_START + 0x1)
#define VAR_TEMP_2                 (TEMP_VARS_START + 0x2)
#define VAR_TEMP_3                 (TEMP_VARS_START + 0x3)
#define VAR_TEMP_4                 (TEMP_VARS_START + 0x4)
#define VAR_TEMP_5                 (TEMP_VARS_START + 0x5)
#define VAR_TEMP_6                 (TEMP_VARS_START + 0x6)
#define VAR_TEMP_7                 (TEMP_VARS_START + 0x7)
#define VAR_TEMP_8                 (TEMP_VARS_START + 0x8)
#define VAR_TEMP_9                 (TEMP_VARS_START + 0x9)
#define VAR_TEMP_A                 (TEMP_VARS_START + 0xA)
#define VAR_TEMP_B                 (TEMP_VARS_START + 0xB)
#define VAR_TEMP_C                 (TEMP_VARS_START + 0xC)
#define VAR_TEMP_D                 (TEMP_VARS_START + 0xD)
#define VAR_TEMP_E                 (TEMP_VARS_START + 0xE)
#define VAR_TEMP_F                 (TEMP_VARS_START + 0xF)
#define TEMP_VARS_END              VAR_TEMP_F

// object gfx id vars
// These 0x10 vars are used to dynamically control a map object's sprite.
// For example, the rival's sprite id is dynamically set based on the player's gender.
// See VarGetObjectEventGraphicsId().
#define VAR_OBJ_GFX_ID_0           0x4010
#define VAR_OBJ_GFX_ID_1           0x4011
#define VAR_OBJ_GFX_ID_2           0x4012
#define VAR_OBJ_GFX_ID_3           0x4013
#define VAR_OBJ_GFX_ID_4           0x4014
#define VAR_OBJ_GFX_ID_5           0x4015
#define VAR_OBJ_GFX_ID_6           0x4016
#define VAR_OBJ_GFX_ID_7           0x4017
#define VAR_OBJ_GFX_ID_8           0x4018
#define VAR_OBJ_GFX_ID_9           0x4019
#define VAR_OBJ_GFX_ID_A           0x401A
#define VAR_OBJ_GFX_ID_B           0x401B
#define VAR_OBJ_GFX_ID_C           0x401C
#define VAR_OBJ_GFX_ID_D           0x401D
#define VAR_OBJ_GFX_ID_E           0x401E
#define VAR_OBJ_GFX_ID_F           0x401F

// general purpose vars
#define VAR_RECYCLE_GOODS                    0x4020
#define VAR_REPEL_STEP_COUNT                 0x4021
#define VAR_ICE_STEP_COUNT                   0x4022
#define VAR_STARTER_MON                      0x4023 // 0=Treecko, 1=Torchic, 2=Mudkip
#define VAR_MIRAGE_RND_H                     0x4024
#define VAR_MIRAGE_RND_L                     0x4025
#define VAR_SECRET_BASE_MAP                  0x4026
#define VAR_CYCLING_ROAD_RECORD_COLLISIONS   0x4027
#define VAR_CYCLING_ROAD_RECORD_TIME_L       0x4028
#define VAR_CYCLING_ROAD_RECORD_TIME_H       0x4029
#define VAR_HAPPINESS_STEP_COUNTER           0x402A
#define VAR_POISON_STEP_COUNTER              0x402B
#define VAR_RESET_RTC_ENABLE                 0x402C
#define VAR_ENIGMA_BERRY_AVAILABLE           0x402D
#define VAR_0x402E                           0x402E

#define VAR_FRONTIER_MANIAC_FACILITY         0x402F
#define VAR_FRONTIER_GAMBLER_CHALLENGE       0x4030
#define VAR_FRONTIER_GAMBLER_SET_CHALLENGE   0x4031
#define VAR_FRONTIER_GAMBLER_AMOUNT_BET      0x4032
#define VAR_FRONTIER_GAMBLER_STATE           0x4033

#define VAR_DEOXYS_ROCK_STEP_COUNT           0x4034
#define VAR_DEOXYS_ROCK_LEVEL                0x4035
#define VAR_PC_BOX_TO_SEND_MON               0x4036
#define VAR_ABNORMAL_WEATHER_LOCATION        0x4037
#define VAR_ABNORMAL_WEATHER_STEP_COUNTER    0x4038
#define VAR_SHOULD_END_ABNORMAL_WEATHER      0x4039
#define VAR_FARAWAY_ISLAND_STEP_COUNTER      0x403A
#define VAR_REGICE_STEPS_1                   0x403B
#define VAR_REGICE_STEPS_2                   0x403C
#define VAR_REGICE_STEPS_3                   0x403D
#define VAR_ALTERING_CAVE_WILD_SET           0x403E
#define VAR_DISTRIBUTE_EON_TICKET            0x403F // This var is read and written, but is always zero. The only way to obtain the Eon Ticket in Emerald is via Record Mixing
#define VAR_DAYS                             0x4040
#define VAR_FANCLUB_FAN_COUNTER              0x4041
#define VAR_FANCLUB_LOSE_FAN_TIMER           0x4042
#define VAR_DEPT_STORE_FLOOR                 0x4043
#define VAR_TRICK_HOUSE_LEVEL                0x4044
#define VAR_POKELOT_PRIZE_ITEM               0x4045
#define VAR_NATIONAL_DEX                     0x4046
#define VAR_SEEDOT_SIZE_RECORD               0x4047
#define VAR_ASH_GATHER_COUNT                 0x4048
#define VAR_BIRCH_STATE                      0x4049
#define VAR_CRUISE_STEP_COUNT                0x404A
#define VAR_POKELOT_RND1                     0x404B
#define VAR_POKELOT_RND2                     0x404C
#define VAR_POKELOT_PRIZE_PLACE              0x404D
#define VAR_UNUSED_0x404E                    0x404E // Unused Var
#define VAR_LOTAD_SIZE_RECORD                0x404F
#define VAR_LITTLEROOT_TOWN_STATE            0x4050
#define VAR_OLDALE_TOWN_STATE                0x4051
#define VAR_DEWFORD_TOWN_STATE               0x4052 // Unused Var
#define VAR_LAVARIDGE_TOWN_STATE             0x4053
#define VAR_CURRENT_SECRET_BASE              0x4054 // was probably allocated for VAR_FALLARBOR_TOWN_STATE at one point
#define VAR_VERDANTURF_TOWN_STATE            0x4055 // Unused Var
#define VAR_PACIFIDLOG_TOWN_STATE            0x4056 // Unused Var
#define VAR_PETALBURG_CITY_STATE             0x4057
#define VAR_SLATEPORT_CITY_STATE             0x4058
#define VAR_MAUVILLE_CITY_STATE              0x4059 // Unused Var
#define VAR_RUSTBORO_CITY_STATE              0x405A
#define VAR_FORTREE_CITY_STATE               0x405B // Unused Var
#define VAR_LILYCOVE_CITY_STATE              0x405C // Unused Var
#define VAR_MOSSDEEP_CITY_STATE              0x405D
#define VAR_SOOTOPOLIS_CITY_STATE            0x405E
#define VAR_EVER_GRANDE_CITY_STATE           0x405F // Unused Var
#define VAR_ROUTE101_STATE                   0x4060
#define VAR_ROUTE102_STATE                   0x4061 // Unused Var
#define VAR_ROUTE103_STATE                   0x4062 // Unused Var
#define VAR_ROUTE104_STATE                   0x4063
#define VAR_ROUTE105_STATE                   0x4064 // Unused Var
#define VAR_ROUTE106_STATE                   0x4065 // Unused Var
#define VAR_ROUTE107_STATE                   0x4066 // Unused Var
#define VAR_ROUTE108_STATE                   0x4067 // Unused Var
#define VAR_ROUTE109_STATE                   0x4068 // Unused Var
#define VAR_ROUTE110_STATE                   0x4069
#define VAR_ROUTE111_STATE                   0x406A // Unused Var
#define VAR_ROUTE112_STATE                   0x406B // Unused Var
#define VAR_ROUTE113_STATE                   0x406C // Unused Var
#define VAR_ROUTE114_STATE                   0x406D // Unused Var
#define VAR_ROUTE115_STATE                   0x406E // Unused Var
#define VAR_ROUTE116_STATE                   0x406F
#define VAR_ROUTE117_STATE                   0x4070 // Unused Var
#define VAR_ROUTE118_STATE                   0x4071
#define VAR_ROUTE119_STATE                   0x4072
#define VAR_ROUTE120_STATE                   0x4073 // Unused Var
#define VAR_ROUTE121_STATE                   0x4074
#define VAR_ROUTE122_STATE                   0x4075 // Unused Var
#define VAR_ROUTE123_STATE                   0x4076 // Unused Var
#define VAR_ROUTE124_STATE                   0x4077 // Unused Var
#define VAR_ROUTE125_STATE                   0x4078 // Unused Var
#define VAR_ROUTE126_STATE                   0x4079 // Unused Var
#define VAR_ROUTE127_STATE                   0x407A // Unused Var
#define VAR_ROUTE128_STATE                   0x407B
#define VAR_ROUTE129_STATE                   0x407C // Unused Var
#define VAR_ROUTE130_STATE                   0x407D // Unused Var
#define VAR_ROUTE131_STATE                   0x407E // Unused Var
#define VAR_ROUTE132_STATE                   0x407F // Unused Var
#define VAR_ROUTE133_STATE                   0x4080 // Unused Var
#define VAR_ROUTE134_STATE                   0x4081 // Unused Var
#define VAR_LITTLEROOT_HOUSES_STATE_MAY      0x4082
#define VAR_UNUSED_0x4083                    0x4083 // Unused Var
#define VAR_BIRCH_LAB_STATE                  0x4084
#define VAR_PETALBURG_GYM_STATE              0x4085 // 0-1: Wally tutorial, 2-6: 0-4 badges, 7: Defeated Norman, 8: Rematch Norman
#define VAR_CONTEST_HALL_STATE               0x4086
#define VAR_CABLE_CLUB_STATE                 0x4087
#define VAR_CONTEST_TYPE                     0x4088
#define VAR_SECRET_BASE_INITIALIZED          0x4089
#define VAR_CONTEST_PRIZE_PICKUP             0x408A
#define VAR_UNUSED_0x408B                    0x408B // Unused Var
#define VAR_LITTLEROOT_HOUSES_STATE_BRENDAN  0x408C
#define VAR_LITTLEROOT_RIVAL_STATE           0x408D
#define VAR_BOARD_BRINEY_BOAT_STATE          0x408E
#define VAR_DEVON_CORP_3F_STATE              0x408F
#define VAR_BRINEY_HOUSE_STATE               0x4090
#define VAR_UNUSED_0x4091                    0x4091 // Unused Var
#define VAR_LITTLEROOT_INTRO_STATE           0x4092
#define VAR_MAUVILLE_GYM_STATE               0x4093
#define VAR_LILYCOVE_MUSEUM_2F_STATE         0x4094
#define VAR_LILYCOVE_FAN_CLUB_STATE          0x4095
#define VAR_BRINEY_LOCATION                  0x4096
#define VAR_INIT_SECRET_BASE                 0x4097
#define VAR_PETALBURG_WOODS_STATE            0x4098
#define VAR_LILYCOVE_CONTEST_LOBBY_STATE     0x4099
#define VAR_RUSTURF_TUNNEL_STATE             0x409A
#define VAR_UNUSED_0x409B                    0x409B // Unused Var
#define VAR_ELITE_4_STATE                    0x409C
#define VAR_UNUSED_0x409D                    0x409D // Unused Var
#define VAR_MOSSDEEP_SPACE_CENTER_STAIR_GUARD_STATE    0x409E
#define VAR_MOSSDEEP_SPACE_CENTER_STATE      0x409F
#define VAR_SLATEPORT_HARBOR_STATE           0x40A0
#define VAR_UNUSED_0x40A1                    0x40A1 // Unused var
#define VAR_SEAFLOOR_CAVERN_STATE            0x40A2
#define VAR_CABLE_CAR_STATION_STATE          0x40A3
#define VAR_SAFARI_ZONE_STATE                0x40A4  // 0: In or out of SZ, 1: Player exiting SZ, 2: Player entering SZ
#define VAR_TRICK_HOUSE_BEING_WATCHED_STATE  0x40A5
#define VAR_TRICK_HOUSE_FOUND_TRICK_MASTER   0x40A6
#define VAR_TRICK_HOUSE_ENTRANCE_STATE       0x40A7
#define VAR_UNUSED_0x40A8                    0x40A8 // Unused Var
#define VAR_CYCLING_CHALLENGE_STATE          0x40A9
#define VAR_SLATEPORT_MUSEUM_1F_STATE        0x40AA
#define VAR_TRICK_HOUSE_PUZZLE_1_STATE       0x40AB
#define VAR_TRICK_HOUSE_PUZZLE_2_STATE       0x40AC
#define VAR_TRICK_HOUSE_PUZZLE_3_STATE       0x40AD
#define VAR_TRICK_HOUSE_PUZZLE_4_STATE       0x40AE
#define VAR_TRICK_HOUSE_PUZZLE_5_STATE       0x40AF
#define VAR_TRICK_HOUSE_PUZZLE_6_STATE       0x40B0
#define VAR_TRICK_HOUSE_PUZZLE_7_STATE       0x40B1
#define VAR_TRICK_HOUSE_PUZZLE_8_STATE       0x40B2
#define VAR_WEATHER_INSTITUTE_STATE          0x40B3
#define VAR_SS_TIDAL_STATE                   0x40B4
#define VAR_TRICK_HOUSE_ENTER_FROM_CORRIDOR  0x40B5
#define VAR_TRICK_HOUSE_PUZZLE_7_STATE_2     0x40B6 // Leftover from RS, never set
#define VAR_SLATEPORT_FAN_CLUB_STATE         0x40B7
#define VAR_UNUSED_0x40B8                    0x40B8 // Unused Var
#define VAR_MT_PYRE_STATE                    0x40B9
#define VAR_NEW_MAUVILLE_STATE               0x40BA
#define VAR_UNUSED_0x40BB                    0x40BB // Unused Var
#define VAR_BRAVO_TRAINER_BATTLE_TOWER_ON    0x40BC
#define VAR_JAGGED_PASS_ASH_WEATHER          0x40BD
#define VAR_GLASS_WORKSHOP_STATE             0x40BE
#define VAR_METEOR_FALLS_STATE               0x40BF
#define VAR_SOOTOPOLIS_MYSTERY_EVENTS_STATE  0x40C0
#define VAR_TRICK_HOUSE_PRIZE_PICKUP         0x40C1
#define VAR_PACIFIDLOG_TM_RECEIVED_DAY       0x40C2
#define VAR_VICTORY_ROAD_1F_STATE            0x40C3
#define VAR_FOSSIL_RESURRECTION_STATE        0x40C4
#define VAR_WHICH_FOSSIL_REVIVED             0x40C5
#define VAR_STEVENS_HOUSE_STATE              0x40C6
#define VAR_OLDALE_RIVAL_STATE               0x40C7
#define VAR_JAGGED_PASS_STATE                0x40C8
#define VAR_SCOTT_PETALBURG_ENCOUNTER        0x40C9
#define VAR_SKY_PILLAR_STATE                 0x40CA
#define VAR_MIRAGE_TOWER_STATE               0x40CB
#define VAR_FOSSIL_MANIAC_STATE              0x40CC
#define VAR_CABLE_CLUB_TUTORIAL_STATE        0x40CD
#define VAR_FRONTIER_BATTLE_MODE             0x40CE
#define VAR_FRONTIER_FACILITY                0x40CF
#define VAR_HAS_ENTERED_BATTLE_FRONTIER      0x40D0 // Var is used like a flag.
#define VAR_SCOTT_STATE                      0x40D1
#define VAR_SLATEPORT_OUTSIDE_MUSEUM_STATE   0x40D2
#define VAR_DEX_UPGRADE_JOHTO_STARTER_STATE  0x40D3
#define VAR_SS_TIDAL_SCOTT_STATE             0x40D4 // Always equal to FLAG_MET_SCOTT_ON_SS_TIDAL
#define VAR_ROAMER_POKEMON                   0x40D5 // 0 = Latias, 1 = Latios
#define VAR_TRAINER_HILL_IS_ACTIVE           0x40D6
#define VAR_SKY_PILLAR_RAQUAZA_CRY_DONE      0x40D7
#define VAR_SOOTOPOLIS_WALLACE_STATE         0x40D8
#define VAR_HAS_TALKED_TO_SEAFLOOR_CAVERN_ENTRANCE_GRUNT 0x40D9
#define VAR_REGISTER_BIRCH_STATE             0x40DA
#define VAR_UNUSED_0x40DB                    0x40DB // Unused Var
#define VAR_UNUSED_0x40DC                    0x40DC // Unused Var
#define VAR_EVENT_PICHU_SLOT                 0x40DD
#define VAR_NEVER_READ_0x40DE                0x40DE // Var is written to, but never read
#define VAR_NEVER_READ_0x40DF                0x40DF // Var is written to, but never read
#define VAR_NEVER_READ_0x40E0                0x40E0 // Var is written to, but never read
#define VAR_NEVER_READ_0x40E1                0x40E1 // Var is written to, but never read
#define VAR_NEVER_READ_0x40E2                0x40E2 // Var is written to, but never read
#define VAR_NEVER_READ_0x40E3                0x40E3 // Var is written to, but never read
#define VAR_NEVER_READ_0x40E4                0x40E4 // var is written to, but never read
#define VAR_UNUSED_0x40E5                    0x40E5 // Unused Var
#define VAR_DAILY_SLOTS                      0x40E6
#define VAR_DAILY_WILDS                      0x40E7
#define VAR_DAILY_BLENDER                    0x40E8
#define VAR_DAILY_PLANTED_BERRIES            0x40E9
#define VAR_DAILY_PICKED_BERRIES             0x40EA
#define VAR_DAILY_ROULETTE                   0x40EB
#define VAR_SECRET_BASE_STEP_COUNTER         0x40EC // Used by Secret Base TV programs
#define VAR_SECRET_BASE_LAST_ITEM_USED       0x40ED // Used by Secret Base TV programs
#define VAR_SECRET_BASE_LOW_TV_FLAGS         0x40EE // Used by Secret Base TV programs
#define VAR_SECRET_BASE_HIGH_TV_FLAGS        0x40EF // Used by Secret Base TV programs
#define VAR_SECRET_BASE_IS_NOT_LOCAL         0x40F0 // Set to TRUE while in another player's secret base.
#define VAR_DAILY_BP                         0x40F1
#define VAR_WALLY_CALL_STEP_COUNTER          0x40F2
#define VAR_SCOTT_FORTREE_CALL_STEP_COUNTER  0x40F3
#define VAR_ROXANNE_CALL_STEP_COUNTER        0x40F4
#define VAR_SCOTT_BF_CALL_STEP_COUNTER       0x40F5
#define VAR_RIVAL_RAYQUAZA_CALL_STEP_COUNTER 0x40F6
#define VAR_UNUSED_0x40F7                    0x40F7 // Unused Var
#define VAR_UNUSED_0x40F8                    0x40F8 // Unused Var
#define VAR_UNUSED_0x40F9                    0x40F9 // Unused Var
#define VAR_UNUSED_0x40FA                    0x40FA // Unused Var
#define VAR_UNUSED_0x40FB                    0x40FB // Unused Var
#define VAR_UNUSED_0x40FC                    0x40FC // Unused Var
#define VAR_UNUSED_0x40FD                    0x40FD // Unused Var
#define VAR_UNUSED_0x40FE                    0x40FE // Unused Var
#define VAR_UNUSED_0x40FF                    0x40FF // Unused Var

#define VARS_END                             0x40FF
#define VARS_COUNT                           (VARS_END - VARS_START + 1)

#define SPECIAL_VARS_START            0x8000
// special vars
// They are commonly used as parameters to commands, or return values from commands.
#define VAR_0x8000                    0x8000
#define VAR_0x8001                    0x8001
#define VAR_0x8002                    0x8002
#define VAR_0x8003                    0x8003
#define VAR_0x8004                    0x8004
#define VAR_0x8005                    0x8005
#define VAR_0x8006                    0x8006
#define VAR_0x8007                    0x8007
#define VAR_0x8008                    0x8008
#define VAR_0x8009                    0x8009
#define VAR_0x800A                    0x800A
#define VAR_0x800B                    0x800B
#define VAR_FACING                    0x800C
#define VAR_RESULT                    0x800D
#define VAR_ITEM_ID                   0x800E
#define VAR_LAST_TALKED               0x800F
#define VAR_CONTEST_RANK              0x8010
#define VAR_CONTEST_CATEGORY          0x8011
#define VAR_MON_BOX_ID                0x8012
#define VAR_MON_BOX_POS               0x8013
#define VAR_UNUSED_0x8014             0x8014
#define VAR_TRAINER_BATTLE_OPPONENT_A 0x8015 // Alias of gTrainerBattleOpponent_A

#define SPECIAL_VARS_END              0x8015

#endif // GUARD_CONSTANTS_VARS_H