• 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!
Innate Abilities (Yet Another "All Abilities Mutation" mod)

v21.1 Innate Abilities (Yet Another "All Abilities Mutation" mod) 1.3

This resource pertains to version 21.1 of Pokémon Essentials.
Pokémon Essentials Version
v21.1 ✅
First and foremost: This plugin uses DemIce's All Abilities Mutation plugin as a base. My plugin just updates it a bit and adds some new values in the PBS to make this version work. All credits please go towards him, since I basically just made a copy-paste of what was already on essentials and changed some text, hence why it might be buggy at some places.
Needless to say that if DemIce wants me to take down this plugin I will so without hesitation. It is his plugin afterall.
Also being honest, this plugin might be a bit out of league of my current knowledge of Ruby, so expect bugs or some bad optimization. Please report any bugs and suggestions and I will try to adjust them as soon as I can.

If you have played games like Pokemon Elite Redux and Pokemon Exceed you know what this is, if not, then let me introduce you to the concept of Innate Abilities

Innate Abilities
are a set of 1 to 3 abilities that a pokemon can have alongside their regular/hidden ability, making pokemon have up to 4 abilities active at the same time!

Basically there are 2 ability pools. Regular abilities and Innate abilities:
The Regular abilities behave like we all know:
Pokemon have 2 abilities + 1 Hidden at most, and they can only have 1 of those 3 active at the same time. They can be changed with the ability patch/capsule, passed by breeding, etc etc.
The Innate abilities behave in a more simple way: Each pokemon can have from 0 to 3 of them, and they will be always active at the same time alongside their regular ability (Thecnically they can have more than 3, but for balance sake I recommend 3, and because 3 it's the ammount the optional "Innate in Summary" file supports)

How does it work?
In the Pokemon.txt files in the PBS folder you can add a new property to each pokemon called "Innates"

eKTlZvg.png

(In this example some Blaziken might have Limber, others Aerodinamic and in some cases Speedboost, but all Blaziken will always have Blaze, Flame body and Strong legs to keep in mind. For balance I recommend keeping the strongest abilities for regular ones since the mon can only have 1 of those at the time, and keep innates for more utility or to keep the theme of the pokemon)

It should be self explanatory. Treat it like it was just another section for abilities. I recommend no less than 1 and no more than 3 for balance sake, but you can do with it whatever you want. This property is entirely optional so your game shouldn't crash if a pokemon doesn't have it.

To install simply drag the "Innate Abilities" folder into your plugins folder, and thats it!

Before adding the Innate property, I recommend making a backup of your Pokemon.txt file, since in order to uninstall the plugin it you need to remove every instance of "Innate =" in it

As of v1.3, you can now make the Innate abilities be "Locked" and "Unlocked" during gameplay! So now the ammount of Innate abilities each pokemon has can be dynamic!


If you have played Elite Redux you'll be familiar with this concept. If not, let me introduce you to the Progression System of Innates

Instead of all pokemon have all of their possible innates active from the get go, you can now set conditions to "Lock" them, making them have no effect in battle and not be shown in the Innate Summary Page until they are "Unlocked".

There's 2 Possible ways of setting this conditions:
Lock the Innates of all pokemon via a variable (Which I called Progress with Variable)
or
Lock the Innates of each pokemon via their level (Which I called Progress with Level)

It's important to mention that both methods are mutually incompatible. Meaning that, if you are using one method, the other has to be set to false. Otherwise the game might not work as intended.

Each of this corresponding to new Settings in the AAM Settings file:
Here's how each progress works:

Progress with Variable:
In the AAM Settings file you can find these 2 settings:

If the Progress with Variable is on, all pokemon in the game will have their ammount of available Innates limited to the amount given in a variable.

So for example, if the variable it's set to 1, all pokemon will have only the first innate available, in order from Left to Right in the Innates = section of the PBS.

So in this particular case, if a pokemon has 3 Innates, only the first one will be Active in battle and displayed in the summary, with the message "This Innate it's currently Locked".

W60V1C2.png


Since it's depending on a Variable, it's up to the user to let the player know when they'll get their next Innate unlocked.

In order to set it up for your project:
Go to AAM Settings and look for these 2 settings.

Ruby:
INNATE_PROGRESS_WITH_VARIABLE = false
INNATE_PROGRESS_VARIABLE = 32

In order to enable the Progress with Variable, set the setting to true, and change the Innate_Progress_Variable to be a game_variable of your liking. Defult being 32. Now, the value of this variable defines the ammount of available Innates. With 0 being No Innates (So you can thecnically disable them if needed)
1 being only the first one
2 being the first 2
and 3 being ALL innates, so if you are using more than 3, this unlocks all of them.

Don't use a value greater than 3.

Progress with Level:
If the progress with Level it's on, all pokemon will have their Innates decided by their level.

I'll have to start with the settings for this one since it's a bit more complex:

In the AAM Settings you'll find these 2 settings:
Ruby:
INNATE_PROGRESS_WITH_LEVEL = false
LEVELS_TO_UNLOCK = [1, 15, 45]

By setting the Innate Progress with Level to true, each pokemon will unlock their respective Innate if they are the level given in the Levels_to_unlock array.

For example with the default array: Each pokemon will unlock their first innate at level equal or greather than 1, their 2nd innate at level equal or greather than 15, and their third innate at level equal or greather than 45

I should mention that the Innate doesn't remember if the Pokemon previously unlocked the Innate or not, so if for example your 2nd innate unlocks at level 15, your pokemon is level 15 so it has it unlocked, and somehow returns to level 14, the Innate WILL be locked once again.

If a pokemon doesn't have the current level to unlock an Innate, alongside the "Locked" name change, the "Description" will specify at what level does the pokemon "Unlock" their Innate

OwbNP7r.png


It's important to mention that the values in the array don't NEED to be in ascending order, from lowest level to highest, they are asociated with an Innate regardless. For example: An array of [90, 15, 45], in a level 30 pokemon, will have their first Innate Locked, the 2nd Active, and the 3rd locked.

It works... I just don't recommend it.

Optional files:
In the .rar of the file I've also added a couple of folders. "Innate Summary Page" and "(Optional) Pokedex Data Page".

As the name implies, "Innate Summary Page" adds another page in your Pokemon's summary screen to display its current innates. This requires Lucidou's Modular UI Scenes plugin to work.
To install, place the folder inside of your Plugins folder.Then, open the "Innate Summary Page" folder, there are 2 images: "bg_innates" and "page_innates". Simply move this 2 images to your Graphics > UI > Summary folder and you're good to go.
u2DgLB4.png

Disclaimer: The summary image is made with the base essentials style. I just forgot to change it for the screenshot

If a pokemon doesn't have enough (Or any for that matter) Innates for the summary, it will show :---No Innate---.
0SwOpgG.png


This Overwrites any restriction, so you'll never be dissapointed with working towards unlocking an Innate just to discover the "No Innate" text below it.

The 2nd optional file is a modification of Lucidou's In-depth Pokedex Data Page. What it does is display the Innate abilities of a pokemon in the "Abilities" section of the data page in the pokedex, and if the player filters by abilities, pokemon that have said ability as an Innate will be recognized as well.

KqG5eBs.png

rIgNSzA.png

F A S T F R O G

To install the mod, simply open the "(Optional) Pokedex Data Page" folder, then grab the "002 Main Page", "003 Sub Menu" and "005 Data Messages", and place them inside of "MUI_002 Pokedex Data Page" in your plugin's folder. Replace the original files.

An important note: If you are using either of the Innate Progress methods, the Pokedex Data Page WILL show all Innates of the pokemon. It takes the values straight from the PBS so it's not affected by any restriction. Keep this in mind, so that way the player can see what Innate they might unlock in the future.

If you wan't to know exactly what each file modifies:
In line 247 adds these code:
002 Main Page mod, line 247:
#Innate abilities add-on
    species.innates.each do |a|
      next if @data_hash[:ability][3].include?(a)
      @data_hash[:ability][3] << a
    end
Quite simply adds the Innates as a recognizable feature.

This one changes quite a bit.
In line 387:
003 Sub Menu, line 387:
sp.innates == base_form.innates
        if sp.abilities.include?(cursor) || sp.hidden_abilities.include?(cursor) || sp.innates.include?(cursor)

In line 629:
003 Sub Menu, line 629:
when 3 then note = "Innate" #Innate ability add-on

And finally in line 639:
003 Sub Menu, line 639:
when 3 then imagepos.push([path + "submenu", 50, 104 + 42 * i, 0, 472, 412, 40]) #Innate ability add-on

This just adds the innates to the list of abilities

This one is short:
Just modifies line 545
005 Data Messages, 545:
elsif species.innates.include?(ability)
                text << "a " + t[1] + "innate"
It just shows that the pokemon can have the Innate ability
The Gen 9 pack is thecnically supported, althought I haven't tested all interactions, so please report any problems.

I should also mention about the last setting in the AAM Settings file.

If set to true:
XFCvgXT.png


Simply makes the text for the description of the Innates smaller. I personally preffer that since in my project I use longer descriptions and I made my summary images match it.

The setting only exist because I was tired of constantly changing it back to default font size for making an update, so you can leave it to False to keep using the default Essentials Font size.

You are free to use it tho.

Known Bugs:
* Opportunist doesn't work neither as a Regular nor an Innate ability.
* Guard Dog only blocks the drop of attack by Intimidate, but doesn't raise it after it

Changelog:
=================v1.3=============
*Added two ways of make the Innate system progress, either by a variable and make it affect all pokemon,
*or via each pokemon level, and make them affect each one individually
*Added text in case of a pokemon doesn't have an Innate to show in the summary.
*I haven't managed to find a solution for Guard Dog nor Opportunist. I belive those will require to
*mod the Gen 9 plugin itself or add them to the Scripts directly. I need more testing but I wanted
*to release this feature first
=================v1.2=============
*Hopefully solved the problem with the "hasActiveAbility?" definition (Credits to Penelope)
*Protean and Libero now work as Innates
*Fixed the handler "ModifyMoveBaseType" so abilities that use it(Like Galvanize or Pixilate) now properly work as Innates
*Solved Poison Puppeteer working as an Innate now (Credits to Penelope for the code)
*Fixed an small typo in the Pokedex Data Page mod, so now reads "An Innate" and not "A Innate"
=================v1.1.2=============
*Fixed Tera Shell's ability splash not showing up while being a Regular/Non-innate ability
*Fixed Poison Puppeteer not working while being a regular ability
=================v1.1=============
*Fixed the problem with the gen 9 pack having moves learned at -1 level. Now -1 levels are an accepted value
*Fixed damage altering abilities that use the DamageCalcFromTarget and DamageCalcFromTargetNonIgnorable flag not working properly
Credits
DemIce - For the base plugin
Lucidous89 - For the Enhanced UI and Pokedex Data Page plugin
Penelope - For providing code for update the base plugin and a couple of handlers
Author
Sonicover
Downloads
139
Views
1,232
First release
Last update
Rating
0.00 star(s) 0 ratings

More resources from Sonicover

Latest updates

  1. Innate Progress System and Methods added

    This update focues on adding ways to "Lock" and "Unlock" innates for a more dynamic progression...
  2. Small bunch of fixes

    This update just fixes some of the faulty code of the previous version, and fixes a couple of...
Back
Top