diff options
Diffstat (limited to 'src/pokemon')
-rw-r--r-- | src/pokemon/pokemon_1.c | 60 | ||||
-rw-r--r-- | src/pokemon/pokemon_2.c | 28 | ||||
-rw-r--r-- | src/pokemon/pokemon_3.c | 104 | ||||
-rw-r--r-- | src/pokemon/pokemon_data.c | 116 | ||||
-rw-r--r-- | src/pokemon/pokemon_item_effect.c | 11 |
5 files changed, 154 insertions, 165 deletions
diff --git a/src/pokemon/pokemon_1.c b/src/pokemon/pokemon_1.c index bfd0bc972..0242e7444 100644 --- a/src/pokemon/pokemon_1.c +++ b/src/pokemon/pokemon_1.c @@ -1,13 +1,16 @@ #include "global.h" #include "data2.h" +#include "constants/abilities.h" #include "constants/items.h" +#include "constants/moves.h" +#include "constants/species.h" #include "main.h" #include "pokemon.h" #include "random.h" #include "overworld.h" -#include "constants/species.h" #include "sprite.h" #include "string_util.h" +#include "trainer.h" #include "text.h" #include "ewram.h" @@ -26,6 +29,59 @@ struct Pokemon gPlayerParty[6]; u8 gEnemyPartyCount; struct Pokemon gEnemyParty[6]; +const u16 gSpeciesToHoennPokedexNum[] = {203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 156, 157, 112, 113, 227, 228, 229, 230, 231, 232, 233, 234, 153, 154, 138, 139, 63, 64, 88, 89, 90, 235, 236, 237, 238, 239, 240, 241, 242, 158, 159, 243, 244, 245, 246, 247, 248, 249, 39, 40, 41, 73, 74, 75, 250, 251, 252, 66, 67, 57, 58, 59, 253, 254, 255, 256, 82, 83, 257, 92, 93, 258, 259, 106, 107, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 84, 85, 270, 271, 272, 273, 274, 275, 276, 108, 109, 169, 170, 277, 278, 279, 184, 185, 50, 51, 143, 144, 280, 281, 282, 283, 284, 167, 285, 52, 53, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 65, 181, 182, 155, 324, 137, 325, 326, 162, 163, 327, 328, 329, 91, 55, 56, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 161, 164, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 168, 357, 358, 359, 103, 104, 360, 361, 180, 362, 363, 364, 365, 115, 366, 367, 186, 165, 166, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 42, 43, 44, 25, 26, 34, 35, 114, 27, 28, 32, 33, 99, 100, 61, 62, 145, 131, 132, 60, 105, 68, 127, 128, 183, 129, 130, 140, 141, 97, 98, 116, 117, 118, 48, 49, 78, 79, 101, 102, 173, 174, 175, 119, 120, 171, 172, 125, 126, 54, 110, 111, 80, 81, 69, 76, 77, 121, 122, 160, 148, 149, 94, 36, 37, 38, 95, 96, 150, 45, 46, 47, 176, 177, 178, 152, 146, 147, 124, 123, 179, 70, 71, 72, 142, 86, 87, 133, 134, 135, 136, 29, 30, 31, 187, 188, 189, 190, 191, 192, 193, 194, 195, 198, 199, 200, 196, 197, 201, 202, 151}; +const u16 gSpeciesToNationalPokedexNum[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 290, 291, 292, 276, 277, 285, 286, 327, 278, 279, 283, 284, 320, 321, 300, 301, 352, 343, 344, 299, 324, 302, 339, 340, 370, 341, 342, 349, 350, 318, 319, 328, 329, 330, 296, 297, 309, 310, 322, 323, 363, 364, 365, 331, 332, 361, 362, 337, 338, 298, 325, 326, 311, 312, 303, 307, 308, 333, 334, 360, 355, 356, 315, 287, 288, 289, 316, 317, 357, 293, 294, 295, 366, 367, 368, 359, 353, 354, 336, 335, 369, 304, 305, 306, 351, 313, 314, 345, 346, 347, 348, 280, 281, 282, 371, 372, 373, 374, 375, 376, 377, 378, 379, 382, 383, 384, 380, 381, 385, 386, 358}; +const u16 gHoennToNationalOrder[] = {252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 63, 64, 65, 290, 291, 292, 293, 294, 295, 296, 297, 118, 119, 129, 130, 298, 183, 184, 74, 75, 76, 299, 300, 301, 41, 42, 169, 72, 73, 302, 303, 304, 305, 306, 66, 67, 68, 307, 308, 309, 310, 311, 312, 81, 82, 100, 101, 313, 314, 43, 44, 45, 182, 84, 85, 315, 316, 317, 318, 319, 320, 321, 322, 323, 218, 219, 324, 88, 89, 109, 110, 325, 326, 27, 28, 327, 227, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 174, 39, 40, 349, 350, 351, 120, 121, 352, 353, 354, 355, 356, 357, 358, 359, 37, 38, 172, 25, 26, 54, 55, 360, 202, 177, 178, 203, 231, 232, 127, 214, 111, 112, 361, 362, 363, 364, 365, 366, 367, 368, 369, 222, 170, 171, 370, 116, 117, 230, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 29, 30, 31, 32, 33, 34, 35, 36, 46, 47, 48, 49, 50, 51, 52, 53, 56, 57, 58, 59, 60, 61, 62, 69, 70, 71, 77, 78, 79, 80, 83, 86, 87, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 102, 103, 104, 105, 106, 107, 108, 113, 114, 115, 122, 123, 124, 125, 126, 128, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 173, 175, 176, 179, 180, 181, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 215, 216, 217, 220, 221, 223, 224, 225, 226, 228, 229, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411}; + +const struct SpindaSpot gSpindaSpotGraphics[] = +{ + {16, 14, INCBIN_U16("graphics/spinda_spots/spot_0.bin")}, + {40, 15, INCBIN_U16("graphics/spinda_spots/spot_1.bin")}, + {22, 32, INCBIN_U16("graphics/spinda_spots/spot_2.bin")}, + {34, 33, INCBIN_U16("graphics/spinda_spots/spot_3.bin")} +}; + +#include "../data/pokemon/item_effects.h" + +const s8 gNatureStatTable[][5] = +{ + // Atk Def Spd Sp.Atk Sp.Def + { 0, 0, 0, 0, 0}, // Hardy + { +1, -1, 0, 0, 0}, // Lonely + { +1, 0, -1, 0, 0}, // Brave + { +1, 0, 0, -1, 0}, // Adamant + { +1, 0, 0, 0, -1}, // Naughty + { -1, +1, 0, 0, 0}, // Bold + { 0, 0, 0, 0, 0}, // Docile + { 0, +1, -1, 0, 0}, // Relaxed + { 0, +1, 0, -1, 0}, // Impish + { 0, +1, 0, 0, -1}, // Lax + { -1, 0, +1, 0, 0}, // Timid + { 0, -1, +1, 0, 0}, // Hasty + { 0, 0, 0, 0, 0}, // Serious + { 0, 0, +1, -1, 0}, // Jolly + { 0, 0, +1, 0, -1}, // Naive + { -1, 0, 0, +1, 0}, // Modest + { 0, -1, 0, +1, 0}, // Mild + { 0, 0, -1, +1, 0}, // Quiet + { 0, 0, 0, 0, 0}, // Bashful + { 0, 0, 0, +1, -1}, // Rash + { -1, 0, 0, 0, +1}, // Calm + { 0, -1, 0, 0, +1}, // Gentle + { 0, 0, -1, 0, +1}, // Sassy + { 0, 0, 0, -1, +1}, // Careful + { 0, 0, 0, 0, 0} // Quirky +}; + +#include "../data/pokemon/tmhm_learnsets.h" +#include "../data/pokemon/trainer_class_lookups.h" +#include "../data/pokemon/cry_ids.h" +#include "../data/pokemon/experience_tables.h" +#include "../data/pokemon/base_stats.h" +#include "../data/pokemon/level_up_learnsets.h" +#include "../data/pokemon/evolution.h" +#include "../data/pokemon/level_up_learnset_pointers.h" + void ZeroBoxMonData(struct BoxPokemon *boxMon) { u8 *raw = (u8 *)boxMon; @@ -401,7 +457,7 @@ u16 CalculateBoxMonChecksum(struct BoxPokemon *boxMon) s32 n = (((2 * baseStat + iv + ev / 4) * level) / 100) + 5; \ u8 nature = GetNature(mon); \ n = nature_stat_mod(nature, n, statIndex); \ - SetMonData(mon, field, &n); \ + SetMonData(mon, field, &n); \ } void CalculateMonStats(struct Pokemon *mon) diff --git a/src/pokemon/pokemon_2.c b/src/pokemon/pokemon_2.c index eb56974cd..b941ed2ab 100644 --- a/src/pokemon/pokemon_2.c +++ b/src/pokemon/pokemon_2.c @@ -1,4 +1,5 @@ #include "global.h" +#include "constants/hold_effects.h" #include "battle.h" #include "battle_util.h" #include "data2.h" @@ -12,6 +13,7 @@ #include "string_util.h" #include "strings2.h" #include "text.h" +#include "trainer.h" #include "util.h" #include "ewram.h" @@ -40,11 +42,12 @@ extern const struct SpriteTemplate gSpriteTemplate_8208288[]; //array of pointers to arrays of pointers to union AnimCmd (We probably need to typedef this.) extern u8 gTrainerClassToPicIndex[]; extern u8 gTrainerClassToNameIndex[]; -extern u8 gSecretBaseTrainerClasses[][5]; -extern u8 gUnknown_08208238[]; -extern u8 gUnknown_0820823C[]; -extern u8 gStatStageRatios[][2]; -extern u8 gHoldEffectToType[][2]; + +extern const u8 gUnknown_08208238[]; +extern const u8 gUnknown_0820823C[]; + +extern void sub_80105A0(struct Sprite *); +extern void oac_poke_opponent(struct Sprite *); u8 CountAliveMons(u8 a1) { @@ -145,6 +148,14 @@ u8 GetGenderFromSpeciesAndPersonality(u16 species, u32 personality) return MON_MALE; } +const struct SpriteTemplate gSpriteTemplate_8208288[] = +{ + {0xFFFF, 0, &gOamData_81F96F0, NULL, gSpriteImageTable_81E7A10, gSpriteAffineAnimTable_81E7B70, sub_80105A0}, + {0xFFFF, 0, &gOamData_81F96E8, NULL, gSpriteImageTable_81E7A30, gSpriteAffineAnimTable_81E7BEC, oac_poke_opponent}, + {0xFFFF, 0, &gOamData_81F96F0, NULL, gSpriteImageTable_81E7A50, gSpriteAffineAnimTable_81E7B70, sub_80105A0}, + {0xFFFF, 0, &gOamData_81F96E8, NULL, gSpriteImageTable_81E7A70, gSpriteAffineAnimTable_81E7BEC, oac_poke_opponent}, +}; + void GetMonSpriteTemplate_803C56C(u16 species, u8 a2) { gUnknown_02024E8C = gSpriteTemplate_8208288[a2]; @@ -1094,6 +1105,13 @@ void CreateSecretBaseEnemyParty(struct SecretBaseRecord *secretBaseRecord) gTrainerBattleOpponent = 1024; } +const u8 gSecretBaseTrainerClasses[][5] = { + // male + {FACILITY_CLASS_YOUNGSTER, FACILITY_CLASS_BUG_CATCHER, FACILITY_CLASS_RICH_BOY, FACILITY_CLASS_CAMPER, FACILITY_CLASS_COOL_TRAINER_M}, + // female + {FACILITY_CLASS_LASS, FACILITY_CLASS_SCHOOL_KID_F, FACILITY_CLASS_LADY, FACILITY_CLASS_PICNICKER, FACILITY_CLASS_COOL_TRAINER_F} +}; + u8 GetSecretBaseTrainerPicIndex(void) { u8 trainerClass = gSecretBaseTrainerClasses[eSecretBaseRecord->gender][eSecretBaseRecord->trainerId[0] % 5]; diff --git a/src/pokemon/pokemon_3.c b/src/pokemon/pokemon_3.c index d659ed680..221de831a 100644 --- a/src/pokemon/pokemon_3.c +++ b/src/pokemon/pokemon_3.c @@ -1,11 +1,12 @@ #include "global.h" +#include "constants/hold_effects.h" +#include "constants/items.h" +#include "constants/moves.h" #include "battle.h" #include "battle_message.h" #include "data2.h" #include "event_data.h" -#include "constants/hold_effects.h" #include "item.h" -#include "constants/items.h" #include "link.h" #include "m4a.h" #include "main.h" @@ -42,20 +43,16 @@ extern u8 gStringBank; extern u8 gBankInMenu; extern struct SpindaSpot gSpindaSpotGraphics[]; extern s8 gNatureStatTable[][5]; -extern s8 gUnknown_082082FE[][3]; extern u16 gTrainerBattleOpponent; extern u16 gBattleTypeFlags; extern u32 gTMHMLearnsets[][2]; extern u8 gBattleMonForms[]; extern const u8 BattleText_Wally[]; -extern const u16 gHMMoves[]; extern s8 gPokeblockFlavorCompatibilityTable[]; extern u8 gLastUsedAbility; extern const u8 BattleText_PreventedSwitch[]; extern u16 gBattlePartyID[]; -extern u8 gJapaneseNidoranNames[][11]; -extern u8 gUnknown_082082F8[]; extern u8 BattleText_Rose[]; extern u8 BattleText_UnknownString3[]; extern u8 BattleText_MistShroud[]; @@ -193,6 +190,8 @@ u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit) return offset; } +const u8 gUnknown_082082F8[] = {1, 1, 3, 2, 4, 6}; + void sub_803F324(int stat) { gBankTarget = gBankInMenu; @@ -290,56 +289,56 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem) for (i = 0; i < 5; i++) { - switch (gEvolutionTable[species].evolutions[i].method) + switch (gEvolutionTable[species][i].method) { case EVO_FRIENDSHIP: if (friendship >= 220) - targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies; + targetSpecies = gEvolutionTable[species][i].targetSpecies; break; case EVO_FRIENDSHIP_DAY: RtcCalcLocalTime(); if (gLocalTime.hours >= 12 && gLocalTime.hours < 24 && friendship >= 220) - targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies; + targetSpecies = gEvolutionTable[species][i].targetSpecies; break; case EVO_FRIENDSHIP_NIGHT: RtcCalcLocalTime(); if (gLocalTime.hours >= 0 && gLocalTime.hours < 12 && friendship >= 220) - targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies; + targetSpecies = gEvolutionTable[species][i].targetSpecies; break; case EVO_LEVEL: - if (gEvolutionTable[species].evolutions[i].param <= level) - targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies; + if (gEvolutionTable[species][i].param <= level) + targetSpecies = gEvolutionTable[species][i].targetSpecies; break; case EVO_LEVEL_ATK_GT_DEF: - if (gEvolutionTable[species].evolutions[i].param <= level) + if (gEvolutionTable[species][i].param <= level) if (GetMonData(mon, MON_DATA_ATK, 0) > GetMonData(mon, MON_DATA_DEF, 0)) - targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies; + targetSpecies = gEvolutionTable[species][i].targetSpecies; break; case EVO_LEVEL_ATK_EQ_DEF: - if (gEvolutionTable[species].evolutions[i].param <= level) + if (gEvolutionTable[species][i].param <= level) if (GetMonData(mon, MON_DATA_ATK, 0) == GetMonData(mon, MON_DATA_DEF, 0)) - targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies; + targetSpecies = gEvolutionTable[species][i].targetSpecies; break; case EVO_LEVEL_ATK_LT_DEF: - if (gEvolutionTable[species].evolutions[i].param <= level) + if (gEvolutionTable[species][i].param <= level) if (GetMonData(mon, MON_DATA_ATK, 0) < GetMonData(mon, MON_DATA_DEF, 0)) - targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies; + targetSpecies = gEvolutionTable[species][i].targetSpecies; break; case EVO_LEVEL_SILCOON: - if (gEvolutionTable[species].evolutions[i].param <= level && (upperPersonality % 10) <= 4) - targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies; + if (gEvolutionTable[species][i].param <= level && (upperPersonality % 10) <= 4) + targetSpecies = gEvolutionTable[species][i].targetSpecies; break; case EVO_LEVEL_CASCOON: - if (gEvolutionTable[species].evolutions[i].param <= level && (upperPersonality % 10) > 4) - targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies; + if (gEvolutionTable[species][i].param <= level && (upperPersonality % 10) > 4) + targetSpecies = gEvolutionTable[species][i].targetSpecies; break; case EVO_LEVEL_NINJASK: - if (gEvolutionTable[species].evolutions[i].param <= level) - targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies; + if (gEvolutionTable[species][i].param <= level) + targetSpecies = gEvolutionTable[species][i].targetSpecies; break; case EVO_BEAUTY: - if (gEvolutionTable[species].evolutions[i].param <= beauty) - targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies; + if (gEvolutionTable[species][i].param <= beauty) + targetSpecies = gEvolutionTable[species][i].targetSpecies; break; } } @@ -347,17 +346,17 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem) case 1: for (i = 0; i < 5; i++) { - switch (gEvolutionTable[species].evolutions[i].method) + switch (gEvolutionTable[species][i].method) { case EVO_TRADE: - targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies; + targetSpecies = gEvolutionTable[species][i].targetSpecies; break; case EVO_TRADE_ITEM: - if (gEvolutionTable[species].evolutions[i].param == heldItem) + if (gEvolutionTable[species][i].param == heldItem) { heldItem = 0; SetMonData(mon, MON_DATA_HELD_ITEM, &heldItem); - targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies; + targetSpecies = gEvolutionTable[species][i].targetSpecies; } break; } @@ -367,10 +366,10 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem) case 3: for (i = 0; i < 5; i++) { - if (gEvolutionTable[species].evolutions[i].method == EVO_ITEM - && gEvolutionTable[species].evolutions[i].param == evolutionItem) + if (gEvolutionTable[species][i].method == EVO_ITEM + && gEvolutionTable[species][i].param == evolutionItem) { - targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies; + targetSpecies = gEvolutionTable[species][i].targetSpecies; break; } } @@ -644,6 +643,20 @@ u16 nature_stat_mod(u8 nature, u16 n, u8 statIndex) return n; } +const s8 gUnknown_082082FE[][3] = +{ + // Happiness deltas + { 5, 3, 2}, + { 5, 3, 2}, + { 1, 1, 0}, + { 3, 2, 1}, + { 1, 1, 0}, + { 1, 1, 1}, + {-1, -1, -1}, + {-5, -5, -10}, + {-5, -5, -10} +}; + void AdjustFriendship(struct Pokemon *mon, u8 event) { u16 species = GetMonData(mon, MON_DATA_SPECIES2, 0); @@ -653,13 +666,9 @@ void AdjustFriendship(struct Pokemon *mon, u8 event) if (heldItem == ITEM_ENIGMA_BERRY) { if (gMain.inBattle) - { holdEffect = gEnigmaBerries[0].holdEffect; - } else - { holdEffect = gSaveBlock1.enigmaBerry.holdEffect; - } } else { @@ -758,13 +767,9 @@ void MonGainEVs(struct Pokemon *mon, u16 defeatedSpecies) if (heldItem == ITEM_ENIGMA_BERRY) { if (gMain.inBattle) - { holdEffect = gEnigmaBerries[0].holdEffect; - } else - { holdEffect = gSaveBlock1.enigmaBerry.holdEffect; - } } else { @@ -1198,6 +1203,19 @@ const struct CompressedSpritePalette *GetMonSpritePalStructFromOtIdPersonality(u return &gMonPaletteTable[species]; } +const u16 gHMMoves[] = +{ + MOVE_CUT, + MOVE_FLY, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + 0xffff +}; + bool32 IsHMMove2(u16 move) { int i = 0; @@ -1338,12 +1356,14 @@ u8 *sub_8040D08(void) return gLinkPlayers[sub_803FC34(gLinkPlayers[id].lp_field_18 ^ 2)].name; } +const u8 gJapaneseNidoranNames[][11] = {_("ニドラン♂"), _("ニドラン♀")}; + bool32 ShouldHideGenderIconForLanguage(u16 species, u8 *name, u8 language) { bool32 retVal = FALSE; if (species == SPECIES_NIDORAN_M || species == SPECIES_NIDORAN_F) { - u8 *speciesName; + const u8 *speciesName; if (language == GAME_LANGUAGE) { speciesName = gSpeciesNames[species]; diff --git a/src/pokemon/pokemon_data.c b/src/pokemon/pokemon_data.c index 031f2ea24..3473b58c8 100644 --- a/src/pokemon/pokemon_data.c +++ b/src/pokemon/pokemon_data.c @@ -9,120 +9,4 @@ #include "sprite.h" #include "data2.h" -#include "../data/pokemon/dex_order.h" -#include "../data/pokemon/spinda_spots.h" -#include "../data/pokemon/item_effects.h" -#include "../data/pokemon/nature_stats.h" -#include "../data/pokemon/tmhm_learnsets.h" -#include "../data/pokemon/trainer_class_lookups.h" -#include "../data/pokemon/cry_ids.h" -#include "../data/pokemon/experience_tables.h" -#include "../data/pokemon/base_stats.h" -#include "../data/pokemon/level_up_learnsets.h" -#include "../data/pokemon/evolution.h" -#include "../data/pokemon/level_up_learnset_pointers.h" -const u8 gUnknown_08208238[] = { // Masks for getting PP Up count, also PP Max values - 0x03, 0x0c, 0x30, 0xc0 -}; - -const u8 gUnknown_0820823C[] = { // Masks for setting PP Up count - 0xFC, 0xF3, 0xCF, 0x3F -}; - -const u8 gUnknown_08208240[] = { // Values added to PP Up count - 0x01, 0x04, 0x10, 0x40 -}; - -const u8 gStatStageRatios[][2] = { - {10, 40}, // -6 - {10, 35}, // -5 - {10, 30}, // -4 - {10, 25}, // -3 - {10, 20}, // -2 - {10, 15}, // -1 - {10, 10}, // 0 - {15, 10}, // 1 - {20, 10}, // 2 - {25, 10}, // 3 - {30, 10}, // 4 - {35, 10}, // 5 - {40, 10} // 6 -}; - -const u8 unknownGameFreakAbbrev_820825E[] = _("ゲーフリ"); - -const u8 gHoldEffectToType[][2] = { - {HOLD_EFFECT_BUG_POWER, TYPE_BUG}, - {HOLD_EFFECT_STEEL_POWER, TYPE_STEEL}, - {HOLD_EFFECT_GROUND_POWER, TYPE_GROUND}, - {HOLD_EFFECT_ROCK_POWER, TYPE_ROCK}, - {HOLD_EFFECT_GRASS_POWER, TYPE_GRASS}, - {HOLD_EFFECT_DARK_POWER, TYPE_DARK}, - {HOLD_EFFECT_FIGHTING_POWER, TYPE_FIGHTING}, - {HOLD_EFFECT_ELECTRIC_POWER, TYPE_ELECTRIC}, - {HOLD_EFFECT_WATER_POWER, TYPE_WATER}, - {HOLD_EFFECT_FLYING_POWER, TYPE_FLYING}, - {HOLD_EFFECT_POISON_POWER, TYPE_POISON}, - {HOLD_EFFECT_ICE_POWER, TYPE_ICE}, - {HOLD_EFFECT_GHOST_POWER, TYPE_GHOST}, - {HOLD_EFFECT_PSYCHIC_POWER, TYPE_PSYCHIC}, - {HOLD_EFFECT_FIRE_POWER, TYPE_FIRE}, - {HOLD_EFFECT_DRAGON_POWER, TYPE_DRAGON}, - {HOLD_EFFECT_NORMAL_POWER, TYPE_NORMAL} -}; - -extern void sub_80105A0(struct Sprite *); -extern void oac_poke_opponent(struct Sprite *); - -const struct SpriteTemplate gSpriteTemplate_8208288[] = { - {0xFFFF, 0, &gOamData_81F96F0, NULL, gSpriteImageTable_81E7A10, gSpriteAffineAnimTable_81E7B70, sub_80105A0}, - {0xFFFF, 0, &gOamData_81F96E8, NULL, gSpriteImageTable_81E7A30, gSpriteAffineAnimTable_81E7BEC, oac_poke_opponent}, - {0xFFFF, 0, &gOamData_81F96F0, NULL, gSpriteImageTable_81E7A50, gSpriteAffineAnimTable_81E7B70, sub_80105A0}, - {0xFFFF, 0, &gOamData_81F96E8, NULL, gSpriteImageTable_81E7A70, gSpriteAffineAnimTable_81E7BEC, oac_poke_opponent}, -}; - -const u8 gSecretBaseTrainerClasses[][5] = { - // male - {FACILITY_CLASS_YOUNGSTER, FACILITY_CLASS_BUG_CATCHER, FACILITY_CLASS_RICH_BOY, FACILITY_CLASS_CAMPER, FACILITY_CLASS_COOL_TRAINER_M}, - // female - {FACILITY_CLASS_LASS, FACILITY_CLASS_SCHOOL_KID_F, FACILITY_CLASS_LADY, FACILITY_CLASS_PICNICKER, FACILITY_CLASS_COOL_TRAINER_F} -}; - -const u8 gUnknown_082082F2[] = { - MON_DATA_HP_EV, - MON_DATA_ATK_EV, - MON_DATA_DEF_EV, - MON_DATA_SPEED_EV, - MON_DATA_SPDEF_EV, - MON_DATA_SPATK_EV -}; - -const u8 gUnknown_082082F8[] = {1, 1, 3, 2, 4, 6}; - -const s8 gUnknown_082082FE[][3] = { - // Happiness deltas - { 5, 3, 2}, - { 5, 3, 2}, - { 1, 1, 0}, - { 3, 2, 1}, - { 1, 1, 0}, - { 1, 1, 1}, - {-1, -1, -1}, - {-5, -5, -10}, - {-5, -5, -10} -}; - -const u16 gHMMoves[] = { - MOVE_CUT, - MOVE_FLY, - MOVE_SURF, - MOVE_STRENGTH, - MOVE_FLASH, - MOVE_ROCK_SMASH, - MOVE_WATERFALL, - MOVE_DIVE, - 0xffff -}; - -const u8 gJapaneseNidoranNames[][11] = {_("ニドラン♂"), _("ニドラン♀")}; diff --git a/src/pokemon/pokemon_item_effect.c b/src/pokemon/pokemon_item_effect.c new file mode 100644 index 000000000..66f2ff697 --- /dev/null +++ b/src/pokemon/pokemon_item_effect.c @@ -0,0 +1,11 @@ +#include "global.h" +#include "pokemon.h" + +const u8 gUnknown_082082F2[] = { + MON_DATA_HP_EV, + MON_DATA_ATK_EV, + MON_DATA_DEF_EV, + MON_DATA_SPEED_EV, + MON_DATA_SPDEF_EV, + MON_DATA_SPATK_EV +}; |