• 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.
  • Ever thought it'd be cool to have your art, writing, or challenge runs featured on PokéCommunity? Click here for info - we'd love to spotlight your work!
  • Our weekly protagonist poll is now up! Vote for your favorite Conquest protagonist in the poll by clicking here.
  • 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.

Krymson's Custom Ability Thread

  • 6
    Posts
    3
    Years
    • Seen Apr 24, 2023
    I recently started with Pokémon Essentials and I couldn't be more of a newbie with the scripting part.

    Before you start reading, I'm sorry for any misspelling / grammatical error / mistake in general. I'm working on improving my english since it's my 3rd language.

    I write this post with the intention of creating some sort of "ability mega-thread" discussion for help and contributions.

    I've written almost 40 custom abilities with some inspiration from other users (only a few, and I almost always change them to mantain originality) and I'll post them
    with the code attached (if they are implemented). It'll be nice if you could stop by and help with whichever ability catches your sight.

    You can also use them in your games if you like.

    No more chattering, let's get straight to the thread:

    - Vampirism: bite attacks heal the user a percentage of the damage dealt.
    - Slime: halves contact move's damage directed to the user. Additionaly, if the user is hit by a water move, it lowers it's speed 1 stage.
    - Bad Blood: critically strikes enemies that are affected by a status condition (like Merciless but for every status condition).
    Code:
    BattleHandlers::CriticalCalcUserAbility.add(:BADBLOOD,
      proc { |ability,user,target,c|
        next 99 if target.poisoned? || target.burned? || target.asleep? || target.frozen? || target.paralyzed?
      }
    )
    - Avidity: two-turn attacks don't require the charge turn (like Solar Beam on the sun or Power Herb effect).
    - Brave Waters: water moves always have priority.
    Code:
    BattleHandlers::PriorityChangeAbility.add(:BRAVEWATERS,
      proc { |ability,battler,move,pri|
        next pri+1 if move.type == :WATER
      }
    )
    - Spectral Image: the greater the difference in speed stat with the enemy, the greater the boost in evasion (max. +2).
    - Conditioning: each time a move is used against the user in succession, the damage will be decreased by 1/4 (only of that move, breaks the reduction if a different move is used [Torment~ish?]).
    - Adrenaline Rush: raises the Speed stat by 50% when the user has less than or equal to 50% of its maximum HP remaining.
    - Scavenger: when the user knocks out a foe, it recovers 25% of their maximum HP.
    - Gravitation: applies Gravity while the bearer is in battle.
    - Quickdraw: nullifies the priority of all moves. Protect-like moves are unaffected.
    - Elemental Supremacy: status effects caused by the user can't be cured by any means.
    - Resilience: halves non-supereffective damage.
    - Chemical Burn: fire type moves have a chance to badly poison the foe.
    - Pyromancer: fire type moves always burn the foe. In exchange, they consume 2 PP.
    - Backfire: a random status effect is induced on the Pokémon that defeated the bearer of this ability.
    - Martialize: normal type moves become fighting type and their power is boosted (Pixilate, Galvanize...).
    Code:
    BattleHandlers::MoveBaseTypeModifierAbility.add(:MARTIALIZE,
      proc { |ability,user,move,type|
        next if type != :NORMAL || !GameData::Type.exists?(:FIGHTING)
        move.powerBoost = true
        next :FIGHTING
      }
    )
    Also add it here:
    Code:
    BattleHandlers::DamageCalcUserAbility.copy(:AERILATE, :PIXILATE, :REFRIGERATE, :GALVANIZE, :NORMALIZE, :MARTIALIZE)
    - Blademaster: boosts sword-like moves.
    - Winged Spirit: summons Tailwind upon entering combat.
    - Prism Cannon: boosts bolt-like and light related moves.
    - Ghostly Touch: this Pokémon's attacks don't make contact.
    - Ninja Tabi: the user is unaffected by entry hazards.
    - Ferrofurnace: fire type moves don't affect the bearer of this ability and boosts it's own contact moves.
    - Etheric Body: the user is immune to contact moves.
    - Grand Finale: triples the damage of the next attack if the user has used all of it's other moves consecutively (kind of how Last Resort works but the moves have to be used one after another without repeating).
    - Star's Blessing: if the bearer of this ability falls under 50% of it's maximum HP, summons a Wish (the normal type move and ONLY ONCE). Additionaly, it's immune to status effects if it has 100% of HP.
    - Bushido: receives +1 in atk. and special atk. if the Pokémon goes into combat after an ally is defeated (Retaliate as an ability but more boosted).
    - Final Flare: the user boosts it's fire moves but burns itself in the process.
    Code:
    BattleHandlers::DamageCalcUserAbility.add(:FINALFLARE,
      proc { |ability,user,target,move,mults,baseDmg,type,battler,battle|
        mults[:base_damage_multiplier] *= 1.5 if type == :FIRE
      }
    )
    Additionally:
    Code:
    BattleHandlers::AbilityOnSwitchIn.add(:FINALFLARE,
      proc { |ability, battler, battle|
        if battler.status != :BURN
          battle.pbShowAbilitySplash(battler)
          battler.pbCureStatus 
          battler.pbBurn(nil,_INTL("Typhlosion was burned by it's own power!")) #In my game this ability is exclusive to Mega Typhlosion, you can just change the text as you please.
        end
        battle.pbHideAbilitySplash(battler)
      }
    )
    - Spike Shield: contact moves harm the attacker.
    Code:
    BattleHandlers::TargetAbilityOnHit.add(:SPIKESHIELD,
      proc { |ability,user,target,move,battle|
        next if !move.pbContactMove?(user)
        battle.pbShowAbilitySplash(target)
        if user.takesIndirectDamage?(PokeBattle_SceneConstants::USE_ABILITY_SPLASH) &&
           user.affectedByContactEffect?(PokeBattle_SceneConstants::USE_ABILITY_SPLASH)
          battle.scene.pbDamageAnimation(user)
          user.pbReduceHP(user.totalhp/8,false)
          if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
            battle.pbDisplay(_INTL("{1} is hurt!",user.pbThis))
          else
            battle.pbDisplay(_INTL("{1} is hurt by {2}'s {3}!",user.pbThis,
               target.pbThis(true),target.abilityName))
          end
        end
        battle.pbHideAbilitySplash(target)
      }
    )
    Also add it here:
    Code:
    BattleHandlers::TargetAbilityOnHit.copy(:IRONBARBS,:ROUGHSKIN,:SPIKESHIELD)
    - Neuro-control: all damaging moves performed by this Pokémon are considered special moves.
    - Friend of the Forest: bug, grass, flying and poison moves have their power halved against the bearer of this ability. However, it takes twice the damage from fire type attacks.
    - Stargazer: cosmic-related attacks have their effects / power / accuracy doubled (Cosmic Power, Ancient Power, Astral Barrage, Dark Void...). I kinda like the concept but the ability seems underwhelming...
    - Ice Momentum: ice, flying and water type contact moves of the user have their power boosted by x1.5 (some love for penguin Pokémon).
    - Rewind (Dialga): when Dialga falls under 25% of it's maximum HP, it's HP is reverted to what it was the last turn (only once).
    - Realm Warp (Palkia): when a Pokémon makes Palkia fall under 25% of it's maximum HP, it's switched out from the battle and the entering Pokémon has it's defenses lowered by 1 stage (only once).
    - Underdog: the user's weak moves go first.

    That's all I have for the moment. Any suggestion / coding help is much appreciated :).
     
    Last edited:
    Hello, I like the ideas around here and have been able to implement some of them, like BladeMaster. The thing is that I wanted to implement Vampirism in my project and I've been looking like crazy for some other ability/move that would help me achieve that effect, but I'm pretty new and didn't find anything. Do you have any idea how I could implement it?
     
    A lot of these remind me of some of my own abilities I designed in my custom ability thread. They haven't been updated since v18.1 though, so they're pretty outdated. You may be able to adapt some of them though to suit your needs, if you have a rough idea of how to update them.
     
    Im using 16.2, I checked and it is very different from how it is handled in 18.1, I guess it will be a matter of learning the language of 16.2, because as I said Im new to this. But if you can help me in some way, at least to guide me, it would help me a lot.
     
    Im using 16.2, I checked and it is very different from how it is handled in 18.1, I guess it will be a matter of learning the language of 16.2, because as I said Im new to this. But if you can help me in some way, at least to guide me, it would help me a lot.

    The best way you can add new effects like these is using the data of things that work similarly. In this case, Vampirism is strong jaw + shell bell's effects, but under something like poison touch since it happens the moment the pokemon deals damage. I dont use v16 so i really cant tell you exactly what you need to add but try looking in the data of those 3 things and merge them. Trial and error 'till you make it work
     
    This is awesome. As a fellow newbie here I promise once I actually figure out how to make an ability I will post it here.
     
    Back
    Top