Am using this script for Power Construct. Install for Zygarde.
Am using some part of that script for Shields Down (Battle Effect script, Move Effect script, etc). Install for Minior and check which code you will replace with mine.
Now let's go:
Into 'class PokeBattle_Battler', add 'attr_accessor :startform' below 'attr_accessor :captured', like this:
Now, 'def pbInitPokemon(pkmn,pkmnIndex)', add '@startform = @form':
Inside 'def pbCheckForm', delete what you have for Darmanitan, Zygarde, Wishiwashi and Minior.
Then, add Wishiwashi and Minior inside 'def pbResetForm', like:
Above Imposter's code (from PokeBattle_Battler), to change its forms when start the battle, paste:
And now, to check into the end of round to change its forms or not, go to 'PokeBattle_Battle' script. below '# Slow Start's end message', paste:
Now, add Minior to 'Forms' script, below HOOPA (or whatever):
And finally, to put Meteor Form for Wild Minior, look for 'PField_Encounters' script, and inside 'def pbGenerateWildPokemon(species,level,isroamer=false)', paste above 'Events.onWildPokemonCreate.trigger(nil,genwildpoke)':
For breeding case about Minior, go to 'PField_DayCare' and replace the code below '# Inheriting form':
And done :D
Cya!
Am using some part of that script for Shields Down (Battle Effect script, Move Effect script, etc). Install for Minior and check which code you will replace with mine.
Now let's go:
Into 'class PokeBattle_Battler', add 'attr_accessor :startform' below 'attr_accessor :captured', like this:
Spoiler:
Code:
class PokeBattle_Battler
attr_reader :battle
attr_reader :pokemon
attr_reader :name
attr_reader :index
attr_accessor :pokemonIndex
attr_reader :totalhp
attr_reader :fainted
attr_accessor :lastAttacker
attr_accessor :lastTarget
attr_accessor :turncount
attr_accessor :effects
attr_accessor :species
attr_accessor :type1
attr_accessor :type2
attr_accessor :ability
attr_accessor :gender
attr_accessor :attack
attr_writer :defense
attr_accessor :spatk
attr_writer :spdef
attr_accessor :speed
attr_accessor :stages
attr_accessor :iv
attr_accessor :moves
attr_accessor :participants
attr_accessor :tookDamage
attr_accessor :lastHPLost
attr_accessor :lastMoveUsed
attr_accessor :lastMoveUsedType
attr_accessor :lastMoveUsedSketch
attr_accessor :lastRegularMoveUsed
attr_accessor :lastRoundMoved
attr_accessor :movesUsed
attr_accessor :currentMove
attr_accessor :damagestate
attr_accessor :captured
attr_accessor :startform #
Now, 'def pbInitPokemon(pkmn,pkmnIndex)', add '@startform = @form':
Spoiler:
Code:
def pbInitPokemon(pkmn,pkmnIndex)
if pkmn.egg?
raise _INTL("An egg can't be an active Pokémon")
end
@name = pkmn.name
@species = pkmn.species
@level = pkmn.level
@hp = pkmn.hp
@totalhp = pkmn.totalhp
@gender = pkmn.gender
@ability = pkmn.ability
@item = pkmn.item
@type1 = pkmn.type1
@type2 = pkmn.type2
@form = pkmn.form
@attack = pkmn.attack
@defense = pkmn.defense
@speed = pkmn.speed
@spatk = pkmn.spatk
@spdef = pkmn.spdef
@status = pkmn.status
@statusCount = pkmn.statusCount
@pokemon = pkmn
@pokemonIndex = pkmnIndex
@participants = [] # Participants will earn Exp. Points if this battler is defeated
@moves = [
PokeBattle_Move.pbFromPBMove(@battle,pkmn.moves[0]),
PokeBattle_Move.pbFromPBMove(@battle,pkmn.moves[1]),
PokeBattle_Move.pbFromPBMove(@battle,pkmn.moves[2]),
PokeBattle_Move.pbFromPBMove(@battle,pkmn.moves[3])
]
@iv = []
@iv[0] = pkmn.iv[0]
@iv[1] = pkmn.iv[1]
@iv[2] = pkmn.iv[2]
@iv[3] = pkmn.iv[3]
@iv[4] = pkmn.iv[4]
@iv[5] = pkmn.iv[5]
@startform = @form #
Inside 'def pbCheckForm', delete what you have for Darmanitan, Zygarde, Wishiwashi and Minior.
Then, add Wishiwashi and Minior inside 'def pbResetForm', like:
Spoiler:
Code:
def pbResetForm
if !@effects[PBEffects::Transform]
isConst?(self.species,PBSpecies,:CASTFORM) || isConst?(self.species,PBSpecies,:CHERRIM) ||
isConst?(self.species,PBSpecies,:DARMANITAN) || isConst?(self.species,PBSpecies,:MELOETTA) ||
isConst?(self.species,PBSpecies,:AEGISLASH) || isConst?(self.species,PBSpecies,:XERNEAS) ||
isConst?(self.species,PBSpecies,:WISHIWASHI)
self.form=0
end
if isConst?(self.species,PBSpecies,:MINIOR)
if startform>0; self.form=startform; else; self.form=1+rand(7); startform=self.form; end
end
end
pbUpdate(true)
end
Above Imposter's code (from PokeBattle_Battler), to change its forms when start the battle, paste:
Spoiler:
Code:
# Zen Mode
if self.hasWorkingAbility(:ZENMODE) && isConst?(self.species,PBSpecies,:DARMANITAN) && onactive
if self.hp<=((self.totalhp/2).floor) && self.form!=1
self.form=1
pbUpdate(true)
@battle.scene.pbChangePokemon(self,self.pokemon)
PBDebug.log("[Form changed] #{pbThis} changed to form #{self.form}")
end
end
# Schooling
if self.hasWorkingAbility(:SCHOOLING) && isConst?(self.species,PBSpecies,:WISHIWASHI) &&
self.level>19 && onactive
if self.hp>((self.totalhp/4).floor) && self.form!=1
self.form=1
pbUpdate(true)
@battle.scene.pbChangePokemon(self,self.pokemon)
@battle.pbDisplay(_INTL("{1} formed a school!",pbThis))
PBDebug.log("[Form changed] #{pbThis} changed to form #{self.form}")
end
end
# Shields Down
if self.hasWorkingAbility(:SHIELDSDOWN) && isConst?(self.species,PBSpecies,:MINIOR) && onactive
if self.hp>=((self.totalhp/2).floor) && self.form!=0
self.form=0
pbUpdate(true)
@battle.scene.pbChangePokemon(self,self.pokemon)
@battle.pbDisplay(_INTL("{1} deactivated!",PBAbilities.getName(self.ability)))
PBDebug.log("[Form changed] #{pbThis} changed to form #{self.form}")
end
end
And now, to check into the end of round to change its forms or not, go to 'PokeBattle_Battle' script. below '# Slow Start's end message', paste:
Spoiler:
Code:
# Slow Start's end message
if i.hasWorkingAbility(:SLOWSTART) && i.turncount==6
pbDisplay(_INTL("{1} finally got its act together!",i.pbThis))
end
# Zen Mode/ Power Construct / Schooling / Shields Down
for i in priority
next if i.fainted?
if i.hasWorkingAbility(:ZENMODE) && isConst?(i.species,PBSpecies,:DARMANITAN)
if i.hp<=((i.totalhp/2).floor) && i.form!=1
i.form=1
i.pbUpdate(true)
scene.pbChangePokemon(i,i.pokemon)
PBDebug.log("[Form changed] #{i.pbThis} changed to form #{i.form}")
elsif i.hp>((i.totalhp/2).floor) && i.form!=0
i.form=0
i.pbUpdate(true)
scene.pbChangePokemon(i,i.pokemon)
PBDebug.log("[Form changed] #{i.pbThis} changed to form #{i.form}")
end
end
if i.hasWorkingAbility(:POWERCONSTRUCT) && isConst?(i.species,PBSpecies,:ZYGARDE)
if i.hp<=((i.totalhp/2).floor) && i.form!=2
$zygardeform=i.form
i.form=2
pbDisplay(_INTL("You sense the presence of many!"))
i.pbUpdate(true)
scene.pbChangePokemon(i,i.pokemon)
pbDisplay(_INTL("{1} transformed into its Complete Forme!",i.pbThis))
PBDebug.log("[Form changed] #{i.pbThis} changed to form #{i.form}")
end
end
if i.hasWorkingAbility(:SCHOOLING) && isConst?(i.species,PBSpecies,:WISHIWASHI) && i.level>19
if i.hp>((i.totalhp/4).floor) && i.form!=1
i.form=1
i.pbUpdate(true)
scene.pbChangePokemon(i,i.pokemon)
@battle.pbDisplay(_INTL("{1} formed a school!",pbThis))
PBDebug.log("[Form changed] #{i.pbThis} changed to form #{i.form}")
elsif i.hp<((i.totalhp/4).floor) && i.form!=0
i.form=0
i.pbUpdate(true)
scene.pbChangePokemon(i,i.pokemon)
@battle.pbDisplay(_INTL("{1} stopped schooling!",pbThis))
PBDebug.log("[Form changed] #{i.pbThis} changed to form #{i.form}")
end
end
if i.hasWorkingAbility(:SHIELDSDOWN) && isConst?(i.species,PBSpecies,:MINIOR)
if i.hp>=((i.totalhp/2).floor) && i.form!=0
i.form=0
i.pbUpdate(true)
scene.pbChangePokemon(i,i.pokemon)
pbDisplay(_INTL("{1} deactivated!",PBAbilities.getName(i.ability)))
PBDebug.log("[Form changed] #{i.pbThis} changed to form #{i.form}")
elsif i.hp<=((i.totalhp/2).floor) && i.form==0
if i.startform>0
i.form=i.startform
i.pbUpdate(true)
scene.pbChangePokemon(i,i.pokemon)
pbDisplay(_INTL("{1} activated!",PBAbilities.getName(i.ability)))
PBDebug.log("[Form changed] #{i.pbThis} changed to form #{i.form}")
else
i.form=1+rand(7)
i.startform=i.form
i.pbUpdate(true)
scene.pbChangePokemon(i,i.pokemon)
pbDisplay(_INTL("{1} activated!",PBAbilities.getName(i.ability)))
PBDebug.log("[Form changed] #{i.pbThis} changed to form #{i.form}")
end
end
end
end
Now, add Minior to 'Forms' script, below HOOPA (or whatever):
Code:
MultipleForms.register(:MINIOR,{
"getFormOnCreation"=>proc{|pokemon|
next 1+rand(7)
}
})
And finally, to put Meteor Form for Wild Minior, look for 'PField_Encounters' script, and inside 'def pbGenerateWildPokemon(species,level,isroamer=false)', paste above 'Events.onWildPokemonCreate.trigger(nil,genwildpoke)':
Code:
if isConst?(genwildpoke.species,PBSpecies,:MINIOR); genwildpoke.form=0; end
For breeding case about Minior, go to 'PField_DayCare' and replace the code below '# Inheriting form':
Code:
# Inheriting form
if isConst?(babyspecies,PBSpecies,:BURMY) ||
isConst?(babyspecies,PBSpecies,:SHELLOS) ||
isConst?(babyspecies,PBSpecies,:BASCULIN) ||
isConst?(babyspecies,PBSpecies,:FLABEBE) ||
isConst?(babyspecies,PBSpecies,:PUMPKABOO) ||
isConst?(babyspecies,PBSpecies,:ORICORIO) ||
isConst?(babyspecies,PBSpecies,:MINIOR)
egg.form=mother.form
egg.form=father.form if pbIsDitto?(mother)
end
# Inheriting Moves
And done :D
Cya!
Last edited: