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

[Essentials v17.2] Gen 8 stuffs (Abilities, Items & Move)

WolfPP

Spriter/ Pixel Artist
1,309
Posts
5
Years
  • Let's start it!

    All Generation Cries (1-8) in .OGG format
    Gen.VIII Footprints
    Gen.VIII Battler Sprite (BW/Gen.V Style)

    Isle of Armor:


    Items:



    Evo Methods:


    Zacian/ Zamazenta Crowned Formes (V2.0);

    Ability codes:


    Steam Engine:
    Paste into abilities.txt:
    Code:
    232,PRISMARMOR,Prism Armor,"Reduces the power of supereffective attacks taken."
    233,NEUROFORCE,Neuroforce,"Powers up moves that are super effective."
    234,BALLFETCH,Ball Fetch,"If the Pokémon is not holding an item, it will fetch the Poké Ball from the first failed throw of the battle."
    [B][COLOR="Red"]235[/COLOR],STEAMENGINE,Steam Engine,"A Pokémon with this Ability will get a Speed stat boost if it's hit with a Fire- or Water-type move during battle."[/B]
    235 is my last number. Pay attention with yours.

    Then, inside script, find 'PokeBattle_Battler' and paste above Air Ballon's code, like:
    Spoiler:


    Libero (Cinderace's Hidden Ability):
    Add inside ability.txt ("XXX" will be your last number):
    Code:
    XXX,LIBERO,Libero,"Changes the Pokémon's type to the type of the move it's about to use."
    In 'PokeBattle_Battler' script, look for PROTEAN script and add LIBERO, like:

    Code:
        # Protean / Libero
        if (user.hasWorkingAbility(:PROTEAN) || user.hasWorkingAbility(:LIBERO)) &&
           thismove.function!=0xAE &&   # Mirror Move
           thismove.function!=0xAF &&   # Copycat
           thismove.function!=0xB0 &&   # Me First
           thismove.function!=0xB3 &&   # Nature Power
           thismove.function!=0xB4 &&   # Sleep Talk
           thismove.function!=0xB5 &&   # Assist
           thismove.function!=0xB6      # Metronome
          movetype=thismove.pbType(thismove.type,user,nil)
          if !user.pbHasType?(movetype)
            typename=PBTypes.getName(movetype)
            PBDebug.log("[Ability triggered] #{pbThis}'s Protean made it #{typename}-type")
            user.type1=movetype; user.type2=movetype
            user.effects[PBEffects::Type3]=-1

    About Gen.VIII Move Script:
    Spoiler:
     
    Last edited:

    mybusiness

    Guest
    0
    Posts
    Ball Fetch


    Assumptions made due to the current lack of accessible data:
    Spoiler:



    In PokeBattle_Battle, replace (or adapt) the method pbThrowPokeBall with this:
    Spoiler:

    Search @snaggedpokemon = [] and above it, put @firstfailedthrow= false # First failed catch attempt with a pokeball

    Search @peer=PokeBattle_BattlePeer.create() and put @firstfailedthrow=false # First failed catch attempt with a pokeball below it.

    Search if safariBall and replace what's inside that condition with this:
    Spoiler:


    If I don't forget, or sombody reminds me, I'll update this when more knowledge on this ability is available.

    EDIT: Fixed the bug showed in the post below.
     
    Last edited:

    WolfPP

    Spriter/ Pixel Artist
    1,309
    Posts
    5
    Years
  • EDIT 02/21: lowers the Speed stat of all Pokémon except itself.

    Cottom Down:
    In ability.txt add (change XXX for your last number):
    XXX,COTTONDOWN,Cotton Down,"When a Pokémon is hit by an attack, it will lower the Speed stat of other Pokémon."

    Now, in 'PokeBattle_Battler' script, above Air Ballon's code, paste (like):
    Code:
            if target.hasWorkingAbility(:COTTONDOWN,true)
              for i in @battle.pbPriority
                next if target.index==i.index || i.fainted?
                if i.pbReduceStatWithCause(PBStats::SPEED,1,target,PBAbilities.getName(target.ability))
                  PBDebug.log("[Ability triggered] #{target.pbThis}'s Cotton Down (lower Speed)")
                end
              end
            end
            if target.hasWorkingItem(:AIRBALLOON,true)
     
    Last edited:
    59
    Posts
    6
    Years
    • Seen Jul 26, 2023
    STEAMENGINE is not working for me. I get this error.
    OAyheHv.jpg
     

    WolfPP

    Spriter/ Pixel Artist
    1,309
    Posts
    5
    Years
  • STEAMENGINE is not working for me. I get this error.
    OAyheHv.jpg

    Its weird because 'def pbEffectOnDealingDamage', below it have an definition to 'movetype':
    Code:
    movetype=move.pbType(move.type,user,target)

    Maybe you put into the wrong place.
     
    59
    Posts
    6
    Years
    • Seen Jul 26, 2023
    Yes, sorry i fixed it. My air balloon is not inside 'def pbEffectsOnDealingDamage(move,user,target,damage)' but above (but works) i just put steam engine inside and it works.
    A question: You made the ability to rise speed by 3 stages right? Is there information of how much this ability raises the speed? I don't really think that it will rise that much but maybe it's confirmed (?
     

    WolfPP

    Spriter/ Pixel Artist
    1,309
    Posts
    5
    Years
  • Yes, sorry i fixed it. My air balloon is not inside 'def pbEffectsOnDealingDamage(move,user,target,damage)' but above (but works) i just put steam engine inside and it works.
    A question: You made the ability to rise speed by 3 stages right? Is there information of how much this ability raises the speed? I don't really think that it will rise that much but maybe it's confirmed (?

    Well you can check using google serch tool. You will see "drastically", same to increase 3:
    7_8_rolycoly_3_2x.jpg
     
    59
    Posts
    6
    Years
    • Seen Jul 26, 2023
    Well you can check using google serch tool. You will see "drastically", same to increase 3:
    7_8_rolycoly_3_2x.jpg

    Oh it flew over my head, well that's a pretty nice buff.
    But i guess Rolycoly must be really slow and once you know it's ability it's not hard to counter. It may be interesting if it's evolutions can tank a water attack to make him useful in a bad matchup.
     

    WolfPP

    Spriter/ Pixel Artist
    1,309
    Posts
    5
    Years
  • Oh it flew over my head, well that's a pretty nice buff.
    But i guess Rolycoly must be really slow and once you know it's ability it's not hard to counter. It may be interesting if it's evolutions can tank a water attack to make him useful in a bad matchup.

    Nothing that Trick Room can help. 8D
     

    WolfPP

    Spriter/ Pixel Artist
    1,309
    Posts
    5
    Years
  • Pastel Veil, Galarian Ponyta's signature ability:

    Add inside ability.txt (238 is my last number; description not official):
    Code:
    238,PASTELVEIL,Pastel Veil,"Protects the Pokémon and its ally Pokémon from being poisoned."

    In 'PokeBattle_Battler' script, below Imposter's code, paste:
    Code:
        # Pastel Veil
        if self.hasWorkingAbility(:PASTELVEIL) && @battle.doublebattle && !pbPartner.fainted? && onactive
          if pbPartner.status==PBStatuses::POISON
            PBDebug.log("[Ability triggered] #{pbThis}'s Pastel Veil")
            @battle.pbDisplay(_INTL("{1} was cured of its poisoning.",pbPartner.pbThis))
            pbPartner.status=0
            pbPartner.statusCount=0
          end
        end

    Then, in 'PokeBattle_BattlerEffects' script, inside 'def pbCanPoison?(attacker,showMessages,move=nil)' look for '(pbHasType?(:POISON) || pbHasType?(:STEEL))' and replace (Corrosion ability from Gen. VII included):
    Code:
        if (pbHasType?(:POISON) || pbHasType?(:STEEL) || hasWorkingAbility(:PASTELVEIL)) && 
          !(attacker && attacker.hasWorkingAbility(:CORROSION)) && !hasWorkingItem(:RINGTARGET)
          @battle.pbDisplay(_INTL("It doesn't affect {1}...",pbThis(true))) if showMessages
          return false
        end

    Now, for partner doesn't get poisoned stats, inside 'if !attacker || !attacker.hasMoldBreaker', add Pastel Veil, like:
    Code:
        if !attacker || !attacker.hasMoldBreaker
          if hasWorkingAbility(:IMMUNITY) ||
          (hasWorkingAbility(:FLOWERVEIL) && pbHasType?(:GRASS)) ||
          (hasWorkingAbility(:LEAFGUARD) && (@battle.pbWeather==PBWeather::SUNNYDAY || @battle.pbWeather==PBWeather::HARSHSUN))
            @battle.pbDisplay(_INTL("{1}'s {2} prevents poisoning!",pbThis,PBAbilities.getName(self.ability))) if showMessages
            return false
          end
          if pbPartner.hasWorkingAbility(:FLOWERVEIL) && pbHasType?(:GRASS) ||
             pbPartner.hasWorkingAbility(:PASTELVEIL)
            abilityname=PBAbilities.getName(pbPartner.ability)
            @battle.pbDisplay(_INTL("{1}'s partner's {2} prevents poisoning!",pbThis,abilityname)) if showMessages
            return false
          end
        end

    And done! :D
     
    Last edited:

    WolfPP

    Spriter/ Pixel Artist
    1,309
    Posts
    5
    Years
  • Room Service:

    Inside 'item.txt', add (XXX will be your last number; 200 = price, BTW):
    Code:
    XXX,ROOMSERVICE,Room Service,Room Services,1,200,"An item to be held by a Pokémon. Lowers Speed when Trick Room takes effect.",0,0,0

    Search for 'PokeBattle_Battle' script and replace TrickRoom's code (use CTRL+F to find):
    Spoiler:
     
    Last edited:

    WolfPP

    Spriter/ Pixel Artist
    1,309
    Posts
    5
    Years
  • Eject Pack (last att: 01/21):

    Inside 'item.txt' (from PBS folder), add (XXX will be your last number; price=200):
    Code:
    XXX,EJECTPACK,Eject Pack,Eject Packs,1,200,"An item to be held by a Pokémon. When the holder's stats are lowered, it will be switched out of battle.",0,0,0

    Then,'PokeBattle_BattlerEffects' script find the codes for REDUCE STATS (inside 'def pbReduceStat(stat,increment,attacker,showMessages,move=nil,downanim=true,moldbreaker=false,ignoreContrary=false)' and 'def pbReduceStatWithCause(stat,increment,attacker,cause,showanim=true,showmessage=true,moldbreaker=false,ignoreContrary=false)') and look for DEFIANT and COMPETITIVE's code and paste BELOW, like:
    Spoiler:


    And done! :D
     
    Last edited:

    HM100

    HM100 the Techno
    113
    Posts
    7
    Years
    • Seen Apr 27, 2024
    Good. Only thing that I made neutralizing gas ability behave like the abilities of Primal Pokémon.
    I mean checking if a Pokémon has that ability and if no one has it, it will end the effect of ability-suppression
     
    Last edited:

    WolfPP

    Spriter/ Pixel Artist
    1,309
    Posts
    5
    Years
  • Good. Only thing that I made neutralizing gas ability behave like the abilities of Primal Pokémon.
    I mean checking if a Pokémon has that ability and if no one has it, it will end the effect of ability-suppression

    Well, you can show to us what you did to compare between them (mine and yours code). :)
     

    HM100

    HM100 the Techno
    113
    Posts
    7
    Years
    • Seen Apr 27, 2024
    My own version of Neutralizing Gas to be used on Κορα Κορε:

    PBEffects
    Find where WonderRoom exists and put the following after it:
    Code:
        WonderRoom      = 12
        NeutralizingGas   = 13  # Used for Gen8 Neutralizing Gas ability and change 13 to whatever you want

    PokeBattle_ActiveSideField
    Find now class PokeBattle_ActiveField and put in def initialize the following ones (Should be the last one such as the following ones):
    Code:
          @effects[PBEffects::WonderRoom]      = 0
          @effects[PBEffects::NeutralizingGas] = false

    PokeBattle_Battler
    We need to replace the def hasWorkingAbility with the ones I use (Minus the Gastro/Gas type):
    Code:
      def hasWorkingAbility(ability,ignorefainted=false)
        return false if self.isFainted? && !ignorefainted
        return false if (@effects[PBEffects::GastroAcid] ||
                         @battle.field.effects[PBEffects::NeutralizingGas])
        return isConst?(@ability,PBAbilities,ability)
      end
    Next, find where Delta Stream ability code exists. Now we add this after the strong winds weather initialization with DeltaStream:
    Code:
          # Neutralizing Gas
          if self.hasWorkingAbility(:NEUTRALIZINGGAS) && [email protected][PBEffects::NeutralizingGas]  # Not hasWorkingAbility (We need to be workable even if other abilities supressed)
            @battle.field.effects[PBEffects::NeutralizingGas]=true
            PBDebug.log("[Ability triggered] #{pbThis}'s Neutralizing Gas started")
          end
    After every @battle.pbPrimordialWeather you found, put the following, making it as follows:
    Code:
        @battle.pbPrimordialWeather
        @battle.pbNeutralizingGasCheck

    PokeBattle_Battle
    Before def pbPrimordialWeather, add the following:
    Spoiler:


    That's it. You have the ability implemented. I haven't done any test yet but I suspect that it will work. Make sure you do this correctly. This is my own method of Neutralizing Gas using a PBEffect
     
    Last edited:

    HM100

    HM100 the Techno
    113
    Posts
    7
    Years
    • Seen Apr 27, 2024

    Gulp Missile

    This guide will add a new ability:

    PBEffects
    find where Yawn Resides and put this:
    Code:
        Yawn                   =  108
        GulpMissile        =  109 # Change 109 to whatever you want, make sure it is a number not used

    PokeBattle_Battler
    After @effects[PBEffects::Yawn] , you need to add the following ones. One example would be this:
    Code:
        @effects[PBEffects::Yawn]             = 0
        @effects[PBEffects::GulpMissile] = false # only paste this
    Before Cursed Body code, paste this:
    Spoiler:

    Last but not least, after Stance Change code, paste this:
    Spoiler:


    That's all!!!! If you have followed the instructions correctly, you have Gulp Missile ability implemented. But you need Cramorant with either Surf or Dive (Or both) in order for this ability to work as it is locked to a single Pokémon only
     

    HM100

    HM100 the Techno
    113
    Posts
    7
    Years
    • Seen Apr 27, 2024

    Adding Mirror Armor

    Now replace (or adapt) every method that reduces stat stages with the ones I will give (Does not give Q.Qore extras such as Cinament but does give Eject Pack with credits to Wolf for the code of that item effect. Also includes Full Metal Body):

    def pbCanReduceStatStage? (Replace or adapt it)

    Spoiler:


    def pbReduceStatBasic (Replace or adapt it)

    Spoiler:


    def pbReduce Stat (Replace or adapt it)

    Spoiler:


    def pbReduceStatWithCause (Replace or adapt it)

    Spoiler:


    Current Assumptions

    Spoiler:


    That's all!!! If you have done it correctly, you should have Mirror Armor ability implemented and fully functional.
     
    Last edited:

    WolfPP

    Spriter/ Pixel Artist
    1,309
    Posts
    5
    Years
  • Of course and it worked

    Nice shot! Also, remember to add 'ignoreMirrorArmor' for CONTRARY ability code, when you stat would be increased but will be decreased thanks to ability or will trigger error about that.
     
    Back
    Top