diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/berry.c | 526 | ||||
-rw-r--r-- | src/bike.c | 91 | ||||
-rw-r--r-- | src/event_object_movement.c | 234 | ||||
-rw-r--r-- | src/item_menu.c | 2 |
4 files changed, 434 insertions, 419 deletions
diff --git a/src/berry.c b/src/berry.c index 6e7d4592c..cca07a6bb 100644 --- a/src/berry.c +++ b/src/berry.c @@ -1,7 +1,7 @@ #include "global.h" #include "berry.h" -#include "field_control_avatar.h" #include "event_object_movement.h" +#include "field_control_avatar.h" #include "fieldmap.h" #include "item.h" #include "item_menu.h" @@ -59,92 +59,92 @@ #define NAME_STARF_BERRY _("STARF") #define NAME_ENIGMA_BERRY _("ENIGMA") -static const u8 gBerryDescriptionPart1_Cheri[] = _("Blooms with delicate pretty flowers."); -static const u8 gBerryDescriptionPart2_Cheri[] = _("The bright red BERRY is very spicy."); -static const u8 gBerryDescriptionPart1_Chesto[] = _("The BERRY’s thick skin and fruit are"); -static const u8 gBerryDescriptionPart2_Chesto[] = _("very tough. It is dry-tasting all over."); -static const u8 gBerryDescriptionPart1_Pecha[] = _("Very sweet and delicious."); -static const u8 gBerryDescriptionPart2_Pecha[] = _("Also very tender - handle with care."); -static const u8 gBerryDescriptionPart1_Rawst[] = _("If the leaves grow long and curly,"); -static const u8 gBerryDescriptionPart2_Rawst[] = _("the BERRY seems to grow very bitter."); -static const u8 gBerryDescriptionPart1_Aspear[] = _("The hard BERRY is dense with a rich"); -static const u8 gBerryDescriptionPart2_Aspear[] = _("juice. It is quite sour."); -static const u8 gBerryDescriptionPart1_Leppa[] = _("Grows slower than CHERI and others."); -static const u8 gBerryDescriptionPart2_Leppa[] = _("The smaller the BERRY, the tastier."); -static const u8 gBerryDescriptionPart1_Oran[] = _("A peculiar BERRY with a mix of flavors."); -static const u8 gBerryDescriptionPart2_Oran[] = _("BERRIES grow in half a day."); -static const u8 gBerryDescriptionPart1_Persim[] = _("Loves sunlight. The BERRY’s color"); -static const u8 gBerryDescriptionPart2_Persim[] = _("grows vivid when exposed to the sun."); -static const u8 gBerryDescriptionPart1_Lum[] = _("Slow to grow. If raised with loving"); -static const u8 gBerryDescriptionPart2_Lum[] = _("care, it may grow two BERRIES."); -static const u8 gBerryDescriptionPart1_Sitrus[] = _("Closely related to ORAN. The large"); -static const u8 gBerryDescriptionPart2_Sitrus[] = _("BERRY has a well-rounded flavor."); -static const u8 gBerryDescriptionPart1_Figy[] = _("The BERRY, which looks chewed up,"); -static const u8 gBerryDescriptionPart2_Figy[] = _("brims with spicy substances."); -static const u8 gBerryDescriptionPart1_Wiki[] = _("The BERRY is said to have grown lumpy"); -static const u8 gBerryDescriptionPart2_Wiki[] = _("to help POKéMON grip it."); -static const u8 gBerryDescriptionPart1_Mago[] = _("The BERRY turns curvy as it grows."); -static const u8 gBerryDescriptionPart2_Mago[] = _("The curvier, the sweeter and tastier."); -static const u8 gBerryDescriptionPart1_Aguav[] = _("The flower is dainty. It is rare in its"); -static const u8 gBerryDescriptionPart2_Aguav[] = _("ability to grow without light."); -static const u8 gBerryDescriptionPart1_Iapapa[] = _("The BERRY is very big and sour."); -static const u8 gBerryDescriptionPart2_Iapapa[] = _("It takes at least a day to grow."); -static const u8 gBerryDescriptionPart1_Razz[] = _("The red BERRY tastes slightly spicy."); -static const u8 gBerryDescriptionPart2_Razz[] = _("It grows quickly in just four hours."); -static const u8 gBerryDescriptionPart1_Bluk[] = _("The BERRY is blue on the outside, but"); -static const u8 gBerryDescriptionPart2_Bluk[] = _("it blackens the mouth when eaten."); -static const u8 gBerryDescriptionPart1_Nanab[] = _("This BERRY was the seventh"); -static const u8 gBerryDescriptionPart2_Nanab[] = _("discovered in the world. It is sweet."); -static const u8 gBerryDescriptionPart1_Wepear[] = _("The flower is small and white. It has a"); -static const u8 gBerryDescriptionPart2_Wepear[] = _("delicate balance of bitter and sour."); -static const u8 gBerryDescriptionPart1_Pinap[] = _("Weak against wind and cold."); -static const u8 gBerryDescriptionPart2_Pinap[] = _("The fruit is spicy and the skin, sour."); -static const u8 gBerryDescriptionPart1_Pomeg[] = _("However much it is watered,"); -static const u8 gBerryDescriptionPart2_Pomeg[] = _("it only grows up to six BERRIES."); -static const u8 gBerryDescriptionPart1_Kelpsy[] = _("A rare variety shaped like a root."); -static const u8 gBerryDescriptionPart2_Kelpsy[] = _("Grows a very large flower."); -static const u8 gBerryDescriptionPart1_Qualot[] = _("Loves water. Grows strong even in"); -static const u8 gBerryDescriptionPart2_Qualot[] = _("locations with constant rainfall."); -static const u8 gBerryDescriptionPart1_Hondew[] = _("A BERRY that is very valuable and"); -static const u8 gBerryDescriptionPart2_Hondew[] = _("rarely seen. It is very delicious."); -static const u8 gBerryDescriptionPart1_Grepa[] = _("Despite its tenderness and round"); -static const u8 gBerryDescriptionPart2_Grepa[] = _("shape, the BERRY is unimaginably sour."); -static const u8 gBerryDescriptionPart1_Tamato[] = _("The BERRY is lip-bendingly spicy."); -static const u8 gBerryDescriptionPart2_Tamato[] = _("It takes time to grow."); -static const u8 gBerryDescriptionPart1_Cornn[] = _("A BERRY from an ancient era. May not"); -static const u8 gBerryDescriptionPart2_Cornn[] = _("grow unless planted in quantity."); -static const u8 gBerryDescriptionPart1_Magost[] = _("A BERRY that is widely said to have"); -static const u8 gBerryDescriptionPart2_Magost[] = _("a finely balanced flavor."); -static const u8 gBerryDescriptionPart1_Rabuta[] = _("A rare variety that is overgrown with"); -static const u8 gBerryDescriptionPart2_Rabuta[] = _("hair. It is quite bitter."); -static const u8 gBerryDescriptionPart1_Nomel[] = _("Quite sour. Just one bite makes it"); -static const u8 gBerryDescriptionPart2_Nomel[] = _("impossible to taste for three days."); -static const u8 gBerryDescriptionPart1_Spelon[] = _("The vividly red BERRY is very spicy."); -static const u8 gBerryDescriptionPart2_Spelon[] = _("Its warts secrete a spicy substance."); -static const u8 gBerryDescriptionPart1_Pamtre[] = _("Drifts on the sea from somewhere."); -static const u8 gBerryDescriptionPart2_Pamtre[] = _("It is thought to grow elsewhere."); -static const u8 gBerryDescriptionPart1_Watmel[] = _("A huge BERRY, with some over 20"); -static const u8 gBerryDescriptionPart2_Watmel[] = _("inches discovered. Exceedingly sweet."); -static const u8 gBerryDescriptionPart1_Durin[] = _("Bitter to even look at. It is so"); -static const u8 gBerryDescriptionPart2_Durin[] = _("bitter, no one has ever eaten it as is."); -static const u8 gBerryDescriptionPart1_Belue[] = _("It is glossy and looks delicious, but"); -static const u8 gBerryDescriptionPart2_Belue[] = _("it is awfully sour. Takes time to grow."); -static const u8 gBerryDescriptionPart1_Liechi[] = _("A mysterious BERRY. It is rumored to"); -static const u8 gBerryDescriptionPart2_Liechi[] = _("contain the power of the sea."); -static const u8 gBerryDescriptionPart1_Ganlon[] = _("A mysterious BERRY. It is rumored to"); -static const u8 gBerryDescriptionPart2_Ganlon[] = _("contain the power of the land."); -static const u8 gBerryDescriptionPart1_Salac[] = _("A mysterious BERRY. It is rumored to"); -static const u8 gBerryDescriptionPart2_Salac[] = _("contain the power of the sky."); -static const u8 gBerryDescriptionPart1_Petaya[] = _("A mysterious BERRY. It is rumored to"); -static const u8 gBerryDescriptionPart2_Petaya[] = _("contain the power of all living things."); -static const u8 gBerryDescriptionPart1_Apicot[] = _("A very mystifying BERRY. No telling"); -static const u8 gBerryDescriptionPart2_Apicot[] = _("what may happen or how it can be used."); -static const u8 gBerryDescriptionPart1_Lansat[] = _("Said to be a legendary BERRY."); -static const u8 gBerryDescriptionPart2_Lansat[] = _("Holding it supposedly brings joy."); -static const u8 gBerryDescriptionPart1_Starf[] = _("So strong, it was abandoned at the"); -static const u8 gBerryDescriptionPart2_Starf[] = _("world’s edge. Considered a mirage."); -static const u8 gBerryDescriptionPart1_Enigma[] = _("A completely enigmatic BERRY."); -static const u8 gBerryDescriptionPart2_Enigma[] = _("Appears to have the power of stars."); +static const u8 sBerryDescriptionPart1_Cheri[] = _("Blooms with delicate pretty flowers."); +static const u8 sBerryDescriptionPart2_Cheri[] = _("The bright red BERRY is very spicy."); +static const u8 sBerryDescriptionPart1_Chesto[] = _("The BERRY’s thick skin and fruit are"); +static const u8 sBerryDescriptionPart2_Chesto[] = _("very tough. It is dry-tasting all over."); +static const u8 sBerryDescriptionPart1_Pecha[] = _("Very sweet and delicious."); +static const u8 sBerryDescriptionPart2_Pecha[] = _("Also very tender - handle with care."); +static const u8 sBerryDescriptionPart1_Rawst[] = _("If the leaves grow long and curly,"); +static const u8 sBerryDescriptionPart2_Rawst[] = _("the BERRY seems to grow very bitter."); +static const u8 sBerryDescriptionPart1_Aspear[] = _("The hard BERRY is dense with a rich"); +static const u8 sBerryDescriptionPart2_Aspear[] = _("juice. It is quite sour."); +static const u8 sBerryDescriptionPart1_Leppa[] = _("Grows slower than CHERI and others."); +static const u8 sBerryDescriptionPart2_Leppa[] = _("The smaller the BERRY, the tastier."); +static const u8 sBerryDescriptionPart1_Oran[] = _("A peculiar BERRY with a mix of flavors."); +static const u8 sBerryDescriptionPart2_Oran[] = _("BERRIES grow in half a day."); +static const u8 sBerryDescriptionPart1_Persim[] = _("Loves sunlight. The BERRY’s color"); +static const u8 sBerryDescriptionPart2_Persim[] = _("grows vivid when exposed to the sun."); +static const u8 sBerryDescriptionPart1_Lum[] = _("Slow to grow. If raised with loving"); +static const u8 sBerryDescriptionPart2_Lum[] = _("care, it may grow two BERRIES."); +static const u8 sBerryDescriptionPart1_Sitrus[] = _("Closely related to ORAN. The large"); +static const u8 sBerryDescriptionPart2_Sitrus[] = _("BERRY has a well-rounded flavor."); +static const u8 sBerryDescriptionPart1_Figy[] = _("The BERRY, which looks chewed up,"); +static const u8 sBerryDescriptionPart2_Figy[] = _("brims with spicy substances."); +static const u8 sBerryDescriptionPart1_Wiki[] = _("The BERRY is said to have grown lumpy"); +static const u8 sBerryDescriptionPart2_Wiki[] = _("to help POKéMON grip it."); +static const u8 sBerryDescriptionPart1_Mago[] = _("The BERRY turns curvy as it grows."); +static const u8 sBerryDescriptionPart2_Mago[] = _("The curvier, the sweeter and tastier."); +static const u8 sBerryDescriptionPart1_Aguav[] = _("The flower is dainty. It is rare in its"); +static const u8 sBerryDescriptionPart2_Aguav[] = _("ability to grow without light."); +static const u8 sBerryDescriptionPart1_Iapapa[] = _("The BERRY is very big and sour."); +static const u8 sBerryDescriptionPart2_Iapapa[] = _("It takes at least a day to grow."); +static const u8 sBerryDescriptionPart1_Razz[] = _("The red BERRY tastes slightly spicy."); +static const u8 sBerryDescriptionPart2_Razz[] = _("It grows quickly in just four hours."); +static const u8 sBerryDescriptionPart1_Bluk[] = _("The BERRY is blue on the outside, but"); +static const u8 sBerryDescriptionPart2_Bluk[] = _("it blackens the mouth when eaten."); +static const u8 sBerryDescriptionPart1_Nanab[] = _("This BERRY was the seventh"); +static const u8 sBerryDescriptionPart2_Nanab[] = _("discovered in the world. It is sweet."); +static const u8 sBerryDescriptionPart1_Wepear[] = _("The flower is small and white. It has a"); +static const u8 sBerryDescriptionPart2_Wepear[] = _("delicate balance of bitter and sour."); +static const u8 sBerryDescriptionPart1_Pinap[] = _("Weak against wind and cold."); +static const u8 sBerryDescriptionPart2_Pinap[] = _("The fruit is spicy and the skin, sour."); +static const u8 sBerryDescriptionPart1_Pomeg[] = _("However much it is watered,"); +static const u8 sBerryDescriptionPart2_Pomeg[] = _("it only grows up to six BERRIES."); +static const u8 sBerryDescriptionPart1_Kelpsy[] = _("A rare variety shaped like a root."); +static const u8 sBerryDescriptionPart2_Kelpsy[] = _("Grows a very large flower."); +static const u8 sBerryDescriptionPart1_Qualot[] = _("Loves water. Grows strong even in"); +static const u8 sBerryDescriptionPart2_Qualot[] = _("locations with constant rainfall."); +static const u8 sBerryDescriptionPart1_Hondew[] = _("A BERRY that is very valuable and"); +static const u8 sBerryDescriptionPart2_Hondew[] = _("rarely seen. It is very delicious."); +static const u8 sBerryDescriptionPart1_Grepa[] = _("Despite its tenderness and round"); +static const u8 sBerryDescriptionPart2_Grepa[] = _("shape, the BERRY is unimaginably sour."); +static const u8 sBerryDescriptionPart1_Tamato[] = _("The BERRY is lip-bendingly spicy."); +static const u8 sBerryDescriptionPart2_Tamato[] = _("It takes time to grow."); +static const u8 sBerryDescriptionPart1_Cornn[] = _("A BERRY from an ancient era. May not"); +static const u8 sBerryDescriptionPart2_Cornn[] = _("grow unless planted in quantity."); +static const u8 sBerryDescriptionPart1_Magost[] = _("A BERRY that is widely said to have"); +static const u8 sBerryDescriptionPart2_Magost[] = _("a finely balanced flavor."); +static const u8 sBerryDescriptionPart1_Rabuta[] = _("A rare variety that is overgrown with"); +static const u8 sBerryDescriptionPart2_Rabuta[] = _("hair. It is quite bitter."); +static const u8 sBerryDescriptionPart1_Nomel[] = _("Quite sour. Just one bite makes it"); +static const u8 sBerryDescriptionPart2_Nomel[] = _("impossible to taste for three days."); +static const u8 sBerryDescriptionPart1_Spelon[] = _("The vividly red BERRY is very spicy."); +static const u8 sBerryDescriptionPart2_Spelon[] = _("Its warts secrete a spicy substance."); +static const u8 sBerryDescriptionPart1_Pamtre[] = _("Drifts on the sea from somewhere."); +static const u8 sBerryDescriptionPart2_Pamtre[] = _("It is thought to grow elsewhere."); +static const u8 sBerryDescriptionPart1_Watmel[] = _("A huge BERRY, with some over 20"); +static const u8 sBerryDescriptionPart2_Watmel[] = _("inches discovered. Exceedingly sweet."); +static const u8 sBerryDescriptionPart1_Durin[] = _("Bitter to even look at. It is so"); +static const u8 sBerryDescriptionPart2_Durin[] = _("bitter, no one has ever eaten it as is."); +static const u8 sBerryDescriptionPart1_Belue[] = _("It is glossy and looks delicious, but"); +static const u8 sBerryDescriptionPart2_Belue[] = _("it is awfully sour. Takes time to grow."); +static const u8 sBerryDescriptionPart1_Liechi[] = _("A mysterious BERRY. It is rumored to"); +static const u8 sBerryDescriptionPart2_Liechi[] = _("contain the power of the sea."); +static const u8 sBerryDescriptionPart1_Ganlon[] = _("A mysterious BERRY. It is rumored to"); +static const u8 sBerryDescriptionPart2_Ganlon[] = _("contain the power of the land."); +static const u8 sBerryDescriptionPart1_Salac[] = _("A mysterious BERRY. It is rumored to"); +static const u8 sBerryDescriptionPart2_Salac[] = _("contain the power of the sky."); +static const u8 sBerryDescriptionPart1_Petaya[] = _("A mysterious BERRY. It is rumored to"); +static const u8 sBerryDescriptionPart2_Petaya[] = _("contain the power of all living things."); +static const u8 sBerryDescriptionPart1_Apicot[] = _("A very mystifying BERRY. No telling"); +static const u8 sBerryDescriptionPart2_Apicot[] = _("what may happen or how it can be used."); +static const u8 sBerryDescriptionPart1_Lansat[] = _("Said to be a legendary BERRY."); +static const u8 sBerryDescriptionPart2_Lansat[] = _("Holding it supposedly brings joy."); +static const u8 sBerryDescriptionPart1_Starf[] = _("So strong, it was abandoned at the"); +static const u8 sBerryDescriptionPart2_Starf[] = _("world’s edge. Considered a mirage."); +static const u8 sBerryDescriptionPart1_Enigma[] = _("A completely enigmatic BERRY."); +static const u8 sBerryDescriptionPart2_Enigma[] = _("Appears to have the power of stars."); #elif defined(GERMAN) #define NAME_CHERI_BERRY _("AMRENA") #define NAME_CHESTO_BERRY _("MARON") @@ -190,92 +190,92 @@ static const u8 gBerryDescriptionPart2_Enigma[] = _("Appears to have the power o #define NAME_STARF_BERRY _("KRAMBO") #define NAME_ENIGMA_BERRY _("ENIGMA") -static const u8 gBerryDescriptionPart1_Cheri[] = _("Erblüht mit hübschen, zarten Blumen."); -static const u8 gBerryDescriptionPart2_Cheri[] = _("Diese knallrote BEERE ist sehr scharf."); -static const u8 gBerryDescriptionPart1_Chesto[] = _("Diese BEERE hat eine dicke Haut und"); -static const u8 gBerryDescriptionPart2_Chesto[] = _("hartes Fruchtfleisch. Trocken!"); -static const u8 gBerryDescriptionPart1_Pecha[] = _("Sehr süß und delikat."); -static const u8 gBerryDescriptionPart2_Pecha[] = _("Sehr zart. Vorsichtig anfassen!"); -static const u8 gBerryDescriptionPart1_Rawst[] = _("Wenn die Blätter lang und wellig sind,"); -static const u8 gBerryDescriptionPart2_Rawst[] = _("wird die BEERE sehr bitter."); -static const u8 gBerryDescriptionPart1_Aspear[] = _("Diese harte BEERE ist sehr"); -static const u8 gBerryDescriptionPart2_Aspear[] = _("saftig und sauer im Geschmack!"); -static const u8 gBerryDescriptionPart1_Leppa[] = _("Wächst langsamer als AMRENA und"); -static const u8 gBerryDescriptionPart2_Leppa[] = _("andere. Je kleiner, desto delikater."); -static const u8 gBerryDescriptionPart1_Oran[] = _("Eine BEERE unterschiedlichsten Ge-"); -static const u8 gBerryDescriptionPart2_Oran[] = _("schmacks. Wächst an einem halben Tag."); -static const u8 gBerryDescriptionPart1_Persim[] = _("Liebt Sonnenlicht. Die BEERE"); -static const u8 gBerryDescriptionPart2_Persim[] = _("wächst im Sonnenlicht sehr schnell."); -static const u8 gBerryDescriptionPart1_Lum[] = _("Langsamer Wuchs. Wird sie liebevoll ge-"); -static const u8 gBerryDescriptionPart2_Lum[] = _("pflegt, kann sie 2 BEEREN tragen."); -static const u8 gBerryDescriptionPart1_Sitrus[] = _("Eng verwandt mit SINEL. Diese große"); -static const u8 gBerryDescriptionPart2_Sitrus[] = _("BEERE ist von rundem Geschmack."); -static const u8 gBerryDescriptionPart1_Figy[] = _("Die BEERE sieht angekaut aus. Sie ist"); -static const u8 gBerryDescriptionPart2_Figy[] = _("voller scharfer Substanzen."); -static const u8 gBerryDescriptionPart1_Wiki[] = _("Die BEERE wächst unförmig,"); -static const u8 gBerryDescriptionPart2_Wiki[] = _("damit PKMN sie besser greifen können."); -static const u8 gBerryDescriptionPart1_Mago[] = _("Die BEERE hat Ausbeulungen. Je mehr"); -static const u8 gBerryDescriptionPart2_Mago[] = _("Beulen, desto schmackhafter ist sie."); -static const u8 gBerryDescriptionPart1_Aguav[] = _("Die Blume ist zart. Sie ist fähig,"); -static const u8 gBerryDescriptionPart2_Aguav[] = _("ohne Licht wachsen zu können."); -static const u8 gBerryDescriptionPart1_Iapapa[] = _("Die BEERE ist groß und sauer."); -static const u8 gBerryDescriptionPart2_Iapapa[] = _("Sie braucht einen Tag zum Wachsen."); -static const u8 gBerryDescriptionPart1_Razz[] = _("Diese rote BEERE schmeckt etwas"); -static const u8 gBerryDescriptionPart2_Razz[] = _("scharf. Sie wächst in nur 4 Stunden."); -static const u8 gBerryDescriptionPart1_Bluk[] = _("Die BEERE ist außen blau, verfärbt"); -static const u8 gBerryDescriptionPart2_Bluk[] = _("sich im Mund aber schwarz."); -static const u8 gBerryDescriptionPart1_Nanab[] = _("Diese BEERE war die 7., die auf der"); -static const u8 gBerryDescriptionPart2_Nanab[] = _("Welt entdeckt wurde. Sie ist süß."); -static const u8 gBerryDescriptionPart1_Wepear[] = _("Die Blume ist klein und weiß. Angenehm"); -static const u8 gBerryDescriptionPart2_Wepear[] = _("bitter und sauer zugleich."); -static const u8 gBerryDescriptionPart1_Pinap[] = _("Wind und Kälte verträgt sie nicht."); -static const u8 gBerryDescriptionPart2_Pinap[] = _("Fruchtfleisch: Scharf. Haut: Sauer."); -static const u8 gBerryDescriptionPart1_Pomeg[] = _("Egal wie viel Wasser sie bekommt, sie"); -static const u8 gBerryDescriptionPart2_Pomeg[] = _("trägt immer bis zu 6 BEEREN."); -static const u8 gBerryDescriptionPart1_Kelpsy[] = _("Eine Seltenheit. Geformt wie eine"); -static const u8 gBerryDescriptionPart2_Kelpsy[] = _("Wurzel. Hat eine große Blume."); -static const u8 gBerryDescriptionPart1_Qualot[] = _("Liebt das Wasser. Wächst besonders"); -static const u8 gBerryDescriptionPart2_Qualot[] = _("gut in regenreichen Gegenden."); -static const u8 gBerryDescriptionPart1_Hondew[] = _("Eine wertvolle und seltene BEERE."); -static const u8 gBerryDescriptionPart2_Hondew[] = _("Sie ist sehr schmackhaft."); -static const u8 gBerryDescriptionPart1_Grepa[] = _("Die BEERE ist zart und von runder"); -static const u8 gBerryDescriptionPart2_Grepa[] = _("Form. Aber sie ist unglaublich sauer!"); -static const u8 gBerryDescriptionPart1_Tamato[] = _("Die Schärfe der BEERE verbrennt die"); -static const u8 gBerryDescriptionPart2_Tamato[] = _("Lippen. Sie braucht Zeit zum Wachsen."); -static const u8 gBerryDescriptionPart1_Cornn[] = _("Eine BEERE aus alten Zeiten. Wächst"); -static const u8 gBerryDescriptionPart2_Cornn[] = _("nur, wenn in großen Mengen gepflanzt."); -static const u8 gBerryDescriptionPart1_Magost[] = _("Eine BEERE, die für ihren feinen, aus-"); -static const u8 gBerryDescriptionPart2_Magost[] = _("gewogenen Geschmack bekannt ist."); -static const u8 gBerryDescriptionPart1_Rabuta[] = _("Eine Seltenheit, die über und über mit"); -static const u8 gBerryDescriptionPart2_Rabuta[] = _("Haaren bewachsen ist. Sehr bitter!"); -static const u8 gBerryDescriptionPart1_Nomel[] = _("Sehr sauer. Ein Biss betäubt die"); -static const u8 gBerryDescriptionPart2_Nomel[] = _("Geschmacksnerven für 3 Tage!"); -static const u8 gBerryDescriptionPart1_Spelon[] = _("Die leuchtend rote BEERE ist sehr"); -static const u8 gBerryDescriptionPart2_Spelon[] = _("scharf. Gibt scharfe Substanzen ab!"); -static const u8 gBerryDescriptionPart1_Pamtre[] = _("Wird vom Meer angespült. Sie wächst"); -static const u8 gBerryDescriptionPart2_Pamtre[] = _("an einem anderen Ort."); -static const u8 gBerryDescriptionPart1_Watmel[] = _("Eine große BEERE, 25 cm groß."); -static const u8 gBerryDescriptionPart2_Watmel[] = _("Außergewöhnlich süß."); -static const u8 gBerryDescriptionPart1_Durin[] = _("Bitter schon ihr Anblick! Sie ist so"); -static const u8 gBerryDescriptionPart2_Durin[] = _("bitter, dass niemand sie pur isst."); -static const u8 gBerryDescriptionPart1_Belue[] = _("Sie glänzt, sieht zart aus, ist extrem"); -static const u8 gBerryDescriptionPart2_Belue[] = _("sauer und braucht Zeit zum Wachsen."); -static const u8 gBerryDescriptionPart1_Liechi[] = _("Eine geheimnisvolle BEERE. Man sagt,"); -static const u8 gBerryDescriptionPart2_Liechi[] = _("sie enthalte die Kraft des Meeres."); -static const u8 gBerryDescriptionPart1_Ganlon[] = _("Eine geheimnisvolle BEERE. Man sagt,"); -static const u8 gBerryDescriptionPart2_Ganlon[] = _("sie enthalte die Kraft des Landes."); -static const u8 gBerryDescriptionPart1_Salac[] = _("Eine geheimnisvolle BEERE. Man sagt,"); -static const u8 gBerryDescriptionPart2_Salac[] = _("sie enthalte die Kraft des Himmels."); -static const u8 gBerryDescriptionPart1_Petaya[] = _("Eine geheimnisvolle BEERE. Man sagt,"); -static const u8 gBerryDescriptionPart2_Petaya[] = _("sie enthalte die Kraft allen Lebens."); -static const u8 gBerryDescriptionPart1_Apicot[] = _("Eine rätselhafte BEERE. Man kann"); -static const u8 gBerryDescriptionPart2_Apicot[] = _("nicht sagen, wie und was sie ist."); -static const u8 gBerryDescriptionPart1_Lansat[] = _("Eine legendäre BEERE. Sie zu"); -static const u8 gBerryDescriptionPart2_Lansat[] = _("tragen bringt Freude."); -static const u8 gBerryDescriptionPart1_Starf[] = _("So stark, dass sie an den Rand der"); -static const u8 gBerryDescriptionPart2_Starf[] = _("Welt verbannt wurde. Ein Märchen?"); -static const u8 gBerryDescriptionPart1_Enigma[] = _("Eine enigmatische BEERE. Sie scheint"); -static const u8 gBerryDescriptionPart2_Enigma[] = _("die Macht der Sterne zu besitzen."); +static const u8 sBerryDescriptionPart1_Cheri[] = _("Erblüht mit hübschen, zarten Blumen."); +static const u8 sBerryDescriptionPart2_Cheri[] = _("Diese knallrote BEERE ist sehr scharf."); +static const u8 sBerryDescriptionPart1_Chesto[] = _("Diese BEERE hat eine dicke Haut und"); +static const u8 sBerryDescriptionPart2_Chesto[] = _("hartes Fruchtfleisch. Trocken!"); +static const u8 sBerryDescriptionPart1_Pecha[] = _("Sehr süß und delikat."); +static const u8 sBerryDescriptionPart2_Pecha[] = _("Sehr zart. Vorsichtig anfassen!"); +static const u8 sBerryDescriptionPart1_Rawst[] = _("Wenn die Blätter lang und wellig sind,"); +static const u8 sBerryDescriptionPart2_Rawst[] = _("wird die BEERE sehr bitter."); +static const u8 sBerryDescriptionPart1_Aspear[] = _("Diese harte BEERE ist sehr"); +static const u8 sBerryDescriptionPart2_Aspear[] = _("saftig und sauer im Geschmack!"); +static const u8 sBerryDescriptionPart1_Leppa[] = _("Wächst langsamer als AMRENA und"); +static const u8 sBerryDescriptionPart2_Leppa[] = _("andere. Je kleiner, desto delikater."); +static const u8 sBerryDescriptionPart1_Oran[] = _("Eine BEERE unterschiedlichsten Ge-"); +static const u8 sBerryDescriptionPart2_Oran[] = _("schmacks. Wächst an einem halben Tag."); +static const u8 sBerryDescriptionPart1_Persim[] = _("Liebt Sonnenlicht. Die BEERE"); +static const u8 sBerryDescriptionPart2_Persim[] = _("wächst im Sonnenlicht sehr schnell."); +static const u8 sBerryDescriptionPart1_Lum[] = _("Langsamer Wuchs. Wird sie liebevoll ge-"); +static const u8 sBerryDescriptionPart2_Lum[] = _("pflegt, kann sie 2 BEEREN tragen."); +static const u8 sBerryDescriptionPart1_Sitrus[] = _("Eng verwandt mit SINEL. Diese große"); +static const u8 sBerryDescriptionPart2_Sitrus[] = _("BEERE ist von rundem Geschmack."); +static const u8 sBerryDescriptionPart1_Figy[] = _("Die BEERE sieht angekaut aus. Sie ist"); +static const u8 sBerryDescriptionPart2_Figy[] = _("voller scharfer Substanzen."); +static const u8 sBerryDescriptionPart1_Wiki[] = _("Die BEERE wächst unförmig,"); +static const u8 sBerryDescriptionPart2_Wiki[] = _("damit PKMN sie besser greifen können."); +static const u8 sBerryDescriptionPart1_Mago[] = _("Die BEERE hat Ausbeulungen. Je mehr"); +static const u8 sBerryDescriptionPart2_Mago[] = _("Beulen, desto schmackhafter ist sie."); +static const u8 sBerryDescriptionPart1_Aguav[] = _("Die Blume ist zart. Sie ist fähig,"); +static const u8 sBerryDescriptionPart2_Aguav[] = _("ohne Licht wachsen zu können."); +static const u8 sBerryDescriptionPart1_Iapapa[] = _("Die BEERE ist groß und sauer."); +static const u8 sBerryDescriptionPart2_Iapapa[] = _("Sie braucht einen Tag zum Wachsen."); +static const u8 sBerryDescriptionPart1_Razz[] = _("Diese rote BEERE schmeckt etwas"); +static const u8 sBerryDescriptionPart2_Razz[] = _("scharf. Sie wächst in nur 4 Stunden."); +static const u8 sBerryDescriptionPart1_Bluk[] = _("Die BEERE ist außen blau, verfärbt"); +static const u8 sBerryDescriptionPart2_Bluk[] = _("sich im Mund aber schwarz."); +static const u8 sBerryDescriptionPart1_Nanab[] = _("Diese BEERE war die 7., die auf der"); +static const u8 sBerryDescriptionPart2_Nanab[] = _("Welt entdeckt wurde. Sie ist süß."); +static const u8 sBerryDescriptionPart1_Wepear[] = _("Die Blume ist klein und weiß. Angenehm"); +static const u8 sBerryDescriptionPart2_Wepear[] = _("bitter und sauer zugleich."); +static const u8 sBerryDescriptionPart1_Pinap[] = _("Wind und Kälte verträgt sie nicht."); +static const u8 sBerryDescriptionPart2_Pinap[] = _("Fruchtfleisch: Scharf. Haut: Sauer."); +static const u8 sBerryDescriptionPart1_Pomeg[] = _("Egal wie viel Wasser sie bekommt, sie"); +static const u8 sBerryDescriptionPart2_Pomeg[] = _("trägt immer bis zu 6 BEEREN."); +static const u8 sBerryDescriptionPart1_Kelpsy[] = _("Eine Seltenheit. Geformt wie eine"); +static const u8 sBerryDescriptionPart2_Kelpsy[] = _("Wurzel. Hat eine große Blume."); +static const u8 sBerryDescriptionPart1_Qualot[] = _("Liebt das Wasser. Wächst besonders"); +static const u8 sBerryDescriptionPart2_Qualot[] = _("gut in regenreichen Gegenden."); +static const u8 sBerryDescriptionPart1_Hondew[] = _("Eine wertvolle und seltene BEERE."); +static const u8 sBerryDescriptionPart2_Hondew[] = _("Sie ist sehr schmackhaft."); +static const u8 sBerryDescriptionPart1_Grepa[] = _("Die BEERE ist zart und von runder"); +static const u8 sBerryDescriptionPart2_Grepa[] = _("Form. Aber sie ist unglaublich sauer!"); +static const u8 sBerryDescriptionPart1_Tamato[] = _("Die Schärfe der BEERE verbrennt die"); +static const u8 sBerryDescriptionPart2_Tamato[] = _("Lippen. Sie braucht Zeit zum Wachsen."); +static const u8 sBerryDescriptionPart1_Cornn[] = _("Eine BEERE aus alten Zeiten. Wächst"); +static const u8 sBerryDescriptionPart2_Cornn[] = _("nur, wenn in großen Mengen gepflanzt."); +static const u8 sBerryDescriptionPart1_Magost[] = _("Eine BEERE, die für ihren feinen, aus-"); +static const u8 sBerryDescriptionPart2_Magost[] = _("gewogenen Geschmack bekannt ist."); +static const u8 sBerryDescriptionPart1_Rabuta[] = _("Eine Seltenheit, die über und über mit"); +static const u8 sBerryDescriptionPart2_Rabuta[] = _("Haaren bewachsen ist. Sehr bitter!"); +static const u8 sBerryDescriptionPart1_Nomel[] = _("Sehr sauer. Ein Biss betäubt die"); +static const u8 sBerryDescriptionPart2_Nomel[] = _("Geschmacksnerven für 3 Tage!"); +static const u8 sBerryDescriptionPart1_Spelon[] = _("Die leuchtend rote BEERE ist sehr"); +static const u8 sBerryDescriptionPart2_Spelon[] = _("scharf. Gibt scharfe Substanzen ab!"); +static const u8 sBerryDescriptionPart1_Pamtre[] = _("Wird vom Meer angespült. Sie wächst"); +static const u8 sBerryDescriptionPart2_Pamtre[] = _("an einem anderen Ort."); +static const u8 sBerryDescriptionPart1_Watmel[] = _("Eine große BEERE, 25 cm groß."); +static const u8 sBerryDescriptionPart2_Watmel[] = _("Außergewöhnlich süß."); +static const u8 sBerryDescriptionPart1_Durin[] = _("Bitter schon ihr Anblick! Sie ist so"); +static const u8 sBerryDescriptionPart2_Durin[] = _("bitter, dass niemand sie pur isst."); +static const u8 sBerryDescriptionPart1_Belue[] = _("Sie glänzt, sieht zart aus, ist extrem"); +static const u8 sBerryDescriptionPart2_Belue[] = _("sauer und braucht Zeit zum Wachsen."); +static const u8 sBerryDescriptionPart1_Liechi[] = _("Eine geheimnisvolle BEERE. Man sagt,"); +static const u8 sBerryDescriptionPart2_Liechi[] = _("sie enthalte die Kraft des Meeres."); +static const u8 sBerryDescriptionPart1_Ganlon[] = _("Eine geheimnisvolle BEERE. Man sagt,"); +static const u8 sBerryDescriptionPart2_Ganlon[] = _("sie enthalte die Kraft des Landes."); +static const u8 sBerryDescriptionPart1_Salac[] = _("Eine geheimnisvolle BEERE. Man sagt,"); +static const u8 sBerryDescriptionPart2_Salac[] = _("sie enthalte die Kraft des Himmels."); +static const u8 sBerryDescriptionPart1_Petaya[] = _("Eine geheimnisvolle BEERE. Man sagt,"); +static const u8 sBerryDescriptionPart2_Petaya[] = _("sie enthalte die Kraft allen Lebens."); +static const u8 sBerryDescriptionPart1_Apicot[] = _("Eine rätselhafte BEERE. Man kann"); +static const u8 sBerryDescriptionPart2_Apicot[] = _("nicht sagen, wie und was sie ist."); +static const u8 sBerryDescriptionPart1_Lansat[] = _("Eine legendäre BEERE. Sie zu"); +static const u8 sBerryDescriptionPart2_Lansat[] = _("tragen bringt Freude."); +static const u8 sBerryDescriptionPart1_Starf[] = _("So stark, dass sie an den Rand der"); +static const u8 sBerryDescriptionPart2_Starf[] = _("Welt verbannt wurde. Ein Märchen?"); +static const u8 sBerryDescriptionPart1_Enigma[] = _("Eine enigmatische BEERE. Sie scheint"); +static const u8 sBerryDescriptionPart2_Enigma[] = _("die Macht der Sterne zu besitzen."); #endif const struct Berry gBerries[] = @@ -286,8 +286,8 @@ const struct Berry gBerries[] = .size = 20, .maxYield = 3, .minYield = 2, - .description1 = gBerryDescriptionPart1_Cheri, - .description2 = gBerryDescriptionPart2_Cheri, + .description1 = sBerryDescriptionPart1_Cheri, + .description2 = sBerryDescriptionPart2_Cheri, .stageDuration = 3, .spicy = 10, .dry = 0, @@ -302,8 +302,8 @@ const struct Berry gBerries[] = .size = 80, .maxYield = 3, .minYield = 2, - .description1 = gBerryDescriptionPart1_Chesto, - .description2 = gBerryDescriptionPart2_Chesto, + .description1 = sBerryDescriptionPart1_Chesto, + .description2 = sBerryDescriptionPart2_Chesto, .stageDuration = 3, .spicy = 0, .dry = 10, @@ -318,8 +318,8 @@ const struct Berry gBerries[] = .size = 40, .maxYield = 3, .minYield = 2, - .description1 = gBerryDescriptionPart1_Pecha, - .description2 = gBerryDescriptionPart2_Pecha, + .description1 = sBerryDescriptionPart1_Pecha, + .description2 = sBerryDescriptionPart2_Pecha, .stageDuration = 3, .spicy = 0, .dry = 0, @@ -334,8 +334,8 @@ const struct Berry gBerries[] = .size = 32, .maxYield = 3, .minYield = 2, - .description1 = gBerryDescriptionPart1_Rawst, - .description2 = gBerryDescriptionPart2_Rawst, + .description1 = sBerryDescriptionPart1_Rawst, + .description2 = sBerryDescriptionPart2_Rawst, .stageDuration = 3, .spicy = 0, .dry = 0, @@ -350,8 +350,8 @@ const struct Berry gBerries[] = .size = 50, .maxYield = 3, .minYield = 2, - .description1 = gBerryDescriptionPart1_Aspear, - .description2 = gBerryDescriptionPart2_Aspear, + .description1 = sBerryDescriptionPart1_Aspear, + .description2 = sBerryDescriptionPart2_Aspear, .stageDuration = 3, .spicy = 0, .dry = 0, @@ -366,8 +366,8 @@ const struct Berry gBerries[] = .size = 28, .maxYield = 3, .minYield = 2, - .description1 = gBerryDescriptionPart1_Leppa, - .description2 = gBerryDescriptionPart2_Leppa, + .description1 = sBerryDescriptionPart1_Leppa, + .description2 = sBerryDescriptionPart2_Leppa, .stageDuration = 4, .spicy = 10, .dry = 0, @@ -382,8 +382,8 @@ const struct Berry gBerries[] = .size = 35, .maxYield = 3, .minYield = 2, - .description1 = gBerryDescriptionPart1_Oran, - .description2 = gBerryDescriptionPart2_Oran, + .description1 = sBerryDescriptionPart1_Oran, + .description2 = sBerryDescriptionPart2_Oran, .stageDuration = 3, .spicy = 10, .dry = 10, @@ -398,8 +398,8 @@ const struct Berry gBerries[] = .size = 47, .maxYield = 3, .minYield = 2, - .description1 = gBerryDescriptionPart1_Persim, - .description2 = gBerryDescriptionPart2_Persim, + .description1 = sBerryDescriptionPart1_Persim, + .description2 = sBerryDescriptionPart2_Persim, .stageDuration = 3, .spicy = 10, .dry = 10, @@ -414,8 +414,8 @@ const struct Berry gBerries[] = .size = 34, .maxYield = 2, .minYield = 1, - .description1 = gBerryDescriptionPart1_Lum, - .description2 = gBerryDescriptionPart2_Lum, + .description1 = sBerryDescriptionPart1_Lum, + .description2 = sBerryDescriptionPart2_Lum, .stageDuration = 12, .spicy = 10, .dry = 10, @@ -430,8 +430,8 @@ const struct Berry gBerries[] = .size = 95, .maxYield = 3, .minYield = 2, - .description1 = gBerryDescriptionPart1_Sitrus, - .description2 = gBerryDescriptionPart2_Sitrus, + .description1 = sBerryDescriptionPart1_Sitrus, + .description2 = sBerryDescriptionPart2_Sitrus, .stageDuration = 6, .spicy = 10, .dry = 10, @@ -446,8 +446,8 @@ const struct Berry gBerries[] = .size = 100, .maxYield = 3, .minYield = 2, - .description1 = gBerryDescriptionPart1_Figy, - .description2 = gBerryDescriptionPart2_Figy, + .description1 = sBerryDescriptionPart1_Figy, + .description2 = sBerryDescriptionPart2_Figy, .stageDuration = 6, .spicy = 10, .dry = 0, @@ -462,8 +462,8 @@ const struct Berry gBerries[] = .size = 115, .maxYield = 3, .minYield = 2, - .description1 = gBerryDescriptionPart1_Wiki, - .description2 = gBerryDescriptionPart2_Wiki, + .description1 = sBerryDescriptionPart1_Wiki, + .description2 = sBerryDescriptionPart2_Wiki, .stageDuration = 6, .spicy = 0, .dry = 10, @@ -478,8 +478,8 @@ const struct Berry gBerries[] = .size = 126, .maxYield = 3, .minYield = 2, - .description1 = gBerryDescriptionPart1_Mago, - .description2 = gBerryDescriptionPart2_Mago, + .description1 = sBerryDescriptionPart1_Mago, + .description2 = sBerryDescriptionPart2_Mago, .stageDuration = 6, .spicy = 0, .dry = 0, @@ -494,8 +494,8 @@ const struct Berry gBerries[] = .size = 64, .maxYield = 3, .minYield = 2, - .description1 = gBerryDescriptionPart1_Aguav, - .description2 = gBerryDescriptionPart2_Aguav, + .description1 = sBerryDescriptionPart1_Aguav, + .description2 = sBerryDescriptionPart2_Aguav, .stageDuration = 6, .spicy = 0, .dry = 0, @@ -510,8 +510,8 @@ const struct Berry gBerries[] = .size = 223, .maxYield = 3, .minYield = 2, - .description1 = gBerryDescriptionPart1_Iapapa, - .description2 = gBerryDescriptionPart2_Iapapa, + .description1 = sBerryDescriptionPart1_Iapapa, + .description2 = sBerryDescriptionPart2_Iapapa, .stageDuration = 6, .spicy = 0, .dry = 0, @@ -526,8 +526,8 @@ const struct Berry gBerries[] = .size = 120, .maxYield = 6, .minYield = 3, - .description1 = gBerryDescriptionPart1_Razz, - .description2 = gBerryDescriptionPart2_Razz, + .description1 = sBerryDescriptionPart1_Razz, + .description2 = sBerryDescriptionPart2_Razz, .stageDuration = 1, .spicy = 10, .dry = 10, @@ -542,8 +542,8 @@ const struct Berry gBerries[] = .size = 108, .maxYield = 6, .minYield = 3, - .description1 = gBerryDescriptionPart1_Bluk, - .description2 = gBerryDescriptionPart2_Bluk, + .description1 = sBerryDescriptionPart1_Bluk, + .description2 = sBerryDescriptionPart2_Bluk, .stageDuration = 1, .spicy = 0, .dry = 10, @@ -558,8 +558,8 @@ const struct Berry gBerries[] = .size = 77, .maxYield = 6, .minYield = 3, - .description1 = gBerryDescriptionPart1_Nanab, - .description2 = gBerryDescriptionPart2_Nanab, + .description1 = sBerryDescriptionPart1_Nanab, + .description2 = sBerryDescriptionPart2_Nanab, .stageDuration = 1, .spicy = 0, .dry = 0, @@ -574,8 +574,8 @@ const struct Berry gBerries[] = .size = 74, .maxYield = 6, .minYield = 3, - .description1 = gBerryDescriptionPart1_Wepear, - .description2 = gBerryDescriptionPart2_Wepear, + .description1 = sBerryDescriptionPart1_Wepear, + .description2 = sBerryDescriptionPart2_Wepear, .stageDuration = 1, .spicy = 0, .dry = 0, @@ -590,8 +590,8 @@ const struct Berry gBerries[] = .size = 80, .maxYield = 6, .minYield = 3, - .description1 = gBerryDescriptionPart1_Pinap, - .description2 = gBerryDescriptionPart2_Pinap, + .description1 = sBerryDescriptionPart1_Pinap, + .description2 = sBerryDescriptionPart2_Pinap, .stageDuration = 1, .spicy = 10, .dry = 0, @@ -606,8 +606,8 @@ const struct Berry gBerries[] = .size = 135, .maxYield = 6, .minYield = 2, - .description1 = gBerryDescriptionPart1_Pomeg, - .description2 = gBerryDescriptionPart2_Pomeg, + .description1 = sBerryDescriptionPart1_Pomeg, + .description2 = sBerryDescriptionPart2_Pomeg, .stageDuration = 3, .spicy = 10, .dry = 0, @@ -622,8 +622,8 @@ const struct Berry gBerries[] = .size = 150, .maxYield = 6, .minYield = 2, - .description1 = gBerryDescriptionPart1_Kelpsy, - .description2 = gBerryDescriptionPart2_Kelpsy, + .description1 = sBerryDescriptionPart1_Kelpsy, + .description2 = sBerryDescriptionPart2_Kelpsy, .stageDuration = 3, .spicy = 0, .dry = 10, @@ -638,8 +638,8 @@ const struct Berry gBerries[] = .size = 110, .maxYield = 6, .minYield = 2, - .description1 = gBerryDescriptionPart1_Qualot, - .description2 = gBerryDescriptionPart2_Qualot, + .description1 = sBerryDescriptionPart1_Qualot, + .description2 = sBerryDescriptionPart2_Qualot, .stageDuration = 3, .spicy = 10, .dry = 0, @@ -654,8 +654,8 @@ const struct Berry gBerries[] = .size = 162, .maxYield = 6, .minYield = 2, - .description1 = gBerryDescriptionPart1_Hondew, - .description2 = gBerryDescriptionPart2_Hondew, + .description1 = sBerryDescriptionPart1_Hondew, + .description2 = sBerryDescriptionPart2_Hondew, .stageDuration = 3, .spicy = 10, .dry = 10, @@ -670,8 +670,8 @@ const struct Berry gBerries[] = .size = 149, .maxYield = 6, .minYield = 2, - .description1 = gBerryDescriptionPart1_Grepa, - .description2 = gBerryDescriptionPart2_Grepa, + .description1 = sBerryDescriptionPart1_Grepa, + .description2 = sBerryDescriptionPart2_Grepa, .stageDuration = 3, .spicy = 0, .dry = 10, @@ -686,8 +686,8 @@ const struct Berry gBerries[] = .size = 200, .maxYield = 4, .minYield = 2, - .description1 = gBerryDescriptionPart1_Tamato, - .description2 = gBerryDescriptionPart2_Tamato, + .description1 = sBerryDescriptionPart1_Tamato, + .description2 = sBerryDescriptionPart2_Tamato, .stageDuration = 6, .spicy = 20, .dry = 10, @@ -702,8 +702,8 @@ const struct Berry gBerries[] = .size = 75, .maxYield = 4, .minYield = 2, - .description1 = gBerryDescriptionPart1_Cornn, - .description2 = gBerryDescriptionPart2_Cornn, + .description1 = sBerryDescriptionPart1_Cornn, + .description2 = sBerryDescriptionPart2_Cornn, .stageDuration = 6, .spicy = 0, .dry = 20, @@ -718,8 +718,8 @@ const struct Berry gBerries[] = .size = 140, .maxYield = 4, .minYield = 2, - .description1 = gBerryDescriptionPart1_Magost, - .description2 = gBerryDescriptionPart2_Magost, + .description1 = sBerryDescriptionPart1_Magost, + .description2 = sBerryDescriptionPart2_Magost, .stageDuration = 6, .spicy = 0, .dry = 0, @@ -734,8 +734,8 @@ const struct Berry gBerries[] = .size = 226, .maxYield = 4, .minYield = 2, - .description1 = gBerryDescriptionPart1_Rabuta, - .description2 = gBerryDescriptionPart2_Rabuta, + .description1 = sBerryDescriptionPart1_Rabuta, + .description2 = sBerryDescriptionPart2_Rabuta, .stageDuration = 6, .spicy = 0, .dry = 0, @@ -750,8 +750,8 @@ const struct Berry gBerries[] = .size = 285, .maxYield = 4, .minYield = 2, - .description1 = gBerryDescriptionPart1_Nomel, - .description2 = gBerryDescriptionPart2_Nomel, + .description1 = sBerryDescriptionPart1_Nomel, + .description2 = sBerryDescriptionPart2_Nomel, .stageDuration = 6, .spicy = 10, .dry = 0, @@ -766,8 +766,8 @@ const struct Berry gBerries[] = .size = 133, .maxYield = 2, .minYield = 1, - .description1 = gBerryDescriptionPart1_Spelon, - .description2 = gBerryDescriptionPart2_Spelon, + .description1 = sBerryDescriptionPart1_Spelon, + .description2 = sBerryDescriptionPart2_Spelon, .stageDuration = 18, .spicy = 40, .dry = 10, @@ -782,8 +782,8 @@ const struct Berry gBerries[] = .size = 244, .maxYield = 2, .minYield = 1, - .description1 = gBerryDescriptionPart1_Pamtre, - .description2 = gBerryDescriptionPart2_Pamtre, + .description1 = sBerryDescriptionPart1_Pamtre, + .description2 = sBerryDescriptionPart2_Pamtre, .stageDuration = 18, .spicy = 0, .dry = 40, @@ -798,8 +798,8 @@ const struct Berry gBerries[] = .size = 250, .maxYield = 2, .minYield = 1, - .description1 = gBerryDescriptionPart1_Watmel, - .description2 = gBerryDescriptionPart2_Watmel, + .description1 = sBerryDescriptionPart1_Watmel, + .description2 = sBerryDescriptionPart2_Watmel, .stageDuration = 18, .spicy = 0, .dry = 0, @@ -814,8 +814,8 @@ const struct Berry gBerries[] = .size = 280, .maxYield = 2, .minYield = 1, - .description1 = gBerryDescriptionPart1_Durin, - .description2 = gBerryDescriptionPart2_Durin, + .description1 = sBerryDescriptionPart1_Durin, + .description2 = sBerryDescriptionPart2_Durin, .stageDuration = 18, .spicy = 0, .dry = 0, @@ -830,8 +830,8 @@ const struct Berry gBerries[] = .size = 300, .maxYield = 2, .minYield = 1, - .description1 = gBerryDescriptionPart1_Belue, - .description2 = gBerryDescriptionPart2_Belue, + .description1 = sBerryDescriptionPart1_Belue, + .description2 = sBerryDescriptionPart2_Belue, .stageDuration = 18, .spicy = 10, .dry = 0, @@ -846,8 +846,8 @@ const struct Berry gBerries[] = .size = 111, .maxYield = 2, .minYield = 1, - .description1 = gBerryDescriptionPart1_Liechi, - .description2 = gBerryDescriptionPart2_Liechi, + .description1 = sBerryDescriptionPart1_Liechi, + .description2 = sBerryDescriptionPart2_Liechi, .stageDuration = 24, .spicy = 40, .dry = 0, @@ -862,8 +862,8 @@ const struct Berry gBerries[] = .size = 33, .maxYield = 2, .minYield = 1, - .description1 = gBerryDescriptionPart1_Ganlon, - .description2 = gBerryDescriptionPart2_Ganlon, + .description1 = sBerryDescriptionPart1_Ganlon, + .description2 = sBerryDescriptionPart2_Ganlon, .stageDuration = 24, .spicy = 0, .dry = 40, @@ -878,8 +878,8 @@ const struct Berry gBerries[] = .size = 95, .maxYield = 2, .minYield = 1, - .description1 = gBerryDescriptionPart1_Salac, - .description2 = gBerryDescriptionPart2_Salac, + .description1 = sBerryDescriptionPart1_Salac, + .description2 = sBerryDescriptionPart2_Salac, .stageDuration = 24, .spicy = 0, .dry = 0, @@ -894,8 +894,8 @@ const struct Berry gBerries[] = .size = 237, .maxYield = 2, .minYield = 1, - .description1 = gBerryDescriptionPart1_Petaya, - .description2 = gBerryDescriptionPart2_Petaya, + .description1 = sBerryDescriptionPart1_Petaya, + .description2 = sBerryDescriptionPart2_Petaya, .stageDuration = 24, .spicy = 40, .dry = 0, @@ -910,8 +910,8 @@ const struct Berry gBerries[] = .size = 75, .maxYield = 2, .minYield = 1, - .description1 = gBerryDescriptionPart1_Apicot, - .description2 = gBerryDescriptionPart2_Apicot, + .description1 = sBerryDescriptionPart1_Apicot, + .description2 = sBerryDescriptionPart2_Apicot, .stageDuration = 24, .spicy = 0, .dry = 40, @@ -926,8 +926,8 @@ const struct Berry gBerries[] = .size = 97, .maxYield = 2, .minYield = 1, - .description1 = gBerryDescriptionPart1_Lansat, - .description2 = gBerryDescriptionPart2_Lansat, + .description1 = sBerryDescriptionPart1_Lansat, + .description2 = sBerryDescriptionPart2_Lansat, .stageDuration = 24, .spicy = 10, .dry = 10, @@ -942,8 +942,8 @@ const struct Berry gBerries[] = .size = 153, .maxYield = 2, .minYield = 1, - .description1 = gBerryDescriptionPart1_Starf, - .description2 = gBerryDescriptionPart2_Starf, + .description1 = sBerryDescriptionPart1_Starf, + .description2 = sBerryDescriptionPart2_Starf, .stageDuration = 24, .spicy = 10, .dry = 10, @@ -958,8 +958,8 @@ const struct Berry gBerries[] = .size = 0, .maxYield = 2, .minYield = 1, - .description1 = gBerryDescriptionPart1_Enigma, - .description2 = gBerryDescriptionPart2_Enigma, + .description1 = sBerryDescriptionPart1_Enigma, + .description2 = sBerryDescriptionPart2_Enigma, .stageDuration = 24, .spicy = 40, .dry = 40, @@ -1285,7 +1285,7 @@ void BerryTreeTimeUpdate(s32 minutesPassed) } } -void PlantBerryTree(u8 id, u8 berry, u8 stage, bool8 noSparkle) +void PlantBerryTree(u8 id, u8 berry, u8 stage, bool8 sparkle) { struct BerryTree *tree = GetBerryTreeInfo(id); @@ -1298,7 +1298,7 @@ void PlantBerryTree(u8 id, u8 berry, u8 stage, bool8 noSparkle) tree->berryYield = CalcBerryYield(tree); tree->minutesUntilNextStage *= 4; } - if (noSparkle == FALSE) + if (!sparkle) { tree->growthSparkle = TRUE; } @@ -1444,7 +1444,7 @@ void EventObjectInteractionGetBerryTreeData(void) void Berry_FadeAndGoToBerryBagMenu(void) { - SetMainCallback2(sub_80A68CC); + SetMainCallback2(CB2_ChooseBerry); } void EventObjectInteractionPlantBerryTree(void) @@ -1542,7 +1542,7 @@ void ResetBerryTreeSparkleFlags(void) top = cam_top + 3; right = cam_left + 14; bottom = top + 8; - for (i = 0; i < (u8)ARRAY_COUNT(gSaveBlock1.eventObjects); i++) + for (i = 0; i < EVENT_OBJECTS_COUNT; i++) { if (gEventObjects[i].active && gEventObjects[i].movementType == MOVEMENT_TYPE_BERRY_TREE_GROWTH) { diff --git a/src/bike.c b/src/bike.c index bf61d2aed..b1176997b 100644 --- a/src/bike.c +++ b/src/bike.c @@ -3,11 +3,11 @@ #include "event_object_movement.h" #include "field_player_avatar.h" #include "fieldmap.h" -#include "constants/flags.h" #include "global.fieldmap.h" #include "metatile_behavior.h" #include "overworld.h" #include "sound.h" +#include "constants/flags.h" #include "constants/map_types.h" #include "constants/songs.h" @@ -78,7 +78,7 @@ static void (*const sMachBikeTransitions[])(u8) = MachBikeTransition_TrySlowDown, }; -// bikeFrameCounter is input which is represented by gMachBikeSpeeds in order: 0 is normal speed (1 speed), 1 is fast speed (2 speed), 2 is fastest speed (4 speed) +// bikeFrameCounter is input which is represented by sMachBikeSpeeds in order: 0 is normal speed (1 speed), 1 is fast speed (2 speed), 2 is fastest speed (4 speed) static void (*const sMachBikeSpeedCallbacks[])(u8) = { PlayerGoSpeed1, // normal speed (1 speed) @@ -115,21 +115,22 @@ static u8 (*const sAcroBikeInputHandlers[])(u8 *, u16, u16) = }; // used with bikeFrameCounter from mach bike -const u16 gMachBikeSpeeds[] = {SPEED_NORMAL, SPEED_FAST, SPEED_FASTEST}; +static const u16 sMachBikeSpeeds[] = {SPEED_NORMAL, SPEED_FAST, SPEED_FASTEST}; // this is a list of timers to compare against later, terminated with 0. the only timer being compared against is 4 frames in this list. -static const u8 AcroBikeJumpTimerList[] = {4, 0}; +static const u8 sAcroBikeJumpTimerList[] = {4, 0}; // this is a list of history inputs to do in order to do the check to retrieve a jump direction for acro bike. it seems to be an extensible list, so its possible that Game Freak may have intended for the Acro Bike to have more complex tricks at some point. The final list only has the acro jump. -static const struct BikeHistoryInputInfo gAcroBikeTricksList[] = +static const struct BikeHistoryInputInfo sAcroBikeTricksList[] = { // the 0xF is a mask performed with each byte of the array in order to perform the check on only the last entry of the history list, otherwise the check wouldnt work as there can be 0xF0 as opposed to 0x0F. - {DIR_SOUTH, B_BUTTON, 0xF, 0xF, AcroBikeJumpTimerList, AcroBikeJumpTimerList, DIR_SOUTH}, - {DIR_NORTH, B_BUTTON, 0xF, 0xF, AcroBikeJumpTimerList, AcroBikeJumpTimerList, DIR_NORTH}, - {DIR_WEST, B_BUTTON, 0xF, 0xF, AcroBikeJumpTimerList, AcroBikeJumpTimerList, DIR_WEST}, - {DIR_EAST, B_BUTTON, 0xF, 0xF, AcroBikeJumpTimerList, AcroBikeJumpTimerList, DIR_EAST}, + {DIR_SOUTH, B_BUTTON, 0xF, 0xF, sAcroBikeJumpTimerList, sAcroBikeJumpTimerList, DIR_SOUTH}, + {DIR_NORTH, B_BUTTON, 0xF, 0xF, sAcroBikeJumpTimerList, sAcroBikeJumpTimerList, DIR_NORTH}, + {DIR_WEST, B_BUTTON, 0xF, 0xF, sAcroBikeJumpTimerList, sAcroBikeJumpTimerList, DIR_WEST}, + {DIR_EAST, B_BUTTON, 0xF, 0xF, sAcroBikeJumpTimerList, sAcroBikeJumpTimerList, DIR_EAST}, }; +// code void MovePlayerOnBike(u8 direction, u16 newKeys, u16 heldKeys) { if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_MACH_BIKE) @@ -253,31 +254,31 @@ static void MachBikeTransition_TrySpeedUp(u8 direction) } } -static void MachBikeTransition_TrySlowDown(u8 var) +static void MachBikeTransition_TrySlowDown(u8 direction) { u8 collision; if (gPlayerAvatar.bikeSpeed != SPEED_STANDING) gPlayerAvatar.bikeFrameCounter = --gPlayerAvatar.bikeSpeed; - collision = get_some_collision(var); + collision = get_some_collision(direction); if (collision > 0 && collision < 12) { if (collision == COLLISION_LEDGE_JUMP) { - PlayerJumpLedge(var); + PlayerJumpLedge(direction); } else { Bike_SetBikeStill(); if (collision < 5 || collision > 8) - PlayerOnBikeCollide(var); + PlayerOnBikeCollide(direction); } } else { - sMachBikeSpeedCallbacks[gPlayerAvatar.bikeFrameCounter](var); + sMachBikeSpeedCallbacks[gPlayerAvatar.bikeFrameCounter](direction); } } @@ -620,7 +621,7 @@ static void AcroBikeTransition_WheelieHoppingStanding(u8 direction) static void AcroBikeTransition_WheelieHoppingMoving(u8 direction) { - u8 var; + u8 collision; struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId]; if (CanBikeFaceDirOnMetatile(direction, playerEventObj->currentMetatileBehavior) == 0) @@ -628,19 +629,19 @@ static void AcroBikeTransition_WheelieHoppingMoving(u8 direction) AcroBikeTransition_WheelieHoppingStanding(playerEventObj->movementDirection); return; } - var = get_some_collision(direction); + collision = get_some_collision(direction); //TODO: Try to get rid of this goto - if (var == 0 || var == 9) + if (collision == 0 || collision == 9) { goto derp; } - else if (var == 6) + else if (collision == 6) { PlayerLedgeHoppingWheelie(direction); } - else if (var < 5 || var > 8) + else if (collision < 5 || collision > 8) { - if (var <= 11) + if (collision <= 11) { AcroBikeTransition_WheelieHoppingStanding(direction); } @@ -654,20 +655,20 @@ static void AcroBikeTransition_WheelieHoppingMoving(u8 direction) static void AcroBikeTransition_SideJump(u8 direction) { - u8 var; + u8 collision; struct EventObject *playerEventObj; - var = get_some_collision(direction); - if (var != 0) + collision = get_some_collision(direction); + if (collision != 0) { - if (var == 7) + if (collision == 7) return; - if (var < 10) + if (collision < 10) { AcroBikeTransition_TurnDirection(direction); return; } - if (WillPlayerCollideWithCollision(var, direction) == FALSE) + if (WillPlayerCollideWithCollision(collision, direction) == FALSE) { AcroBikeTransition_TurnDirection(direction); return; @@ -686,7 +687,7 @@ static void AcroBikeTransition_TurnJump(u8 direction) static void AcroBikeTransition_WheelieMoving(u8 direction) { - u8 var; + u8 collision; struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId]; if (CanBikeFaceDirOnMetatile(direction, playerEventObj->currentMetatileBehavior) == 0) @@ -694,18 +695,18 @@ static void AcroBikeTransition_WheelieMoving(u8 direction) PlayerIdleWheelie(playerEventObj->movementDirection); return; } - var = get_some_collision(direction); - if (var > 0 && var < 12) + collision = get_some_collision(direction); + if (collision > 0 && collision < 12) { - if (var == 6) + if (collision == 6) { PlayerLedgeHoppingWheelie(direction); } - else if (var == 9) + else if (collision == 9) { PlayerIdleWheelie(direction); } - else if (var <= 4) + else if (collision <= 4) { if (MetatileBehavior_IsBumpySlope(playerEventObj->currentMetatileBehavior)) PlayerIdleWheelie(direction); @@ -720,7 +721,7 @@ static void AcroBikeTransition_WheelieMoving(u8 direction) static void AcroBikeTransition_WheelieRisingMoving(u8 direction) { - u8 var; + u8 collision; struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId]; if (CanBikeFaceDirOnMetatile(direction, playerEventObj->currentMetatileBehavior) == 0) @@ -728,18 +729,18 @@ static void AcroBikeTransition_WheelieRisingMoving(u8 direction) PlayerStartWheelie(playerEventObj->movementDirection); return; } - var = get_some_collision(direction); - if (var > 0 && var < 12) + collision = get_some_collision(direction); + if (collision > 0 && collision < 12) { - if (var == 6) + if (collision == 6) { PlayerLedgeHoppingWheelie(direction); } - else if (var == 9) + else if (collision == 9) { PlayerIdleWheelie(direction); } - else if (var <= 4) + else if (collision <= 4) { if (MetatileBehavior_IsBumpySlope(playerEventObj->currentMetatileBehavior)) PlayerIdleWheelie(direction); @@ -830,9 +831,9 @@ static u8 AcroBike_GetJumpDirection(void) { u32 i; - for (i = 0; i < 4; i++) + for (i = 0; i < ARRAY_COUNT(sAcroBikeTricksList); i++) { - const struct BikeHistoryInputInfo *historyInputInfo = &gAcroBikeTricksList[i]; + const struct BikeHistoryInputInfo *historyInputInfo = &sAcroBikeTricksList[i]; u32 dirHistory = gPlayerAvatar.directionHistory; u32 abStartSelectHistory = gPlayerAvatar.abStartSelectHistory; @@ -936,14 +937,14 @@ static bool8 CanBikeFaceDirOnMetatile(u8 direction, u8 tile) { if (direction == DIR_EAST || direction == DIR_WEST) { - //Bike cannot face east or west on a vertical rail + // Bike cannot face east or west on a vertical rail if (MetatileBehavior_IsIsolatedVerticalRail(tile) || MetatileBehavior_IsVerticalRail(tile)) return FALSE; } else { - //Bike cannot face north or south on a horizontal rail + // Bike cannot face north or south on a horizontal rail if (MetatileBehavior_IsIsolatedHorizontalRail(tile) || MetatileBehavior_IsHorizontalRail(tile)) return FALSE; @@ -989,7 +990,7 @@ bool8 player_should_look_direction_be_enforced_upon_movement(void) return TRUE; } -void GetOnOffBike(u8 var) +void GetOnOffBike(u8 transitionFlags) { gUnusedBikeCameraAheadPanback = FALSE; @@ -1001,7 +1002,7 @@ void GetOnOffBike(u8 var) } else { - SetPlayerAvatarTransitionFlags(var); + SetPlayerAvatarTransitionFlags(transitionFlags); Overworld_SetSavedMusic(MUS_CYCLING); Overworld_ChangeMusicTo(MUS_CYCLING); } @@ -1042,7 +1043,7 @@ s16 GetPlayerSpeed(void) // because the player pressed a direction, it won't ever return a speed of 0 since this function returns the player's current speed. s16 machSpeeds[3]; - memcpy(machSpeeds, gMachBikeSpeeds, sizeof(machSpeeds)); + memcpy(machSpeeds, sMachBikeSpeeds, sizeof(machSpeeds)); if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_MACH_BIKE) return machSpeeds[gPlayerAvatar.bikeFrameCounter]; diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 21351434a..16b6e110e 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1,17 +1,17 @@ #include "global.h" -#include "event_object_movement.h" #include "berry.h" #include "event_data.h" +#include "event_object_movement.h" #include "field_camera.h" #include "field_effect.h" #include "field_effect_helpers.h" #include "field_player_avatar.h" #include "fieldmap.h" +#include "metatile_behavior.h" +#include "overworld.h" #include "palette.h" #include "random.h" -#include "overworld.h" #include "sprite.h" -#include "metatile_behavior.h" #include "trainer_see.h" #include "constants/field_effects.h" #include "constants/maps.h" @@ -62,6 +62,14 @@ static struct EventObjectTemplate *FindEventObjectTemplateByLocalId(u8, struct E static void UpdateEventObjectSpriteSubpriorityAndVisibility(struct Sprite *); static void InitObjectPriorityByZCoord(struct Sprite *sprite, u8 z); static void CreateReflectionEffectSprites(void); +static u8 GetEventObjectIdByLocalIdAndMapInternal(u8, u8, u8); +static u8 GetEventObjectIdByLocalId(u8); +static void RemoveEventObjectInternal(struct EventObject *); +static void MakeObjectTemplateFromEventObjectTemplate(struct EventObjectTemplate *eventObjTemplate, struct SpriteTemplate *sprTemplate, const struct SubspriteTable **subspriteTables); +static void RemoveEventObjectIfOutsideView(struct EventObject *eventObject); + +extern void SetPlayerAvatarEventObjectIdAndObjectId(u8, u8); +extern void sub_805B914(struct EventObject *); const u8 gReflectionEffectPaletteMap[] = {1, 1, 6, 7, 8, 9, 6, 7, 8, 9, 11, 11, 0, 0, 0, 0}; @@ -988,7 +996,7 @@ static void ClearAllEventObjects(void) { u8 i; - for (i = 0; i < 16; i++) + for (i = 0; i < EVENT_OBJECTS_COUNT; i++) ClearEventObject(&gEventObjects[i]); #if DEBUG gUnknown_Debug_03004BC0 = 0; @@ -1014,19 +1022,19 @@ static void CreateReflectionEffectSprites(void) gSprites[spriteId].oam.affineMode = 1; InitSpriteAffineAnim(&gSprites[spriteId]); StartSpriteAffineAnim(&gSprites[spriteId], 0); - gSprites[spriteId].invisible = 1; + gSprites[spriteId].invisible = TRUE; spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[21], 0, 0, 0x1F); gSprites[spriteId].oam.affineMode = 1; InitSpriteAffineAnim(&gSprites[spriteId]); StartSpriteAffineAnim(&gSprites[spriteId], 1); - gSprites[spriteId].invisible = 1; + gSprites[spriteId].invisible = TRUE; } u8 GetFirstInactiveEventObjectId(void) { u8 i; - for (i = 0; i < 16; i++) + for (i = 0; i < EVENT_OBJECTS_COUNT; i++) { if (!gEventObjects[i].active) break; @@ -1037,7 +1045,7 @@ u8 GetFirstInactiveEventObjectId(void) u8 GetEventObjectIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup) { - if (localId < 255) + if (localId < 0xFF) return GetEventObjectIdByLocalIdAndMapInternal(localId, mapNum, mapGroup); else return GetEventObjectIdByLocalId(localId); @@ -1046,7 +1054,7 @@ u8 GetEventObjectIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup) bool8 TryGetEventObjectIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup, u8 *eventObjectId) { *eventObjectId = GetEventObjectIdByLocalIdAndMap(localId, mapNum, mapGroup); - if (*eventObjectId == 16) + if (*eventObjectId == EVENT_OBJECTS_COUNT) return TRUE; else return FALSE; @@ -1055,7 +1063,7 @@ bool8 TryGetEventObjectIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup, u8 u8 GetEventObjectIdByXY(s16 x, s16 y) { u8 i; - for (i = 0; i < 16; i++) + for (i = 0; i < EVENT_OBJECTS_COUNT; i++) { if (gEventObjects[i].active && gEventObjects[i].currentCoords.x == x && gEventObjects[i].currentCoords.y == y) break; @@ -1064,31 +1072,31 @@ u8 GetEventObjectIdByXY(s16 x, s16 y) return i; } -u8 GetEventObjectIdByLocalIdAndMapInternal(u8 localId, u8 mapNum, u8 mapGroup) +static u8 GetEventObjectIdByLocalIdAndMapInternal(u8 localId, u8 mapNum, u8 mapGroup) { u8 i; - for (i = 0; i < 16; i++) + for (i = 0; i < EVENT_OBJECTS_COUNT; i++) { if (gEventObjects[i].active && gEventObjects[i].localId == localId && gEventObjects[i].mapNum == mapNum && gEventObjects[i].mapGroup == mapGroup) return i; } - return 16; + return EVENT_OBJECTS_COUNT; } -u8 GetEventObjectIdByLocalId(u8 localId) +static u8 GetEventObjectIdByLocalId(u8 localId) { u8 i; - for (i = 0; i < 16; i++) + for (i = 0; i < EVENT_OBJECTS_COUNT; i++) { if (gEventObjects[i].active && gEventObjects[i].localId == localId) return i; } - return 16; + return EVENT_OBJECTS_COUNT; } -u8 TryInitEventObjectStateFromTemplate(struct EventObjectTemplate *template, u8 mapNum, u8 mapGroup) +static u8 TryInitEventObjectStateFromTemplate(struct EventObjectTemplate *template, u8 mapNum, u8 mapGroup) { struct EventObject *eventObj; u8 eventObjectId; @@ -1165,23 +1173,23 @@ u8 GetAvailableEventObjectId(u16 localId, u8 mapNum, u8 mapGroup, u8 *eventObjec { u8 i = 0; - for (i = 0; i < 16 && gEventObjects[i].active; i++) + for (i = 0; i < EVENT_OBJECTS_COUNT && gEventObjects[i].active; i++) { if (gEventObjects[i].localId == localId && gEventObjects[i].mapNum == mapNum && gEventObjects[i].mapGroup == mapGroup) - return 1; + return TRUE; } - if (i >= 16) - return 1; + if (i >= EVENT_OBJECTS_COUNT) + return TRUE; *eventObjectId = i; - for (; i < 16; i++) + for (; i < EVENT_OBJECTS_COUNT; i++) { if (gEventObjects[i].active && gEventObjects[i].localId == localId && gEventObjects[i].mapNum == mapNum && gEventObjects[i].mapGroup == mapGroup) - return 1; + return TRUE; } - return 0; + return FALSE; } -void RemoveEventObject(struct EventObject *eventObject) +static void RemoveEventObject(struct EventObject *eventObject) { eventObject->active = FALSE; RemoveEventObjectInternal(eventObject); @@ -1200,7 +1208,7 @@ void RemoveEventObjectByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup) } } -void RemoveEventObjectInternal(struct EventObject *eventObject) +static void RemoveEventObjectInternal(struct EventObject *eventObject) { struct SpriteFrameImage image; image.size = GetEventObjectGraphicsInfo(eventObject->graphicsId)->size; @@ -1212,7 +1220,7 @@ void RemoveAllEventObjectsExceptPlayer(void) { u8 i; - for (i = 0; i < 16; i++) + for (i = 0; i < EVENT_OBJECTS_COUNT; i++) { if (i != gPlayerAvatar.eventObjectId) RemoveEventObject(&gEventObjects[i]); @@ -1223,21 +1231,24 @@ static u8 TrySetupEventObjectSprite(struct EventObjectTemplate *eventObjTemplate { u8 eventObjectId; u8 spriteId; - const struct EventObjectGraphicsInfo *gfxInfo; + const struct EventObjectGraphicsInfo *graphicsInfo; struct EventObject *eventObject; struct Sprite *sprite; eventObjectId = TryInitEventObjectStateFromTemplate(eventObjTemplate, mapNum, mapGroup); - if (eventObjectId == 16) - return 16; + if (eventObjectId == EVENT_OBJECTS_COUNT) + return EVENT_OBJECTS_COUNT; eventObject = &gEventObjects[eventObjectId]; - gfxInfo = GetEventObjectGraphicsInfo(eventObject->graphicsId); - if (gfxInfo->paletteSlot == 0) - LoadPlayerObjectReflectionPalette(gfxInfo->paletteTag, gfxInfo->paletteSlot); - else if (gfxInfo->paletteSlot == 10) - LoadSpecialObjectReflectionPalette(gfxInfo->paletteTag, gfxInfo->paletteSlot); - + graphicsInfo = GetEventObjectGraphicsInfo(eventObject->graphicsId); + if (graphicsInfo->paletteSlot == 0) + { + LoadPlayerObjectReflectionPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot); + } + else if (graphicsInfo->paletteSlot == 10) + { + LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot); + } if (eventObject->movementType == MOVEMENT_TYPE_INVISIBLE) eventObject->invisible = TRUE; @@ -1257,15 +1268,15 @@ static u8 TrySetupEventObjectSprite(struct EventObjectTemplate *eventObjTemplate } sprite = &gSprites[spriteId]; sub_8060388(cameraDeltaX + eventObject->currentCoords.x, cameraDeltaY + eventObject->currentCoords.y, &sprite->pos1.x, &sprite->pos1.y); - sprite->centerToCornerVecX = -(gfxInfo->width >> 1); - sprite->centerToCornerVecY = -(gfxInfo->height >> 1); + sprite->centerToCornerVecX = -(graphicsInfo->width >> 1); + sprite->centerToCornerVecY = -(graphicsInfo->height >> 1); sprite->pos1.x += 8; sprite->pos1.y += 16 + sprite->centerToCornerVecY; - sprite->oam.paletteNum = gfxInfo->paletteSlot; + sprite->oam.paletteNum = graphicsInfo->paletteSlot; sprite->coordOffsetEnabled = TRUE; sprite->data[0] = eventObjectId; eventObject->spriteId = spriteId; - eventObject->inanimate = gfxInfo->inanimate; + eventObject->inanimate = graphicsInfo->inanimate; if (!eventObject->inanimate) StartSpriteAnim(sprite, GetFaceDirectionAnimNum(eventObject->facingDirection)); SetObjectSubpriorityByZCoord(eventObject->previousElevation, sprite, 1); @@ -1273,67 +1284,74 @@ static u8 TrySetupEventObjectSprite(struct EventObjectTemplate *eventObjTemplate return eventObjectId; } -u8 TrySpawnEventObject(struct EventObjectTemplate *eventObjTemplate, u8 mapNum, u8 mapGroup, s16 cameraDeltaX, s16 cameraDeltaY) +static u8 TrySpawnEventObject(struct EventObjectTemplate *eventObjectTemplate, u8 mapNum, u8 mapGroup, s16 cameraDeltaX, s16 cameraDeltaY) { + struct SpriteTemplate spriteTemplate; const struct SubspriteTable *subspriteTables = NULL; struct SpriteFrameImage spriteFrameImage; - const struct EventObjectGraphicsInfo *gfxInfo; + const struct EventObjectGraphicsInfo *graphicsInfo; u8 eventObjectId; - gfxInfo = GetEventObjectGraphicsInfo(eventObjTemplate->graphicsId); - MakeObjectTemplateFromEventObjectTemplate(eventObjTemplate, &spriteTemplate, &subspriteTables); - spriteFrameImage.size = gfxInfo->size; + graphicsInfo = GetEventObjectGraphicsInfo(eventObjectTemplate->graphicsId); + MakeObjectTemplateFromEventObjectTemplate(eventObjectTemplate, &spriteTemplate, &subspriteTables); + spriteFrameImage.size = graphicsInfo->size; spriteTemplate.images = &spriteFrameImage; - eventObjectId = TrySetupEventObjectSprite(eventObjTemplate, &spriteTemplate, mapNum, mapGroup, cameraDeltaX, cameraDeltaY); - if (eventObjectId == 16) - return 16; - gSprites[gEventObjects[eventObjectId].spriteId].images = gfxInfo->images; + eventObjectId = TrySetupEventObjectSprite(eventObjectTemplate, &spriteTemplate, mapNum, mapGroup, cameraDeltaX, cameraDeltaY); + if (eventObjectId == EVENT_OBJECTS_COUNT) + { + return EVENT_OBJECTS_COUNT; + } + gSprites[gEventObjects[eventObjectId].spriteId].images = graphicsInfo->images; if (subspriteTables != NULL) + { SetSubspriteTables(&gSprites[gEventObjects[eventObjectId].spriteId], subspriteTables); + } return eventObjectId; } -u8 SpawnSpecialEventObject(struct EventObjectTemplate *eventObjTemplate) +u8 SpawnSpecialEventObject(struct EventObjectTemplate *eventObjectTemplate) { s16 x; s16 y; GetEventObjectMovingCameraOffset(&x, &y); - return TrySpawnEventObject(eventObjTemplate, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, x, y); + return TrySpawnEventObject(eventObjectTemplate, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, x, y); } u8 SpawnSpecialEventObjectParametrized(u8 graphicsId, u8 movementType, u8 localId, s16 x, s16 y, u8 elevation) { - struct EventObjectTemplate eventObjTemplate; + struct EventObjectTemplate eventObjectTemplate; x -= 7; y -= 7; - eventObjTemplate.localId = localId; - eventObjTemplate.graphicsId = graphicsId; - eventObjTemplate.unk2 = 0; - eventObjTemplate.x = x; - eventObjTemplate.y = y; - eventObjTemplate.elevation = elevation; - eventObjTemplate.movementType = movementType; - eventObjTemplate.movementRangeX = 0; - eventObjTemplate.movementRangeY = 0; - eventObjTemplate.trainerType = 0; - eventObjTemplate.trainerRange_berryTreeId = 0; - return SpawnSpecialEventObject(&eventObjTemplate); -} - -u8 show_sprite(u8 a, u8 b, u8 c) -{ - struct EventObjectTemplate *r5; + eventObjectTemplate.localId = localId; + eventObjectTemplate.graphicsId = graphicsId; + eventObjectTemplate.unk2 = 0; + eventObjectTemplate.x = x; + eventObjectTemplate.y = y; + eventObjectTemplate.elevation = elevation; + eventObjectTemplate.movementType = movementType; + eventObjectTemplate.movementRangeX = 0; + eventObjectTemplate.movementRangeY = 0; + eventObjectTemplate.trainerType = 0; + eventObjectTemplate.trainerRange_berryTreeId = 0; + return SpawnSpecialEventObject(&eventObjectTemplate); +} + +u8 show_sprite(u8 localId, u8 mapNum, u8 mapGroup) +{ + struct EventObjectTemplate *eventObjectTemplate; s16 x; s16 y; - r5 = GetEventObjectTemplateByLocalIdAndMap(a, b, c); - if (r5 == NULL) - return 16; + eventObjectTemplate = GetEventObjectTemplateByLocalIdAndMap(localId, mapNum, mapGroup); + if (eventObjectTemplate == NULL) + { + return EVENT_OBJECTS_COUNT; + } GetEventObjectMovingCameraOffset(&x, &y); - return TrySpawnEventObject(r5, b, c, x, y); + return TrySpawnEventObject(eventObjectTemplate, mapNum, mapGroup, x, y); } void MakeObjectTemplateFromEventObjectGraphicsInfo(u16 graphicsId, void (*callback)(struct Sprite *), struct SpriteTemplate *sprTemplate, const struct SubspriteTable **subspriteTables) @@ -1350,12 +1368,12 @@ void MakeObjectTemplateFromEventObjectGraphicsInfo(u16 graphicsId, void (*callba *subspriteTables = gfxInfo->subspriteTables; } -void MakeObjectTemplateFromEventObjectGraphicsInfoWithCallbackIndex(u16 graphicsId, u16 movementType, struct SpriteTemplate *sprTemplate, const struct SubspriteTable **subspriteTables) +static void MakeObjectTemplateFromEventObjectGraphicsInfoWithCallbackIndex(u16 graphicsId, u16 movementType, struct SpriteTemplate *sprTemplate, const struct SubspriteTable **subspriteTables) { MakeObjectTemplateFromEventObjectGraphicsInfo(graphicsId, sMovementTypeCallbacks[movementType], sprTemplate, subspriteTables); } -void MakeObjectTemplateFromEventObjectTemplate(struct EventObjectTemplate *eventObjTemplate, struct SpriteTemplate *sprTemplate, const struct SubspriteTable **subspriteTables) +static void MakeObjectTemplateFromEventObjectTemplate(struct EventObjectTemplate *eventObjTemplate, struct SpriteTemplate *sprTemplate, const struct SubspriteTable **subspriteTables) { MakeObjectTemplateFromEventObjectGraphicsInfoWithCallbackIndex(eventObjTemplate->graphicsId, eventObjTemplate->movementType, sprTemplate, subspriteTables); } @@ -1370,7 +1388,7 @@ u8 AddPseudoEventObject(u16 graphicsId, void (*callback)(struct Sprite *), s16 x if (spriteTemplate.paletteTag != 0xFFFF) sub_805BDF8(spriteTemplate.paletteTag); spriteId = CreateSprite(&spriteTemplate, x, y, subpriority); - if (spriteId != 64 && subspriteTables != NULL) + if (spriteId != MAX_SPRITES && subspriteTables != NULL) { SetSubspriteTables(&gSprites[spriteId], subspriteTables); gSprites[spriteId].subspriteMode = 2; @@ -1380,12 +1398,12 @@ u8 AddPseudoEventObject(u16 graphicsId, void (*callback)(struct Sprite *), s16 x u8 sub_805B410(u8 graphicsId, u8 b, s16 x, s16 y, u8 elevation, u8 direction) { - const struct EventObjectGraphicsInfo *gfxInfo; + const struct EventObjectGraphicsInfo *graphicsInfo; struct SpriteTemplate spriteTemplate; const struct SubspriteTable *subspriteTables; u8 spriteId; - gfxInfo = GetEventObjectGraphicsInfo(graphicsId); + graphicsInfo = GetEventObjectGraphicsInfo(graphicsId); MakeObjectTemplateFromEventObjectGraphicsInfo(graphicsId, UpdateEventObjectSpriteSubpriorityAndVisibility, &spriteTemplate, &subspriteTables); #ifdef NONMATCHING spriteTemplate.paletteTag = 0xFFFF; @@ -1396,19 +1414,21 @@ u8 sub_805B410(u8 graphicsId, u8 b, s16 x, s16 y, u8 elevation, u8 direction) y += 7; sub_8060470(&x, &y, 8, 16); spriteId = CreateSpriteAtEnd(&spriteTemplate, x, y, 0); - if (spriteId != 64) + if (spriteId != MAX_SPRITES) { struct Sprite *sprite = &gSprites[spriteId]; - sprite->centerToCornerVecX = -(gfxInfo->width >> 1); - sprite->centerToCornerVecY = -(gfxInfo->height >> 1); + sprite->centerToCornerVecX = -(graphicsInfo->width >> 1); + sprite->centerToCornerVecY = -(graphicsInfo->height >> 1); sprite->pos1.y += sprite->centerToCornerVecY; - sprite->oam.paletteNum = gfxInfo->paletteSlot; + sprite->oam.paletteNum = graphicsInfo->paletteSlot; sprite->coordOffsetEnabled = TRUE; sprite->data[0] = b; sprite->data[1] = elevation; - if (gfxInfo->paletteSlot == 10) - LoadSpecialObjectReflectionPalette(gfxInfo->paletteTag, gfxInfo->paletteSlot); + if (graphicsInfo->paletteSlot == 10) + { + LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot); + } if (subspriteTables != NULL) { SetSubspriteTables(sprite, subspriteTables); @@ -1427,37 +1447,34 @@ void TrySpawnEventObjects(s16 cameraDeltaX, s16 cameraDeltaY) if (gMapHeader.events != NULL) { - s16 r9 = gSaveBlock1.pos.x - 2; - s16 sp8 = gSaveBlock1.pos.x + 17; - s16 r10 = gSaveBlock1.pos.y; - s16 spC = gSaveBlock1.pos.y + 16; + s16 left = gSaveBlock1.pos.x - 2; + s16 right = gSaveBlock1.pos.x + 17; + s16 top = gSaveBlock1.pos.y; + s16 bottom = gSaveBlock1.pos.y + 16; u8 objectCount = gMapHeader.events->eventObjectCount; for (i = 0; i < objectCount; i++) { struct EventObjectTemplate *template = &gSaveBlock1.eventObjectTemplates[i]; - s16 foo = template->x + 7; - s16 bar = template->y + 7; + s16 npcX = template->x + 7; + s16 npcY = template->y + 7; - if (r10 <= bar && spC >= bar && r9 <= foo && sp8 >= foo + if (top <= npcY && bottom >= npcY && left <= npcX && right >= npcX && !FlagGet(template->flagId)) TrySpawnEventObject(template, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, cameraDeltaX, cameraDeltaY); } } } -void RemoveEventObjectIfOutsideView(struct EventObject *eventObject); - void RemoveEventObjectsOutsideView(void) { u8 i; u8 j; + bool8 isActiveLinkPlayer; - for (i = 0; i < 16; i++) + for (i = 0; i < EVENT_OBJECTS_COUNT; i++) { - bool8 isActiveLinkPlayer; - - for (j = 0, isActiveLinkPlayer = 0; j < 4; j++) + for (j = 0, isActiveLinkPlayer = FALSE; j < 4; j++) { if (gLinkPlayerEventObjects[j].active && i == gLinkPlayerEventObjects[j].eventObjId) isActiveLinkPlayer = TRUE; @@ -1472,18 +1489,18 @@ void RemoveEventObjectsOutsideView(void) } } -void RemoveEventObjectIfOutsideView(struct EventObject *eventObject) +static void RemoveEventObjectIfOutsideView(struct EventObject *eventObject) { - s16 r7 = gSaveBlock1.pos.x - 2; - s16 r5 = gSaveBlock1.pos.x + 17; - s16 r4 = gSaveBlock1.pos.y; - s16 r6 = gSaveBlock1.pos.y + 16; + s16 left = gSaveBlock1.pos.x - 2; + s16 right = gSaveBlock1.pos.x + 17; + s16 top = gSaveBlock1.pos.y; + s16 bottom = gSaveBlock1.pos.y + 16; - if (eventObject->currentCoords.x >= r7 && eventObject->currentCoords.x <= r5 - && eventObject->currentCoords.y >= r4 && eventObject->currentCoords.y <= r6) + if (eventObject->currentCoords.x >= left && eventObject->currentCoords.x <= right + && eventObject->currentCoords.y >= top && eventObject->currentCoords.y <= bottom) return; - if (eventObject->initialCoords.x >= r7 && eventObject->initialCoords.x <= r5 - && eventObject->initialCoords.y >= r4 && eventObject->initialCoords.y <= r6) + if (eventObject->initialCoords.x >= left && eventObject->initialCoords.x <= right + && eventObject->initialCoords.y >= top && eventObject->initialCoords.y <= bottom) return; RemoveEventObject(eventObject); } @@ -1498,7 +1515,7 @@ void sub_805B710(u16 a, u16 b) gUnknown_Debug_03004BC0 = 0; #endif ClearPlayerAvatarInfo(); - for (i = 0; i < 16; i++) + for (i = 0; i < EVENT_OBJECTS_COUNT; i++) { if (gEventObjects[i].active) { @@ -1511,9 +1528,6 @@ void sub_805B710(u16 a, u16 b) CreateReflectionEffectSprites(); } -extern void SetPlayerAvatarEventObjectIdAndObjectId(u8, u8); -extern void sub_805B914(struct EventObject *); - void sub_805B75C(u8 eventObjectId, s16 b, s16 c) { struct SpriteTemplate sp0; diff --git a/src/item_menu.c b/src/item_menu.c index 14cf7331f..b69866453 100644 --- a/src/item_menu.c +++ b/src/item_menu.c @@ -2958,7 +2958,7 @@ static void sub_80A68A4(void) gUnknown_02038563 = CreateTask(sub_80A50C8, 0); } -void sub_80A68CC(void) +void CB2_ChooseBerry(void) { sCurrentBagPocket = BAG_POCKET_BERRIES; sReturnLocation = RETURN_TO_FIELD_4; |