• Do not use Discord to host any images you post, these links expire quickly! You can learn how to add images to your posts here.
  • Eevee Expo's webhost has been having technical issues since Nov. 20th and you might be unable to connect to our site. Staff are also facing issues connecting, so please send a DM to Cat on-site or through Discord directly for faster service!
Innate Abilities (Yet Another "All Abilities Mutation" mod)

Resource Innate Abilities (Yet Another "All Abilities Mutation" mod) 1.5.4

Bguy7

Pokémon Sol Version Creator
Member
Joined
Jul 1, 2024
Posts
28
Since you're trying to make this plugin compatible with the Gen IX Plugin, I wanted to bring up a compatibility issue I came across. It seems that both plugins are using their own version of "ability_triggered?" that do not align in usage.

Here's the version found in the AAM Battler script:

Ruby:
Expand Collapse Copy
  def ability_triggered?(check_ability) # honestly, this method is not necessary
    return @battle.pbAbilityTriggered?(self, check_ability)
  end

And here's the version in the Gen IX plugin's Battle_Battler script:

Ruby:
Expand Collapse Copy
  def ability_triggered?
    return @battle.pbAbilityTriggered?(self)
  end

And, for reference, here's the Gen IX plugin using it in Supersweet Syrup, which is what gave me an error when a Pokémon with the ability appeared:

Ruby:
Expand Collapse Copy
Battle::AbilityEffects::OnSwitchIn.add(:SUPERSWEETSYRUP,
  proc { |ability, battler, battle, switch_in|
    next if battler.ability_triggered?
    battle.pbShowAbilitySplash(battler)
    battle.pbDisplay(_INTL("A supersweet aroma is wafting from the syrup covering {1}!", battler.pbThis))
    battle.allOtherSideBattlers(battler.index).each do |b|
      next if !b.near?(battler) || b.fainted?
      if b.itemActive? && !b.hasActiveAbility?(:CONTRARY) && b.effects[PBEffects::Substitute] == 0
        next if Battle::ItemEffects.triggerStatLossImmunity(b.item, b, :EVASION, battle, true)
      end
      b.pbLowerStatStageByAbility(:EVASION, 1, battler, false)
    end
    battle.pbHideAbilitySplash(battler)
    battle.pbSetAbilityTrigger(battler)
  }
)

Now, the note attached to the AAM Battler usage says that the method is not necessary, and I am unable to find any instance of the plugin as a whole using the method, so I'm tempted to just delete it to fix the contradiction, but I'm unsure if there's any kind of interplay that I'm not understanding, so I wanted to bring it up here.
 

Penelope

Trainer
Member
Joined
Sep 15, 2023
Posts
92
Since you're trying to make this plugin compatible with the Gen IX Plugin, I wanted to bring up a compatibility issue I came across. It seems that both plugins are using their own version of "ability_triggered?" that do not align in usage.

Here's the version found in the AAM Battler script:

Ruby:
Expand Collapse Copy
  def ability_triggered?(check_ability) # honestly, this method is not necessary
    return @battle.pbAbilityTriggered?(self, check_ability)
  end

And here's the version in the Gen IX plugin's Battle_Battler script:

Ruby:
Expand Collapse Copy
  def ability_triggered?
    return @battle.pbAbilityTriggered?(self)
  end

And, for reference, here's the Gen IX plugin using it in Supersweet Syrup, which is what gave me an error when a Pokémon with the ability appeared:

Ruby:
Expand Collapse Copy
Battle::AbilityEffects::OnSwitchIn.add(:SUPERSWEETSYRUP,
  proc { |ability, battler, battle, switch_in|
    next if battler.ability_triggered?
    battle.pbShowAbilitySplash(battler)
    battle.pbDisplay(_INTL("A supersweet aroma is wafting from the syrup covering {1}!", battler.pbThis))
    battle.allOtherSideBattlers(battler.index).each do |b|
      next if !b.near?(battler) || b.fainted?
      if b.itemActive? && !b.hasActiveAbility?(:CONTRARY) && b.effects[PBEffects::Substitute] == 0
        next if Battle::ItemEffects.triggerStatLossImmunity(b.item, b, :EVASION, battle, true)
      end
      b.pbLowerStatStageByAbility(:EVASION, 1, battler, false)
    end
    battle.pbHideAbilitySplash(battler)
    battle.pbSetAbilityTrigger(battler)
  }
)

Now, the note attached to the AAM Battler usage says that the method is not necessary, and I am unable to find any instance of the plugin as a whole using the method, so I'm tempted to just delete it to fix the contradiction, but I'm unsure if there's any kind of interplay that I'm not understanding, so I wanted to bring it up here.
Oh, thats my bad. I should make it more clear.
The plugin needs to be fixed for some Gen 9 abillities.

Regarding multi-abilities, it should record which one-battle ability was triggered, so the def ability_triggered?(check_ability) has an argument check_ability.

