The PokéCommunity Forums

The PokéCommunity Forums (https://www.pokecommunity.com/index.php)
-   Binary ROM Hacking (https://www.pokecommunity.com/forumdisplay.php?f=284)
-   -   Other 386 Patching: Legendary Encounters (https://www.pokecommunity.com/showthread.php?t=325363)

mainstreet May 3rd, 2014 10:32 AM

386 Patching: Legendary Encounters
 
Posted this on Script Help Thread, didn't get a response, will try here.

Game: Pokemon FireRed
Type: Person event (Scripted Legendary Encounter)
Editor: PKSV-UI by Score_Under (via AdvanceMap 1.95)
Script:
Spoiler:

#org 0x83B9410
'-----------------------------------
special INIT_STEPCOUNT
compare LASTRESULT 0x2
if == jump 0x81A7AE0 ' Equal To
special GET_STEPCOUNT
lock
faceplayer
battle ENTEI 50 NONE
checksound
cry ENTEI 0x2
message 0x83B947F ' Brm!
showmsg
waitcry
pause 0xA
playsound 0x2 0x2
waitbutton
setflag 0x807
special BATTLE_PIXELLATE
waitspecial
clearflag 0x807
special2 LASTRESULT 0xB4
compare LASTRESULT 0x1
if == jump 0x824F0F7 ' Equal To
compare LASTRESULT 0x4
if == jump 0x8163824 ' Equal To
compare LASTRESULT 0x5
if == jump 0x8163824 ' Equal To
setflag 0x228
release
end

#org 0x81A7AE0
'-----------------------------------
release
end

#org 0x824F0F7
'-----------------------------------
setflag 0x228
jump 0x81A922D

#org 0x81A922D
'-----------------------------------
fadescreen FADEOUT_BLACK
disappear LASTTALKED
fadescreen FADEIN_BLACK
release
end

#org 0x8163824
'-----------------------------------
setvar 0x8004 0xF4
jump 0x81A9236

#org 0x81A9236
'-----------------------------------
fadescreen FADEOUT_BLACK
disappear LASTTALKED
fadescreen FADEIN_BLACK
storepokemon 0x0 0x8004
msgbox 0x81A63C4 ' The \v\h02 flew away...
callstd MSG_NOCLOSE ' Non-closing message
release
' Release commands close any open messages
end


#org 0x83B947F
= Brm!

#org 0x81A63C4
= The \v\h02 flew away!


The goal for this script: I have all three legendary dogs in a spot. What I want them to do is act like all the other legendary encounters here. I examined other legendary scripts to try to determine how they differed, and then could make my own to do this. Eventually I want to make all of the Gen II legendaries available somewhere. Ultimately I want the game to be a 386 patch (I'll do more stuff beyond this to start making a new game, but I wanted to start simple ) -- and will need to do this for all the legendaries (or at least, the ones with sprites) so figuring out how to make this work is important.

What's actually happening:Catching the Pokemon does nothing. That is, it's still there, available for capture as many times as I want. If I run, the flee message displays, then if I walk away, any of the three that I've already ran from comes back after I take a step. If I make the legendary faint, the message doesn't display, but the pokemon still comes back after the next encounter. From the code examination (I have Entei's in the script, Suicune and Raikou's are similar, just with their own flags and coding) they look to be coded the same way as all the legendaries that work fine (ie: Mewtwo, Zapdos, etc.) but... they don't. So... what am I missing here?

Screenshots and/or videos:
Since I can't post links, apparently, since I'm new here (and this is also my first attempt at hacking), the screencaps aren't available right here... www dot mainstreet52 dot info slash images slash FRIPH slash Dogs1.png is the first image (the others are Dogs2.png and Dogs3.png, and they were taken in numerical order.) I'm not sure how helpful they'll be... this is on fleeing twice. I've fixed the issue where it says ZAPDOS is the one that flees, that was simply fixing the hex var which I hadn't figured out at first.

Spherical Ice May 3rd, 2014 10:36 AM

You need to give each of the Legendary Beasts' overworlds an individual Person ID, and make it so that the script sets the flag that matches that Person ID after the Beast is defeated / captured / flees. For example, if Raikou has the Person ID of 2F0, you should include setflag 0x2F0 somewhere in the script.

mainstreet May 3rd, 2014 12:12 PM

Quote:

Originally Posted by Spherical Ice (Post 8229413)
You need to give each of the Legendary Beasts' overworlds an individual Person ID, and make it so that the script sets the flag that matches that Person ID after the Beast is defeated / captured / flees. For example, if Raikou has the Person ID of 2F0, you should include setflag 0x2F0 somewhere in the script.

Ahhh, okay. I'd set flags 227/228/229 sort of arbitrarily -- I'd read the big post on flags and figured those were the safest flags to use... had not noticed that the flags matched the person IDs there... that said, I'd been filling the Person IDs in from FFFF and working down because I had no idea what person IDs were already used by something.

So, I'll have to ask which person IDs are safe to use, so I can go ahead and use those for these, to match up with the flags correctly. That said, even if the 2xx person IDs aren't "safe", if I just know where they are, if they aren't going to be a problem, I can always just move the person that has that ID to something else as well...

Spherical Ice May 3rd, 2014 12:32 PM

Quote:

Originally Posted by mainstreet (Post 8229519)
Ahhh, okay. I'd set flags 227/228/229 sort of arbitrarily -- I'd read the big post on flags and figured those were the safest flags to use... had not noticed that the flags matched the person IDs there... that said, I'd been filling the Person IDs in from FFFF and working down because I had no idea what person IDs were already used by something.

So, I'll have to ask which person IDs are safe to use, so I can go ahead and use those for these, to match up with the flags correctly. That said, even if the 2xx person IDs aren't "safe", if I just know where they are, if they aren't going to be a problem, I can always just move the person that has that ID to something else as well...

Person IDs are literally flags, so safe flags are safe Person IDs. You only need to assign flags to overworlds that are going to be hidden, though, so you shouldn't need to use up too many flags. But yes, safe flags are safe Person IDs, so keeping it within the 2xx range would be wise.

mainstreet May 3rd, 2014 1:09 PM

Quote:

Originally Posted by Spherical Ice (Post 8229547)
Person IDs are literally flags, so safe flags are safe Person IDs. You only need to assign flags to overworlds that are going to be hidden, though, so you shouldn't need to use up too many flags. But yes, safe flags are safe Person IDs, so keeping it within the 2xx range would be wise.

It's more all the items that I was adding that are a concern, because if I don't set them properly they come back for infinite collection really easily... I guess I need to cut back on the item addition or something...

Okay, so, it works fine now when I flee from the legendary. It also works fine when I cause it to faint. (That is, the sprite becomes hidden as it should.)

When I catch it, it still stands there though. (I'm using a Master Ball to do it as I gave myself a bunch to test this easier; I wouldn't think that would be a/the problem, but could it?) (Or maybe it's not actually having the national Pokedex? I'm scared to touch the Oak script with how complicated it is, which is what I'd need to do to get the National Pokedex right off the bat.)

(The script up there is exactly what I have still, and Entei's person ID is 0228 now. Similarly for Suicune at 0229 and Raikou at 0227 with their own flags.)

Spherical Ice May 3rd, 2014 1:23 PM

Quote:

Originally Posted by mainstreet (Post 8229609)
It's more all the items that I was adding that are a concern, because if I don't set them properly they come back for infinite collection really easily... I guess I need to cut back on the item addition or something...

Okay, so, it works fine now when I flee from the legendary. It also works fine when I cause it to faint. (That is, the sprite becomes hidden as it should.)

When I catch it, it still stands there though. (I'm using a Master Ball to do it as I gave myself a bunch to test this easier; I wouldn't think that would be a/the problem, but could it?) (Or maybe it's not actually having the national Pokedex? I'm scared to touch the Oak script with how complicated it is, which is what I'd need to do to get the National Pokedex right off the bat.)

(The script up there is exactly what I have still, and Entei's person ID is 0228 now. Similarly for Suicune at 0229 and Raikou at 0227 with their own flags.)

FireRed seems to use the Person IDs of 100 upwards for items, so I'd assume they are safe to use with MSG_FIND items. Using FFFF and working downwards certainly isn't a good idea though.

As for the issue of them not disappearing upon capture, the variable for special 0xb4 returns 0x7 if it is captured, but you don't seem to check for that n the script. That may be the issue.

mainstreet May 3rd, 2014 1:35 PM

Quote:

Originally Posted by Spherical Ice (Post 8229633)
FireRed seems to use the Person IDs of 100 upwards for items, so I'd assume they are safe to use with MSG_FIND items. Using FFFF and working downwards certainly isn't a good idea though.

As for the issue of them not disappearing upon capture, the variable for special 0xb4 returns 0x7 if it is captured, but you don't seem to check for that n the script. That may be the issue.

For the items: Right, I just have to be careful not to conflict with another item handout. Maybe I should count down from 1FF? Or maybe there's a list of items somewhere... might run a quick search after this, but not sure I'll find one. The alternative might be to just make more of the items be hidden, because it seems that hidden items don't require person IDs...

As to the other: Hmmm. The other legends don't seem to check for that, so I don't have a comparison to figure out how to actually do this. I basically compared the Mewtwo and Zapdos scripts, figured out what was different for each, and made mine different for the new ones, to generate these scripts in the first place.

Also I note that Mewtwo's person ID is 0081 and his flag is 2BC... so they don't seem to have to be the same... but, it does work that way (for it and for mine), so I'll leave it that way (whichever way it is now).


All times are GMT -8. The time now is 9:12 AM.


Like our Facebook Page Follow us on Twitter © 2002 - 2018 The PokéCommunity™, pokecommunity.com.
Pokémon characters and images belong to The Pokémon Company International and Nintendo. This website is in no way affiliated with or endorsed by Nintendo, Creatures, GAMEFREAK, The Pokémon Company or The Pokémon Company International. We just love Pokémon.
All forum styles, their images (unless noted otherwise) and site designs are © 2002 - 2016 The PokéCommunity / PokéCommunity.com.
PokéCommunity™ is a trademark of The PokéCommunity. All rights reserved. Sponsor advertisements do not imply our endorsement of that product or service. User generated content remains the property of its creator.

Acknowledgements
Use of PokéCommunity Assets
vB Optimise by DragonByte Technologies Ltd © 2023.