forked from flipperdevices/flipperzero-firmware
-
-
Notifications
You must be signed in to change notification settings - Fork 547
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
pokemon_shiny: Split out attribute handling, does not belong in scene
Signed-off-by: Kris Bahnsen <Kris@KBEmbedded.com>
- Loading branch information
1 parent
5eebf2d
commit 2f9f536
Showing
5 changed files
with
75 additions
and
66 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
#ifndef POKEMON_SHINY_H | ||
#define POKEMON_SHINY_H | ||
|
||
#pragma once | ||
|
||
bool pokemon_is_shiny(PokemonData* pdata); | ||
|
||
void pokemon_set_shiny(PokemonData *pdata, bool shiny); | ||
|
||
#endif // POKEMON_SHINY_H |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
#include <src/include/pokemon_data.h> | ||
|
||
/* This just assumes gen ii for now */ | ||
/* For a Gen II pokemon to be shiny, the following must be met: | ||
* Spd, Def, and Spc must all be 10 | ||
* Atk must be 2, 3, 6, 7, 10, 11, 14, or 15 | ||
*/ | ||
bool pokemon_is_shiny(PokemonData* pdata) { | ||
uint8_t atk_iv = pokemon_stat_get(pdata, STAT_ATK_IV, NONE); | ||
uint8_t def_iv = pokemon_stat_get(pdata, STAT_DEF_IV, NONE); | ||
uint8_t spd_iv = pokemon_stat_get(pdata, STAT_SPD_IV, NONE); | ||
uint8_t spc_iv = pokemon_stat_get(pdata, STAT_SPC_IV, NONE); | ||
bool rc = 1; | ||
|
||
if(spd_iv != 10) rc = 0; | ||
if(def_iv != 10) rc = 0; | ||
if(spc_iv != 10) rc = 0; | ||
switch(atk_iv) { | ||
case 0: | ||
case 1: | ||
case 4: | ||
case 5: | ||
case 8: | ||
case 9: | ||
case 12: | ||
case 13: | ||
rc = 0; | ||
break; | ||
default: | ||
break; | ||
} | ||
|
||
return rc; | ||
} | ||
|
||
void pokemon_set_shiny(PokemonData* pdata, bool shiny) { | ||
|
||
if(!shiny) { | ||
do { | ||
/* First, reset the IV to the selected stat */ | ||
pokemon_stat_set(pdata, STAT_SEL, NONE, pokemon_stat_get(pdata, STAT_SEL, NONE)); | ||
|
||
/* XXX: This may not be right? */ | ||
/* Next, ensure the current IVs wouldn't make the pokemon shiny */ | ||
} while(pokemon_is_shiny(pdata)); | ||
} else { | ||
/* Set Def, Spd, Spc to 10 */ | ||
pokemon_stat_set(pdata, STAT_DEF_IV, NONE, 10); | ||
pokemon_stat_set(pdata, STAT_SPD_IV, NONE, 10); | ||
pokemon_stat_set(pdata, STAT_SPC_IV, NONE, 10); | ||
|
||
/* Increase ATK IV until we hit a shiny number. Note that, this only | ||
* affects IVs that are randomly generated, max IV will already be set | ||
* at 15 which will make it shiny. | ||
*/ | ||
while(!pokemon_is_shiny(pdata)) { | ||
pokemon_stat_set( | ||
pdata, STAT_ATK_IV, NONE, pokemon_stat_get(pdata, STAT_ATK_IV, NONE) + 1); | ||
} | ||
} | ||
} |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters