• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

Adding a "Battle Strong Pokemon" event

416
Posts
11
Years
  • Age 34
  • Seen Feb 10, 2024
This short tutorial will teach you a nice script that will add an event into your Pokemon hack in which your player is tasked to defeat (or catch) stronger than normal Pokemon.

This tutorial is written for FireRed but it can be easily altered to fit in any gen 3 game.

What you will need:
AdvanceMap
PKSV (preferred, XSE will work but the scripts will need to be changed)
A brain
A little time
Basic Knowledge on how to use AM and PKSV
SHINYIZER (optioinal)

Let us start with the person who gives the event...

For the player to actually be tasked to fight these pokemon, he must talk to someone who needs them gone. In my hack I will be using a security guard that I have added all around Kanto.

Simply use AMap to add your character to your hack... very simple... Im not even going to explain it, cause this is a Scripting tut not a Mapping tut. but I will give you pictures if it helps ;)
attachment.php
attachment.php
attachment.php

This mans script is very straight forward...
simply copy and paste this code into PKSV and edit it to your liking.
Spoiler:

*NOTE: ALL variables and flags must be changed to match YOUR hack layout*​

Basically, his main goal is to turn on the strong Pokemon you will be fighting later. and once they are all fought, he rewards you. all the text can be altered to your liking, including the reward item and everything else...

NOW its time for... POKEMON.
you cannot fight strong pokemon without having events for them... so agian, you are going to AMAP and adding your pokemon events... We will be using tiles for this script...
simply add 1 per pokemon that you wish to have, and make the Var number = the var you used to activate the pokemon in the previous script (0x4002 in my example)
attachment.php

The pokemons actual script should look like this: (in this example you will be fighting 5 Golbat)
Spoiler:


now that wasnt too hard was it... you can change the pokemon and level of each battle, or use the same @battle offset and just change the flags for each battle. each one will count down... and when you hit 0, no more battles ;)

attachment.php

now lets talk about options and flexibility... You can do MANY different things with this script. What if you dont want the same pokemon to show up in the same spot every time. players could map it out and know exactly where to go to finish your quest easily. What if you want a 25% chance of finding the pokemon there ;) so they may step on the tile 3 or 4 times before they get into the fight...

Try this:
Spoiler:


Place this script in the tile and your pokemon flag script (from above) would be in @pokestart#

Now that makes the pokemon appear to not be in the same spot... what if you want them to face the pokemon in a specific order... maybe weaker pokemon first with a shiny at the end...

check this one out:
Spoiler:


Now you can use both the above scripts to have a 25% (or whatever) chance of fighting your event pokemon in the order that you choose...

but what if you cont care the order... what if you just want a percent chance of fighting any of your pokemon in any of your locations...
you would use this script:
Spoiler:


If you think hard you can probably figure out how to be even more flexible with your scripts...

for instance, make 10 nidoking battles using levels 40-50 that all count down the counter from 5, use the full random script and DONT give any of the battles flags, instead have them check if your countdown var is 0, if it is than jump to "release end" so there is no battle. place 15 tiles all with the offset to your full random script. Now the player will fight 5 nidoking but their appearance rate and levels will be different, they may fight all 5 at level 48 adn higher, or all 5 at lower levels. they may walk over 3 tiles and then fight on the next 2 tiles in a row.

the event could be a man giving rewards for feinting nidoking... and they arent 5 specific nidoking so levels can be randomized, he has a nidoking overpopulation problem. the possibilities are endless. This is not about making MY events, its an exercise in creativity. THINK, and make cool things happen in your hack.
 
173
Posts
11
Years
  • Seen Jan 2, 2015
Hmm... Could the actual Battle Scripts, where you battle the Pokemon, be on different maps from each other? Because I was thinking about a semi-random Raikou, Entei, and Suicune encounter, right after Burned Tower? Would this work? With, like, no rewards, or something? This would be a great idea for a Johto hack, if it would work!
 
