diff --git a/data/scripts/berry_tree.inc b/data/scripts/berry_tree.inc index bea246fde3..88d795532d 100644 --- a/data/scripts/berry_tree.inc +++ b/data/scripts/berry_tree.inc @@ -40,7 +40,7 @@ BerryTree_EventScript_WantToPlant:: end BerryTree_EventScript_WantToMulch:: -.if OW_MULCH_USAGE == TRUE +.if OW_BERRY_MULCH_USAGE == TRUE msgbox BerryTree_Text_WantToMulch, MSGBOX_YESNO goto_if_eq VAR_RESULT, YES, BerryTree_EventScript_ChooseMulchToUse goto_if_eq VAR_RESULT, NO, BerryTree_EventScript_CancelPlanting @@ -48,7 +48,7 @@ BerryTree_EventScript_WantToMulch:: end BerryTree_EventScript_WantToPlantMulch:: -.if OW_MULCH_USAGE == TRUE +.if OW_BERRY_MULCH_USAGE == TRUE message BerryTree_Text_ItsSoftLoamySoil waitmessage multichoice 0, 0, MULTI_BERRY_PLOT, FALSE @@ -355,7 +355,7 @@ BerryTree_Text_PutAwayBerry_Mutation: .string "loamy state.$" .endif -.if OW_MULCH_USAGE == TRUE +.if OW_BERRY_MULCH_USAGE == TRUE BerryTree_EventScript_UseMulch:: special ObjectEventInteractionApplyMulch message BerryTree_Text_ScatteredMulch diff --git a/include/config/overworld.h b/include/config/overworld.h index b15e6c3560..9d181a3174 100644 --- a/include/config/overworld.h +++ b/include/config/overworld.h @@ -13,8 +13,12 @@ #define OW_PC_JAPAN_WALDA_ICONS TRUE // In the US release of Emerald, the Cross, Bolt, and Plusle icons for Walda's wallpapers were left blank from the Japan release. Setting this to TRUE will restore them. // Berry settings -#define OW_BERRY_MUTATIONS FALSE // If enabled, Berry plants can mutate based on berries planted next to them. -#define OW_MULCH_USAGE TRUE // If enabled, Mulch can be used on soil to fertilize it. Otherwise, it is considered unusable. +#define OW_BERRY_MUTATIONS FALSE // If enabled, Berry plants can mutate based on berries planted next to them. +#define OW_BERRY_MULCH_USAGE TRUE // If enabled, Mulch can be used on soil to fertilize it. Otherwise, it is considered unusable. +#define OW_BERRY_WEEDS FALSE // If enabled, weeds may grow on Berry plants that the player needs to take care of. +#define OW_BERRY_PESTS FALSE // If enabled, pests may approach Berry plants that the player needs to take care of. +#define OW_BERRY_MOISTURE FALSE // If enabled, Berry watering is not a matter of watering it once per stage, but rather of keeping the soil moist. +#define OW_BERRY_VARIABLE_DRAIN_RATE FALSE // If moisture is enabled, this setting uses the Gen4 drain rates for different berries // Out-of-battle Ability effects #define OW_SYNCHRONIZE_NATURE GEN_LATEST // In Gen8, if a Pokémon with Synchronize is leading the party, it's 100% guaranteed that wild Pokémon will have the same Nature, as opposed to 50% previously. Stationary Pokémon are excluded in Gen3. In Gen6, all No Eggs Discovered gift Pokémon will have the same Nature, while in Gen7 all gift Pokémon will, regardless of Egg Group - In Gen 8, no gift Pokémon are affected. In Gen9, this ability has no out-of-battle effect. diff --git a/include/constants/berry.h b/include/constants/berry.h index 3ba59c0f5e..0385e57447 100644 --- a/include/constants/berry.h +++ b/include/constants/berry.h @@ -10,6 +10,13 @@ #define BERRY_FIRMNESS_VERY_HARD 4 #define BERRY_FIRMNESS_SUPER_HARD 5 +#define BERRY_COLOR_RED 0 +#define BERRY_COLOR_BLUE 1 +#define BERRY_COLOR_PURPLE 2 +#define BERRY_COLOR_GREEN 3 +#define BERRY_COLOR_YELLOW 4 +#define BERRY_COLOR_PINK 5 + #define FLAVOR_SPICY 0 #define FLAVOR_DRY 1 #define FLAVOR_SWEET 2 diff --git a/include/global.berry.h b/include/global.berry.h index cd6e18e7fb..621340ed2a 100644 --- a/include/global.berry.h +++ b/include/global.berry.h @@ -7,7 +7,8 @@ struct Berry { const u8 name[BERRY_NAME_LENGTH + 1]; - u8 firmness; + u8 firmness:4; + u8 color:4; u16 size; u8 maxYield; u8 minYield; @@ -20,6 +21,7 @@ struct Berry u8 bitter; u8 sour; u8 smoothness; + u8 drainRate; }; // with no const fields @@ -27,7 +29,8 @@ struct Berry struct Berry2 { u8 name[BERRY_NAME_LENGTH + 1]; - u8 firmness; + u8 firmness:4; + u8 color:4; u16 size; u8 maxYield; u8 minYield; @@ -40,7 +43,7 @@ struct Berry2 u8 bitter; u8 sour; u8 smoothness; - //u8 padding; + u8 drainRate; }; struct EnigmaBerry diff --git a/src/berry.c b/src/berry.c index 79109984b6..31d23538d3 100644 --- a/src/berry.c +++ b/src/berry.c @@ -168,6 +168,7 @@ const struct Berry gBerries[] = { .name = _("Cheri"), .firmness = BERRY_FIRMNESS_SOFT, + .color = BERRY_COLOR_RED, .size = 20, .maxYield = 3, .minYield = 2, @@ -180,12 +181,14 @@ const struct Berry gBerries[] = .bitter = 0, .sour = 0, .smoothness = 25, + .drainRate = 15, }, [ITEM_CHESTO_BERRY - FIRST_BERRY_INDEX] = { .name = _("Chesto"), .firmness = BERRY_FIRMNESS_SUPER_HARD, + .color = BERRY_COLOR_PURPLE, .size = 80, .maxYield = 3, .minYield = 2, @@ -198,12 +201,14 @@ const struct Berry gBerries[] = .bitter = 0, .sour = 0, .smoothness = 25, + .drainRate = 15, }, [ITEM_PECHA_BERRY - FIRST_BERRY_INDEX] = { .name = _("Pecha"), .firmness = BERRY_FIRMNESS_VERY_SOFT, + .color = BERRY_COLOR_PINK, .size = 40, .maxYield = 3, .minYield = 2, @@ -216,12 +221,14 @@ const struct Berry gBerries[] = .bitter = 0, .sour = 0, .smoothness = 25, + .drainRate = 15, }, [ITEM_RAWST_BERRY - FIRST_BERRY_INDEX] = { .name = _("Rawst"), .firmness = BERRY_FIRMNESS_HARD, + .color = BERRY_COLOR_GREEN, .size = 32, .maxYield = 3, .minYield = 2, @@ -234,12 +241,14 @@ const struct Berry gBerries[] = .bitter = 10, .sour = 0, .smoothness = 25, + .drainRate = 15, }, [ITEM_ASPEAR_BERRY - FIRST_BERRY_INDEX] = { .name = _("Aspear"), .firmness = BERRY_FIRMNESS_SUPER_HARD, + .color = BERRY_COLOR_YELLOW, .size = 50, .maxYield = 3, .minYield = 2, @@ -252,12 +261,14 @@ const struct Berry gBerries[] = .bitter = 0, .sour = 10, .smoothness = 25, + .drainRate = 15, }, [ITEM_LEPPA_BERRY - FIRST_BERRY_INDEX] = { .name = _("Leppa"), .firmness = BERRY_FIRMNESS_VERY_HARD, + .color = BERRY_COLOR_RED, .size = 28, .maxYield = 3, .minYield = 2, @@ -270,12 +281,14 @@ const struct Berry gBerries[] = .bitter = 10, .sour = 10, .smoothness = 20, + .drainRate = 15, }, [ITEM_ORAN_BERRY - FIRST_BERRY_INDEX] = { .name = _("Oran"), .firmness = BERRY_FIRMNESS_SUPER_HARD, + .color = BERRY_COLOR_BLUE, .size = 35, .maxYield = 3, .minYield = 2, @@ -288,12 +301,14 @@ const struct Berry gBerries[] = .bitter = 10, .sour = 10, .smoothness = 20, + .drainRate = 15, }, [ITEM_PERSIM_BERRY - FIRST_BERRY_INDEX] = { .name = _("Persim"), .firmness = BERRY_FIRMNESS_HARD, + .color = BERRY_COLOR_PINK, .size = 47, .maxYield = 3, .minYield = 2, @@ -306,12 +321,14 @@ const struct Berry gBerries[] = .bitter = 10, .sour = 10, .smoothness = 20, + .drainRate = 15, }, [ITEM_LUM_BERRY - FIRST_BERRY_INDEX] = { .name = _("Lum"), .firmness = BERRY_FIRMNESS_SUPER_HARD, + .color = BERRY_COLOR_GREEN, .size = 34, .maxYield = 2, .minYield = 1, @@ -324,12 +341,14 @@ const struct Berry gBerries[] = .bitter = 10, .sour = 10, .smoothness = 20, + .drainRate = 8, }, [ITEM_SITRUS_BERRY - FIRST_BERRY_INDEX] = { .name = _("Sitrus"), .firmness = BERRY_FIRMNESS_VERY_HARD, + .color = BERRY_COLOR_YELLOW, .size = 95, .maxYield = 3, .minYield = 2, @@ -342,12 +361,14 @@ const struct Berry gBerries[] = .bitter = 10, .sour = 10, .smoothness = 20, + .drainRate = 7, }, [ITEM_FIGY_BERRY - FIRST_BERRY_INDEX] = { .name = _("Figy"), .firmness = BERRY_FIRMNESS_SOFT, + .color = BERRY_COLOR_RED, .size = 100, .maxYield = 3, .minYield = 2, @@ -360,12 +381,14 @@ const struct Berry gBerries[] = .bitter = 0, .sour = 0, .smoothness = 25, + .drainRate = 10, }, [ITEM_WIKI_BERRY - FIRST_BERRY_INDEX] = { .name = _("Wiki"), .firmness = BERRY_FIRMNESS_HARD, + .color = BERRY_COLOR_PURPLE, .size = 115, .maxYield = 3, .minYield = 2, @@ -378,12 +401,14 @@ const struct Berry gBerries[] = .bitter = 0, .sour = 0, .smoothness = 25, + .drainRate = 10, }, [ITEM_MAGO_BERRY - FIRST_BERRY_INDEX] = { .name = _("Mago"), .firmness = BERRY_FIRMNESS_HARD, + .color = BERRY_COLOR_PINK, .size = 126, .maxYield = 3, .minYield = 2, @@ -396,12 +421,14 @@ const struct Berry gBerries[] = .bitter = 0, .sour = 0, .smoothness = 25, + .drainRate = 10, }, [ITEM_AGUAV_BERRY - FIRST_BERRY_INDEX] = { .name = _("Aguav"), .firmness = BERRY_FIRMNESS_SUPER_HARD, + .color = BERRY_COLOR_GREEN, .size = 64, .maxYield = 3, .minYield = 2, @@ -414,12 +441,14 @@ const struct Berry gBerries[] = .bitter = 10, .sour = 0, .smoothness = 25, + .drainRate = 10, }, [ITEM_IAPAPA_BERRY - FIRST_BERRY_INDEX] = { .name = _("Iapapa"), .firmness = BERRY_FIRMNESS_SOFT, + .color = BERRY_COLOR_YELLOW, .size = 223, .maxYield = 3, .minYield = 2, @@ -432,12 +461,14 @@ const struct Berry gBerries[] = .bitter = 0, .sour = 10, .smoothness = 25, + .drainRate = 10, }, [ITEM_RAZZ_BERRY - FIRST_BERRY_INDEX] = { .name = _("Razz"), .firmness = BERRY_FIRMNESS_VERY_HARD, + .color = BERRY_COLOR_RED, .size = 120, .maxYield = 6, .minYield = 3, @@ -450,12 +481,14 @@ const struct Berry gBerries[] = .bitter = 0, .sour = 0, .smoothness = 20, + .drainRate = 35, }, [ITEM_BLUK_BERRY - FIRST_BERRY_INDEX] = { .name = _("Bluk"), .firmness = BERRY_FIRMNESS_SOFT, + .color = BERRY_COLOR_PURPLE, .size = 108, .maxYield = 6, .minYield = 3, @@ -468,12 +501,14 @@ const struct Berry gBerries[] = .bitter = 0, .sour = 0, .smoothness = 20, + .drainRate = 35, }, [ITEM_NANAB_BERRY - FIRST_BERRY_INDEX] = { .name = _("Nanab"), .firmness = BERRY_FIRMNESS_VERY_HARD, + .color = BERRY_COLOR_PINK, .size = 77, .maxYield = 6, .minYield = 3, @@ -486,12 +521,14 @@ const struct Berry gBerries[] = .bitter = 10, .sour = 0, .smoothness = 20, + .drainRate = 35, }, [ITEM_WEPEAR_BERRY - FIRST_BERRY_INDEX] = { .name = _("Wepear"), .firmness = BERRY_FIRMNESS_SUPER_HARD, + .color = BERRY_COLOR_GREEN, .size = 74, .maxYield = 6, .minYield = 3, @@ -504,12 +541,14 @@ const struct Berry gBerries[] = .bitter = 10, .sour = 10, .smoothness = 20, + .drainRate = 35, }, [ITEM_PINAP_BERRY - FIRST_BERRY_INDEX] = { .name = _("Pinap"), .firmness = BERRY_FIRMNESS_HARD, + .color = BERRY_COLOR_YELLOW, .size = 80, .maxYield = 6, .minYield = 3, @@ -522,12 +561,14 @@ const struct Berry gBerries[] = .bitter = 0, .sour = 10, .smoothness = 20, + .drainRate = 35, }, [ITEM_POMEG_BERRY - FIRST_BERRY_INDEX] = { .name = _("Pomeg"), .firmness = BERRY_FIRMNESS_VERY_HARD, + .color = BERRY_COLOR_RED, .size = 135, .maxYield = 6, .minYield = 2, @@ -540,12 +581,14 @@ const struct Berry gBerries[] = .bitter = 10, .sour = 0, .smoothness = 20, + .drainRate = 8, }, [ITEM_KELPSY_BERRY - FIRST_BERRY_INDEX] = { .name = _("Kelpsy"), .firmness = BERRY_FIRMNESS_HARD, + .color = BERRY_COLOR_BLUE, .size = 150, .maxYield = 6, .minYield = 2, @@ -558,12 +601,14 @@ const struct Berry gBerries[] = .bitter = 10, .sour = 10, .smoothness = 20, + .drainRate = 8, }, [ITEM_QUALOT_BERRY - FIRST_BERRY_INDEX] = { .name = _("Qualot"), .firmness = BERRY_FIRMNESS_HARD, + .color = BERRY_COLOR_YELLOW, .size = 110, .maxYield = 6, .minYield = 2, @@ -576,12 +621,14 @@ const struct Berry gBerries[] = .bitter = 0, .sour = 10, .smoothness = 20, + .drainRate = 8, }, [ITEM_HONDEW_BERRY - FIRST_BERRY_INDEX] = { .name = _("Hondew"), .firmness = BERRY_FIRMNESS_HARD, + .color = BERRY_COLOR_GREEN, .size = 162, .maxYield = 6, .minYield = 2, @@ -594,12 +641,14 @@ const struct Berry gBerries[] = .bitter = 10, .sour = 0, .smoothness = 20, + .drainRate = 8, }, [ITEM_GREPA_BERRY - FIRST_BERRY_INDEX] = { .name = _("Grepa"), .firmness = BERRY_FIRMNESS_SOFT, + .color = BERRY_COLOR_YELLOW, .size = 149, .maxYield = 6, .minYield = 2, @@ -612,12 +661,14 @@ const struct Berry gBerries[] = .bitter = 0, .sour = 10, .smoothness = 20, + .drainRate = 8, }, [ITEM_TAMATO_BERRY - FIRST_BERRY_INDEX] = { .name = _("Tamato"), .firmness = BERRY_FIRMNESS_SOFT, + .color = BERRY_COLOR_RED, .size = 200, .maxYield = 4, .minYield = 2, @@ -630,12 +681,14 @@ const struct Berry gBerries[] = .bitter = 0, .sour = 0, .smoothness = 30, + .drainRate = 8, }, [ITEM_CORNN_BERRY - FIRST_BERRY_INDEX] = { .name = _("Cornn"), .firmness = BERRY_FIRMNESS_HARD, + .color = BERRY_COLOR_PURPLE, .size = 75, .maxYield = 4, .minYield = 2, @@ -648,12 +701,14 @@ const struct Berry gBerries[] = .bitter = 0, .sour = 0, .smoothness = 30, + .drainRate = 10, }, [ITEM_MAGOST_BERRY - FIRST_BERRY_INDEX] = { .name = _("Magost"), .firmness = BERRY_FIRMNESS_HARD, + .color = BERRY_COLOR_PINK, .size = 140, .maxYield = 4, .minYield = 2, @@ -666,12 +721,14 @@ const struct Berry gBerries[] = .bitter = 10, .sour = 0, .smoothness = 30, + .drainRate = 10, }, [ITEM_RABUTA_BERRY - FIRST_BERRY_INDEX] = { .name = _("Rabuta"), .firmness = BERRY_FIRMNESS_SOFT, + .color = BERRY_COLOR_GREEN, .size = 226, .maxYield = 4, .minYield = 2, @@ -684,12 +741,14 @@ const struct Berry gBerries[] = .bitter = 20, .sour = 10, .smoothness = 30, + .drainRate = 10, }, [ITEM_NOMEL_BERRY - FIRST_BERRY_INDEX] = { .name = _("Nomel"), .firmness = BERRY_FIRMNESS_SUPER_HARD, + .color = BERRY_COLOR_YELLOW, .size = 285, .maxYield = 4, .minYield = 2, @@ -702,12 +761,14 @@ const struct Berry gBerries[] = .bitter = 0, .sour = 20, .smoothness = 30, + .drainRate = 10, }, [ITEM_SPELON_BERRY - FIRST_BERRY_INDEX] = { .name = _("Spelon"), .firmness = BERRY_FIRMNESS_SOFT, + .color = BERRY_COLOR_RED, .size = 133, .maxYield = 2, .minYield = 1, @@ -720,12 +781,14 @@ const struct Berry gBerries[] = .bitter = 0, .sour = 0, .smoothness = 70, + .drainRate = 8, }, [ITEM_PAMTRE_BERRY - FIRST_BERRY_INDEX] = { .name = _("Pamtre"), .firmness = BERRY_FIRMNESS_VERY_SOFT, + .color = BERRY_COLOR_PURPLE, .size = 244, .maxYield = 2, .minYield = 1, @@ -738,12 +801,14 @@ const struct Berry gBerries[] = .bitter = 0, .sour = 0, .smoothness = 70, + .drainRate = 8, }, [ITEM_WATMEL_BERRY - FIRST_BERRY_INDEX] = { .name = _("Watmel"), .firmness = BERRY_FIRMNESS_SOFT, + .color = BERRY_COLOR_PINK, .size = 250, .maxYield = 2, .minYield = 1, @@ -756,12 +821,14 @@ const struct Berry gBerries[] = .bitter = 10, .sour = 0, .smoothness = 70, + .drainRate = 8, }, [ITEM_DURIN_BERRY - FIRST_BERRY_INDEX] = { .name = _("Durin"), .firmness = BERRY_FIRMNESS_HARD, + .color = BERRY_COLOR_GREEN, .size = 280, .maxYield = 2, .minYield = 1, @@ -774,12 +841,14 @@ const struct Berry gBerries[] = .bitter = 40, .sour = 10, .smoothness = 70, + .drainRate = 8, }, [ITEM_BELUE_BERRY - FIRST_BERRY_INDEX] = { .name = _("Belue"), .firmness = BERRY_FIRMNESS_VERY_SOFT, + .color = BERRY_COLOR_PURPLE, .size = 300, .maxYield = 2, .minYield = 1, @@ -792,12 +861,14 @@ const struct Berry gBerries[] = .bitter = 0, .sour = 40, .smoothness = 70, + .drainRate = 8, }, [ITEM_CHILAN_BERRY - FIRST_BERRY_INDEX] = { .name = _("Chilan"), .firmness = BERRY_FIRMNESS_VERY_SOFT, + .color = BERRY_COLOR_YELLOW, .size = 34, .maxYield = 5, .minYield = 2, @@ -810,12 +881,14 @@ const struct Berry gBerries[] = .bitter = 0, .sour = 0, .smoothness = 35, + .drainRate = 6, }, [ITEM_OCCA_BERRY - FIRST_BERRY_INDEX] = { .name = _("Occa"), .firmness = BERRY_FIRMNESS_SUPER_HARD, + .color = BERRY_COLOR_RED, .size = 90, .maxYield = 5, .minYield = 2, @@ -828,12 +901,14 @@ const struct Berry gBerries[] = .bitter = 0, .sour = 0, .smoothness = 30, + .drainRate = 6, }, [ITEM_PASSHO_BERRY - FIRST_BERRY_INDEX] = { .name = _("Passho"), .firmness = BERRY_FIRMNESS_SOFT, + .color = BERRY_COLOR_BLUE, .size = 33, .maxYield = 5, .minYield = 2, @@ -846,12 +921,14 @@ const struct Berry gBerries[] = .bitter = 10, .sour = 0, .smoothness = 30, + .drainRate = 6, }, [ITEM_WACAN_BERRY - FIRST_BERRY_INDEX] = { .name = _("Wacan"), .firmness = BERRY_FIRMNESS_VERY_SOFT, + .color = BERRY_COLOR_YELLOW, .size = 250, .maxYield = 5, .minYield = 2, @@ -864,12 +941,14 @@ const struct Berry gBerries[] = .bitter = 0, .sour = 10, .smoothness = 30, + .drainRate = 6, }, [ITEM_RINDO_BERRY - FIRST_BERRY_INDEX] = { .name = _("Rindo"), .firmness = BERRY_FIRMNESS_SOFT, + .color = BERRY_COLOR_GREEN, .size = 156, .maxYield = 5, .minYield = 2, @@ -882,12 +961,14 @@ const struct Berry gBerries[] = .bitter = 15, .sour = 0, .smoothness = 30, + .drainRate = 6, }, [ITEM_YACHE_BERRY - FIRST_BERRY_INDEX] = { .name = _("Yache"), .firmness = BERRY_FIRMNESS_VERY_HARD, + .color = BERRY_COLOR_BLUE, .size = 135, .maxYield = 5, .minYield = 2, @@ -900,12 +981,14 @@ const struct Berry gBerries[] = .bitter = 0, .sour = 15, .smoothness = 30, + .drainRate = 6, }, [ITEM_CHOPLE_BERRY - FIRST_BERRY_INDEX] = { .name = _("Chople"), .firmness = BERRY_FIRMNESS_SOFT, + .color = BERRY_COLOR_RED, .size = 77, .maxYield = 5, .minYield = 2, @@ -918,12 +1001,14 @@ const struct Berry gBerries[] = .bitter = 10, .sour = 0, .smoothness = 30, + .drainRate = 6, }, [ITEM_KEBIA_BERRY - FIRST_BERRY_INDEX] = { .name = _("Kebia"), .firmness = BERRY_FIRMNESS_HARD, + .color = BERRY_COLOR_GREEN, .size = 90, .maxYield = 5, .minYield = 2, @@ -936,12 +1021,14 @@ const struct Berry gBerries[] = .bitter = 0, .sour = 10, .smoothness = 30, + .drainRate = 6, }, [ITEM_SHUCA_BERRY - FIRST_BERRY_INDEX] = { .name = _("Shuca"), .firmness = BERRY_FIRMNESS_SOFT, + .color = BERRY_COLOR_YELLOW, .size = 42, .maxYield = 5, .minYield = 2, @@ -954,12 +1041,14 @@ const struct Berry gBerries[] = .bitter = 0, .sour = 0, .smoothness = 30, + .drainRate = 6, }, [ITEM_COBA_BERRY - FIRST_BERRY_INDEX] = { .name = _("Coba"), .firmness = BERRY_FIRMNESS_VERY_HARD, + .color = BERRY_COLOR_BLUE, .size = 278, .maxYield = 5, .minYield = 2, @@ -972,12 +1061,14 @@ const struct Berry gBerries[] = .bitter = 15, .sour = 0, .smoothness = 30, + .drainRate = 6, }, [ITEM_PAYAPA_BERRY - FIRST_BERRY_INDEX] = { .name = _("Payapa"), .firmness = BERRY_FIRMNESS_SOFT, + .color = BERRY_COLOR_PURPLE, .size = 252, .maxYield = 5, .minYield = 2, @@ -990,12 +1081,14 @@ const struct Berry gBerries[] = .bitter = 0, .sour = 15, .smoothness = 30, + .drainRate = 6, }, [ITEM_TANGA_BERRY - FIRST_BERRY_INDEX] = { .name = _("Tanga"), .firmness = BERRY_FIRMNESS_VERY_SOFT, + .color = BERRY_COLOR_GREEN, .size = 42, .maxYield = 5, .minYield = 2, @@ -1008,12 +1101,14 @@ const struct Berry gBerries[] = .bitter = 0, .sour = 10, .smoothness = 35, + .drainRate = 6, }, [ITEM_CHARTI_BERRY - FIRST_BERRY_INDEX] = { .name = _("Charti"), .firmness = BERRY_FIRMNESS_VERY_SOFT, + .color = BERRY_COLOR_YELLOW, .size = 28, .maxYield = 5, .minYield = 2, @@ -1026,12 +1121,14 @@ const struct Berry gBerries[] = .bitter = 0, .sour = 0, .smoothness = 35, + .drainRate = 6, }, [ITEM_KASIB_BERRY - FIRST_BERRY_INDEX] = { .name = _("Kasib"), .firmness = BERRY_FIRMNESS_HARD, + .color = BERRY_COLOR_PURPLE, .size = 144, .maxYield = 5, .minYield = 2, @@ -1044,12 +1141,14 @@ const struct Berry gBerries[] = .bitter = 0, .sour = 0, .smoothness = 35, + .drainRate = 6, }, [ITEM_HABAN_BERRY - FIRST_BERRY_INDEX] = { .name = _("Haban"), .firmness = BERRY_FIRMNESS_SOFT, + .color = BERRY_COLOR_RED, .size = 23, .maxYield = 5, .minYield = 2, @@ -1062,12 +1161,14 @@ const struct Berry gBerries[] = .bitter = 20, .sour = 0, .smoothness = 35, + .drainRate = 6, }, [ITEM_COLBUR_BERRY - FIRST_BERRY_INDEX] = { .name = _("Colbur"), .firmness = BERRY_FIRMNESS_SUPER_HARD, + .color = BERRY_COLOR_PURPLE, .size = 39, .maxYield = 5, .minYield = 2, @@ -1080,12 +1181,14 @@ const struct Berry gBerries[] = .bitter = 10, .sour = 20, .smoothness = 35, + .drainRate = 6, }, [ITEM_BABIRI_BERRY - FIRST_BERRY_INDEX] = { .name = _("Babiri"), .firmness = BERRY_FIRMNESS_SUPER_HARD, + .color = BERRY_COLOR_GREEN, .size = 265, .maxYield = 5, .minYield = 2, @@ -1098,12 +1201,14 @@ const struct Berry gBerries[] = .bitter = 0, .sour = 0, .smoothness = 35, + .drainRate = 6, }, [ITEM_ROSELI_BERRY - FIRST_BERRY_INDEX] = { .name = _("Roseli"), .firmness = BERRY_FIRMNESS_HARD, + .color = BERRY_COLOR_PINK, .size = 35, .maxYield = 5, .minYield = 2, @@ -1116,12 +1221,14 @@ const struct Berry gBerries[] = .bitter = 10, .sour = 0, .smoothness = 35, + .drainRate = 6, }, [ITEM_LIECHI_BERRY - FIRST_BERRY_INDEX] = { .name = _("Liechi"), .firmness = BERRY_FIRMNESS_VERY_HARD, + .color = BERRY_COLOR_RED, .size = 111, .maxYield = 2, .minYield = 1, @@ -1134,12 +1241,14 @@ const struct Berry gBerries[] = .bitter = 0, .sour = 10, .smoothness = 80, + .drainRate = 4, }, [ITEM_GANLON_BERRY - FIRST_BERRY_INDEX] = { .name = _("Ganlon"), .firmness = BERRY_FIRMNESS_VERY_HARD, + .color = BERRY_COLOR_PURPLE, .size = 33, .maxYield = 2, .minYield = 1, @@ -1152,12 +1261,14 @@ const struct Berry gBerries[] = .bitter = 40, .sour = 0, .smoothness = 80, + .drainRate = 4, }, [ITEM_SALAC_BERRY - FIRST_BERRY_INDEX] = { .name = _("Salac"), .firmness = BERRY_FIRMNESS_VERY_HARD, + .color = BERRY_COLOR_GREEN, .size = 95, .maxYield = 2, .minYield = 1, @@ -1170,12 +1281,14 @@ const struct Berry gBerries[] = .bitter = 0, .sour = 40, .smoothness = 80, + .drainRate = 4, }, [ITEM_PETAYA_BERRY - FIRST_BERRY_INDEX] = { .name = _("Petaya"), .firmness = BERRY_FIRMNESS_VERY_HARD, + .color = BERRY_COLOR_PINK, .size = 237, .maxYield = 2, .minYield = 1, @@ -1188,12 +1301,14 @@ const struct Berry gBerries[] = .bitter = 40, .sour = 0, .smoothness = 80, + .drainRate = 4, }, [ITEM_APICOT_BERRY - FIRST_BERRY_INDEX] = { .name = _("Apicot"), .firmness = BERRY_FIRMNESS_HARD, + .color = BERRY_COLOR_BLUE, .size = 75, .maxYield = 2, .minYield = 1, @@ -1206,12 +1321,14 @@ const struct Berry gBerries[] = .bitter = 0, .sour = 40, .smoothness = 80, + .drainRate = 4, }, [ITEM_LANSAT_BERRY - FIRST_BERRY_INDEX] = { .name = _("Lansat"), .firmness = BERRY_FIRMNESS_SOFT, + .color = BERRY_COLOR_RED, .size = 97, .maxYield = 2, .minYield = 1, @@ -1224,12 +1341,14 @@ const struct Berry gBerries[] = .bitter = 10, .sour = 10, .smoothness = 30, + .drainRate = 4, }, [ITEM_STARF_BERRY - FIRST_BERRY_INDEX] = { .name = _("Starf"), .firmness = BERRY_FIRMNESS_SUPER_HARD, + .color = BERRY_COLOR_GREEN, .size = 153, .maxYield = 2, .minYield = 1, @@ -1242,12 +1361,14 @@ const struct Berry gBerries[] = .bitter = 10, .sour = 10, .smoothness = 30, + .drainRate = 4, }, [ITEM_ENIGMA_BERRY - FIRST_BERRY_INDEX] = { .name = _("Enigma"), .firmness = BERRY_FIRMNESS_HARD, + .color = BERRY_COLOR_PURPLE, .size = 155, .maxYield = 5, .minYield = 2, @@ -1260,12 +1381,14 @@ const struct Berry gBerries[] = .bitter = 0, .sour = 0, .smoothness = 60, + .drainRate = 7, }, [ITEM_MICLE_BERRY - FIRST_BERRY_INDEX] = { .name = _("Micle"), .firmness = BERRY_FIRMNESS_SOFT, + .color = BERRY_COLOR_GREEN, .size = 41, .maxYield = 5, .minYield = 2, @@ -1278,12 +1401,14 @@ const struct Berry gBerries[] = .bitter = 0, .sour = 0, .smoothness = 60, + .drainRate = 7, }, [ITEM_CUSTAP_BERRY - FIRST_BERRY_INDEX] = { .name = _("Custap"), .firmness = BERRY_FIRMNESS_SUPER_HARD, + .color = BERRY_COLOR_RED, .size = 267, .maxYield = 5, .minYield = 2, @@ -1296,12 +1421,14 @@ const struct Berry gBerries[] = .bitter = 10, .sour = 0, .smoothness = 60, + .drainRate = 7, }, [ITEM_JABOCA_BERRY - FIRST_BERRY_INDEX] = { .name = _("Jaboca"), .firmness = BERRY_FIRMNESS_SOFT, + .color = BERRY_COLOR_YELLOW, .size = 33, .maxYield = 5, .minYield = 2, @@ -1314,12 +1441,14 @@ const struct Berry gBerries[] = .bitter = 40, .sour = 10, .smoothness = 60, + .drainRate = 7, }, [ITEM_ROWAP_BERRY - FIRST_BERRY_INDEX] = { .name = _("Rowap"), .firmness = BERRY_FIRMNESS_VERY_SOFT, + .color = BERRY_COLOR_BLUE, .size = 52, .maxYield = 5, .minYield = 2, @@ -1332,12 +1461,14 @@ const struct Berry gBerries[] = .bitter = 0, .sour = 40, .smoothness = 60, + .drainRate = 7, }, [ITEM_KEE_BERRY - FIRST_BERRY_INDEX] = { .name = _("Kee"), .firmness = BERRY_FIRMNESS_UNKNOWN, + .color = BERRY_COLOR_YELLOW, .size = 0, .maxYield = 5, .minYield = 2, @@ -1350,12 +1481,14 @@ const struct Berry gBerries[] = .bitter = 10, .sour = 10, .smoothness = 60, + .drainRate = 7, }, [ITEM_MARANGA_BERRY - FIRST_BERRY_INDEX] = { .name = _("Marnga"), // "Maranga" is too long .firmness = BERRY_FIRMNESS_UNKNOWN, + .color = BERRY_COLOR_BLUE, .size = 0, .maxYield = 5, .minYield = 2, @@ -1368,12 +1501,14 @@ const struct Berry gBerries[] = .bitter = 30, .sour = 10, .smoothness = 60, + .drainRate = 7, }, [ITEM_ENIGMA_BERRY_E_READER - FIRST_BERRY_INDEX] = { .name = _("Enigma"), .firmness = BERRY_FIRMNESS_UNKNOWN, + .color = BERRY_COLOR_PURPLE, .size = 0, .maxYield = 2, .minYield = 1, @@ -1386,6 +1521,7 @@ const struct Berry gBerries[] = .bitter = 40, .sour = 40, .smoothness = 40, + .drainRate = 7, }, }; @@ -1758,7 +1894,7 @@ static u8 CalcBerryYield(struct BerryTree *tree) u8 min = berry->minYield; u8 max = berry->maxYield; u8 result = CalcBerryYieldInternal(max, min, BerryTreeGetNumStagesWatered(tree)); - if (OW_MULCH_USAGE && (tree->mulch == ITEM_TO_MULCH(ITEM_RICH_MULCH) || tree->mulch == ITEM_TO_MULCH(ITEM_AMAZE_MULCH))) + if (OW_BERRY_MULCH_USAGE && (tree->mulch == ITEM_TO_MULCH(ITEM_RICH_MULCH) || tree->mulch == ITEM_TO_MULCH(ITEM_AMAZE_MULCH))) result += 2; return result; @@ -1907,7 +2043,7 @@ void SetBerryTreesSeen(void) bool8 PlayerHasMulch(void) { - if (!OW_MULCH_USAGE) + if (!OW_BERRY_MULCH_USAGE) return FALSE; if (CheckBagHasItem(ITEM_GROWTH_MULCH, 1)) return TRUE; @@ -2035,3 +2171,32 @@ static void SetTreeMutations(u8 id, u8 berry) tree->mutationC = myMutation.asField.c; #endif } + +#if OW_BERRY_PESTS == TRUE +static u16 GetBerryPestSpecies(u8 berryId) +{ + const struct Berry *berry = GetBerryInfo(berryId); + switch(berry->color) + { + case BERRY_COLOR_RED: + return SPECIES_LEDYBA; + break; + case BERRY_COLOR_BLUE: + return SPECIES_VOLBEAT; + break; + case BERRY_COLOR_PURPLE: + return SPECIES_ILLUMISE; + break; + case BERRY_COLOR_GREEN: + return SPECIES_BURMY_PLANT_CLOAK; + break; + case BERRY_COLOR_YELLOW: + return SPECIES_COMBEE; + break; + case BERRY_COLOR_PINK: + return SPECIES_SPEWPA; + break; + } + return SPECIES_NONE; +} +#endif diff --git a/src/data/items.h b/src/data/items.h index f1cf2c95a5..62fd6a6484 100644 --- a/src/data/items.h +++ b/src/data/items.h @@ -2164,7 +2164,7 @@ const struct Item gItems[] = { .name = _("Growth Mulch"), .price = 200, - .description = OW_MULCH_USAGE ? sGrowthMulchDesc : sGenericMulchDesc, + .description = OW_BERRY_MULCH_USAGE ? sGrowthMulchDesc : sGenericMulchDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, @@ -2176,7 +2176,7 @@ const struct Item gItems[] = { .name = _("Damp Mulch"), .price = 200, - .description = OW_MULCH_USAGE ? sDampMulchDesc : sGenericMulchDesc, + .description = OW_BERRY_MULCH_USAGE ? sDampMulchDesc : sGenericMulchDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, @@ -2188,7 +2188,7 @@ const struct Item gItems[] = { .name = _("Stable Mulch"), .price = 200, - .description = OW_MULCH_USAGE ? sStableMulchDesc : sGenericMulchDesc, + .description = OW_BERRY_MULCH_USAGE ? sStableMulchDesc : sGenericMulchDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, @@ -2200,7 +2200,7 @@ const struct Item gItems[] = { .name = _("Gooey Mulch"), .price = 200, - .description = OW_MULCH_USAGE ? sGooeyMulchDesc : sGenericMulchDesc, + .description = OW_BERRY_MULCH_USAGE ? sGooeyMulchDesc : sGenericMulchDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, @@ -2212,7 +2212,7 @@ const struct Item gItems[] = { .name = _("Rich Mulch"), .price = 200, - .description = OW_MULCH_USAGE ? sRichMulchDesc : sGenericMulchDesc, + .description = OW_BERRY_MULCH_USAGE ? sRichMulchDesc : sGenericMulchDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, @@ -2224,7 +2224,7 @@ const struct Item gItems[] = { .name = _("SurprseMulch"), .price = 200, - .description = OW_MULCH_USAGE ? sSurpriseMulchDesc : sGenericMulchDesc, + .description = OW_BERRY_MULCH_USAGE ? sSurpriseMulchDesc : sGenericMulchDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, @@ -2236,7 +2236,7 @@ const struct Item gItems[] = { .name = _("Boost Mulch"), .price = 200, - .description = OW_MULCH_USAGE ? sBoostMulchDesc : sGenericMulchDesc, + .description = OW_BERRY_MULCH_USAGE ? sBoostMulchDesc : sGenericMulchDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, @@ -2248,7 +2248,7 @@ const struct Item gItems[] = { .name = _("Amaze Mulch"), .price = 200, - .description = OW_MULCH_USAGE ? sAmazeMulchDesc : sGenericMulchDesc, + .description = OW_BERRY_MULCH_USAGE ? sAmazeMulchDesc : sGenericMulchDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse,