This is my first hack, an attempt to Pokemon a little more fun and a little less tedious. I wouldn't say it's complete. It needs testing and I have a few more ideas, but this hack is meant to be fairly low-impact as a basis for other hacks. I personally have the lofty ambition of using this as the basis of a difficulty hack with a custom AI, but ah, we'll see.
I've never done anything with an AI before so it might turn out badly, but I do have the general idea for an algorithm in my head.
Current changes include:
* Running allowed anywhere.
* Make TMs re-usable.
* Allow HMs to be forgotten when learning new moves.
* The RNG is either fixed or even more broken, testing needed
* The player's party is completely healed before and after every battle.
* Bag items are not usable in trainer battles, either by the AI or the player.
* Move tutors can be re-used.Shut up and give me a download link!
(patched rom should have a sha1 of 00632ce88c1c78da2e57db3427aa623b7e9296bf)
I think the last two changes might be a little controversial, but the goal of this hack is to keep the player in the action without compromising difficulty. I want the player to be encouraged to move on to the next battle instead of running to a Pokemon Center or rooting around their bag for a potion, and I think bag items in battle are probably mostly exist as crutch so young children are actually able to beat the game, and it doesn't really fit the competitive conceit in the fiction. Also spamming hyper potions isn't fun. However, this does have the side effect of making healing items *mostly* useless, except maybe to help catch legendary Pokemon.
This hack is open source
, and based off the hard work of the people doing the Pokemon disassemblies. I don't really know ASM. I've got enough junk in my head that I'm not really clever enough to use fully. I need a compiler.
A few notes on the implementation details:
I "fixed" the broken RNG by copying the implementation from Ruby, and removed the line in SeedRngAndSetTrainerId that actually seeded the RNG. This hopefully prevents the RNG seed I set early after init from being overwritten, but I haven't confirmed this. Testing and feedback would be appreciated.
This hasn't been disassembled yet, so I got the implementation for re-usable TMs from this post
on Pokecommunity, but there appears to be a minor error in the post. Half of 121 is 60.5, not 90. Also, this is hexedecimal not decimal, so I used 3C here. However, I've seen a few people reporting using the 90 value on the Internet. I used 3C and everything appears to work, but please do report any issues with using items.
Anyway, that's the hack. Feedback and ideas (that lie within the stated goals of the hack) are welcome.UPDATE 2018-07-05:
* Allow move tutors to be reused
* Heal the party at the end of every battle, instead of just when the player wins the battle (pokemon caught, pokemon used roar, teleport...)UPDATE 2018-07-06:
* Fixed a bug where the end-battle sequence would be slowed down
* A person named Geodude671 from Reddit pointed out where I was going wrong on the TMs issue. I'm now using 0x90 instead.
July 11, 2018, 06:33:01 pm - (Auto Merged - Double Posts are not allowed before 7 days.)
* The move tutor has graciously decided to work for free.
* Trainer's underlevel Pokémon will level up with the player's highest level Pokémon.
* Try to make all trainers use the best AI packages.
* The number to subtract from egg cycles per step should be quadrupled. This should result in an egg cycle taking 64 steps instead of 256, or 32 steps if the player has a Pokémon with flame body or magma armor.
I also made an attempt to make the berries grow significantly faster, but it doesn't appear to have worked. I'll have to look at that again.