416
Posts
11
Years
  • Age 34
  • Seen Feb 10, 2024
Hmm... Could the actual Battle Scripts, where you battle the Pokemon, be on different maps from each other? Because I was thinking about a semi-random Raikou, Entei, and Suicune encounter, right after Burned Tower? Would this work? With, like, no rewards, or something? This would be a great idea for a Johto hack, if it would work!

Absolutely, there is no reason they need to be on a single map. Infact my Mt.Moon example, with the Golbats, has the battle scripts on the 3 different floors of Mt.Moon. As long as you set the var to turn them all on nomatter what map they are on, they will turn on.

In that instance you would want to have 3 battles in the full random script, and each battle would need to set its flag if caught (or killed). its a great idea man. you can have as many battle tiles as you want all sending the code to the full random script, then it would choose from the 3 battles (or a chance of not having one of the battles, however you wanna set it up), or if the battles have been won (caught or killed) it would skip em and choose from the remaining battles.

genius idea for a johto hack
 
173
Posts
11
Years
  • Seen Jan 2, 2015
Absolutely, there is no reason they need to be on a single map. Infact my Mt.Moon example, with the Golbats, has the battle scripts on the 3 different floors of Mt.Moon. As long as you set the var to turn them all on nomatter what map they are on, they will turn on.

In that instance you would want to have 3 battles in the full random script, and each battle would need to set its flag if caught (or killed). its a great idea man. you can have as many battle tiles as you want all sending the code to the full random script, then it would choose from the 3 battles (or a chance of not having one of the battles, however you wanna set it up), or if the battles have been won (caught or killed) it would skip em and choose from the remaining battles.

genius idea for a johto hack


Thanks for the reply. If I ever make a Johto hack, this would be a great idea, you're right. That's why I thought of this.
EDIT: How would this work for 3 different Pokemon? The random script? How would it choose from Raikou, Entei, or Suicune and not get the same battle twice? I know a flag would be set, but what about the other tiles? how would it choose, say if you already caught Entei, how would it choose between Raikou and Suicune, and not Entei again? Could you possibly show what that script(s) would look like? Thanks!
 
416
Posts
11
Years
  • Age 34
  • Seen Feb 10, 2024
EDIT: How would this work for 3 different Pokemon? The random script? How would it choose from Raikou, Entei, or Suicune and not get the same battle twice? I know a flag would be set, but what about the other tiles? how would it choose, say if you already caught Entei, how would it choose between Raikou and Suicune, and not Entei again? Could you possibly show what that script(s) would look like? Thanks!


just got your edit (sorry i dont get email notifications for edits...

it would take a little more work to make a script like that. for instance: (wrote in psudo code, not real code)
after player catches entei a flag is set
in the full random code, if it lands on Enteis number,, it checks that flag,
if that flag is set, it jumps to the full random script again. to try again...
OR
if that flag is set it jumps to a release end code

Spoiler:


Its exactly the code from before, I bolded the important parts to show why it works...

after defeating entei, a flag is set
at the beginning of the entei script, that flag is checked
if that flag is set, it jumps back to the randomizer

NOTE
If you are forcing a battle (instead of giving a battle chance) you would want the "if flag is true" to jump to 0x81A7AE0 so it wont try and cycle through the 3 battles forever, never finding an end.

If you are using full random, the percent chance has MANY release end numbers (only 3 of 30 end in a battle) so it is not necessary to jump to 0x81A7AE0 you can just have it try again.
 
37
Posts
10
Years
Would this work if I put a pokemon in the overworld as the one you need to battle or is that different, and would it be easier or more difficult. (Probably more difficult.)
 
416
Posts
11
Years
  • Age 34
  • Seen Feb 10, 2024
Would this work if I put a pokemon in the overworld as the one you need to battle or is that different, and would it be easier or more difficult. (Probably more difficult.)

You would use person events instead of tiles... and the flag that is set after battle would need to be the person ID... other than that it should work...
 
Back
Top