mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-07 13:15:01 +00:00
Rewrote evolution methods to make them modular
This commit is contained in:
@@ -207,9 +207,7 @@ BallHandlers::ModifyCatchRate.add(:MOONBALL,proc { |ball,catchRate,battle,battle
|
||||
# family can evolve with the Moon Stone, not whether the target itself
|
||||
# can immediately evolve with the Moon Stone.
|
||||
if hasConst?(PBItems,:MOONSTONE) &&
|
||||
pbCheckEvolutionFamilyForMethod(battler.species,
|
||||
[PBEvolution::Item,PBEvolution::ItemMale,PBEvolution::ItemFemale],
|
||||
getConst(PBItems,:MOONSTONE))
|
||||
pbCheckEvolutionFamilyForItemMethodItem(battler.species,getConst(PBItems,:MOONSTONE))
|
||||
catchRate *= 4
|
||||
end
|
||||
next [catchRate,255].min
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
module PBEvolution
|
||||
None = 0 # Do not use
|
||||
None = 0
|
||||
Happiness = 1
|
||||
HappinessDay = 2
|
||||
HappinessNight = 3
|
||||
@@ -31,10 +31,6 @@ module PBEvolution
|
||||
LevelRain = 29
|
||||
HappinessMoveType = 30
|
||||
LevelEvening = 31
|
||||
Custom1 = 32
|
||||
Custom2 = 33
|
||||
Custom3 = 34
|
||||
Custom4 = 35
|
||||
|
||||
EVONAMES = ["None",
|
||||
"Happiness", "HappinessDay", "HappinessNight", "Level", "Trade",
|
||||
@@ -43,29 +39,43 @@ module PBEvolution
|
||||
"ItemMale", "ItemFemale", "DayHoldItem", "NightHoldItem", "HasMove",
|
||||
"HasInParty", "LevelMale", "LevelFemale", "Location", "TradeSpecies",
|
||||
"LevelDay", "LevelNight", "LevelDarkInParty", "LevelRain", "HappinessMoveType",
|
||||
"LevelEvening", "Custom1", "Custom2", "Custom3", "Custom4",
|
||||
"LevelEvening"
|
||||
]
|
||||
|
||||
# 0 = no parameter
|
||||
# 1 = Positive integer
|
||||
# 2 = Item internal name
|
||||
# 3 = Move internal name
|
||||
# 4 = Species internal name
|
||||
# 5 = Type internal name
|
||||
# 6 = Ability internal name
|
||||
EVOPARAM = [0, # None (do not use)
|
||||
0,0,0,1,0, # Happiness, HappinessDay, HappinessNight, Level, Trade
|
||||
2,2,1,1,1, # TradeItem, Item, AttackGreater, AtkDefEqual, DefenseGreater
|
||||
1,1,1,1,1, # Silcoon, Cascoon, Ninjask, Shedinja, Beauty
|
||||
2,2,2,2,3, # ItemMale, ItemFemale, DayHoldItem, NightHoldItem, HasMove
|
||||
4,1,1,1,4, # HasInParty, LevelMale, LevelFemale, Location, TradeSpecies
|
||||
1,1,1,1,5, # LevelDay, LevelNight, LevelDarkInParty, LevelRain, HappinessMoveType
|
||||
1,1,1,1,1 # LevelEvening, Custom 1-4
|
||||
]
|
||||
@@evolution_methods = HandlerHash.new(:PBEvolution)
|
||||
|
||||
def self.copy(sym, *syms)
|
||||
@@evolution_methods.copy(sym, *syms)
|
||||
end
|
||||
|
||||
def self.register(sym, hash)
|
||||
@@evolution_methods.add(sym, hash)
|
||||
end
|
||||
|
||||
def self.registerIf(cond, hash)
|
||||
@@evolution_methods.addIf(cond, hash)
|
||||
end
|
||||
|
||||
def self.hasFunction?(method, function)
|
||||
method = (method.is_a?(Numeric)) ? method : getConst(PBEvolution, method)
|
||||
method_hash = @@evolution_methods[method]
|
||||
return method_hash && method_hash[function]
|
||||
end
|
||||
|
||||
def self.getFunction(method, function)
|
||||
method = (method.is_a?(Numeric)) ? method : getConst(PBEvolution, method)
|
||||
method_hash = @@evolution_methods[method]
|
||||
return (method_hash && method_hash[function]) ? method_hash[function] : nil
|
||||
end
|
||||
|
||||
def self.call(function, method, *args)
|
||||
method = (method.is_a?(Numeric)) ? method : getConst(PBEvolution, method)
|
||||
method_hash = @@evolution_methods[method]
|
||||
return nil if !method_hash || !method_hash[function]
|
||||
return method_hash[function].call(*args)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
#===============================================================================
|
||||
# Evolutions data cache
|
||||
#===============================================================================
|
||||
@@ -73,8 +83,6 @@ class PokemonTemp
|
||||
attr_accessor :evolutionsData
|
||||
end
|
||||
|
||||
|
||||
|
||||
def pbLoadEvolutionsData
|
||||
$PokemonTemp = PokemonTemp.new if !$PokemonTemp
|
||||
if !$PokemonTemp.evolutionsData
|
||||
@@ -138,24 +146,18 @@ def pbGetBabySpecies(species,item1=-1,item2=-1)
|
||||
end
|
||||
|
||||
def pbGetMinimumLevel(species)
|
||||
methodsWithMinLevel = [
|
||||
PBEvolution::Level, PBEvolution::LevelMale, PBEvolution::LevelFemale,
|
||||
PBEvolution::AttackGreater, PBEvolution::AtkDefEqual, PBEvolution::DefenseGreater,
|
||||
PBEvolution::Silcoon, PBEvolution::Cascoon,
|
||||
PBEvolution::Ninjask, PBEvolution::Shedinja,
|
||||
PBEvolution::LevelDay, PBEvolution::LevelNight,
|
||||
PBEvolution::LevelDarkInParty, PBEvolution::LevelRain
|
||||
]
|
||||
evoData = pbGetEvolutionData(species)
|
||||
return 1 if !evoData || evoData.length==0
|
||||
return 1 if !evoData || evoData.length == 0
|
||||
ret = -1
|
||||
evoData.each do |evo|
|
||||
if evo[3] && methodsWithMinLevel.include?(evo[1]) # Is the prevolution
|
||||
ret = (ret<0) ? evo[2] : [ret,evo[2]].min
|
||||
break
|
||||
next if !evo[3] # Is the prevolution
|
||||
if PBEvolution.hasFunction?(evo[1], "levelUpCheck")
|
||||
min_level = PBEvolution.getFunction(evo[1], "minimumLevel")
|
||||
ret = evo[2] if !min_level || min_level != 1
|
||||
end
|
||||
break # Because only one prevolution method can be defined
|
||||
end
|
||||
return (ret==-1) ? 1 : ret
|
||||
return (ret == -1) ? 1 : ret
|
||||
end
|
||||
|
||||
def pbGetEvolutionFamilyData(species)
|
||||
@@ -172,17 +174,31 @@ end
|
||||
|
||||
# Used by the Moon Ball when checking if a Pokémon's evolution family includes
|
||||
# an evolution that uses the Moon Stone.
|
||||
def pbCheckEvolutionFamilyForMethod(species,method,param=-1)
|
||||
def pbCheckEvolutionFamilyForMethod(species, method, param = -1)
|
||||
species = pbGetBabySpecies(species)
|
||||
evos = pbGetEvolutionFamilyData(species)
|
||||
return false if !evos || evos.length==0
|
||||
return false if !evos || evos.length == 0
|
||||
for evo in evos
|
||||
if method.is_a?(Array)
|
||||
next if !method.include?(evo[1])
|
||||
elsif method>=0
|
||||
next if evo[1]!=method
|
||||
next if evo[1] != method
|
||||
end
|
||||
next if param>=0 && evo[2]!=param
|
||||
next if param >= 0 && evo[2] != param
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
# Used by the Moon Ball when checking if a Pokémon's evolution family includes
|
||||
# an evolution that uses the Moon Stone.
|
||||
def pbCheckEvolutionFamilyForItemMethodItem(species, param = -1)
|
||||
species = pbGetBabySpecies(species)
|
||||
evos = pbGetEvolutionFamilyData(species)
|
||||
return false if !evos || evos.length == 0
|
||||
for evo in evos
|
||||
next if !PBEvolution.hasFunction?(evo[1], "itemCheck")
|
||||
next if param >= 0 && evo[2] != param
|
||||
return true
|
||||
end
|
||||
return false
|
||||
@@ -202,106 +218,17 @@ def pbEvoDebug # Unused
|
||||
echo "end\n"
|
||||
end
|
||||
|
||||
|
||||
|
||||
#===============================================================================
|
||||
# Evolution methods
|
||||
# Evolution checks
|
||||
#===============================================================================
|
||||
def pbMiniCheckEvolution(pokemon,evonib,level,poke)
|
||||
case evonib
|
||||
when PBEvolution::Happiness
|
||||
return poke if pokemon.happiness>=220
|
||||
when PBEvolution::HappinessDay
|
||||
return poke if pokemon.happiness>=220 && PBDayNight.isDay?
|
||||
when PBEvolution::HappinessNight
|
||||
return poke if pokemon.happiness>=220 && PBDayNight.isNight?
|
||||
when PBEvolution::HappinessMoveType
|
||||
if pokemon.happiness>=220
|
||||
for m in pokemon.moves
|
||||
return poke if m.id>0 && m.type==level
|
||||
end
|
||||
end
|
||||
when PBEvolution::Level
|
||||
return poke if pokemon.level>=level
|
||||
when PBEvolution::LevelDay
|
||||
return poke if pokemon.level>=level && PBDayNight.isDay?
|
||||
when PBEvolution::LevelNight
|
||||
return poke if pokemon.level>=level && PBDayNight.isNight?
|
||||
when PBEvolution::LevelEvening
|
||||
return poke if pokemon.level>=level && PBDayNight.isEvening?
|
||||
when PBEvolution::LevelMale
|
||||
return poke if pokemon.level>=level && pokemon.male?
|
||||
when PBEvolution::LevelFemale
|
||||
return poke if pokemon.level>=level && pokemon.female?
|
||||
when PBEvolution::AttackGreater # Hitmonlee
|
||||
return poke if pokemon.level>=level && pokemon.attack>pokemon.defense
|
||||
when PBEvolution::AtkDefEqual # Hitmontop
|
||||
return poke if pokemon.level>=level && pokemon.attack==pokemon.defense
|
||||
when PBEvolution::DefenseGreater # Hitmonchan
|
||||
return poke if pokemon.level>=level && pokemon.attack<pokemon.defense
|
||||
when PBEvolution::Silcoon
|
||||
return poke if pokemon.level>=level && (((pokemon.personalID>>16)&0xFFFF)%10)<5
|
||||
when PBEvolution::Cascoon
|
||||
return poke if pokemon.level>=level && (((pokemon.personalID>>16)&0xFFFF)%10)>=5
|
||||
when PBEvolution::Ninjask
|
||||
return poke if pokemon.level>=level
|
||||
when PBEvolution::Shedinja
|
||||
return -1
|
||||
when PBEvolution::DayHoldItem
|
||||
return poke if pokemon.item==level && PBDayNight.isDay?
|
||||
when PBEvolution::NightHoldItem
|
||||
return poke if pokemon.item==level && PBDayNight.isNight?
|
||||
when PBEvolution::HasMove
|
||||
for m in pokemon.moves
|
||||
return poke if m.id==level
|
||||
end
|
||||
when PBEvolution::HasInParty
|
||||
for i in $Trainer.pokemonParty
|
||||
return poke if i.species==level
|
||||
end
|
||||
when PBEvolution::LevelDarkInParty
|
||||
if pokemon.level>=level
|
||||
for i in $Trainer.pokemonParty
|
||||
return poke if i.hasType?(:DARK)
|
||||
end
|
||||
end
|
||||
when PBEvolution::Location
|
||||
return poke if $game_map.map_id==level
|
||||
when PBEvolution::LevelRain
|
||||
if pokemon.level>=level
|
||||
if $game_screen && ($game_screen.weather_type==PBFieldWeather::Rain ||
|
||||
$game_screen.weather_type==PBFieldWeather::HeavyRain ||
|
||||
$game_screen.weather_type==PBFieldWeather::Storm)
|
||||
return poke
|
||||
end
|
||||
end
|
||||
when PBEvolution::Beauty # Feebas
|
||||
return poke if pokemon.beauty>=level
|
||||
when PBEvolution::Trade, PBEvolution::TradeItem, PBEvolution::TradeSpecies
|
||||
return -1
|
||||
when PBEvolution::Custom1
|
||||
# Add code for custom evolution type 1
|
||||
when PBEvolution::Custom2
|
||||
# Add code for custom evolution type 2
|
||||
when PBEvolution::Custom3
|
||||
# Add code for custom evolution type 3
|
||||
when PBEvolution::Custom4
|
||||
# Add code for custom evolution type 4
|
||||
end
|
||||
return -1
|
||||
def pbMiniCheckEvolution(pkmn, method, parameter, new_species)
|
||||
success = PBEvolution.call("levelUpCheck", method, pkmn, parameter)
|
||||
return (success) ? new_species : -1
|
||||
end
|
||||
|
||||
def pbMiniCheckEvolutionItem(pokemon,evonib,level,poke,item)
|
||||
# Checks for when an item is used on the Pokémon (e.g. an evolution stone)
|
||||
case evonib
|
||||
when PBEvolution::Item
|
||||
return poke if level==item
|
||||
when PBEvolution::ItemMale
|
||||
return poke if level==item && pokemon.male?
|
||||
when PBEvolution::ItemFemale
|
||||
return poke if level==item && pokemon.female?
|
||||
end
|
||||
return -1
|
||||
def pbMiniCheckEvolutionItem(pkmn, method, parameter, new_species, item)
|
||||
success = PBEvolution.call("itemCheck", method, pkmn, parameter, item)
|
||||
return (success) ? new_species : -1
|
||||
end
|
||||
|
||||
# Checks whether a Pokemon can evolve now. If a block is given, calls the block
|
||||
@@ -332,3 +259,244 @@ def pbCheckEvolution(pokemon,item=0)
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
#===============================================================================
|
||||
# Evolution methods that trigger when levelling up
|
||||
#===============================================================================
|
||||
PBEvolution.register(:Level, {
|
||||
"levelUpCheck" => proc { |pkmn, parameter|
|
||||
next pkmn.level >= parameter
|
||||
}
|
||||
})
|
||||
|
||||
PBEvolution.register(:LevelMale, {
|
||||
"levelUpCheck" => proc { |pkmn, parameter|
|
||||
next pkmn.level >= parameter && pkmn.male?
|
||||
}
|
||||
})
|
||||
|
||||
PBEvolution.register(:LevelFemale, {
|
||||
"levelUpCheck" => proc { |pkmn, parameter|
|
||||
next pkmn.level >= parameter && pkmn.female?
|
||||
}
|
||||
})
|
||||
|
||||
PBEvolution.register(:LevelDay, {
|
||||
"levelUpCheck" => proc { |pkmn, parameter|
|
||||
next pkmn.level >= parameter && PBDayNight.isDay?
|
||||
}
|
||||
})
|
||||
|
||||
PBEvolution.register(:LevelNight, {
|
||||
"levelUpCheck" => proc { |pkmn, parameter|
|
||||
next pkmn.level >= parameter && PBDayNight.isNight?
|
||||
}
|
||||
})
|
||||
|
||||
PBEvolution.register(:LevelEvening, {
|
||||
"levelUpCheck" => proc { |pkmn, parameter|
|
||||
next pkmn.level >= parameter && PBDayNight.isEvening?
|
||||
}
|
||||
})
|
||||
|
||||
PBEvolution.register(:LevelDarkInParty, {
|
||||
"levelUpCheck" => proc { |pkmn, parameter|
|
||||
if pkmn.level >= parameter
|
||||
next $Trainer.pokemonParty.any? { |p| p && p.hasType(:DARK) }
|
||||
end
|
||||
}
|
||||
})
|
||||
|
||||
PBEvolution.register(:LevelRain, {
|
||||
"levelUpCheck" => proc { |pkmn, parameter|
|
||||
if pkmn.level >= parameter && $game_screen
|
||||
next [PBFieldWeather::Rain, PBFieldWeather::HeavyRain,
|
||||
PBFieldWeather::Storm].include?($game_screen.weather_type)
|
||||
end
|
||||
}
|
||||
})
|
||||
|
||||
PBEvolution.register(:AttackGreater, { # Hitmonlee
|
||||
"levelUpCheck" => proc { |pkmn, parameter|
|
||||
next pkmn.level >= parameter && pkmn.attack > pkmn.defense
|
||||
}
|
||||
})
|
||||
|
||||
PBEvolution.register(:AtkDefEqual, { # Hitmontop
|
||||
"levelUpCheck" => proc { |pkmn, parameter|
|
||||
next pkmn.level >= parameter && pkmn.attack == pkmn.defense
|
||||
}
|
||||
})
|
||||
|
||||
PBEvolution.register(:DefenseGreater, { # Hitmonchan
|
||||
"levelUpCheck" => proc { |pkmn, parameter|
|
||||
next pkmn.level >= parameter && pkmn.attack < pkmn.defense
|
||||
}
|
||||
})
|
||||
|
||||
PBEvolution.register(:Silcoon, {
|
||||
"levelUpCheck" => proc { |pkmn, parameter|
|
||||
next pkmn.level >= parameter && (((pkmn.personalID >> 16) & 0xFFFF) % 10) < 5
|
||||
}
|
||||
})
|
||||
|
||||
PBEvolution.register(:Cascoon, {
|
||||
"levelUpCheck" => proc { |pkmn, parameter|
|
||||
next pkmn.level >= parameter && (((pkmn.personalID >> 16) & 0xFFFF) % 10) >= 5
|
||||
}
|
||||
})
|
||||
|
||||
PBEvolution.register(:Ninjask, {
|
||||
"levelUpCheck" => proc { |pkmn, parameter|
|
||||
next pkmn.level >= parameter
|
||||
}
|
||||
})
|
||||
|
||||
PBEvolution.register(:Shedinja, {
|
||||
"afterEvolution" => proc { |pkmn, new_species, parameter, evo_species|
|
||||
next false if $Trainer.party.length>=6
|
||||
next false if !$PokemonBag.pbHasItem?(getConst(PBItems,:POKEBALL))
|
||||
PokemonEvolutionScene.pbDuplicatePokemon(pkmn, new_species)
|
||||
$PokemonBag.pbDeleteItem(getConst(PBItems,:POKEBALL))
|
||||
next true
|
||||
}
|
||||
})
|
||||
|
||||
PBEvolution.register(:Happiness, {
|
||||
"minimumLevel" => 1, # Needs any level up
|
||||
"levelUpCheck" => proc { |pkmn, parameter|
|
||||
next pkmn.happiness >= 220
|
||||
}
|
||||
})
|
||||
|
||||
PBEvolution.register(:HappinessDay, {
|
||||
"minimumLevel" => 1, # Needs any level up
|
||||
"levelUpCheck" => proc { |pkmn, parameter|
|
||||
next pkmn.happiness >= 220 && PBDayNight.isDay?
|
||||
}
|
||||
})
|
||||
|
||||
PBEvolution.register(:HappinessNight, {
|
||||
"minimumLevel" => 1, # Needs any level up
|
||||
"levelUpCheck" => proc { |pkmn, parameter|
|
||||
next pkmn.happiness >= 220 && PBDayNight.isDay?
|
||||
}
|
||||
})
|
||||
|
||||
PBEvolution.register(:HappinessMoveType, {
|
||||
"minimumLevel" => 1, # Needs any level up
|
||||
"parameterType" => :PBTypes,
|
||||
"levelUpCheck" => proc { |pkmn, parameter|
|
||||
if pkmn.happiness >= 220
|
||||
next pkmn.moves.any? { |m| m && m.id > 0 && m.type == parameter }
|
||||
end
|
||||
}
|
||||
})
|
||||
|
||||
PBEvolution.register(:Beauty, { # Feebas
|
||||
"minimumLevel" => 1, # Needs any level up
|
||||
"levelUpCheck" => proc { |pkmn, parameter|
|
||||
next pkmn.beauty >= parameter
|
||||
}
|
||||
})
|
||||
|
||||
PBEvolution.register(:DayHoldItem, {
|
||||
"minimumLevel" => 1, # Needs any level up
|
||||
"parameterType" => :PBItems,
|
||||
"levelUpCheck" => proc { |pkmn, parameter|
|
||||
next pkmn.item == parameter && PBDayNight.isDay?
|
||||
},
|
||||
"afterEvolution" => proc { |pkmn, new_species, parameter, evo_species|
|
||||
next false if evo_species != new_species || !pkmn.hasItem?(parameter)
|
||||
pkmn.setItem(0) # Item is now consumed
|
||||
next true
|
||||
}
|
||||
})
|
||||
|
||||
PBEvolution.register(:NightHoldItem, {
|
||||
"minimumLevel" => 1, # Needs any level up
|
||||
"parameterType" => :PBItems,
|
||||
"levelUpCheck" => proc { |pkmn, parameter|
|
||||
next pkmn.item == parameter && PBDayNight.isNight?
|
||||
},
|
||||
"afterEvolution" => proc { |pkmn, new_species, parameter, evo_species|
|
||||
next false if evo_species != new_species || !pkmn.hasItem?(parameter)
|
||||
pkmn.setItem(0) # Item is now consumed
|
||||
next true
|
||||
}
|
||||
})
|
||||
|
||||
PBEvolution.register(:HasMove, {
|
||||
"minimumLevel" => 1, # Needs any level up
|
||||
"parameterType" => :PBMoves,
|
||||
"levelUpCheck" => proc { |pkmn, parameter|
|
||||
next pkmn.moves.any? { |m| m && m.id == parameter }
|
||||
}
|
||||
})
|
||||
|
||||
PBEvolution.register(:HasInParty, {
|
||||
"minimumLevel" => 1, # Needs any level up
|
||||
"parameterType" => :PBSpecies,
|
||||
"levelUpCheck" => proc { |pkmn, parameter|
|
||||
next pbHasSpecies?(parameter)
|
||||
}
|
||||
})
|
||||
|
||||
PBEvolution.register(:Location, {
|
||||
"minimumLevel" => 1, # Needs any level up
|
||||
"levelUpCheck" => proc { |pkmn, parameter|
|
||||
next $game_map.map_id == parameter
|
||||
}
|
||||
})
|
||||
|
||||
#===============================================================================
|
||||
# Evolution methods that trigger when using an item on the Pokémon
|
||||
#===============================================================================
|
||||
PBEvolution.register(:Item, {
|
||||
"parameterType" => :PBItems,
|
||||
"itemCheck" => proc { |pkmn, parameter, item|
|
||||
next item == parameter
|
||||
}
|
||||
})
|
||||
|
||||
PBEvolution.register(:ItemMale, {
|
||||
"parameterType" => :PBItems,
|
||||
"itemCheck" => proc { |pkmn, parameter, item|
|
||||
next item == parameter && pkmn.male?
|
||||
}
|
||||
})
|
||||
|
||||
PBEvolution.register(:ItemFemale, {
|
||||
"parameterType" => :PBItems,
|
||||
"itemCheck" => proc { |pkmn, parameter, item|
|
||||
next item == parameter && pkmn.female?
|
||||
}
|
||||
})
|
||||
|
||||
#===============================================================================
|
||||
# Evolution methods that trigger when the Pokémon is obtained in a trade
|
||||
#===============================================================================
|
||||
PBEvolution.register(:Trade, {
|
||||
"tradeCheck" => proc { |pkmn, parameter, other_pkmn|
|
||||
next true
|
||||
}
|
||||
})
|
||||
|
||||
PBEvolution.register(:TradeItem, {
|
||||
"parameterType" => :PBItems,
|
||||
"tradeCheck" => proc { |pkmn, parameter, other_pkmn|
|
||||
next pkmn.item == parameter
|
||||
},
|
||||
"afterEvolution" => proc { |pkmn, new_species, parameter, evo_species|
|
||||
next false if evo_species != new_species || !pkmn.hasItem?(parameter)
|
||||
pkmn.setItem(0) # Item is now consumed
|
||||
next true
|
||||
}
|
||||
})
|
||||
|
||||
PBEvolution.register(:TradeSpecies, {
|
||||
"parameterType" => :PBSpecies,
|
||||
"tradeCheck" => proc { |pkmn, parameter, other_pkmn|
|
||||
next pkmn.species == parameter && !other_pkmn.hasItem?(:EVERSTONE)
|
||||
}
|
||||
})
|
||||
|
||||
@@ -583,7 +583,7 @@ class PokemonEvolutionScene
|
||||
@pokemon.name,newspeciesname)) { pbUpdate }
|
||||
@sprites["msgwindow"].text = ""
|
||||
# Check for consumed item and check if Pokémon should be duplicated
|
||||
createSpecies = pbRemoveItemAfterEvolution
|
||||
pbEvolutionMethodAfterEvolution
|
||||
# Modify Pokémon to make it evolved
|
||||
@pokemon.species = @newspecies
|
||||
@pokemon.name = newspeciesname if @pokemon.name==oldspeciesname
|
||||
@@ -599,46 +599,30 @@ class PokemonEvolutionScene
|
||||
next if i[0]!=0 && i[0]!=@pokemon.level # 0 is "learn upon evolution"
|
||||
pbLearnMove(@pokemon,i[1],true) { pbUpdate }
|
||||
end
|
||||
# Duplicate Pokémon (i.e. Shedinja)
|
||||
if createSpecies>0 && $Trainer.party.length<6
|
||||
pbDuplicatePokemon(createSpecies)
|
||||
# Consume Poké Ball
|
||||
$PokemonBag.pbDeleteItem(getConst(PBItems,:POKEBALL))
|
||||
end
|
||||
end
|
||||
|
||||
def pbRemoveItemAfterEvolution
|
||||
removeItem = false
|
||||
createSpecies = pbCheckEvolutionEx(@pokemon) { |_pokemon,evonib,_level,pkmn|
|
||||
case evonib
|
||||
when PBEvolution::Shedinja
|
||||
next pkmn if $PokemonBag.pbHasItem?(getConst(PBItems,:POKEBALL))
|
||||
when PBEvolution::TradeItem,PBEvolution::DayHoldItem,PBEvolution::NightHoldItem
|
||||
removeItem = true if pkmn==@newspecies # Item is now consumed
|
||||
end
|
||||
next -1
|
||||
def pbEvolutionMethodAfterEvolution
|
||||
pbCheckEvolutionEx(@pokemon) { |pkmn, method, parameter, new_species|
|
||||
success = PBEvolution.call("afterEvolution", method, pkmn, new_species, parameter, @newspecies)
|
||||
next (success) ? 1 : -1
|
||||
}
|
||||
@pokemon.setItem(0) if removeItem
|
||||
return createSpecies
|
||||
end
|
||||
|
||||
def pbDuplicatePokemon(createSpecies)
|
||||
newpokemon = @pokemon.clone
|
||||
newpokemon.species = createSpecies
|
||||
newpokemon.name = PBSpecies.getName(createSpecies)
|
||||
newpokemon.iv = @pokemon.iv.clone
|
||||
newpokemon.ev = @pokemon.ev.clone
|
||||
newpokemon.markings = 0
|
||||
newpokemon.ballused = 0
|
||||
newpokemon.setItem(0)
|
||||
newpokemon.clearAllRibbons
|
||||
newpokemon.calcStats
|
||||
newpokemon.heal
|
||||
def self.pbDuplicatePokemon(pkmn, new_species)
|
||||
new_pkmn = pkmn.clone
|
||||
new_pkmn.species = new_species
|
||||
new_pkmn.name = PBSpecies.getName(new_species)
|
||||
new_pkmn.markings = 0
|
||||
new_pkmn.ballused = 0
|
||||
new_pkmn.setItem(0)
|
||||
new_pkmn.clearAllRibbons
|
||||
new_pkmn.calcStats
|
||||
new_pkmn.heal
|
||||
# Add duplicate Pokémon to party
|
||||
$Trainer.party.push(newpokemon)
|
||||
$Trainer.party.push(new_pkmn)
|
||||
# See and own duplicate Pokémon
|
||||
$Trainer.seen[createSpecies] = true
|
||||
$Trainer.owned[createSpecies] = true
|
||||
pbSeenForm(newpokemon)
|
||||
$Trainer.seen[new_species] = true
|
||||
$Trainer.owned[new_species] = true
|
||||
pbSeenForm(new_pkmn)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -227,22 +227,10 @@ end
|
||||
#===============================================================================
|
||||
# Evolution methods
|
||||
#===============================================================================
|
||||
def pbTradeCheckEvolution(pokemon,pokemon2)
|
||||
ret = pbCheckEvolutionEx(pokemon) { |pokemon,evonib,level,poke|
|
||||
case evonib
|
||||
when PBEvolution::Trade
|
||||
next poke
|
||||
when PBEvolution::TradeItem
|
||||
if pokemon.item==level
|
||||
pokemon.setItem(0)
|
||||
next poke
|
||||
end
|
||||
when PBEvolution::TradeSpecies
|
||||
if !pokemon2.hasItem?(:EVERSTONE)
|
||||
next poke if pokemon2.species==level
|
||||
end
|
||||
end
|
||||
next -1
|
||||
def pbTradeCheckEvolution(pkmn, other_pkmn)
|
||||
ret = pbCheckEvolutionEx(pkmn) { |pkmn, method, parameter, new_species|
|
||||
success = PBEvolution.call("tradeCheck", method, pkmn, parameter, other_pkmn)
|
||||
next (success) ? new_species : -1
|
||||
}
|
||||
return ret
|
||||
end
|
||||
|
||||
@@ -798,7 +798,7 @@ def pbPokemonEditor
|
||||
_INTL("Urban"),_INTL("Rare")]),
|
||||
_INTL("The habitat of this species.")],
|
||||
[_INTL("RegionalNumbers"),ReadOnlyProperty,_INTL("Regional Dex numbers for the Pokémon. These are edited elsewhere.")],
|
||||
[_INTL("Kind"),StringProperty._INTL("Kind of Pokémon species.")],
|
||||
[_INTL("Kind"),StringProperty,_INTL("Kind of Pokémon species.")],
|
||||
[_INTL("Pokédex"),StringProperty,_INTL("Description of the Pokémon as displayed in the Pokédex.")],
|
||||
[_INTL("FormName"),StringProperty,_INTL("Name of this form of the Pokémon.")],
|
||||
[_INTL("WildItemCommon"),ItemProperty,_INTL("Item commonly held by wild Pokémon of this species.")],
|
||||
|
||||
@@ -829,33 +829,21 @@ def pbSavePokemonData
|
||||
pokedata.write("Evolutions = ")
|
||||
count = 0
|
||||
for form in pbGetEvolvedFormData(i)
|
||||
evonib = form[0]
|
||||
level = form[1]
|
||||
poke = form[2]
|
||||
next if poke==0
|
||||
cpoke = getConstantName(PBSpecies,poke) rescue pbGetSpeciesConst(poke)
|
||||
evoname = getConstantName(PBEvolution,evonib) rescue pbGetEvolutionConst(evonib)
|
||||
next if !cpoke || cpoke==""
|
||||
method = form[0]
|
||||
parameter = form[1]
|
||||
new_species = form[2]
|
||||
next if new_species==0
|
||||
cnew_species = getConstantName(PBSpecies,new_species) rescue pbGetSpeciesConst(new_species)
|
||||
evoname = getConstantName(PBEvolution,method) rescue pbGetEvolutionConst(method)
|
||||
next if !cnew_species || cnew_species==""
|
||||
pokedata.write(",") if count>0
|
||||
pokedata.write(sprintf("%s,%s,",cpoke,evoname))
|
||||
case PBEvolution::EVOPARAM[evonib]
|
||||
when 1
|
||||
pokedata.write("#{level}")
|
||||
when 2
|
||||
clevel = getConstantName(PBItems,level) rescue pbGetItemConst(level)
|
||||
pokedata.write("#{clevel}")
|
||||
when 3
|
||||
clevel = getConstantName(PBMoves,level) rescue pbGetMoveConst(level)
|
||||
pokedata.write("#{clevel}")
|
||||
when 4
|
||||
clevel = getConstantName(PBSpecies,level) rescue pbGetSpeciesConst(level)
|
||||
pokedata.write("#{clevel}")
|
||||
when 5
|
||||
clevel = getConstantName(PBTypes,level) rescue pbGetTypeConst(level)
|
||||
pokedata.write("#{clevel}")
|
||||
when 6
|
||||
clevel = getConstantName(PBAbilities,level) rescue pbGetAbilityConst(level)
|
||||
pokedata.write("#{clevel}")
|
||||
pokedata.write(sprintf("%s,%s,",cnew_species,evoname))
|
||||
param_type = PBEvolution.getFunction(method, "parameterType")
|
||||
if param_type
|
||||
cparameter = getConstantName(param_type,parameter) rescue ""
|
||||
pokedata.write("#{cparameter}")
|
||||
else
|
||||
pokedata.write("#{parameter}")
|
||||
end
|
||||
count += 1
|
||||
end
|
||||
@@ -1230,8 +1218,9 @@ def pbSavePokemonFormsData
|
||||
if shape!=nil
|
||||
pokedata.write("Shape = #{shape}\r\n")
|
||||
end
|
||||
if habitat!=nil
|
||||
pokedata.write("Habitat = "+["","Grassland","Forest","WatersEdge","Sea","Cave","Mountain","RoughTerrain","Urban","Rare"][habitat]+"\r\n") if habitat>0
|
||||
if habitat!=nil && habitat>0
|
||||
habitat_name = getConstantName(PBHabitats,habitat) rescue pbGetHabitatConst(habitat)
|
||||
pokedata.write("Habitat = #{habitat_name}\r\n")
|
||||
end
|
||||
if kind!=nil
|
||||
pokedata.write("Kind = #{kind}\r\n")
|
||||
@@ -1267,25 +1256,25 @@ def pbSavePokemonFormsData
|
||||
end
|
||||
origevos = []
|
||||
for form in pbGetEvolvedFormData(species)
|
||||
evonib = form[0]
|
||||
level = form[1]
|
||||
poke = form[2]
|
||||
next if poke==0
|
||||
cpoke = getConstantName(PBSpecies,poke) rescue pbGetSpeciesConst(poke)
|
||||
evoname = getConstantName(PBEvolution,evonib) rescue pbGetEvolutionConst(evonib)
|
||||
next if !cpoke || cpoke==""
|
||||
origevos.push([evonib,level,poke])
|
||||
method = form[0]
|
||||
parameter = form[1]
|
||||
new_species = form[2]
|
||||
next if new_species==0
|
||||
cnew_species = getConstantName(PBSpecies,new_species) rescue pbGetSpeciesConst(new_species)
|
||||
evoname = getConstantName(PBEvolution,method) rescue pbGetEvolutionConst(method)
|
||||
next if !cnew_species || cnew_species==""
|
||||
origevos.push([method,parameter,new_species])
|
||||
end
|
||||
evos = []
|
||||
for form in pbGetEvolvedFormData(i)
|
||||
evonib = form[0]
|
||||
level = form[1]
|
||||
poke = form[2]
|
||||
next if poke==0
|
||||
cpoke = getConstantName(PBSpecies,poke) rescue pbGetSpeciesConst(poke)
|
||||
evoname = getConstantName(PBEvolution,evonib) rescue pbGetEvolutionConst(evonib)
|
||||
next if !cpoke || cpoke==""
|
||||
evos.push([evonib,level,poke])
|
||||
method = form[0]
|
||||
parameter = form[1]
|
||||
new_species = form[2]
|
||||
next if new_species==0
|
||||
cnew_species = getConstantName(PBSpecies,new_species) rescue pbGetSpeciesConst(new_species)
|
||||
evoname = getConstantName(PBEvolution,method) rescue pbGetEvolutionConst(method)
|
||||
next if !cnew_species || cnew_species==""
|
||||
evos.push([method,parameter,new_species])
|
||||
end
|
||||
diff = false
|
||||
if evos.length!=origevos.length
|
||||
@@ -1302,28 +1291,19 @@ def pbSavePokemonFormsData
|
||||
if diff
|
||||
pokedata.write("Evolutions = ")
|
||||
for k in 0...evos.length
|
||||
cpoke = getConstantName(PBSpecies,poke) rescue pbGetSpeciesConst(poke)
|
||||
evoname = getConstantName(PBEvolution,evonib) rescue pbGetEvolutionConst(evonib)
|
||||
next if !cpoke || cpoke==""
|
||||
pokedata.write(sprintf("%s,%s,",cpoke,evoname))
|
||||
case PBEvolution::EVOPARAM[evonib]
|
||||
when 1
|
||||
pokedata.write("#{level}")
|
||||
when 2
|
||||
clevel = getConstantName(PBItems,level) rescue pbGetItemConst(level)
|
||||
pokedata.write("#{clevel}")
|
||||
when 3
|
||||
clevel = getConstantName(PBMoves,level) rescue pbGetMoveConst(level)
|
||||
pokedata.write("#{clevel}")
|
||||
when 4
|
||||
clevel = getConstantName(PBSpecies,level) rescue pbGetSpeciesConst(level)
|
||||
pokedata.write("#{clevel}")
|
||||
when 5
|
||||
clevel = getConstantName(PBTypes,level) rescue pbGetTypeConst(level)
|
||||
pokedata.write("#{clevel}")
|
||||
when 6
|
||||
clevel = getConstantName(PBAbilities,level) rescue pbGetAbilityConst(level)
|
||||
pokedata.write("#{clevel}")
|
||||
method = form[0]
|
||||
parameter = form[1]
|
||||
new_species = form[2]
|
||||
cnew_species = getConstantName(PBSpecies,new_species) rescue pbGetSpeciesConst(new_species)
|
||||
evoname = getConstantName(PBEvolution,method) rescue pbGetEvolutionConst(method)
|
||||
next if !cnew_species || cnew_species==""
|
||||
pokedata.write(sprintf("%s,%s,",cnew_species,evoname))
|
||||
param_type = PBEvolution.getFunction(method, "parameterType")
|
||||
if param_type
|
||||
cparameter = getConstantName(param_type,parameter) rescue ""
|
||||
pokedata.write("#{cparameter}")
|
||||
else
|
||||
pokedata.write("#{parameter}")
|
||||
end
|
||||
pokedata.write(",") if k<evos.length-1
|
||||
end
|
||||
|
||||
@@ -1184,7 +1184,6 @@ end
|
||||
class EvolutionsProperty
|
||||
def initialize(methods)
|
||||
@methods = methods
|
||||
@evoparams = PBEvolution::EVOPARAM
|
||||
end
|
||||
|
||||
def set(_settingname,oldsetting)
|
||||
@@ -1207,14 +1206,11 @@ class EvolutionsProperty
|
||||
commands.push(_INTL("[ADD EVOLUTION]"))
|
||||
else
|
||||
level = realcmds[i][1]
|
||||
case @evoparams[realcmds[i][0]]
|
||||
when 0; level = ""
|
||||
when 2; level = sprintf("#{PBItems.getName(level)}")
|
||||
when 3; level = sprintf("#{PBMoves.getName(level)}")
|
||||
when 4; level = sprintf("#{PBSpecies.getName(level)}")
|
||||
when 5; level = sprintf("#{PBTypes.getName(level)}")
|
||||
when 6; level = sprintf("#{PBAbilities.getName(level)}")
|
||||
param_type = PBEvolution.getFunction(realcmds[i][0], "parameterType")
|
||||
if param_type
|
||||
level = (Object.const_get(param_type).getName(level) rescue getConstantName(param_type, level) rescue level)
|
||||
end
|
||||
level = "" if !level
|
||||
commands.push(_INTL("{1}: {2}, {3}",
|
||||
PBSpecies.getName(realcmds[i][2]),@methods[realcmds[i][0]],level.to_s))
|
||||
end
|
||||
@@ -1242,30 +1238,29 @@ class EvolutionsProperty
|
||||
if newspecies>0
|
||||
newmethod = pbMessage(_INTL("Choose an evolution method."),@methods,-1)
|
||||
if newmethod>0
|
||||
newparam = 0
|
||||
if @evoparams[newmethod]==2 # Items
|
||||
newparam = -1
|
||||
allow_zero = false
|
||||
param_type = PBEvolution.getFunction(newmethod, "parameterType")
|
||||
case param_type
|
||||
when :PBItems
|
||||
newparam = pbChooseItemList
|
||||
elsif @evoparams[newmethod]==3 # Moves
|
||||
when :PBMoves
|
||||
newparam = pbChooseMoveList
|
||||
elsif @evoparams[newmethod]==4 # Species
|
||||
when :PBSpecies
|
||||
newparam = pbChooseSpeciesList
|
||||
elsif @evoparams[newmethod]==5 # Types
|
||||
when :PBTypes
|
||||
allow_zero = true
|
||||
newparam = pbChooseTypeList
|
||||
elsif @evoparams[newmethod]==6 # Abilities
|
||||
when :PBAbilities
|
||||
newparam = pbChooseAbilityList
|
||||
elsif @evoparams[newmethod]!=0
|
||||
else
|
||||
allow_zero = true
|
||||
params = ChooseNumberParams.new
|
||||
params.setRange(0,65535)
|
||||
params.setDefaultValue(-1)
|
||||
params.setCancelValue(-1)
|
||||
newparam = pbMessageChooseNumber(_INTL("Choose a parameter."),params)
|
||||
end
|
||||
if @evoparams[newmethod]==0 ||
|
||||
(@evoparams[newmethod]==1 && newparam && newparam>=0) ||
|
||||
(@evoparams[newmethod]==2 && newparam && newparam>0) ||
|
||||
(@evoparams[newmethod]==3 && newparam && newparam>0) ||
|
||||
(@evoparams[newmethod]==4 && newparam && newparam>0) ||
|
||||
(@evoparams[newmethod]==5 && newparam && newparam>=0) ||
|
||||
(@evoparams[newmethod]==6 && newparam && newparam>0)
|
||||
if newparam && (newparam>0 || (allow_zero && newparam == 0))
|
||||
havemove = -1
|
||||
for i in 0...realcmds.length
|
||||
havemove = realcmds[i][3] if realcmds[i][0]==newmethod &&
|
||||
@@ -1320,57 +1315,53 @@ class EvolutionsProperty
|
||||
realcmds[cmd[1]] = nil
|
||||
realcmds.compact!
|
||||
oldsel = havemove
|
||||
else
|
||||
elsif newmethod != entry[0]
|
||||
entry[0] = newmethod
|
||||
entry[1] = 0 if @evoparams[entry[0]]==0
|
||||
entry[1] = 0
|
||||
oldsel = entry[3]
|
||||
end
|
||||
refreshlist = true
|
||||
end
|
||||
elsif cmd2==2 # Change parameter
|
||||
if @evoparams[entry[0]]==0
|
||||
pbMessage(_INTL("This evolution method doesn't use a parameter."))
|
||||
newparam = -1
|
||||
allow_zero = false
|
||||
param_type = PBEvolution.getFunction(entry[0], "parameterType")
|
||||
case param_type
|
||||
when :PBItems
|
||||
newparam = pbChooseItemList(entry[1])
|
||||
when :PBMoves
|
||||
newparam = pbChooseMoveList(entry[1])
|
||||
when :PBSpecies
|
||||
newparam = pbChooseSpeciesList(entry[1])
|
||||
when :PBTypes
|
||||
allow_zero = true
|
||||
newparam = pbChooseTypeList(entry[1])
|
||||
when :PBAbilities
|
||||
newparam = pbChooseAbilityList(entry[1])
|
||||
else
|
||||
newparam = -1
|
||||
if @evoparams[entry[0]]==2 # Items
|
||||
newparam = pbChooseItemList(entry[1])
|
||||
elsif @evoparams[entry[0]]==3 # Moves
|
||||
newparam = pbChooseMoveList(entry[1])
|
||||
elsif @evoparams[entry[0]]==4 # Species
|
||||
newparam = pbChooseSpeciesList(entry[1])
|
||||
elsif @evoparams[entry[0]]==5 # Types
|
||||
newparam = pbChooseTypeList(entry[1])
|
||||
elsif @evoparams[entry[0]]==6 # Abilities
|
||||
newparam = pbChooseAbilityList(entry[1])
|
||||
allow_zero = true
|
||||
params = ChooseNumberParams.new
|
||||
params.setRange(0,65535)
|
||||
params.setDefaultValue(entry[1])
|
||||
params.setCancelValue(-1)
|
||||
newparam = pbMessageChooseNumber(_INTL("Choose a parameter."),params)
|
||||
end
|
||||
if newparam && (newparam>0 || (allow_zero && newparam == 0))
|
||||
havemove = -1
|
||||
for i in 0...realcmds.length
|
||||
havemove = realcmds[i][3] if realcmds[i][0]==entry[0] &&
|
||||
realcmds[i][1]==newparam &&
|
||||
realcmds[i][2]==entry[2]
|
||||
end
|
||||
if havemove>=0
|
||||
realcmds[cmd[1]] = nil
|
||||
realcmds.compact!
|
||||
oldsel = havemove
|
||||
else
|
||||
params = ChooseNumberParams.new
|
||||
params.setRange(0,65535)
|
||||
params.setDefaultValue(entry[1])
|
||||
params.setCancelValue(-1)
|
||||
newparam = pbMessageChooseNumber(_INTL("Choose a parameter."),params)
|
||||
end
|
||||
if (@evoparams[entry[0]]==1 && newparam && newparam>=0) ||
|
||||
(@evoparams[entry[0]]==2 && newparam && newparam>0) ||
|
||||
(@evoparams[entry[0]]==3 && newparam && newparam>0) ||
|
||||
(@evoparams[entry[0]]==4 && newparam && newparam>0) ||
|
||||
(@evoparams[entry[0]]==5 && newparam && newparam>=0) ||
|
||||
(@evoparams[entry[0]]==6 && newparam && newparam>0)
|
||||
havemove = -1
|
||||
for i in 0...realcmds.length
|
||||
havemove = realcmds[i][3] if realcmds[i][0]==entry[0] &&
|
||||
realcmds[i][1]==newparam &&
|
||||
realcmds[i][2]==entry[2]
|
||||
end
|
||||
if havemove>=0
|
||||
realcmds[cmd[1]] = nil
|
||||
realcmds.compact!
|
||||
oldsel = havemove
|
||||
else
|
||||
entry[1] = newparam
|
||||
oldsel = entry[3]
|
||||
end
|
||||
refreshlist = true
|
||||
entry[1] = newparam
|
||||
oldsel = entry[3]
|
||||
end
|
||||
refreshlist = true
|
||||
end
|
||||
elsif cmd2==3 # Delete
|
||||
realcmds[cmd[1]] = nil
|
||||
@@ -1409,14 +1400,11 @@ class EvolutionsProperty
|
||||
for i in 0...value.length
|
||||
ret << "," if i>0
|
||||
param = value[i][1]
|
||||
case @evoparams[value[i][0]]
|
||||
when 0; param = ""
|
||||
when 2; param = sprintf("#{PBItems.getName(param)}")
|
||||
when 3; param = sprintf("#{PBMoves.getName(param)}")
|
||||
when 4; param = sprintf("#{PBSpecies.getName(param)}")
|
||||
when 5; param = sprintf("#{PBTypes.getName(param)}")
|
||||
when 6; param = sprintf("#{PBAbilities.getName(param)}")
|
||||
param_type = PBEvolution.getFunction(value[i][0], "parameterType")
|
||||
if param_type
|
||||
param = (Object.const_get(param_type).getName(param) rescue getConstantName(param_type, param) rescue param)
|
||||
end
|
||||
param = "" if !param
|
||||
ret << sprintf("#{PBSpecies.getName(value[i][2])},#{@methods[value[i][0]]},#{param}")
|
||||
end
|
||||
return ret
|
||||
|
||||
@@ -232,6 +232,17 @@ def pbGetGenderConst(i)
|
||||
return ret
|
||||
end
|
||||
|
||||
def pbGetHabitatConst(i)
|
||||
ret = MakeshiftConsts.get(53,i,PBHabitats)
|
||||
if !ret
|
||||
ret = ["","Grassland","Forest","WatersEdge","Sea","Cave","Mountain",
|
||||
"RoughTerrain","Urban","Rare"]
|
||||
i = 0 if i>=ret.length || i<0
|
||||
ret = ret[i]
|
||||
end
|
||||
return ret
|
||||
end
|
||||
|
||||
def pbGetAbilityConst(i)
|
||||
return MakeshiftConsts.get(MessageTypes::Abilities,i,PBAbilities)
|
||||
end
|
||||
@@ -267,11 +278,11 @@ def pbChooseSpeciesList(default=0)
|
||||
cname = getConstantName(PBSpecies,i) rescue nil
|
||||
commands.push([i,PBSpecies.getName(i)]) if cname
|
||||
end
|
||||
return pbChooseList(commands,default,-1)
|
||||
return pbChooseList(commands,default,0,-1)
|
||||
end
|
||||
|
||||
# Displays an alphabetically sorted list of all moves, and returns the ID of the
|
||||
# move selected (or 0 if the selection was canceled). "default", if specified,
|
||||
# move selected (or -1 if the selection was canceled). "default", if specified,
|
||||
# is the ID of the move to initially select.
|
||||
def pbChooseMoveList(default=0)
|
||||
commands = []
|
||||
@@ -279,7 +290,7 @@ def pbChooseMoveList(default=0)
|
||||
cname = getConstantName(PBMoves,i) rescue nil
|
||||
commands.push([i,PBMoves.getName(i)]) if cname
|
||||
end
|
||||
return pbChooseList(commands,default)
|
||||
return pbChooseList(commands,default,0)
|
||||
end
|
||||
|
||||
def pbChooseMoveListForSpecies(species,defaultMoveID=0)
|
||||
@@ -319,9 +330,9 @@ def pbChooseMoveListForSpecies(species,defaultMoveID=0)
|
||||
end
|
||||
|
||||
# Displays an alphabetically sorted list of all types, and returns the ID of the
|
||||
# type selected (or 0 if the selection was canceled). "default", if specified,
|
||||
# type selected (or -1 if the selection was canceled). "default", if specified,
|
||||
# is the ID of the type to initially select.
|
||||
def pbChooseTypeList(default=0)
|
||||
def pbChooseTypeList(default=-1)
|
||||
commands = []
|
||||
for i in 0..PBTypes.maxValue
|
||||
cname = getConstantName(PBTypes,i) rescue nil
|
||||
@@ -330,9 +341,9 @@ def pbChooseTypeList(default=0)
|
||||
return pbChooseList(commands,default)
|
||||
end
|
||||
|
||||
# Displays a list of all items, and returns the ID of the item selected (or 0 if
|
||||
# the selection was canceled). "default", if specified, is the ID of the item to
|
||||
# initially select. Pressing Input::A will toggle the list sorting between
|
||||
# Displays a list of all items, and returns the ID of the item selected (or -1
|
||||
# if the selection was canceled). "default", if specified, is the ID of the item
|
||||
# to initially select. Pressing Input::A will toggle the list sorting between
|
||||
# numerical and alphabetical.
|
||||
def pbChooseItemList(default=0)
|
||||
commands = []
|
||||
@@ -340,11 +351,11 @@ def pbChooseItemList(default=0)
|
||||
cname = getConstantName(PBItems,i) rescue nil
|
||||
commands.push([i,PBItems.getName(i)]) if cname
|
||||
end
|
||||
return pbChooseList(commands,default,-1)
|
||||
return pbChooseList(commands,default,0,-1)
|
||||
end
|
||||
|
||||
# Displays a list of all abilities, and returns the ID of the ability selected
|
||||
# (or 0 if the selection was canceled). "default", if specified, is the ID of
|
||||
# (or -1 if the selection was canceled). "default", if specified, is the ID of
|
||||
# the ability to initially select. Pressing Input::A will toggle the list
|
||||
# sorting between numerical and alphabetical.
|
||||
def pbChooseAbilityList(default=0)
|
||||
@@ -353,7 +364,7 @@ def pbChooseAbilityList(default=0)
|
||||
cname = getConstantName(PBAbilities,i) rescue nil
|
||||
commands.push([i,PBAbilities.getName(i)]) if cname
|
||||
end
|
||||
return pbChooseList(commands,default,-1)
|
||||
return pbChooseList(commands,default,0,-1)
|
||||
end
|
||||
|
||||
def pbChooseBallList(defaultMoveID=-1)
|
||||
@@ -475,7 +486,7 @@ def pbCommands3(cmdwindow,commands,cmdIfCancel,defaultindex=-1,noresize=false)
|
||||
return ret
|
||||
end
|
||||
|
||||
def pbChooseList(commands,default=0,sortType=1)
|
||||
def pbChooseList(commands,default=0,cancelValue=-1,sortType=1)
|
||||
cmdwin = pbListWindow([])
|
||||
itemID = default
|
||||
itemIndex = 0
|
||||
@@ -493,7 +504,7 @@ def pbChooseList(commands,default=0,sortType=1)
|
||||
end
|
||||
realcommands = []
|
||||
for command in commands
|
||||
if sortType<0 || sortType==0
|
||||
if sortType<=0
|
||||
realcommands.push(sprintf("%03d: %s",command[0],command[1]))
|
||||
else
|
||||
realcommands.push(command[1])
|
||||
@@ -503,7 +514,7 @@ def pbChooseList(commands,default=0,sortType=1)
|
||||
end
|
||||
cmd = pbCommandsSortable(cmdwin,realcommands,-1,itemIndex,(sortType<0))
|
||||
if cmd[0]==0 # Chose an option or cancelled
|
||||
itemID = (cmd[1]<0) ? 0 : commands[cmd[1]][0]
|
||||
itemID = (cmd[1]<0) ? cancelValue : commands[cmd[1]][0]
|
||||
break
|
||||
elsif cmd[0]==1 # Toggle sorting
|
||||
itemID = commands[cmd[1]][0]
|
||||
@@ -512,7 +523,7 @@ def pbChooseList(commands,default=0,sortType=1)
|
||||
end
|
||||
end
|
||||
cmdwin.dispose
|
||||
return (itemID>0) ? itemID : 0
|
||||
return itemID
|
||||
end
|
||||
|
||||
def pbCommandsSortable(cmdwindow,commands,cmdIfCancel,defaultindex=-1,sortable=false)
|
||||
|
||||
@@ -852,14 +852,11 @@ def pbCompilePokemonData
|
||||
evolutions[e].each_with_index do |evo,i|
|
||||
FileLineData.setSection(i,"Evolutions","")
|
||||
evo[0] = csvEnumField!(evo[0],PBSpecies,"Evolutions",i) # Species
|
||||
case PBEvolution::EVOPARAM[evo[1]] # Evolution method
|
||||
when 1; evo[2] = csvPosInt!(evo[2])
|
||||
when 2; evo[2] = csvEnumField!(evo[2],PBItems,"Evolutions",i)
|
||||
when 3; evo[2] = csvEnumField!(evo[2],PBMoves,"Evolutions",i)
|
||||
when 4; evo[2] = csvEnumField!(evo[2],PBSpecies,"Evolutions",i)
|
||||
when 5; evo[2] = csvEnumField!(evo[2],PBTypes,"Evolutions",i)
|
||||
when 6; evo[2] = csvEnumField!(evo[2],PBAbilities,"Evolutions",i)
|
||||
else; evo[2] = 0
|
||||
param_type = PBEvolution.getFunction(evo[1], "parameterType")
|
||||
if param_type
|
||||
evo[2] = csvEnumField!(evo[2], param_type, "Evolutions", i)
|
||||
else
|
||||
evo[2] = csvInt!(evo[2]) if evo[2] && evo[2] != ""
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1065,14 +1062,11 @@ def pbCompilePokemonForms
|
||||
evolutions[e].each_with_index do |evo,i|
|
||||
FileLineData.setSection(i,"Evolutions","")
|
||||
evo[0] = csvEnumField!(evo[0],PBSpecies,"Evolutions",i) # Species
|
||||
case PBEvolution::EVOPARAM[evo[1]] # Evolution method
|
||||
when 1; evo[2] = csvPosInt!(evo[2])
|
||||
when 2; evo[2] = csvEnumField!(evo[2],PBItems,"Evolutions",i)
|
||||
when 3; evo[2] = csvEnumField!(evo[2],PBMoves,"Evolutions",i)
|
||||
when 4; evo[2] = csvEnumField!(evo[2],PBSpecies,"Evolutions",i)
|
||||
when 5; evo[2] = csvEnumField!(evo[2],PBTypes,"Evolutions",i)
|
||||
when 6; evo[2] = csvEnumField!(evo[2],PBAbilities,"Evolutions",i)
|
||||
else; evo[2] = 0
|
||||
param_type = PBEvolution.getFunction(evo[1], "parameterType")
|
||||
if param_type
|
||||
evo[2] = csvEnumField!(evo[2], param_type, "Evolutions", i)
|
||||
else
|
||||
evo[2] = csvPosInt!(evo[2]) if evo[2] && evo[2] != ""
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user