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.
oh hi! i was trying to figure out how to code a ability that changes fire type moves to another type. any way i could do that without breaking the game?
Ability in question: Dragonic roar (or Drakeize, name is pending) - Fire type moves become dragon type.
Now, these three are a bit more complicated for me.
1. Adding a completely new weather condition in called Deep Space, meant to benefit extraterrestrial Pokemon such as Clefairy or Deoxys.
2. Adding an ability like Mutate that lets Genesect activate its Drives at will. I added a 5th Drive that's basically its ExtremeSpeed form called the Blitz Drive, so if you could incorporate this in too, that'd be a big help.
3. Adding abilities that let Charizard and Mewtwo access their Mega forms without the need for a Mega Ring or Mega Stones.
Now, these three are a bit more complicated for me.
1. Adding a completely new weather condition in called Deep Space, meant to benefit extraterrestrial Pokemon such as Clefairy or Deoxys.
2. Adding an ability like Mutate that lets Genesect activate its Drives at will. I added a 5th Drive that's basically its ExtremeSpeed form called the Blitz Drive, so if you could incorporate this in too, that'd be a big help.
3. Adding abilities that let Charizard and Mewtwo access their Mega forms without the need for a Mega Ring or Mega Stones.
This isn't really a "I'll make all of your abilities for you" thread, it's really just for sharing custom stuff that I come up with and feel like sharing. I help out from time to time though if someone's stumped. But honestly, almost every idea that people post could be made just by copying and tweaking an existing ability or item that already exists in Essentials.
1. Just copy an existing weather and customize it with the effects that you desire.
2. Just copy Stance Change, or my script for Mutate and customize it for Genesect; tweaking the conditions that activate its form changes with what suits you.
3. Just copy an existing form-changing mechanic (like Zen Mode, Stance Change, Multitype, etc.) and tweak it with what you feel suits Charizard/Mewtwo.
Allow me to pitch a few ability ideas to you.
Dragoon's Power - The Pokemon ignores entry hazards and terrain effects.
Recommended Pokemon: Charizard, Gyarados, Aerodactyl
Necromancy - Inflicts a random status condition at the start of battle.
Recommended Pokemon: Gengar, Marowak
I've been thinking about a custom ability of mine for a while...
I called it "Encore" (yup, like the move but it's different), and it's quite like Parental Bond, except that there's no boost nor another Pokémon. Basically, the Pokémon has a 25% chance of attacking again at the end of the turn...
I'm trying to understand how I should script this, but yeah, just wanted to share with y'all
I've been thinking about a custom ability of mine for a while...
I called it "Encore" (yup, like the move but it's different), and it's quite like Parental Bond, except that there's no boost nor another Pokémon. Basically, the Pokémon has a 25% chance of attacking again at the end of the turn...
I'm trying to understand how I should script this, but yeah, just wanted to share with y'all
You're missing a huge opportunity by not calling it "Double Down" but I think you can just use Ctrl+Shift+F and look for "ParentalBond"( without spaces) and just add another check like for your new ability:
Allow me to pitch a few ability ideas to you.
Dragoon's Power - The Pokemon ignores entry hazards and terrain effects.
Recommended Pokemon: Charizard, Gyarados, Aerodactyl
Necromancy - Inflicts a random status condition at the start of battle.
Recommended Pokemon: Gengar, Marowak
Pitching more ability ideas, all status related and all variants of each other.
Wildfire - If the Pokemon uses a Fire-type attack, the move will burn regardless of the chance.
Glacial - If the Pokemon uses an Ice-type attack, the move will freeze regardless of the chance.
Livewire - If the Pokemon uses an Electric-type attack, the move will paralyze regardless of the chance.
Nuclear - If the Pokemon uses a Poison-type attack, the move will poison regardless of the chance.
Mental - If the Pokemon uses a Psychic-type attack, the move will confuse regardless of the chance.
Not wanting to be rude, but are you waiting for someone to script these abilities for you? These are very simple abilities, that even without much knowledge in scripts you can do it yourself.
(If something is spelled wrong... I blame Google Translate)
Kemuel, I'd love to use that script, been looking for a way to have Eevee temporarily evolve. When I implement it though I get a NoMethodError. Have you had any trouble with it?
I haven't had any trouble, personally. I added it into my game for regular Eevee under the name "Unstable". Even added code for my Flying Eeveelution, Icareon.
Abilities for Birthsigns
I made a few new abilities that are specifically designed for my Pokemon Birthsigns project. If you have that installed, these may be of some interest to you:
Astrologist
Effect: Identifies the foe's birthsign upon entry.
Notes: When the user is sent into battle, it reveals the birthsign of the opponents.
1) In PokeBattle_Battler, somewhere under "Complex accessors", add this:
Code:
def birthsign
return (@pokemon) ? @pokemon.birthsign : 0
end
2) In PokeBattle_Battler, find the line "# Anticipation", and paste this directly above it:
Code:
#===========================================================================
# Custom Ability - Astrologist
#===========================================================================
if self.hasWorkingAbility(:ASTROLOGIST) && @battle.pbOwnedByPlayer?(@index) && onactive
foes=[]
foes.push(pbOpposing1) if pbOpposing1.birthsign>0 && !pbOpposing1.fainted?
foes.push(pbOpposing2) if pbOpposing2.birthsign>0 && !pbOpposing2.fainted?
if USENEWBATTLEMECHANICS
PBDebug.log("[Ability triggered] #{pbThis}'s Astrologist") if foes.length>0
for i in foes
zodiacname=PBBirthsigns.getName(i.birthsign)
@battle.pbDisplay(_INTL("{1} identified {2}'s birthsign to be {3}!",pbThis,i.pbThis(true),zodiacname))
end
elsif foes.length>0
PBDebug.log("[Ability triggered] #{pbThis}'s Astrologist")
foe=foes[@battle.pbRandom(foes.length)]
zodiacname=PBBirthsigns.getName(foe.birthsign)
@battle.pbDisplay(_INTL("{1} identified the foe's birthsign to be {2}!",pbThis,zodiacname))
end
end
#===========================================================================
Gem Collector
Effect: The Pokemon may collect Zodiac Gems occasionally.
Notes: After a fight, the user has a chance of picking up a random Zodiac Gem. This functions similarly to abilities like Pick Up and Honey Gather.
In PField_Battles, find the line "Kernel.pbPickup(pkmn)" and paste this directly below it:
Code:
#=========================================================================
# Custom Ability - Gem Collector
#=========================================================================
if isConst?(pkmn.ability,PBAbilities,:GEMCOLLECTOR) && !pkmn.hasItem? &&
INCLUDE_ZPOWER
chance = 5+((pkmn.level-1)/10).floor*5
pkmn.setItem(getZodiacGem(rand(11))) if rand(100)<chance
end
#=========================================================================
Lore Keeper
Effect: Prevents the activation of Zodiac Powers.
Notes: Whenever a Pokemon with this ability is on the field, all Pokemon must keep their Zodiac Gems and may not activate them to trigger Zodiac Powers (the button won't even show up).
1) In PokeBattle_Battler, find the line # Imposter, and paste this directly above it:
Code:
#===========================================================================
# Custom Ability - Lore Keeper
#===========================================================================
if self.hasWorkingAbility(:LOREKEEPER) && onactive
@battle.pbDisplay(_INTL("{1}'s presence prevents the use of Zodiac Powers!",pbThis))
end
#===========================================================================
2) In the Zodiac Powers script, fine the line "return false if @battlers[index].hasWorkingAbility(:KLUTZ)", paste this below it:
Code:
#===========================================================================
# Custom Ability - Lore Keeper
#===========================================================================
for i in 0...4
if @battlers[i].hasWorkingAbility(:LOREKEEPER) && !@battlers[i].fainted?
return false
end
end
#===========================================================================
If you're using Luka's EBS, you must add these abilities to the line in EliteBattle_0 as such:
Code:
if self.checkForAbilities(:FRISK,:FOREWARN,:BADDREAMS,:MOODY,:HARVEST,:TRACE,:INTIMIDATE,:ASTROLOGIST,:LOREKEEPER)
And as always, you must add these abilities to your abilities PBS file:
Code:
XXX,ASTROLOGIST,Astrologist,"Identifies the foe's birthsign upon entry."
XXX,GEMCOLLECTOR,Gem Collector,"The Pokémon may collect zodiac gems occasionally."
XXX,LOREKEEPER,Lore Keeper,"Prevents activation of Zodiac Powers."
EDIT: Whoops, forgot a step in the instructions for the Astrologist ability.
This isn't an ability, but I made a fun new item I wanted to share, and figured I'd post it in here rather than creating a whole new thread just for this.
Item: Boomerang
Effect: A held item that is thrown at the end of the turn. It returns the following turn, damaging opponents.
How this works:
Whenever a Pokemon holding this item is on the field, they will automatically throw their boomerang at the end of their turn. This removes the equipped item from that Pokemon. At the end of the following turn, the boomerang returns, striking all opponents on its way back for damage equal to 1/8th their max HP. The item is then returned and re-equipped to the user, ready to be thrown again on the following turn to repeat the process again.
Example:
Spoiler:
Step 1: The user, Cubone, automatically throws its held boomerang at the end of the turn.
Step 2: The opposing Pokemon take damage from the returning boomerang at the end of the following turn.
Step 3: Cubone catches and re-equips its boomerang, ready to be thrown again on the next turn.
If the user switches out before the boomerang returns, the incoming Pokemon will be able to catch the boomerang once it returns, instead.
However, if a Pokemon is asleep, frozen, or was somehow given a new item before the boomerang returns (or it's a switched-in Pokemon who is holding its own item), they will be unable to catch the returning boomerang, and will instead be hit by it for damage. If so, the boomerang will continue on to the user's partner (if it's a double battle), and that new Pokemon will have an opportunity to catch the boomerang instead. If neither Pokemon are able to catch the boomerang, or are unavailable to catch it (fainted, or removed from the field due to moves like Fly), then the boomerang is lost for the remainder of the battle and its effects end. However, it will be returned to the Pokemon after the battle ends.
Example:
Spoiler:
Step 1: Cubone automatically throws its held boomerang at the end of the turn.
Step 2: Cubone was switched out on the following turn, and replaced with Kadabra. The returning boomerang strikes the opponent.
Step 3: The returning boomerang strikes the second opponent.
Step 4: The returning boomerang returns to where it was originally thrown, but Kadabra is already holding an item and cannot catch it. It takes damage instead.
Step 5: The boomerang continues its path to the next slot on the player's side. Chansey isn't holding an item and catches the boomerang. The process then begins again the following turn, this time thrown by Chansey.
Notes:
The user cannot throw a held boomerang if they are asleep or frozen, if they have the Sticky Hold ability, if the effects of Gravity or Strong Winds are in play, or if the user is temporarily removed from the battlefield due to a move's effect (Fly, Dig, Sky Drop, etc).
If the effects of Gravity are put into play while a boomerang has already been thrown, the boomerang will come crashing down and fail to return to the user.
If the effects of the Strong Winds weather is put into play while a boomerang has already been thrown, the boomerang will be blown off course and fail to return to the user.
A Pokemon will avoid taking damage from a boomerang item if they have the Magic Guard ability, or are currently removed from the battlefield due to a move's effect (Fly, Dig, Sky Drop, etc).
Throwing a boomerang doesn't "consume" the item, and thus does not activate abilities such as Unburden. However, if a boomerang is thrown with Fling, it WILL trigger Unburden due to the move's effect.
If the move Fling is used to throw a boomerang item at the foe, it will return to the user the following turn as if it was thrown normally, allowing you to Fling them repeatedly every other turn. Boomerangs have 50 base damage when flung and have a 30% chance to flinch.
A Pokemon cannot throw a second boomerang if it has already thrown one on the previous turn. For example, if Pokemon A throws a boomerang, and then Pokemon B uses the move Bestow to give it a second boomerang, Pokemon A cannot throw it until the original boomerang returns. However, you CAN have both of your Pokemon in a double battle throwing their own boomerangs at once.
A boomerang will always return to the spot it was thrown from. So in a double battle, whichever spot on the field the boomerang was initially thrown from is where it will try to return to. It will continue to the next spot however if the original spot is no longer occupied (user fainted, or is no longer on the battlefield due to a move's effect such as Fly).
Installation:
Spoiler:
1) Add this to your items PBS file. Renumber the X's as needed.
Code:
XXX,BOOMERANG,Boomerang,Boomerangs,1,200,"A held item that is thrown at the end of the turn. It comes back the following turn and damages opponents.",0,0,0,
3) In PBEffects, add this new line after Yawn, or whatever your last effect is. Renumber if necessary.
Code:
Boomerang = 109
4) In PokeBattle_Battler, find the line "@effects[PBEffects::WishMaker]= -1" and paste this below it:
Code:
@effects[PBEffects::Boomerang] = 0
5) In PokeBattle_MoveEffects, find the "flingarray", and add this into the "50" item array (next to Sharp Beak):
Code:
:BOOMERANG
6) Slightly further down in the same script, look for the line "elsif attacker.hasWorkingItem(:KINGSROCK)", and paste this above it:
Code:
#=========================================================================
# Custom Item - Boomerang
#=========================================================================
elsif attacker.hasWorkingItem(:BOOMERANG)
opponent.pbFlinch(attacker) if rand(100)<30
attacker.effects[PBEffects::Boomerang]=1
@battle.pbDisplay(_INTL("The flung {1} was hurled into the distance!",PBItems.getName(attacker.item)))
#=========================================================================
7) Finally, in PokeBattle_Battle, find the code for the Moody ability, and paste this after all of that:
Code:
#=========================================================================
# Custom Item - Boomerang
#=========================================================================
blacklist=[
0xC9, # Fly
0xCA, # Dig
0xCB, # Dive
0xCC, # Bounce
0xCD, # Shadow Force
0xCE, # Sky Drop
0x14D # Phantom Force
]
getitem=getID(PBItems,:BOOMERANG)
# Boomerang item is thrown, if able, at the end of each turn
if i.hasWorkingItem(:BOOMERANG) && i.effects[PBEffects::Boomerang]==0
if i.status!=PBStatuses::SLEEP && i.status!=PBStatuses::FROZEN &&
@field.effects[PBEffects::Gravity]==0 && pbWeather!=PBWeather::STRONGWINDS &&
!blacklist.include?(PBMoveData.new(i.effects[PBEffects::TwoTurnAttack]).function) &&
!i.hasWorkingAbility(:STICKYHOLD)
pbDisplay(_INTL("{1} hurled its {2} into the distance!",i.pbThis,PBItems.getName(getitem)))
i.item=0
i.effects[PBEffects::Boomerang]=1
end
elsif i.effects[PBEffects::Boomerang]==1
gravitytext="The returning {1} came crashing down due to gravity!"
gravitytext="The foe's returning {1} came crashing down due to gravity!" if pbIsOpposing?(i.index)
weathertext="The returning {1} was thrown off course due to strong winds!"
weathertext="The foe's returning {1} was thrown off course due to strong winds!" if pbIsOpposing?(i.index)
returntext ="{1} was struck by the returning {2}!"
returntext = "{1} was struck by the foe's returning {2}!" if pbIsOpposing?(i.index)
failedtext ="The returning {1} failed to be caught..."
failedtext ="The foe's returning {1} failed to be caught..." if pbIsOpposing?(i.index)
# Boomerang item fails to return in Gravity/Strong Winds
if @field.effects[PBEffects::Gravity]>0
pbDisplay(_INTL(gravitytext,PBItems.getName(getitem)))
elsif pbWeather==PBWeather::STRONGWINDS
pbDisplay(_INTL(weathertext,PBItems.getName(getitem)))
else
# Boomerang item strikes eligible opponents on return
for foe in [i.pbOpposing1,i.pbOpposing2]
next if !foe || foe.fainted?
if !blacklist.include?(PBMoveData.new(foe.effects[PBEffects::TwoTurnAttack]).function) &&
!foe.hasWorkingAbility(:MAGICGUARD)
@scene.pbDamageAnimation(foe,0)
foe.pbReduceHP((foe.totalhp/8).floor,true)
pbDisplay(_INTL(returntext,foe.pbThis,PBItems.getName(getitem)))
foe.pbFaint if foe.fainted?
end
end
cantcatch1 = (i.item>0 || i.status==PBStatuses::SLEEP || i.status==PBStatuses::FROZEN)
cantcatch2 = (i.pbPartner.item>0 || i.pbPartner.status==PBStatuses::SLEEP || i.pbPartner.status==PBStatuses::FROZEN)
# Boomerang item returns to user if user exists
if !i.fainted? && !blacklist.include?(PBMoveData.new(i.effects[PBEffects::TwoTurnAttack]).function)
if cantcatch1
# Boomerang item strikes user if unable to be caught
@scene.pbDamageAnimation(i,0) if !i.hasWorkingAbility(:MAGICGUARD)
i.pbReduceHP((i.totalhp/8).floor,true) if !i.hasWorkingAbility(:MAGICGUARD)
pbDisplay(_INTL("{1} was unable to catch the returning {2} and was struck!",i.pbThis,PBItems.getName(getitem)))
i.pbFaint if i.fainted?
# Boomerang item strikes user's partner if unable to be caught
if i.pbPartner && !i.pbPartner.fainted? &&
!blacklist.include?(PBMoveData.new(i.pbPartner.effects[PBEffects::TwoTurnAttack]).function)
if cantcatch2
@scene.pbDamageAnimation(i.pbPartner,0) if !i.pbPartner.hasWorkingAbility(:MAGICGUARD)
i.pbPartner.pbReduceHP((i.pbPartner.totalhp/8).floor,true) if !i.pbPartner.hasWorkingAbility(:MAGICGUARD)
pbDisplay(_INTL("{1} was unable to catch the returning {2} and was struck!",i.pbPartner.pbThis,PBItems.getName(getitem)))
i.pbPartner.pbFaint if i.pbPartner.fainted?
else
# Boomerang item is instead caught by user's partner, if able
i.pbPartner.item=getitem
pbDisplay(_INTL("{1} caught the returning {2}!",i.pbPartner.pbThis,PBItems.getName(getitem)))
end
else
pbDisplay(_INTL(failedtext,PBItems.getName(getitem)))
end
else
# Boomerang item is caught by user, if able
i.item=getitem
pbDisplay(_INTL("{1} caught the returning {2}!",i.pbThis,PBItems.getName(getitem)))
end
# Boomerang item continues path to user's partner if user doesn't exist
elsif i.pbPartner && !i.pbPartner.fainted? &&
!blacklist.include?(PBMoveData.new(i.pbPartner.effects[PBEffects::TwoTurnAttack]).function)
if cantcatch2
@scene.pbDamageAnimation(i.pbPartner,0) if !i.pbPartner.hasWorkingAbility(:MAGICGUARD)
i.pbPartner.pbReduceHP((i.pbPartner.totalhp/8).floor,true) if !i.pbPartner.hasWorkingAbility(:MAGICGUARD)
pbDisplay(_INTL("{1} was unable to catch the returning {2} and was struck!!",i.pbPartner.pbThis,PBItems.getName(getitem)))
i.pbPartner.pbFaint if i.pbPartner.fainted?
else
i.pbPartner.item=getitem
pbDisplay(_INTL("{1} caught the returning {2}!",i.pbPartner.pbThis,PBItems.getName(getitem)))
end
else
pbDisplay(_INTL(failedtext,PBItems.getName(getitem)))
end
end
i.effects[PBEffects::Boomerang]=0
end
#=========================================================================
That boomerang item looks really awesome! I can't wait to implement it. Thank you for sharing it! All credit to you!
I'm having some difficulty getting this item working, however. It doesn't seem to proc at end of turn, but it recognizes when I use Fling to throw it (message pops up). It also never comes back if thrown this way. Any ideas? I'm on 17.2.
That boomerang item looks really awesome! I can't wait to implement it. Thank you for sharing it! All credit to you!
I'm having some difficulty getting this item working, however. It doesn't seem to proc at end of turn, but it recognizes when I use Fling to throw it (message pops up). It also never comes back if thrown this way. Any ideas? I'm on 17.2.
My guess is that you haven't pasted the code in the correct place. I put it after the Moody ability, like this:
If that's in the correct place, then I'd double check that you followed steps 3 & 4 in the instructions. I don't really know why else it wouldn't be working, unless perhaps you have code elsewhere in your script that overrides this for some reason.
Yeah, I put it at the very very end of all of those calls, rather than just after Moody. That was the issue. Now i'm getting it working with EBS, as it's taken issue with the 'foe' variable being used for the faint check.
Yeah, I put it at the very very end of all of those calls, rather than just after Moody. That was the issue. Now i'm getting it working with EBS, as it's taken issue with the 'foe' variable being used for the faint check.