HackMew
Mewtwo Strikes Back
- 1,314
- Posts
- 18
- Years
- Seen Oct 26, 2011
Sorry if I say that but... this is just the way the Pokémon Daycare works. It's not really like a "takepokemon" in the true meaning of the term. Basically a surrogate, if you ask me. "Who cares if it works?" you may say. Well, it doesn't really work because you wouldn't be able to use the daycare in your hacks. Keep in mind Daycare = eggs as well.
Now, what's my idea about takepokemon?
ASM hacking + scripting of course. First you need to make the usual checks to make sure the player has at least 2 Pokémon (the second one not being an egg, for example). Then you would set a variable, like 0x8000, in order to choose the Pokémon that should be taken away. Then you would check the value hold by the variable is in a proper range, that is it couldn't be 0x5 when you have just 2 Pokémon. If everything was fine you set another variable like 0x8001 to either 0x0 or 0x1. The reason of this will be explained in a minute. Then an ASM script would be called. The ASM script would first check if some Pokémon was taken away already. If so, unless variable 0x8001 is set to 0x1, the ASM script would end. Otherwhise it would get the Pokémon data and store it on a safe memory area (overwriting anything there in case a Pokémon was removed already and 0x8001 was set to 0x1). Then the Pokémon data would be erased and the rest of the data adjusted eventually. Finally a "takepokemon flag" would be set. That flag would be useful of course in case you want to get back the Pokémon with another ASM script later on or in case you want to check if a Pokémon was taken away so far. Pretty complex? Maybe. I wish I knew more ASM.
Now, what's my idea about takepokemon?
ASM hacking + scripting of course. First you need to make the usual checks to make sure the player has at least 2 Pokémon (the second one not being an egg, for example). Then you would set a variable, like 0x8000, in order to choose the Pokémon that should be taken away. Then you would check the value hold by the variable is in a proper range, that is it couldn't be 0x5 when you have just 2 Pokémon. If everything was fine you set another variable like 0x8001 to either 0x0 or 0x1. The reason of this will be explained in a minute. Then an ASM script would be called. The ASM script would first check if some Pokémon was taken away already. If so, unless variable 0x8001 is set to 0x1, the ASM script would end. Otherwhise it would get the Pokémon data and store it on a safe memory area (overwriting anything there in case a Pokémon was removed already and 0x8001 was set to 0x1). Then the Pokémon data would be erased and the rest of the data adjusted eventually. Finally a "takepokemon flag" would be set. That flag would be useful of course in case you want to get back the Pokémon with another ASM script later on or in case you want to check if a Pokémon was taken away so far. Pretty complex? Maybe. I wish I knew more ASM.