This script is an add-on that allows you to change any pokemon types / ability / moves
Example of this code in action :
Code:
class PokeBattle_FakeBattler
def isDeltap?; return @pokemon.isDeltap?; end
end
class PokeBattle_Pokemon
attr_accessor(:deltap)
attr_accessor(:typeOverride1) # Type Override
attr_accessor(:typeOverride2) # Type Override2
attr_accessor(:abilityOverride) # Ability Override
# Returns a random Move but replaces current moves
def pbRandomMoves
for i in 0...4
@moves[i]=PBMove.new(rand(PBMoves.maxValue))
end
end
# Returns whether this Pokemon is @delta
def isDeltap?
return @deltap
end
# Makes this Pokemon @delta.
def makeDeltap
@deltap=true
end
# Makes this Pokemon not @delta.
def makeNotDeltap
@deltap=false
end
alias _deltap_type1 type1
alias _deltap_type2 type2
alias _deltap_ability ability
def type1
if self.form>=0 && @typeOverride1==nil
v=MultipleForms.call("type1",self)
return v if v!=nil
return self.__mf_type1
elsif @typeOverride1==nil
dexdata=pbOpenDexData
pbDexDataOffset(dexdata,@species,8)
ret=dexdata.fgetb
dexdata.close
return ret
else
return getConst(PBTypes,@typeOverride1)
end
end
def type2
if self.form>=0 && @typeOverride2==nil
v=MultipleForms.call("type2",self)
return v if v!=nil
return self.__mf_type2
elsif @typeOverride2==nil
dexdata=pbOpenDexData
pbDexDataOffset(dexdata,@species,9)
ret=dexdata.fgetb
dexdata.close
return ret
else
return getConst(PBTypes,@typeOverride2)
end
end
# typeOverride1. When == 0:Normal 1:Fighting 2:Flying 3:Poison 4:Ground 5:Rock
# 6:Bug 7:Ghost 8:Steel 9:??? 10:Fire 11:Water 12:Grass 13:Electric 14:Psychic
# 15:Ice 16:Dragon 17:Dark 18:Shadow 19:Fairy
def typeOverride1=(value)
case value
when 0
@typeOverride1=:NORMAL
when 1
@typeOverride1=:FIGHTING
when 2
@typeOverride1=:FLYING
when 3
@typeOverride1=:POISON
when 4
@typeOverride1=:GROUND
when 5
@typeOverride1=:ROCK
when 6
@typeOverride1=:BUG
when 7
@typeOverride1=:GHOST
when 8
@typeOverride1=:STEEL
when 9
@typeOverride1=:QMARKS
when 10
@typeOverride1=:FIRE
when 11
@typeOverride1=:WATER
when 12
@typeOverride1=:GRASS
when 13
@typeOverride1=:ELECTRIC
when 14
@typeOverride1=:PSYCHIC
when 15
@typeOverride1=:ICE
when 16
@typeOverride1=:DRAGON
when 17
@typeOverride1=:DARK
when 18
@typeOverride1=:SHADOW
when 19
@typeOverride1=:FAIRY
else @typeOverride1=nil
end
end
# typeOverride2.
def typeOverride2=(value)
case value
when 0
@typeOverride2=:NORMAL
when 1
@typeOverride2=:FIGHTING
when 2
@typeOverride2=:FLYING
when 3
@typeOverride2=:POISON
when 4
@typeOverride2=:GROUND
when 5
@typeOverride2=:ROCK
when 6
@typeOverride2=:BUG
when 7
@typeOverride2=:GHOST
when 8
@typeOverride2=:STEEL
when 9
@typeOverride2=:QMARKS
when 10
@typeOverride2=:FIRE
when 11
@typeOverride2=:WATER
when 12
@typeOverride2=:GRASS
when 13
@typeOverride2=:ELECTRIC
when 14
@typeOverride2=:PSYCHIC
when 15
@typeOverride2=:ICE
when 16
@typeOverride2=:DRAGON
when 17
@typeOverride2=:DARK
when 18
@typeOverride2=:SHADOW
when 19
@typeOverride2=:FAIRY
else @typeOverride1=nil
end
end
# Returns the ID of this Pokemon's ability.
def ability
if @abilityOverride==nil
abil=abilityIndex
abils=getAbilityList
ret1=0; ret2=0
for i in 0...abils.length
next if !abils[i][0] || abils[i][0]<=0
return abils[i][0] if abils[i][1]==abil
ret1=abils[i][0] if abils[i][1]==0
ret2=abils[i][0] if abils[i][1]==1
end
abil=(@personalID&1) if abil>=2
return ret2 if abil==1 && ret2>0
return ret1
else
return(@abilityOverride)
end
def abilityOverride=(value)
if value==0
return self.ability>0
else
value=getID(PBAbilities,value)
end
return self.ability==value
end
return false
end
end
Example of this code in action :
Code:
ItemHandlers::UseOnPokemon.add(:DELTASTONE,proc{|item,pokemon,scene|
if scene.pbConfirm(_INTL("Are you sure you want to make this Pokémon Delta?"))
if (pokemon.isDeltap? rescue false)
scene.pbDisplay(_INTL("It won't make this pokemon delta."))
next false
end
pokemon.makeDeltap
pokemon.pbRandomMoves
pokemon.abilityOverride = rand(PBAbilities.maxValue)
pokemon.typeOverride1 = rand(PBTypes.maxValue)
pokemon.typeOverride2 = rand(PBTypes.maxValue)
scene.pbRefresh
scene.pbDisplay(_INTL("{1} is different now!",pokemon.name))
next true
end
})
Code:
ItemHandlers::UseOnPokemon.add(:TYPESTONE,proc{|item,pokemon,scene|
if (pokemon.hp<=0 rescue false)
scene.pbDisplay(_INTL("{1}'s HP is too low.",pokemon.name))
next false
end
pokemon.typeOverride1=rand(PBTypes.maxValue)
pokemon.typeOverride2=rand(PBTypes.maxValue)
scene.pbRefresh
scene.pbDisplay(_INTL("{1}'s Type was altered to {2},{3}.",pokemon.name,PBTypes.getName(pokemon.type1),PBTypes.getName(pokemon.type2)))
next true
})
Code:
ItemHandlers::UseOnPokemon.add(:ABILITYSTONE,proc{|item,pokemon,scene|
pokemon.abilityOverride=rand(PBAbilities.maxValue)
scene.pbRefresh
scene.pbDisplay(_INTL("{1} has {2} now!",pokemon.name,PBAbilities.getName(pokemon.ability)))
})
Last edited: