pokemon cries

This commit is contained in:
infinitefusion
2022-01-01 11:22:08 -05:00
parent a447238b70
commit 1b0577139c
9 changed files with 353 additions and 310 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -61,9 +61,9 @@ module GameData
return nil if !species || !form return nil if !species || !form
validate species => [Symbol, self, String, Integer] validate species => [Symbol, self, String, Integer]
validate form => Integer validate form => Integer
# if other.is_a?(Integer) # if other.is_a?(Integer)
# p "Please switch to symbols, thanks." # p "Please switch to symbols, thanks."
# end # end
species = species.species if species.is_a?(self) species = species.species if species.is_a?(self)
species = DATA[species].species if species.is_a?(Integer) species = DATA[species].species if species.is_a?(Integer)
species = species.to_sym if species.is_a?(String) species = species.to_sym if species.is_a?(String)
@@ -74,110 +74,110 @@ module GameData
def self.schema(compiling_forms = false) def self.schema(compiling_forms = false)
ret = { ret = {
"FormName" => [0, "q"], "FormName" => [0, "q"],
"Kind" => [0, "s"], "Kind" => [0, "s"],
"Pokedex" => [0, "q"], "Pokedex" => [0, "q"],
"Type1" => [0, "e", :Type], "Type1" => [0, "e", :Type],
"Type2" => [0, "e", :Type], "Type2" => [0, "e", :Type],
"BaseStats" => [0, "vvvvvv"], "BaseStats" => [0, "vvvvvv"],
"EffortPoints" => [0, "uuuuuu"], "EffortPoints" => [0, "uuuuuu"],
"BaseEXP" => [0, "v"], "BaseEXP" => [0, "v"],
"Rareness" => [0, "u"], "Rareness" => [0, "u"],
"Happiness" => [0, "u"], "Happiness" => [0, "u"],
"Moves" => [0, "*ue", nil, :Move], "Moves" => [0, "*ue", nil, :Move],
"TutorMoves" => [0, "*e", :Move], "TutorMoves" => [0, "*e", :Move],
"EggMoves" => [0, "*e", :Move], "EggMoves" => [0, "*e", :Move],
"Abilities" => [0, "*e", :Ability], "Abilities" => [0, "*e", :Ability],
"HiddenAbility" => [0, "*e", :Ability], "HiddenAbility" => [0, "*e", :Ability],
"WildItemCommon" => [0, "e", :Item], "WildItemCommon" => [0, "e", :Item],
"WildItemUncommon" => [0, "e", :Item], "WildItemUncommon" => [0, "e", :Item],
"WildItemRare" => [0, "e", :Item], "WildItemRare" => [0, "e", :Item],
"Compatibility" => [0, "*e", :EggGroup], "Compatibility" => [0, "*e", :EggGroup],
"StepsToHatch" => [0, "v"], "StepsToHatch" => [0, "v"],
"Height" => [0, "f"], "Height" => [0, "f"],
"Weight" => [0, "f"], "Weight" => [0, "f"],
"Color" => [0, "e", :BodyColor], "Color" => [0, "e", :BodyColor],
"Shape" => [0, "y", :BodyShape], "Shape" => [0, "y", :BodyShape],
"Habitat" => [0, "e", :Habitat], "Habitat" => [0, "e", :Habitat],
"Generation" => [0, "i"], "Generation" => [0, "i"],
"BattlerPlayerX" => [0, "i"], "BattlerPlayerX" => [0, "i"],
"BattlerPlayerY" => [0, "i"], "BattlerPlayerY" => [0, "i"],
"BattlerEnemyX" => [0, "i"], "BattlerEnemyX" => [0, "i"],
"BattlerEnemyY" => [0, "i"], "BattlerEnemyY" => [0, "i"],
"BattlerAltitude" => [0, "i"], "BattlerAltitude" => [0, "i"],
"BattlerShadowX" => [0, "i"], "BattlerShadowX" => [0, "i"],
"BattlerShadowSize" => [0, "u"] "BattlerShadowSize" => [0, "u"]
} }
if compiling_forms if compiling_forms
ret["PokedexForm"] = [0, "u"] ret["PokedexForm"] = [0, "u"]
ret["Evolutions"] = [0, "*ees", :Species, :Evolution, nil] ret["Evolutions"] = [0, "*ees", :Species, :Evolution, nil]
ret["MegaStone"] = [0, "e", :Item] ret["MegaStone"] = [0, "e", :Item]
ret["MegaMove"] = [0, "e", :Move] ret["MegaMove"] = [0, "e", :Move]
ret["UnmegaForm"] = [0, "u"] ret["UnmegaForm"] = [0, "u"]
ret["MegaMessage"] = [0, "u"] ret["MegaMessage"] = [0, "u"]
else else
ret["InternalName"] = [0, "n"] ret["InternalName"] = [0, "n"]
ret["Name"] = [0, "s"] ret["Name"] = [0, "s"]
ret["GrowthRate"] = [0, "e", :GrowthRate] ret["GrowthRate"] = [0, "e", :GrowthRate]
ret["GenderRate"] = [0, "e", :GenderRatio] ret["GenderRate"] = [0, "e", :GenderRatio]
ret["Incense"] = [0, "e", :Item] ret["Incense"] = [0, "e", :Item]
ret["Evolutions"] = [0, "*ses", nil, :Evolution, nil] ret["Evolutions"] = [0, "*ses", nil, :Evolution, nil]
end end
return ret return ret
end end
def initialize(hash) def initialize(hash)
@id = hash[:id] @id = hash[:id]
@id_number = hash[:id_number] || -1 @id_number = hash[:id_number] || -1
@species = hash[:species] || @id @species = hash[:species] || @id
@form = hash[:form] || 0 @form = hash[:form] || 0
@real_name = hash[:name] || "Unnamed" @real_name = hash[:name] || "Unnamed"
@real_form_name = hash[:form_name] @real_form_name = hash[:form_name]
@real_category = hash[:category] || "???" @real_category = hash[:category] || "???"
@real_pokedex_entry = hash[:pokedex_entry] || "???" @real_pokedex_entry = hash[:pokedex_entry] || "???"
@pokedex_form = hash[:pokedex_form] || @form @pokedex_form = hash[:pokedex_form] || @form
@type1 = hash[:type1] || :NORMAL @type1 = hash[:type1] || :NORMAL
@type2 = hash[:type2] || @type1 @type2 = hash[:type2] || @type1
@base_stats = hash[:base_stats] || {} @base_stats = hash[:base_stats] || {}
@evs = hash[:evs] || {} @evs = hash[:evs] || {}
GameData::Stat.each_main do |s| GameData::Stat.each_main do |s|
@base_stats[s.id] = 1 if !@base_stats[s.id] || @base_stats[s.id] <= 0 @base_stats[s.id] = 1 if !@base_stats[s.id] || @base_stats[s.id] <= 0
@evs[s.id] = 0 if !@evs[s.id] || @evs[s.id] < 0 @evs[s.id] = 0 if !@evs[s.id] || @evs[s.id] < 0
end end
@base_exp = hash[:base_exp] || 100 @base_exp = hash[:base_exp] || 100
@growth_rate = hash[:growth_rate] || :Medium @growth_rate = hash[:growth_rate] || :Medium
@gender_ratio = hash[:gender_ratio] || :Female50Percent @gender_ratio = hash[:gender_ratio] || :Female50Percent
@catch_rate = hash[:catch_rate] || 255 @catch_rate = hash[:catch_rate] || 255
@happiness = hash[:happiness] || 70 @happiness = hash[:happiness] || 70
@moves = hash[:moves] || [] @moves = hash[:moves] || []
@tutor_moves = hash[:tutor_moves] || [] @tutor_moves = hash[:tutor_moves] || []
@egg_moves = hash[:egg_moves] || [] @egg_moves = hash[:egg_moves] || []
@abilities = hash[:abilities] || [] @abilities = hash[:abilities] || []
@hidden_abilities = hash[:hidden_abilities] || [] @hidden_abilities = hash[:hidden_abilities] || []
@wild_item_common = hash[:wild_item_common] @wild_item_common = hash[:wild_item_common]
@wild_item_uncommon = hash[:wild_item_uncommon] @wild_item_uncommon = hash[:wild_item_uncommon]
@wild_item_rare = hash[:wild_item_rare] @wild_item_rare = hash[:wild_item_rare]
@egg_groups = hash[:egg_groups] || [:Undiscovered] @egg_groups = hash[:egg_groups] || [:Undiscovered]
@hatch_steps = hash[:hatch_steps] || 1 @hatch_steps = hash[:hatch_steps] || 1
@incense = hash[:incense] @incense = hash[:incense]
@evolutions = hash[:evolutions] || [] @evolutions = hash[:evolutions] || []
@height = hash[:height] || 1 @height = hash[:height] || 1
@weight = hash[:weight] || 1 @weight = hash[:weight] || 1
@color = hash[:color] || :Red @color = hash[:color] || :Red
@shape = hash[:shape] || :Head @shape = hash[:shape] || :Head
@habitat = hash[:habitat] || :None @habitat = hash[:habitat] || :None
@generation = hash[:generation] || 0 @generation = hash[:generation] || 0
@mega_stone = hash[:mega_stone] @mega_stone = hash[:mega_stone]
@mega_move = hash[:mega_move] @mega_move = hash[:mega_move]
@unmega_form = hash[:unmega_form] || 0 @unmega_form = hash[:unmega_form] || 0
@mega_message = hash[:mega_message] || 0 @mega_message = hash[:mega_message] || 0
@back_sprite_x = hash[:back_sprite_x] || 0 @back_sprite_x = hash[:back_sprite_x] || 0
@back_sprite_y = hash[:back_sprite_y] || 0 @back_sprite_y = hash[:back_sprite_y] || 0
@front_sprite_x = hash[:front_sprite_x] || 0 @front_sprite_x = hash[:front_sprite_x] || 0
@front_sprite_y = hash[:front_sprite_y] || 0 @front_sprite_y = hash[:front_sprite_y] || 0
@front_sprite_altitude = hash[:front_sprite_altitude] || 0 @front_sprite_altitude = hash[:front_sprite_altitude] || 0
@shadow_x = hash[:shadow_x] || 0 @shadow_x = hash[:shadow_x] || 0
@shadow_size = hash[:shadow_size] || 2 @shadow_size = hash[:shadow_size] || 2
end end
# @return [String] the translated name of this species # @return [String] the translated name of this species
@@ -200,16 +200,21 @@ module GameData
return pbGetMessage(MessageTypes::Entries, @id_number) return pbGetMessage(MessageTypes::Entries, @id_number)
end end
def is_fusion
return @id_number > Settings::NB_POKEMON
end
def apply_metrics_to_sprite(sprite, index, shadow = false) def apply_metrics_to_sprite(sprite, index, shadow = false)
if shadow if shadow
if (index & 1) == 1 # Foe Pokémon if (index & 1) == 1 # Foe Pokémon
sprite.x += @shadow_x * 2 sprite.x += @shadow_x * 2
end end
else else
if (index & 1) == 0 # Player's Pokémon if (index & 1) == 0 # Player's Pokémon
sprite.x += @back_sprite_x * 2 sprite.x += @back_sprite_x * 2
sprite.y += (@back_sprite_y * 2) + Settings::BACKSPRITE_POSITION_OFFSET sprite.y += (@back_sprite_y * 2) + Settings::BACKSPRITE_POSITION_OFFSET
else # Foe Pokémon else
# Foe Pokémon
sprite.x += @front_sprite_x * 2 sprite.x += @front_sprite_x * 2
sprite.y += (@front_sprite_y * 2) + Settings::FRONTSPRITE_POSITION_OFFSET sprite.y += (@front_sprite_y * 2) + Settings::FRONTSPRITE_POSITION_OFFSET
sprite.y -= @front_sprite_altitude * 2 sprite.y -= @front_sprite_altitude * 2
@@ -219,15 +224,15 @@ module GameData
def shows_shadow? def shows_shadow?
return true return true
# return @front_sprite_altitude > 0 # return @front_sprite_altitude > 0
end end
def get_evolutions(exclude_invalid = false) def get_evolutions(exclude_invalid = false)
ret = [] ret = []
@evolutions.each do |evo| @evolutions.each do |evo|
next if evo[3] # Is the prevolution next if evo[3] # Is the prevolution
next if evo[1] == :None && exclude_invalid next if evo[1] == :None && exclude_invalid
ret.push([evo[0], evo[1], evo[2]]) # [Species, method, parameter] ret.push([evo[0], evo[1], evo[2]]) # [Species, method, parameter]
end end
return ret return ret
end end
@@ -237,7 +242,7 @@ module GameData
evos = evos.sort { |a, b| GameData::Species.get(a[0]).id_number <=> GameData::Species.get(b[0]).id_number } evos = evos.sort { |a, b| GameData::Species.get(a[0]).id_number <=> GameData::Species.get(b[0]).id_number }
ret = [] ret = []
evos.each do |evo| evos.each do |evo|
ret.push([@species].concat(evo)) # [Prevo species, evo species, method, parameter] ret.push([@species].concat(evo)) # [Prevo species, evo species, method, parameter]
evo_array = GameData::Species.get(evo[0]).get_family_evolutions(exclude_invalid) evo_array = GameData::Species.get(evo[0]).get_family_evolutions(exclude_invalid)
ret.concat(evo_array) if evo_array && evo_array.length > 0 ret.concat(evo_array) if evo_array && evo_array.length > 0
end end
@@ -246,7 +251,7 @@ module GameData
def get_previous_species def get_previous_species
return @species if @evolutions.length == 0 return @species if @evolutions.length == 0
@evolutions.each { |evo| return evo[0] if evo[3] } # Is the prevolution @evolutions.each { |evo| return evo[0] if evo[3] } # Is the prevolution
return @species return @species
end end
@@ -254,12 +259,12 @@ module GameData
ret = @species ret = @species
return ret if @evolutions.length == 0 return ret if @evolutions.length == 0
@evolutions.each do |evo| @evolutions.each do |evo|
next if !evo[3] # Not the prevolution next if !evo[3] # Not the prevolution
if check_items if check_items
incense = GameData::Species.get(evo[0]).incense incense = GameData::Species.get(evo[0]).incense
ret = evo[0] if !incense || item1 == incense || item2 == incense ret = evo[0] if !incense || item1 == incense || item2 == incense
else else
ret = evo[0] # Species of prevolution ret = evo[0] # Species of prevolution
end end
break break
end end
@@ -305,7 +310,7 @@ module GameData
def minimum_level def minimum_level
return 1 if @evolutions.length == 0 return 1 if @evolutions.length == 0
@evolutions.each do |evo| @evolutions.each do |evo|
next if !evo[3] # Not the prevolution next if !evo[3] # Not the prevolution
evo_method_data = GameData::Evolution.get(evo[1]) evo_method_data = GameData::Evolution.get(evo[1])
next if evo_method_data.level_up_proc.nil? next if evo_method_data.level_up_proc.nil?
min_level = evo_method_data.minimum_level min_level = evo_method_data.minimum_level
@@ -362,13 +367,15 @@ def pbGetEvolvedFormData(species, exclude_invalid = false)
end end
# @deprecated Use {GameData#Species#get_family_evolutions} instead. This alias is slated to be removed in v20. # @deprecated Use {GameData#Species#get_family_evolutions} instead. This alias is slated to be removed in v20.
def pbGetEvolutionFamilyData(species) # Unused def pbGetEvolutionFamilyData(species)
# Unused
Deprecation.warn_method('pbGetEvolutionFamilyData', 'v20', 'GameData::Species.get(species).get_family_evolutions') Deprecation.warn_method('pbGetEvolutionFamilyData', 'v20', 'GameData::Species.get(species).get_family_evolutions')
return GameData::Species.get(species).get_family_evolutions return GameData::Species.get(species).get_family_evolutions
end end
# @deprecated Use {GameData#Species#get_previous_species} instead. This alias is slated to be removed in v20. # @deprecated Use {GameData#Species#get_previous_species} instead. This alias is slated to be removed in v20.
def pbGetPreviousForm(species) # Unused def pbGetPreviousForm(species)
# Unused
Deprecation.warn_method('pbGetPreviousForm', 'v20', 'GameData::Species.get(species).get_previous_species') Deprecation.warn_method('pbGetPreviousForm', 'v20', 'GameData::Species.get(species).get_previous_species')
return GameData::Species.get(species).get_previous_species return GameData::Species.get(species).get_previous_species
end end
@@ -380,7 +387,8 @@ def pbGetBabySpecies(species, check_items = false, item1 = nil, item2 = nil)
end end
# @deprecated Use {GameData#Species#family_evolutions_have_method?} instead. This alias is slated to be removed in v20. # @deprecated Use {GameData#Species#family_evolutions_have_method?} instead. This alias is slated to be removed in v20.
def pbCheckEvolutionFamilyForMethod(species, method, param = nil) # Unused def pbCheckEvolutionFamilyForMethod(species, method, param = nil)
# Unused
Deprecation.warn_method('pbCheckEvolutionFamilyForMethod', 'v20', 'GameData::Species.get(species).family_evolutions_have_method?(method)') Deprecation.warn_method('pbCheckEvolutionFamilyForMethod', 'v20', 'GameData::Species.get(species).family_evolutions_have_method?(method)')
return GameData::Species.get(species).family_evolutions_have_method?(method, param) return GameData::Species.get(species).family_evolutions_have_method?(method, param)
end end

