• 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.

[Pokeemerald] RoamersPlus: multiple concurrent Roamers and other Roamer related features

24
Posts
10
Years
  • Age 44
  • Seen today
Github branch:
https://github.com/Sneed69/pokeemerald/tree/RoamersPlus

IMPORTANT:
If using the RHH expansion, my changes to src/battle_ai_script_commands.c instead go into src/battle_ai_main.c

As most of you already know, in Pokemon Emerald, the player hears about the Eon Pokemon on TV and then chooses one of them to appear in the game.
The chosen Pokemon will then roam through certain routes and flee from battles instead of engaging the player in battle.
At its default state the game only allows for one roamer to exist at a time.
This branch allows you to set up as many roamers as you can fit into your saveblocks.
The Saveblock1 size of a Roamer has been reduced from 28 to 24 bytes. Each roamer beyond the first will of course take up an additional 24 bytes.

Other features:
  • Unbound Roaming
    An optional feature that extends roaming to all routes. Normally roamers do not frequent most of the western routes.
  • Terrestrial Roamers
    These roamers cannot be found on water tiles and do not roam on sea routes. Why is that Entei surfing?
  • Battling Roamers
    Choose whether a roamer flees or battles normally.
  • Stalkers
    These "roamers" will always move to your location. They leave the area after battle, but will follow you to the next area. Stalkers are not shown on the Pokedex by default.
  • Respawning Roamers
    Select one of four respawning modes: no respawn, daily, weekly or instant respawn. Respawning roamers will not stop existing until they are caught.
  • Scaling Roamers
    Adding a roamer with a level of 0 will create a scaling roamer. A scaling roamer's level increases based on your highest level party member and a constant modifier.
    Includes an optional feature that allows roamers to evolve if they are high enough level.
    Roamers will not level down or devolve if encountered with a weaker party.
  • Save/Load Persistent Locations
    Roamer locations are added to SaveBlock1 and thus will not be randomized on game load.

A branch that does not include Persistent Locations can be found here. In this branch the Roamer struct takes up 16 bytes.

I included an example that, at the start of a new game or when InitRoamer() is called, creates the following roamers to showcase these features:
  • A basic Latias roamer that respawns weekly
  • A terrestrial Pikachu roamer that respawns daily
  • A terrestrial Pikachu that does not flee from battle
  • A scaling Weedle stalker that does not flee from battle and respawns instantly
All these species are also added to the Pokedex so you can track them.
 
Last edited:
Back
Top