you could experiment yourself if you give a mon two (or more) one-battle abilities, for example, Supersweet Syrupand and Dauntless Shield.
One of them never be triggered.
 

Saten

Rookie
Member
Joined
Jan 20, 2025
Posts
2
Hello!, first of all thanks for your work!
I want to report that I have issues with the ability Shadow Tag, and a custom ability that also traps, they didnt work but no error messages appears on screen.
Both abilities works as normal when I remove the Innate Abilities plugin from the plugins folder. I didnt check Magnet Pull or Arena Trap yet.
 

Sonicover

Cooltrainer
Member
Joined
Jan 14, 2022
Posts
147
Hello!, first of all thanks for your work!
I want to report that I have issues with the ability Shadow Tag, and a custom ability that also traps, they didnt work but no error messages appears on screen.
Both abilities works as normal when I remove the Innate Abilities plugin from the plugins folder. I didnt check Magnet Pull or Arena Trap yet.
Thats odd, I'm trying to recreate that error with both cases of the ability (being regular and innate) but had no issues so far. Perhaps another plugin is modifying your code? Or are you using them in a pokemon uncapable of being trapped?
 

Saten

Rookie
Member
Joined
Jan 20, 2025
Posts
2
Thats odd, I'm trying to recreate that error with both cases of the ability (being regular and innate) but had no issues so far. Perhaps another plugin is modifying your code? Or are you using them in a pokemon uncapable of being trapped?
Thanks for your answer!
So far wild battles against a pokemon with Shadow Tag always let me escape, with no pokemon immune to beign trapped as the leader (this was the reason of my report),
But after doing more tests... if I try to switch between my party the ability message shows up and both abilities starts to work as normal... So I will keep doing more tests.
 

Sonicover

Cooltrainer
Member
Joined
Jan 14, 2022
Posts
147
Sonicover updated Innate Abilities (Yet Another "All Abilities Mutation" mod) with a new update entry:

Another bunch of fixes

YOU HAVE TO RE-COMPILE AND START A NEW GAME AFTER THIS UPDATE, AS IT CHANGES ANOTHER CHUNK OF STUFF
*FIXED OPPORTUNIST'S ABILITY AND INNATE AT LONG LAST. Huge thanks to Komeiji for suggesting update the bit of code that made the trick.
*Reworked how the innates are stored in a Pokemon. Now instead of saving them and reverting them at the end of battle, it saves them per species and form, so any given pokemon can have a unique set of innnates per form no...

Read the rest of this update entry...
 

Sonicover

Cooltrainer
Member
Joined
Jan 14, 2022
Posts
147
I hope this update fixes some of the problems reported. Sorry if it took so long, work is very demanding at the moment.

For the next update I think I'll try to fix the abilities that use "pokemon.ability ==" for their main check. However if thats the case I'm afraid this will be the last update that doesnt require the Gen 9 pack. I said that because I remember Tsoukinator not using it in his project so I wouldn't want anyone to be restricted of a plugin. I'll try and make it not dependant on it since the less dependencies the plugin has, the better. Specially for keeping things updated since I will requiere to alias some stuff.

Also I'm considering merging the Innate Summary and the Innate Abilities folders into one since I don't think it goes unused by many people.
 

Yurisei

Rookie
Member
Joined
Feb 1, 2025
Posts
1
Both of these errors will be solved next patch. I've solved them a while ago but hadn't updated the file and I'm not in my home due vacations. But for the first method you just need to go to the Utilities section of the plugin and delete all aliases for all of the pbAddPokemon methods, since those are no longer needed.

The second one I can't exactly remember the method, but I remember a similar error trying to call empty in something that was not an array, wich I fixed right away. I think it was about the innate restore system. I'll give it a closer look once I get back, wich should be this Saturday

Hi, I've downloaded 1.5.4 today onto the unofficial EBDX 21.1 base, and I'm getting the exact same .empty? for nil:NilClass error on Battlers line 87 when trying to enter a battle. Did this fix not make it into 1.5.4, or is it a compatibility problem with EBDX maybe?

Also while I'm here, how have abilities like Trace and Mummy been implemented? If a Pokemon has Trace as an Innate, I'd guess it copies the opponent's personal ability into Trace's innate slot until switched out, and I'd guess Mummy as an innate only copies itself into the personal ability slot?
 
Last edited:

Sonicover

Cooltrainer
Member
Joined
Jan 14, 2022
Posts
147
Hi, I've downloaded 1.5.4 today onto the unofficial EBDX 21.1 base, and I'm getting the exact same .empty? for nil:NilClass error on Battlers line 87 when trying to enter a battle. Did this fix not make it into 1.5.4, or is it a compatibility problem with EBDX maybe?

Also while I'm here, how have abilities like Trace and Mummy been implemented? If a Pokemon has Trace as an Innate, I'd guess it copies the opponent's personal ability into Trace's innate slot until switched out, and I'd guess Mummy as an innate only copies itself into the personal ability slot?
I havent tested the unofficial EBDX but it should work, could you send the error message please?
 
Back
Top