View File

@@ -3,9 +3,9 @@ module GameData
def self.check_graphic_file(path, species, form = 0, gender = 0, shiny = false, shadow = false, subfolder = "") def self.check_graphic_file(path, species, form = 0, gender = 0, shiny = false, shadow = false, subfolder = "")
try_subfolder = sprintf("%s/", subfolder) try_subfolder = sprintf("%s/", subfolder)
try_species = species try_species = species
try_form = (form > 0) ? sprintf("_%d", form) : "" try_form = (form > 0) ? sprintf("_%d", form) : ""
try_gender = (gender == 1) ? "_female" : "" try_gender = (gender == 1) ? "_female" : ""
try_shadow = (shadow) ? "_shadow" : "" try_shadow = (shadow) ? "_shadow" : ""
factors = [] factors = []
factors.push([4, sprintf("%s shiny/", subfolder), try_subfolder]) if shiny factors.push([4, sprintf("%s shiny/", subfolder), try_subfolder]) if shiny
factors.push([3, try_shadow, ""]) if shadow factors.push([3, try_shadow, ""]) if shadow
@@ -18,17 +18,22 @@ module GameData
factors.each_with_index do |factor, index| factors.each_with_index do |factor, index|
value = ((i / (2 ** index)) % 2 == 0) ? factor[1] : factor[2] value = ((i / (2 ** index)) % 2 == 0) ? factor[1] : factor[2]
case factor[0] case factor[0]
when 0 then try_species = value when 0 then
when 1 then try_form = value try_species = value
when 2 then try_gender = value when 1 then
when 3 then try_shadow = value try_form = value
when 4 then try_subfolder = value # Shininess when 2 then
try_gender = value
when 3 then
try_shadow = value
when 4 then
try_subfolder = value # Shininess
end end
end end
# Look for a graphic matching this combination's parameters # Look for a graphic matching this combination's parameters
try_species_text = try_species try_species_text = try_species
ret = pbResolveBitmap(sprintf("%s%s%s%s%s%s", path, try_subfolder, ret = pbResolveBitmap(sprintf("%s%s%s%s%s%s", path, try_subfolder,
try_species_text, try_form, try_gender, try_shadow)) try_species_text, try_form, try_gender, try_shadow))
return ret if ret return ret if ret
end end
return nil return nil
@@ -87,7 +92,7 @@ module GameData
def self.sprite_bitmap_from_pokemon(pkmn, back = false, species = nil) def self.sprite_bitmap_from_pokemon(pkmn, back = false, species = nil)
species = pkmn.species if !species species = pkmn.species if !species
species = GameData::Species.get(species).species # Just to be sure it's a symbol species = GameData::Species.get(species).species # Just to be sure it's a symbol
return self.egg_sprite_bitmap(species, pkmn.form) if pkmn.egg? return self.egg_sprite_bitmap(species, pkmn.form) if pkmn.egg?
if back if back
ret = self.back_sprite_bitmap(species, pkmn.form, pkmn.gender, pkmn.shiny?, pkmn.shadowPokemon?) ret = self.back_sprite_bitmap(species, pkmn.form, pkmn.gender, pkmn.shiny?, pkmn.shadowPokemon?)
@@ -177,6 +182,10 @@ module GameData
def self.check_cry_file(species, form) def self.check_cry_file(species, form)
species_data = self.get_species_form(species, form) species_data = self.get_species_form(species, form)
return nil if species_data.nil? return nil if species_data.nil?
if species_data.is_fusion
species_data = GameData::Species.get(getHeadID(species_data))
end
if form > 0 if form > 0
ret = sprintf("Cries/%s_%d", species_data.species, form) ret = sprintf("Cries/%s_%d", species_data.species, form)
return ret if pbResolveAudioSE(ret) return ret if pbResolveAudioSE(ret)
@@ -228,8 +237,8 @@ module GameData
filename = pbResolveAudioSE(GameData::Species.cry_filename(species, form)) filename = pbResolveAudioSE(GameData::Species.cry_filename(species, form))
ret = getPlayTime(filename) if filename ret = getPlayTime(filename) if filename
end end
ret /= pitch # Sound played at a lower pitch lasts longer ret /= pitch # Sound played at a lower pitch lasts longer
return (ret * Graphics.frame_rate).ceil + 4 # 4 provides a buffer between sounds return (ret * Graphics.frame_rate).ceil + 4 # 4 provides a buffer between sounds
end end
end end
end end
@@ -238,7 +247,7 @@ end
# Deprecated methods # Deprecated methods
#=============================================================================== #===============================================================================
# @deprecated This alias is slated to be removed in v20. # @deprecated This alias is slated to be removed in v20.
def pbLoadSpeciesBitmap(species, gender = 0, form = 0, shiny = false, shadow = false, back = false , egg = false) def pbLoadSpeciesBitmap(species, gender = 0, form = 0, shiny = false, shadow = false, back = false, egg = false)
Deprecation.warn_method('pbLoadSpeciesBitmap', 'v20', 'GameData::Species.sprite_bitmap(species, form, gender, shiny, shadow, back, egg)') Deprecation.warn_method('pbLoadSpeciesBitmap', 'v20', 'GameData::Species.sprite_bitmap(species, form, gender, shiny, shadow, back, egg)')
return GameData::Species.sprite_bitmap(species, form, gender, shiny, shadow, back, egg) return GameData::Species.sprite_bitmap(species, form, gender, shiny, shadow, back, egg)
end end

