Everything posted by End45
SkyTemple will soon add support for editing pokémon and item spawns, so you could use it to make Rowlet and its evolutions appear in dungeons. You could also make the evolutionary items spawn on a certain floor of a certain dungeon so they can be obtained. That would surely be much easier than looking for a way to make them appear on Croagunk's shop and inside chests (an ASM patch would be required for that). I don't think footprints have been researched so far, so someone would need to find where and how they are stored and then create an editor to change them.
I see that you are planning to add support for dungeon editing so I would like to help by posting everything I know about dungeon data in EoS, which I have compiled in this document: https://docs.google.com/document/d/1UfiFz4xAPtGd-1X2JNE0Jy2z-BLkze1PE4Fo9u-QeYo I hope this helps with the development and makes everything easier. I'll join the Discord too, so feel free to ask me anything if you want.
After reading this I went ahead and did some research on the effects of exclusive items. I expected them to be hardcoded and basically impossible to edit, but turns out they are not! You can change the effects of exclusve items or add new ones with some hex editing. Here's what I found out: There is a table inside arm9.bin that goes from 0x98568 to 0x98CD9 which contains one entry for every exclusive item in the game, including the last 48 dummy items at the end of the list. Each entry has 2 bytes: The first one is the ID of the effect the item has, which ranges from 0 to 0x80 (Both included, 0 means no effect) The second one is used to address the stat buffs table (see below). 0 means the item does not buff any stats. I guess you replaced some of the unused items, so to give them an effect you just need to go to the part of the table corresponding to the unused entries (It starts at 0x98c80, every entry is 00 00 from that point on) and change the values there for each item. This is the list of effects: (I have checked only some of the random chances, but it seems that they are always the same for similar effects) The stat buffs table starts at 0x9852C and ends at 0x98567, right before the effect table. It has 15 entries, each one is 4 bytes long. Each of the 4 bytes indicates how much each stat is buffed by the item (Order: Atk, Def, SpAtk, SpDef) For example, if an exclusive item has its second byte on the effect table set to 3, the buffs granted by it can be found at 0x9852C+4*3 = 0x98538 = [10, 0, 10, 0]. An item with this value would increase attack and special attack by 10. So if you want an item to just give a stat boost you would need to set its first byte on the effect table to 0 and the second one to 1-14, depending on the stats you want to increase. Keep in mind that you can't change the values on the stat buffs table without affecting every other item which uses the same entry there. Getting the items to show up in Croagunk's swap is going to be trickier though. If you look at the list you will see that all the items that follow the *, *, **, *** pattern are together between position 506 and 1013. The game only checks if you have the required items to create higher rarity ones within that range, that's why yours don't appear on the list. Fixing that would require to write a rom hack that changed the behaviour of the code that does those checks and then create a patch to apply the changes on the rom.
How odd. If you remove every single ??? in the strings the game should not be able to get that value from anywhere. That must mean that your changes are not being applied (So I guess that if you change any other string unrelated to Rowlet it won't update ingame either, right?) I don't use sky editor myself, I use ndstool and statsutil with some .bat files and do the process manually. Also I have an european rom, but I doubt any of that will make a difference, the process is basically the same (Extract rom, run statsutil to export, open "romstats/game_strings/English.txt", change some lines, save, run statsutil again to import and rebuild the rom) If you want to try the manual way yourself, psy_commando wrote a post some time ago with a tutorial in images and a download to the tools:
Does that appear inside dungeons too? I have changed the name of a pokemon before without any problems (I haven't tried the personality test, but the species name is updated inside dungeons and in Chimeco's assembly). I have checked and I changed the name both in the strings file and inside the pokemon entry. And if that still doesn't work you could try to replace more of the ???? in the strings file with Rowlet until you find the one that is being used for the quiz.
iirc if you want to change anything related with names you have to edit the the strings file, not the pokemon data. As for the stat growths problem, looks like StatsUtil shifts them up one pokemon entry. I changed Bulbasaur's attack to +100 at level 2 and it was Ivysaur who had over 100 Atk at level 30. So you should try changing the growths of the previous pokemon on the list and see if it works that way.
Hello! So I have been messing around with the assembly code in explorers of sky for a while now. I saw this and thought it would be interesting to try to find the code that prevents partners of the same type as you from appearing in the list. And I managed to find the exact instruction that has to be removed (turned into a NOP instruction) to make it happen. I tested it with an european rom of EoS, but it should work for any other version since the code is probably the same. To change it yourself, open the rom in a hex editor and search for this sequence: 000195e7 000088e1 000019e1 0700001a 002094e5 701392e5 There should be only one match in the whole rom (0x001e0000 in my european version). Now you just need to replace 0700001a with 0000a0e1, save and try it out. Tell me if it works for you! Fun fact: You can even pick the same pokemon as player and partner
The one that controls taunted status is Unk17, I've tested it. And i'm not sure about Unk16, it totally looks like it determines if a move can be used on a frozen target but I have also tested it and it's not that, you can't use tri attack on a frozen pokemon. Also Sacred fire is the only damage-dealing fire type move that has Unk16 = 1, and it affects frozen targets anyway. Edit: Unk11 is the max amount of times you can power up a move using Ginseng
So I have been following this thread for a while and I have finally decided to register here and post something. First of all, thanks to Zerea for the move data spreadsheet, I've been trying to figure out the meaning of the unknown values for some time, and the data has been really useful to me. Now I will share my findings: Bitfield 2 Controls the way enemies use moves. It works the same way as bitfield 1: If a move has a value of 48, enemies will use it if there's a party member in the same room. You can try and give a value of 48 to some move like Tackle, enemies will try to hit you from far away (and obviously fail) For some reason certain moves have different values for bitfield 1 and 2 when they should be the same, for example Discharge has Bitfield 1 = 48 and Bitfield 2 = 64. Although it is a move which hits all enemies in the room, other pokemon will only try to attack you with it if you are up to 2 tiles away from them. Enemies (and I guess allies too) use the Unk6 value of a move as some sort of "weight". The larger this number is, the greater is the chance of a pokemon using it. A large value here means enemies will use the move constantly, and setting this to 0 causes pokemon not to use that specific move at all. Unk7 is that other accuracy value you were talking about. If the move misses due to this second accuracy, a different message appears (I think it's 'the move missed X' instead of 'the move failed to impact X') Unk10 is the number of times a move hits. 0 means it hits a random amount of times. Unk13 = 1 means the move is affected by Magic Coat Unk14 = 1 means the move is affected by Snatch If a move has an Unk15 value of 1, it can't be used under the muzzled status (caused by a silence orb). That's why biting moves all have Unk15 = 1 Unk17 = 1 means the move can be used while taunted Unk19 controls the message that comes up when the move is used. A value of 0 means default message, 1 would be the next string in the game ('Oh no! (Pokemon) chose (move)!') 2 = Regular attack message, and so on Orb-effect moves are easy to test, I just make a quicksave in a dungeon, edit the save file and add those moves to the team leader or the enemies: Famish: Decerases by 10 points the belly of all enemies in the room. Enemies/party members will act the same way as if they had eaten a hunger seed once they get affected 10 times by this move. Observer: Foe-Seal orb. Possess: Probably has something to do with the 'Possess Orb' from Mystery Dungeon 1. Using the move does nothing. Searchlight: Has the same effect as the luminous orb. Siesta: Same effect as the slumber orb. I hope that helped. Sorry if I made any grammar mistakes, English is not my first language. PS: @psy_commando, the sprite editor crashes for me every time I try to import/export sprite palletes (no matter if I save/load it as .txt or .pal). I don't have a github account to open an issue so I post it here.