• The Eevee Expo Game Jam #10 has concluded, congratulations to all participants! Now it's time for the judges to play through the games, and you can play along to vote who deserves the community choice spotlight.
    You can check out the submitted games here!
    Play through the games and provide some feedback to the devs while you're at it!
  • Hi, Guest!
    Some images might be missing as we move away from using embedded images, sorry for the mess!
    From now on, you'll be required to use a third party to host images. You can learn how to add images here, and if your thread is missing images you can request them here.
    Do not use Discord to host any images you post, these links expire quickly!

Passive Abilities

Hero Mask

Rookie
Member
Joined
Aug 29, 2021
Posts
3
For my project, I am developing an additional database for passive abilities. The original development term I've been using for them is Lore Abilities. These abilities are smaller in function, and are designed more for bringing a Pokemon closer to how they are portrayed in their Pokedex entries. For an example:

Joy Bringer: This is a passive ability I've designed with the Togepi family line in mind. While you have a Pokemon with Joy Bringer in your party, if a Pokemon in your party gains happiness, they gain a little more happiness from any given activity. This is inspired by Togepi's Pokedex entry, which describe Togepi as gathering happiness in its shell to share with others later.

I have plenty of ideas for potential passive abilities. The problem I am running into is how to implement another database. I have a background in programming, but I haven't worked with Pokemon Essentials before. I am working with version 19 for my project, if anyone has some helpful advice I would really appreciate it.
 
The script sections Compiler_CompilePBS and GameData should give you a good idea of where to start! Line 207 in the Compiler_CompilePBS is where the section for compiling data on abilities starts, so you could use that as a blueprint for creating a new one!

Personally, though, I don't think you necessarily need a whole separate database for passive abilities- since the only thing stored in the abilities data file is name, ID, and description, you could definitely store all the passives with the regular ones as well, with the actual differences just being in how they're distributed and how they function.
 

Hero Mask

Rookie
Member
Joined
Aug 29, 2021
Posts
3
I did think about trying to incorporate the passive abilities into the pre-existing ability PBS file, but ultimately I decided against that idea for 2 reasons:

1. I am not confident enough in my understanding of Ruby to try and write a means of the engine to sort out two different kinds of abilities out of the same file.

2. I prefer the idea of 2 separate PBS files for the sake of debugging, so that, when something inevitably goes wrong, I can quickly and easily tell if the source of the problem is my new passive abilities or not, without having to go sifting through the ability PBS.

Beyond all of that though, thank you so much for the guiding hand. Having never worked with Pokémon Essentials before, it can be pretty overwhelming trying to sift through all the elements of the game engine to find what I'm looking for. Thank you again so much.
 
Last edited:

Hero Mask

Rookie
Member
Joined
Aug 29, 2021
Posts
3
So, two more questions:

1. Where does Essentials tie together the effect of an ability with the ability itself? I checked Compiler_CompilePBS and GameData and I didn't find anything that tells the game what to do when it is given an ability. Did I miss something or am I just not looking in the right place.

2. Where do I look to find the in-code functions, such as the command that tells the game where to look when it needs to confirm whether a Pokémon has a particular ability or not? Like a "if has ability(Iron Fist), do this, else ignore" style function.
 
Ability effects are spread out all over the place, so there's no one place to look for all of them. A lot of in-battle effects are handled in BattleHandlers_Abilities, but then you've got stuff like how Suction Cups and Sticky Hold affect fishing, which is in Overworld_Fishing, how certain abilities affect wild Pokemon encounters, which is in Overworld_WildEncounters, or how Flame Body and Magma Armor make eggs hatch faster, which is in UI_EggHatching.

The functions to check for if a Pokemon has an ability are in the script section Pokemon, under [[ Pokemon ]]. You'll probably be making new methods for this, though, since these methods only check the Pokemon's ability index (the number that pulls from the pool of its species' abilities), and you'll be making a new attribute of the Pokemon for its passive ability.

Oh, and another thing I forgot to mention, the script section Abilities under [[ PBS data ]] shows how to structure the .data file for abilities. (I think you may have to make a separate class for passives if you want to keep it in a separate PBS, since it seems like you can only have one .dat file per class, but I might be mistaken, since I know Pokemon forms have their own .dat file)
 

0maeWaM0uShindeiru

Novice
Member
Joined
Nov 23, 2020
Posts
34
I personally wanna look into doing a similar thing for Essentials version 18.1, with the same concept of being Passive Abilities. The only difference is that the starters of the concept get their own Passive Abilities too, and that some Passive Abilities have their own battle purposes. For example:
Treecko Line: Swift Striker - A Pokemon with this Passive Ability gains priority on all of its attacking moves, unless they already have priority.
Charmander Line: Draconian Blood - A Pokemon with this Passive Ability gains the Dragon typing as a secondary type. If they already have a secondary type i.e. Flying, that type is overwritten.
Totodile Line: Fierce Instinct - A Pokemon with this Passive Ability has its Attack doubled similar to Huge Power/Pure Power.
 
Back
Top