View File

@@ -17,7 +17,7 @@
class HallOfFame_Scene class HallOfFame_Scene
# When true, all pokémon will be in one line # When true, all pokémon will be in one line
# When false, all pokémon will be in two lines # When false, all pokémon will be in two lines
SINGLEROW = false SINGLEROW = true
# Make the pokémon movement ON in hall entry # Make the pokémon movement ON in hall entry
ANIMATION = true ANIMATION = true
# Speed in pokémon movement in hall entry. Don't use less than 2! # Speed in pokémon movement in hall entry. Don't use less than 2!
@@ -39,42 +39,42 @@ class HallOfFame_Scene
FINALFADESPEED = 16 FINALFADESPEED = 16
# Sprites opacity value when them aren't selected # Sprites opacity value when them aren't selected
OPACITY = 64 OPACITY = 64
BASECOLOR = Color.new(248,248,248) BASECOLOR = Color.new(248, 248, 248)
SHADOWCOLOR = Color.new(0,0,0) SHADOWCOLOR = Color.new(0, 0, 0)
# Placement for pokemon icons # Placement for pokemon icons
def pbStartScene def pbStartScene
@sprites={} @sprites = {}
@viewport=Viewport.new(0,0,Graphics.width, Graphics.height) @viewport = Viewport.new(0, 0, Graphics.width, Graphics.height)
@viewport.z=99999 @viewport.z = 99999
# Comment the below line to doesn't use a background # Comment the below line to doesn't use a background
addBackgroundPlane(@sprites,"bg","hallfamebg",@viewport) addBackgroundPlane(@sprites, "bg", "hallfamebg", @viewport)
@sprites["hallbars"]=IconSprite.new(@viewport) @sprites["hallbars"] = IconSprite.new(@viewport)
@sprites["hallbars"].setBitmap("Graphics/Pictures/hallfamebars") @sprites["hallbars"].setBitmap("Graphics/Pictures/hallfamebars")
@sprites["overlay"]=BitmapSprite.new(Graphics.width,Graphics.height,@viewport) @sprites["overlay"] = BitmapSprite.new(Graphics.width, Graphics.height, @viewport)
@sprites["overlay"].z=10 @sprites["overlay"].z = 10
pbSetSystemFont(@sprites["overlay"].bitmap) pbSetSystemFont(@sprites["overlay"].bitmap)
@alreadyFadedInEnd=false @alreadyFadedInEnd = false
@useMusic=false @useMusic = false
@battlerIndex=0 @battlerIndex = 0
@hallEntry=[] @hallEntry = []
end end
def pbStartSceneEntry def pbStartSceneEntry
pbStartScene pbStartScene
@useMusic=(ENTRYMUSIC && ENTRYMUSIC!="") @useMusic = (ENTRYMUSIC && ENTRYMUSIC != "")
pbBGMPlay(ENTRYMUSIC) if @useMusic pbBGMPlay(ENTRYMUSIC) if @useMusic
saveHallEntry saveHallEntry
@xmovement=[] @xmovement = []
@ymovement=[] @ymovement = []
createBattlers createBattlers
pbFadeInAndShow(@sprites) { pbUpdate } pbFadeInAndShow(@sprites) { pbUpdate }
end end
def pbStartScenePC def pbStartScenePC
pbStartScene pbStartScene
@hallIndex=$PokemonGlobal.hallOfFame.size-1 @hallIndex = $PokemonGlobal.hallOfFame.size - 1
@hallEntry=$PokemonGlobal.hallOfFame[-1] @hallEntry = $PokemonGlobal.hallOfFame[-1]
createBattlers(false) createBattlers(false)
pbFadeInAndShow(@sprites) { pbUpdate } pbFadeInAndShow(@sprites) { pbUpdate }
pbUpdatePC pbUpdatePC
@@ -88,35 +88,36 @@ class HallOfFame_Scene
@viewport.dispose @viewport.dispose
end end
def slowFadeOut(sprites,exponent) # 2 exponent def slowFadeOut(sprites, exponent)
# 2 exponent
# To handle values above 8 # To handle values above 8
extraWaitExponent=exponent-9 extraWaitExponent = exponent - 9
exponent=8 if 8<exponent exponent = 8 if 8 < exponent
max=2**exponent max = 2 ** exponent
speed=(2**8)/max speed = (2 ** 8) / max
for j in 0..max for j in 0..max
if extraWaitExponent>-1 if extraWaitExponent > -1
(2**extraWaitExponent).times do (2 ** extraWaitExponent).times do
Graphics.update Graphics.update
Input.update Input.update
pbUpdate pbUpdate
end end
end end
pbSetSpritesToColor(sprites,Color.new(0,0,0,j*speed)) pbSetSpritesToColor(sprites, Color.new(0, 0, 0, j * speed))
block_given? ? yield : pbUpdateSpriteHash(sprites) block_given? ? yield : pbUpdateSpriteHash(sprites)
end end
end end
# Dispose the sprite if the sprite exists and make it null # Dispose the sprite if the sprite exists and make it null
def restartSpritePosition(sprites,spritename) def restartSpritePosition(sprites, spritename)
sprites[spritename].dispose if sprites.include?(spritename) && sprites[spritename] sprites[spritename].dispose if sprites.include?(spritename) && sprites[spritename]
sprites[spritename]=nil sprites[spritename] = nil
end end
# Change the pokémon sprites opacity except the index one # Change the pokémon sprites opacity except the index one
def setPokemonSpritesOpacity(index,opacity=255) def setPokemonSpritesOpacity(index, opacity = 255)
for n in 0...@hallEntry.size for n in 0...@hallEntry.size
@sprites["pokemon#{n}"].opacity=(n==index) ? 255 : opacity if @sprites["pokemon#{n}"] @sprites["pokemon#{n}"].opacity = (n == index) ? 255 : opacity if @sprites["pokemon#{n}"]
end end
end end
@@ -127,142 +128,145 @@ class HallOfFame_Scene
end end
# Update the global variables # Update the global variables
$PokemonGlobal.hallOfFame.push(@hallEntry) $PokemonGlobal.hallOfFame.push(@hallEntry)
$PokemonGlobal.hallOfFameLastNumber+=1 $PokemonGlobal.hallOfFameLastNumber += 1
$PokemonGlobal.hallOfFame.delete_at(0) if HALLLIMIT>-1 && $PokemonGlobal.hallOfFame.delete_at(0) if HALLLIMIT > -1 &&
$PokemonGlobal.hallOfFame.size>HALLLIMIT $PokemonGlobal.hallOfFame.size > HALLLIMIT
end end
# Return the x/y point position in screen for battler index number # Return the x/y point position in screen for battler index number
# Don't use odd numbers! # Don't use odd numbers!
def xpointformula(battlernumber) def xpointformula(battlernumber)
ret=0 ret = 0
if !SINGLEROW if !SINGLEROW
ret=32+160*xpositionformula(battlernumber) ret = 32 + 160 * xpositionformula(battlernumber)
else else
ret=(60*(battlernumber/2)+48)*(xpositionformula(battlernumber)-1) ret = (60 * (battlernumber / 2) + 48) * (xpositionformula(battlernumber) - 1)
ret+=Graphics.width/2-56 ret += Graphics.width / 2 - 56
end end
return ret return ret
end end
def ypointformula(battlernumber) def ypointformula(battlernumber)
ret=0 ret = 0
if !SINGLEROW if !SINGLEROW
ret=32+128*ypositionformula(battlernumber)/2 ret = 32 + 128 * ypositionformula(battlernumber) / 2
else else
ret=96-8*(battlernumber/2) ret = 96 - 8 * (battlernumber / 2)
end end
return ret return ret
end end
# Returns 0, 1 or 2 as the x/y column value # Returns 0, 1 or 2 as the x/y column value
def xpositionformula(battlernumber) def xpositionformula(battlernumber)
ret=0 ret = 0
if !SINGLEROW if !SINGLEROW
ret=(battlernumber/3%2==0) ? (19-battlernumber)%3 : (19+battlernumber)%3 ret = (battlernumber / 3 % 2 == 0) ? (19 - battlernumber) % 3 : (19 + battlernumber) % 3
else else
ret=battlernumber%2*2 ret = battlernumber % 2 * 2
end end
return ret return ret
end end
def ypositionformula(battlernumber) def ypositionformula(battlernumber)
ret=0 ret = 0
if !SINGLEROW if !SINGLEROW
ret=(battlernumber/3)%2*2 ret = (battlernumber / 3) % 2 * 2
else else
ret=1 ret = 1
end end
return ret return ret
end end
def moveSprite(i) def moveSprite(i)
spritename=(i>-1) ? "pokemon#{i}" : "trainer" spritename = (i > -1) ? "pokemon#{i}" : "trainer"
speed = (i>-1) ? ANIMATIONSPEED : 2 speed = (i > -1) ? ANIMATIONSPEED : 2
if(!ANIMATION) # Skips animation if (!ANIMATION) # Skips animation
@sprites[spritename].x-=speed*@xmovement[i] @sprites[spritename].x -= speed * @xmovement[i]
@xmovement[i]=0 @xmovement[i] = 0
@sprites[spritename].y-=speed*@ymovement[i] @sprites[spritename].y -= speed * @ymovement[i]
@ymovement[i]=0 @ymovement[i] = 0
end end
if(@xmovement[i]!=0) if (@xmovement[i] != 0)
direction = (@xmovement[i]>0) ? -1 : 1 direction = (@xmovement[i] > 0) ? -1 : 1
@sprites[spritename].x+=speed*direction @sprites[spritename].x += speed * direction
@xmovement[i]+=direction @xmovement[i] += direction
end end
if(@ymovement[i]!=0) if (@ymovement[i] != 0)
direction = (@ymovement[i]>0) ? -1 : 1 direction = (@ymovement[i] > 0) ? -1 : 1
@sprites[spritename].y+=speed*direction @sprites[spritename].y += speed * direction
@ymovement[i]+=direction @ymovement[i] += direction
end end
end end
def createBattlers(hide=true) def createBattlers(hide = true)
# Movement in animation # Movement in animation
for i in 0...6 for i in 0...6
# Clear all 6 pokémon sprites and dispose the ones that exists every time # Clear all 6 pokémon sprites and dispose the ones that exists every time
# that this method is call # that this method is call
restartSpritePosition(@sprites,"pokemon#{i}") restartSpritePosition(@sprites, "pokemon#{i}")
next if i>=@hallEntry.size next if i >= @hallEntry.size
xpoint=xpointformula(i) xpoint = xpointformula(i)
ypoint=ypointformula(i) ypoint = ypointformula(i)
pok=@hallEntry[i] pok = @hallEntry[i]
@sprites["pokemon#{i}"]=PokemonSprite.new(@viewport) @sprites["pokemon#{i}"] = PokemonSprite.new(@viewport)
@sprites["pokemon#{i}"].setOffset(PictureOrigin::TopLeft) @sprites["pokemon#{i}"].setOffset(PictureOrigin::TopLeft)
@sprites["pokemon#{i}"].setPokemonBitmap(pok) @sprites["pokemon#{i}"].setPokemonBitmap(pok)
@sprites["pokemon#{i}"].zoom_x = Settings::BACKRPSPRITE_SCALE
@sprites["pokemon#{i}"].zoom_y = Settings::BACKRPSPRITE_SCALE
# This method doesn't put the exact coordinates # This method doesn't put the exact coordinates
@sprites["pokemon#{i}"].x = xpoint @sprites["pokemon#{i}"].x = xpoint
@sprites["pokemon#{i}"].y = ypoint @sprites["pokemon#{i}"].y = ypoint
if @sprites["pokemon#{i}"].bitmap && !@sprites["pokemon#{i}"].disposed? if @sprites["pokemon#{i}"].bitmap && !@sprites["pokemon#{i}"].disposed?
@sprites["pokemon#{i}"].x += (128-@sprites["pokemon#{i}"].bitmap.width)/2 @sprites["pokemon#{i}"].x += (128 - @sprites["pokemon#{i}"].bitmap.width) / 2
@sprites["pokemon#{i}"].y += (128-@sprites["pokemon#{i}"].bitmap.height)/2 @sprites["pokemon#{i}"].y += (128 - @sprites["pokemon#{i}"].bitmap.height) / 2
end end
@sprites["pokemon#{i}"].z=7-i if SINGLEROW @sprites["pokemon#{i}"].z = 7 - i if SINGLEROW
next if !hide next if !hide
# Animation distance calculation # Animation distance calculation
horizontal=1-xpositionformula(i) horizontal = 1 - xpositionformula(i)
vertical=1-ypositionformula(i) vertical = 1 - ypositionformula(i)
xdistance=(horizontal==-1) ? -@sprites["pokemon#{i}"].bitmap.width : Graphics.width xdistance = (horizontal == -1) ? -@sprites["pokemon#{i}"].bitmap.width : Graphics.width
ydistance=(vertical==-1) ? -@sprites["pokemon#{i}"].bitmap.height : Graphics.height ydistance = (vertical == -1) ? -@sprites["pokemon#{i}"].bitmap.height : Graphics.height
xdistance=((xdistance-@sprites["pokemon#{i}"].x)/ANIMATIONSPEED).abs+1 xdistance = ((xdistance - @sprites["pokemon#{i}"].x) / ANIMATIONSPEED).abs + 1
ydistance=((ydistance-@sprites["pokemon#{i}"].y)/ANIMATIONSPEED).abs+1 ydistance = ((ydistance - @sprites["pokemon#{i}"].y) / ANIMATIONSPEED).abs + 1
biggerdistance=(xdistance>ydistance) ? xdistance : ydistance biggerdistance = (xdistance > ydistance) ? xdistance : ydistance
@xmovement[i]=biggerdistance @xmovement[i] = biggerdistance
@xmovement[i]*=-1 if horizontal==-1 @xmovement[i] *= -1 if horizontal == -1
@xmovement[i]=0 if horizontal== 0 @xmovement[i] = 0 if horizontal == 0
@ymovement[i]=biggerdistance @ymovement[i] = biggerdistance
@ymovement[i]*=-1 if vertical==-1 @ymovement[i] *= -1 if vertical == -1
@ymovement[i]=0 if vertical== 0 @ymovement[i] = 0 if vertical == 0
# Hide the battlers # Hide the battlers
@sprites["pokemon#{i}"].x+=@xmovement[i]*ANIMATIONSPEED @sprites["pokemon#{i}"].x += @xmovement[i] * ANIMATIONSPEED
@sprites["pokemon#{i}"].y+=@ymovement[i]*ANIMATIONSPEED @sprites["pokemon#{i}"].y += @ymovement[i] * ANIMATIONSPEED
end end
end end
def createTrainerBattler def createTrainerBattler
@sprites["trainer"]=IconSprite.new(@viewport) @sprites["trainer"] = IconSprite.new(@viewport)
@sprites["trainer"].setBitmap(GameData::TrainerType.front_sprite_filename($Trainer.trainer_type)) @sprites["trainer"].setBitmap(GameData::TrainerType.front_sprite_filename($Trainer.trainer_type))
if !SINGLEROW if !SINGLEROW
@sprites["trainer"].x=Graphics.width-96 @sprites["trainer"].x = Graphics.width - 96
@sprites["trainer"].y=160 @sprites["trainer"].y = 160
else else
@sprites["trainer"].x=Graphics.width/2 @sprites["trainer"].x = Graphics.width / 2
@sprites["trainer"].y=178 @sprites["trainer"].y = 178
end end
@sprites["trainer"].z=9 @sprites["trainer"].z = 9
@sprites["trainer"].ox=@sprites["trainer"].bitmap.width/2 @sprites["trainer"].ox = @sprites["trainer"].bitmap.width / 2
@sprites["trainer"].oy=@sprites["trainer"].bitmap.height/2 @sprites["trainer"].oy = @sprites["trainer"].bitmap.height / 2
if REMOVEBARS if REMOVEBARS
@sprites["overlay"].bitmap.clear @sprites["overlay"].bitmap.clear
@sprites["hallbars"].visible=false @sprites["hallbars"].visible = false
end end
@xmovement[@battlerIndex]=0 @xmovement[@battlerIndex] = 0
@ymovement[@battlerIndex]=0 @ymovement[@battlerIndex] = 0
if(ANIMATION && !SINGLEROW) # Trainer Animation if (ANIMATION && !SINGLEROW) # Trainer Animation
startpoint=Graphics.width/2 startpoint = Graphics.width / 2
# 2 is the trainer speed # 2 is the trainer speed
@xmovement[@battlerIndex]=(startpoint-@sprites["trainer"].x)/2 @xmovement[@battlerIndex] = (startpoint - @sprites["trainer"].x) / 2
@sprites["trainer"].x=startpoint @sprites["trainer"].x = startpoint
else else
ENTRYWAITTIME.times do ENTRYWAITTIME.times do
Graphics.update Graphics.update
@@ -272,62 +276,73 @@ class HallOfFame_Scene
end end
end end
def getDifficulty
if $game_switches[GAME_DIFFICULTY_EASY]
return "Easy"
elsif $game_switches[GAME_DIFFICULTY_HARD]
return "Hard"
else
return "Normal"
end
end
def writeTrainerData def writeTrainerData
totalsec = Graphics.frame_count / Graphics.frame_rate totalsec = Graphics.frame_count / Graphics.frame_rate
hour = totalsec / 60 / 60 hour = totalsec / 60 / 60
min = totalsec / 60 % 60 min = totalsec / 60 % 60
pubid=sprintf("%05d",$Trainer.public_ID) pubid = sprintf("%05d", $Trainer.public_ID)
lefttext= _INTL("Name<r>{1}<br>",$Trainer.name) lefttext = _INTL("Name<r>{1}<br>", $Trainer.name)
lefttext+=_INTL("IDNo.<r>{1}<br>",pubid) lefttext += _INTL("IDNo.<r>{1}<br>", pubid)
lefttext+=_ISPRINTF("Time<r>{1:02d}:{2:02d}<br>",hour,min) lefttext += _ISPRINTF("Time<r>{1:02d}:{2:02d}<br>", hour, min)
lefttext+=_INTL("Pokédex<r>{1}/{2}<br>", lefttext += _INTL("Pokédex<r>{1}/{2}<br>",
$Trainer.pokedex.owned_count,$Trainer.pokedex.seen_count) $Trainer.pokedex.owned_count, $Trainer.pokedex.seen_count)
@sprites["messagebox"]=Window_AdvancedTextPokemon.new(lefttext) lefttext += _INTL("Difficulty<r>{1}<br>", getDifficulty())
@sprites["messagebox"].viewport=@viewport @sprites["messagebox"] = Window_AdvancedTextPokemon.new(lefttext)
@sprites["messagebox"].width=192 if @sprites["messagebox"].width<192 @sprites["messagebox"].viewport = @viewport
@sprites["msgwindow"]=pbCreateMessageWindow(@viewport) @sprites["messagebox"].width = 192 if @sprites["messagebox"].width < 192
@sprites["msgwindow"] = pbCreateMessageWindow(@viewport)
pbMessageDisplay(@sprites["msgwindow"], pbMessageDisplay(@sprites["msgwindow"],
_INTL("League champion!\nCongratulations!\\^")) _INTL("League champion!\nCongratulations!\\^"))
end end
def writePokemonData(pokemon,hallNumber=-1) def writePokemonData(pokemon, hallNumber = -1)
overlay=@sprites["overlay"].bitmap overlay = @sprites["overlay"].bitmap
overlay.clear overlay.clear
pokename=pokemon.name pokename = pokemon.name
speciesname=pokemon.speciesName speciesname = pokemon.speciesName
if pokemon.male? if pokemon.male?
speciesname+="" speciesname += ""
elsif pokemon.female? elsif pokemon.female?
speciesname+="" speciesname += ""
end end
pokename+="/"+speciesname pokename += "/" + speciesname
pokename=_INTL("Egg")+"/"+_INTL("Egg") if pokemon.egg? pokename = _INTL("Egg") + "/" + _INTL("Egg") if pokemon.egg?
idno=(pokemon.owner.name.empty? || pokemon.egg?) ? "?????" : sprintf("%05d",pokemon.owner.public_id) idno = (pokemon.owner.name.empty? || pokemon.egg?) ? "?????" : sprintf("%05d", pokemon.owner.public_id)
dexnumber = _INTL("No. ???") dexnumber = _INTL("No. ???")
if !pokemon.egg? if !pokemon.egg?
species_data = GameData::Species.get(pokemon.species) species_data = GameData::Species.get(pokemon.species)
dexnumber = _ISPRINTF("No. {1:03d}",species_data.id_number) dexnumber = _ISPRINTF("No. {1:03d}", species_data.id_number)
end end
textPositions=[ textPositions = [
[dexnumber,32,Graphics.height-86,0,BASECOLOR,SHADOWCOLOR], [dexnumber, 32, Graphics.height - 86, 0, BASECOLOR, SHADOWCOLOR],
[pokename,Graphics.width-192,Graphics.height-86,2,BASECOLOR,SHADOWCOLOR], [pokename, Graphics.width - 192, Graphics.height - 86, 2, BASECOLOR, SHADOWCOLOR],
[_INTL("Lv. {1}",pokemon.egg? ? "?" : pokemon.level), [_INTL("Lv. {1}", pokemon.egg? ? "?" : pokemon.level),
64,Graphics.height-54,0,BASECOLOR,SHADOWCOLOR], 64, Graphics.height - 54, 0, BASECOLOR, SHADOWCOLOR],
[_INTL("IDNo.{1}",pokemon.egg? ? "?????" : idno), [_INTL("IDNo.{1}", pokemon.egg? ? "?????" : idno),
Graphics.width-192,Graphics.height-54,2,BASECOLOR,SHADOWCOLOR] Graphics.width - 192, Graphics.height - 54, 2, BASECOLOR, SHADOWCOLOR]
] ]
if (hallNumber>-1) if (hallNumber > -1)
textPositions.push([_INTL("Hall of Fame No."),Graphics.width/2-104,-6,0,BASECOLOR,SHADOWCOLOR]) textPositions.push([_INTL("Hall of Fame No."), Graphics.width / 2 - 104, -6, 0, BASECOLOR, SHADOWCOLOR])
textPositions.push([hallNumber.to_s,Graphics.width/2+104,-6,1,BASECOLOR,SHADOWCOLOR]) textPositions.push([hallNumber.to_s, Graphics.width / 2 + 104, -6, 1, BASECOLOR, SHADOWCOLOR])
end end
pbDrawTextPositions(overlay,textPositions) pbDrawTextPositions(overlay, textPositions)
end end
def writeWelcome def writeWelcome
overlay=@sprites["overlay"].bitmap overlay = @sprites["overlay"].bitmap
overlay.clear overlay.clear
pbDrawTextPositions(overlay,[[_INTL("Welcome to the Hall of Fame!"), pbDrawTextPositions(overlay, [[_INTL("Welcome to the Hall of Fame!"),
Graphics.width/2,Graphics.height-80,2,BASECOLOR,SHADOWCOLOR]]) Graphics.width / 2, Graphics.height - 80, 2, BASECOLOR, SHADOWCOLOR]])
end end
def pbAnimationLoop def pbAnimationLoop
@@ -336,7 +351,7 @@ class HallOfFame_Scene
Input.update Input.update
pbUpdate pbUpdate
pbUpdateAnimation pbUpdateAnimation
break if @battlerIndex==@hallEntry.size+2 break if @battlerIndex == @hallEntry.size + 2
end end
end end
@@ -345,19 +360,19 @@ class HallOfFame_Scene
Graphics.update Graphics.update
Input.update Input.update
pbUpdate pbUpdate
continueScene=true continueScene = true
break if Input.trigger?(Input::BACK) # Exits break if Input.trigger?(Input::BACK) # Exits
if Input.trigger?(Input::USE) # Moves the selection one entry backward if Input.trigger?(Input::USE) # Moves the selection one entry backward
@battlerIndex+=10 @battlerIndex += 10
continueScene=pbUpdatePC continueScene = pbUpdatePC
end end
if Input.trigger?(Input::LEFT) # Moves the selection one pokémon forward if Input.trigger?(Input::LEFT) # Moves the selection one pokémon forward
@battlerIndex-=1 @battlerIndex -= 1
continueScene=pbUpdatePC continueScene = pbUpdatePC
end end
if Input.trigger?(Input::RIGHT) # Moves the selection one pokémon backward if Input.trigger?(Input::RIGHT) # Moves the selection one pokémon backward
@battlerIndex+=1 @battlerIndex += 1
continueScene=pbUpdatePC continueScene = pbUpdatePC
end end
break if !continueScene break if !continueScene
end end
@@ -368,75 +383,76 @@ class HallOfFame_Scene
end end
def pbUpdateAnimation def pbUpdateAnimation
if @battlerIndex<=@hallEntry.size if @battlerIndex <= @hallEntry.size
if @xmovement[@battlerIndex]!=0 || @ymovement[@battlerIndex]!=0 if @xmovement[@battlerIndex] != 0 || @ymovement[@battlerIndex] != 0
spriteIndex=(@battlerIndex<@hallEntry.size) ? @battlerIndex : -1 spriteIndex = (@battlerIndex < @hallEntry.size) ? @battlerIndex : -1
moveSprite(spriteIndex) moveSprite(spriteIndex)
else else
@battlerIndex+=1 @battlerIndex += 1
if @battlerIndex<=@hallEntry.size if @battlerIndex <= @hallEntry.size
# If it is a pokémon, write the pokémon text, wait the # If it is a pokémon, write the pokémon text, wait the
# ENTRYWAITTIME and goes to the next battler # ENTRYWAITTIME and goes to the next battler
@hallEntry[@battlerIndex - 1].play_cry @hallEntry[@battlerIndex - 1].play_cry
writePokemonData(@hallEntry[@battlerIndex-1]) writePokemonData(@hallEntry[@battlerIndex - 1])
(ENTRYWAITTIME*Graphics.frame_rate/20).times do (ENTRYWAITTIME * Graphics.frame_rate / 20).times do
Graphics.update Graphics.update
Input.update Input.update
pbUpdate pbUpdate
end end
if @battlerIndex<@hallEntry.size # Preparates the next battler if @battlerIndex < @hallEntry.size # Preparates the next battler
setPokemonSpritesOpacity(@battlerIndex,OPACITY) setPokemonSpritesOpacity(@battlerIndex, OPACITY)
@sprites["overlay"].bitmap.clear @sprites["overlay"].bitmap.clear
else # Show the welcome message and preparates the trainer else
# Show the welcome message and preparates the trainer
setPokemonSpritesOpacity(-1) setPokemonSpritesOpacity(-1)
writeWelcome writeWelcome
(ENTRYWAITTIME*2*Graphics.frame_rate/20).times do (ENTRYWAITTIME * 2 * Graphics.frame_rate / 20).times do
Graphics.update Graphics.update
Input.update Input.update
pbUpdate pbUpdate
end end
setPokemonSpritesOpacity(-1,OPACITY) if !SINGLEROW setPokemonSpritesOpacity(-1, OPACITY) if !SINGLEROW
createTrainerBattler createTrainerBattler
end end
end end
end end
elsif @battlerIndex>@hallEntry.size elsif @battlerIndex > @hallEntry.size
# Write the trainer data and fade # Write the trainer data and fade
writeTrainerData writeTrainerData
(ENTRYWAITTIME*Graphics.frame_rate/20).times do (ENTRYWAITTIME * Graphics.frame_rate / 20).times do
Graphics.update Graphics.update
Input.update Input.update
pbUpdate pbUpdate
end end
fadeSpeed=((Math.log(2**12)-Math.log(FINALFADESPEED))/Math.log(2)).floor fadeSpeed = ((Math.log(2 ** 12) - Math.log(FINALFADESPEED)) / Math.log(2)).floor
pbBGMFade((2**fadeSpeed).to_f/20) if @useMusic pbBGMFade((2 ** fadeSpeed).to_f / 20) if @useMusic
slowFadeOut(@sprites,fadeSpeed) { pbUpdate } slowFadeOut(@sprites, fadeSpeed) { pbUpdate }
@alreadyFadedInEnd=true @alreadyFadedInEnd = true
@battlerIndex+=1 @battlerIndex += 1
end end
end end
def pbUpdatePC def pbUpdatePC
# Change the team # Change the team
if @battlerIndex>=@hallEntry.size if @battlerIndex >= @hallEntry.size
@hallIndex-=1 @hallIndex -= 1
return false if @hallIndex==-1 return false if @hallIndex == -1
@hallEntry=$PokemonGlobal.hallOfFame[@hallIndex] @hallEntry = $PokemonGlobal.hallOfFame[@hallIndex]
@battlerIndex=0 @battlerIndex = 0
createBattlers(false) createBattlers(false)
elsif @battlerIndex<0 elsif @battlerIndex < 0
@hallIndex+=1 @hallIndex += 1
return false if @hallIndex>=$PokemonGlobal.hallOfFame.size return false if @hallIndex >= $PokemonGlobal.hallOfFame.size
@hallEntry=$PokemonGlobal.hallOfFame[@hallIndex] @hallEntry = $PokemonGlobal.hallOfFame[@hallIndex]
@battlerIndex=@hallEntry.size-1 @battlerIndex = @hallEntry.size - 1
createBattlers(false) createBattlers(false)
end end
# Change the pokemon # Change the pokemon
@hallEntry[@battlerIndex].play_cry @hallEntry[@battlerIndex].play_cry
setPokemonSpritesOpacity(@battlerIndex,OPACITY) setPokemonSpritesOpacity(@battlerIndex, OPACITY)
hallNumber=$PokemonGlobal.hallOfFameLastNumber + @hallIndex - hallNumber = $PokemonGlobal.hallOfFameLastNumber + @hallIndex -
$PokemonGlobal.hallOfFame.size + 1 $PokemonGlobal.hallOfFame.size + 1
writePokemonData(@hallEntry[@battlerIndex],hallNumber) writePokemonData(@hallEntry[@battlerIndex], hallNumber)
return true return true
end end
end end
@@ -467,7 +483,7 @@ end
#=============================================================================== #===============================================================================
class HallOfFamePC class HallOfFamePC
def shouldShow? def shouldShow?
return $PokemonGlobal.hallOfFameLastNumber>0 return $PokemonGlobal.hallOfFameLastNumber > 0
end end
def name def name
@@ -507,13 +523,13 @@ end
# #
#=============================================================================== #===============================================================================
def pbHallOfFameEntry def pbHallOfFameEntry
scene=HallOfFame_Scene.new scene = HallOfFame_Scene.new
screen=HallOfFameScreen.new(scene) screen = HallOfFameScreen.new(scene)
screen.pbStartScreenEntry screen.pbStartScreenEntry
end end
def pbHallOfFamePC def pbHallOfFamePC
scene=HallOfFame_Scene.new scene = HallOfFame_Scene.new
screen=HallOfFameScreen.new(scene) screen = HallOfFameScreen.new(scene)
screen.pbStartScreenPC screen.pbStartScreenPC
end end

