- Pokémon Essentials Version
- v17.2 ➖
With a bit of trial and error, I've managed to put together a working script for Mimikyu's Disguise ability.
There have been a few threads about this topic over on the pokecommunity forums, and I posted a partial solution to this question here. However, there were some shortcomings with that script, mainly that Disguise was reset every time the Mimikyu switched out of battle, unlike in SM where it only works once per battle. My new script fixes that so that Disguise works a bit more like Mega Evolution - as a form change that lasts for the duration of battle and resets on end of battle, fainting, or capture. If you previously applied the steps from that linked thread, you'll want to undo them before trying this one, as this new approach uses an entirely different mechanic that is not compatible with the previous fix.
To pull off this ability, a number of crucial scripts have to be tweaked, so this is unfortunately not a plug & play script, but I will try to spell out the steps as clearly as possible:
#1 Check and Change the Pokemon's Form
#2 Check and Change the Pokemon in Battle
#3 Revert to Base Form
#4 Break Disguise
Conclusion
With all that finished, you should now have functioning code for the Disguise ability. Enjoy and use responsibly!
And of course, credit is appreciated if you use it.
There have been a few threads about this topic over on the pokecommunity forums, and I posted a partial solution to this question here. However, there were some shortcomings with that script, mainly that Disguise was reset every time the Mimikyu switched out of battle, unlike in SM where it only works once per battle. My new script fixes that so that Disguise works a bit more like Mega Evolution - as a form change that lasts for the duration of battle and resets on end of battle, fainting, or capture. If you previously applied the steps from that linked thread, you'll want to undo them before trying this one, as this new approach uses an entirely different mechanic that is not compatible with the previous fix.
To pull off this ability, a number of crucial scripts have to be tweaked, so this is unfortunately not a plug & play script, but I will try to spell out the steps as clearly as possible:
#1 Check and Change the Pokemon's Form
When creating this script myself, I put this in the Pokemon_MegaEvolution script section around line 97 (right after the code for makeUnprimal) because it is modeled after the mega evo scripts. However, the key is that it is part of the PokeBattle_Pokemon class (which Pokemon_MegaEvolution extends), so it could go in the script section of that title as well.
The scripts to include are:
The scripts to include are:
Code:
def makeBusted
f = self.getBustedForm
self.form = f
end
def isBusted?
bf = self.getBustedForm
if bf==self.form
return true
else
return false
end
end
def makeDisguised
df = self.getDisguiseForm
self.form = df if df>=0
end
def getDisguiseForm
return -1 if !isBusted?
disguiseform = self.form-1
return disguiseform # form number
end
def hasBustedForm?
bf = self.getBustedForm
return bf>0 && bf!=self.form
end
def getBustedForm
if isConst?(self.species,PBSpecies,:MIMIKYU) && self.hasAbility?(:DISGUISE)
return 1
else
return-1
end
end
These scripts will all affect the script section PokeBattle_Battler. First, around line 85, right after the methods hasMega? and isMega? Add the following:
Ruby:
#Mimikyu - Disguise
def hasBusted?
return false if @effects[PBEffects::Transform]
if @pokemon
return (@pokemon.hasBustedForm? rescue false)
end
return false
end
def isBusted?
if @pokemon
return (@pokemon.isBusted? rescue false)
end
return false
end
def pbBust
@battle.pbDisplay(_INTL("{1}'s disguise was busted!",pbThis))
@pokemon.makeBusted
if self.form!=@pokemon.form
self.form=@pokemon.form
end
self.pbUpdate(true)
@battle.scene.pbChangePokemon(self,@pokemon)
end
These are the scripts that make sure Mimikyu's disguise resets after battle. For the first, stay in PokeBattle_Battler. Look for the script for pbFaint and around line 790, right after the line @pokimon.makeUnprimal, add
Next in the script section PokeBattle_Battle, you'll edit the script for pbThrowPokeBall. Around line 144, insert the line in red to revert a Mimikyu to its base form on capture:
Then, in the script section Pfield_Battles, edit the script for pbAfterBattle. Around line 387, insert the code in red:
Ruby:
@pokemon.makeDisguised if self.isBusted?
Next in the script section PokeBattle_Battle, you'll edit the script for pbThrowPokeBall. Around line 144, insert the line in red to revert a Mimikyu to its base form on capture:
Ruby:
BallHandlers.onCatch(ball,self,pokemon)
pokemon.ballused=pbGetBallType(ball)
((pokemon.makeUnmega if pokemon.isMega?) rescue nil)
[COLOR="Red"]((pokemon.makeDisguised if pokemon.isBusted?) rescue nil)[/COLOR]
pokemon.makeUnprimal rescue nil
pokemon.pbRecordFirstMoves
Then, in the script section Pfield_Battles, edit the script for pbAfterBattle. Around line 387, insert the code in red:
Ruby:
def pbAfterBattle(decision,canlose)
for i in $Trainer.party
(i.makeUnmega rescue nil); (i.makeUnprimal rescue nil); [COLOR="red"](i.makeDisguised rescue nil)[/COLOR]
end
if $PokemonGlobal.partner
pbHealAll
for i in $PokemonGlobal.partner[3]
i.heal
(i.makeUnmega rescue nil); (i.makeUnprimal rescue nil); [COLOR="red"](i.makeDisguised rescue nil)[/COLOR]
Last but not least, we need to add the script that prevents damage when Mimikyu is disguised and then breaks that disguise. In PokeBattle_Move, find the script for pbReduceHPDamage. Around line 1165, after the code for substitute, insert the lines in red.
Ruby:
opponent.damagestate.substitute=false
[COLOR="red"]if opponent.hasWorkingAbility(:DISGUISE) && isConst?(opponent.species,PBSpecies,:MIMIKYU) && !attacker.hasMoldBreaker
if opponent.hasBusted? and !opponent.isBusted?
@battle.pbDisplay(_INTL("Its disguise served it as a decoy!"))
@battle.scene.pbDamageAnimation(opponent,0)
opponent.pbBust
damage=0
end
end[/COLOR]
if damage>=opponent.hp
With all that finished, you should now have functioning code for the Disguise ability. Enjoy and use responsibly!
And of course, credit is appreciated if you use it.
- Credits
- Poq