• Just a reminder that providing specifics on, sharing links to, or naming websites where ROMs can be accessed is against the rules. If your post has any of this information it will be removed.
  • Our friends from the Johto Times are hosting a favorite Pokémon poll - and we'd love for you to participate! Click here for information on how to vote for your favorites!
  • Serena, Kris, Dawn, Red - which Pokémon protagonist is your favorite? Let us know by voting in our grand final favorite protagonist poll!
  • PokéCommunity supports the Stop Killing Games movement. If you're a resident of the UK or EU, consider signing one of the petitions to stop publishers from destroying games. Click here for more information!
  • 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
    11
    Years
    • Seen Aug 6, 2024
    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