View File

@@ -93,6 +93,8 @@ def getDexNumberForSpecies(species)
dexNum = GameData::Species.get(species).id_number dexNum = GameData::Species.get(species).id_number
elsif species.is_a?(Pokemon) elsif species.is_a?(Pokemon)
dexNum = GameData::Species.get(species.species).id_number dexNum = GameData::Species.get(species.species).id_number
elsif species.is_a?(GameData::Species)
return species.id_number
else else
dexNum = species dexNum = species
end end
@@ -142,7 +144,10 @@ def getBodyID(species)
return (dexNum / NB_POKEMON).round return (dexNum / NB_POKEMON).round
end end
def getHeadID(species, bodyId) def getHeadID(species, bodyId = nil)
if bodyId == nil
bodyId = getBodyID(species)
end
head_dexNum = getDexNumberForSpecies(species) head_dexNum = getDexNumberForSpecies(species)
body_dexNum = getDexNumberForSpecies(bodyId) body_dexNum = getDexNumberForSpecies(bodyId)
calculated_number = (head_dexNum - (body_dexNum * NB_POKEMON)).round calculated_number = (head_dexNum - (body_dexNum * NB_POKEMON)).round

View File

@@ -1317,7 +1317,7 @@ def pbDNASplicing(pokemon, scene, supersplicers = false, superSplicer = false)
typeWindow = drawPokemonType(newid) typeWindow = drawPokemonType(newid)
if hasCustom§ if hasCustom
previewwindow.picture.pbSetColor(220, 255, 220, 200) previewwindow.picture.pbSetColor(220, 255, 220, 200)
else else
previewwindow.picture.pbSetColor(255, 255, 255, 200) previewwindow.picture.pbSetColor(255, 255, 255, 200)
@@ -1407,6 +1407,11 @@ def pbDNASplicing(pokemon, scene, supersplicers = false, superSplicer = false)
end end
body_level = poke1.level body_level = poke1.level
head_level = poke2.level head_level = poke2.level
pokemon.exp_gained_since_fused=0
pokemon.exp_when_fused_head=nil
pokemon.exp_when_fused_body=nil
if $Trainer.party.length >= 6 if $Trainer.party.length >= 6
if (keepInParty == 0) if (keepInParty == 0)
$PokemonStorage.pbStoreCaught(poke2) $PokemonStorage.pbStoreCaught(poke2)

Binary file not shown.