update to latest 6.0 release

This commit is contained in:
infinitefusion
2023-11-12 21:45:07 -05:00
parent ba7ee9bae2
commit d3662c3f10
4980 changed files with 21185 additions and 317635 deletions

View File

@@ -113,6 +113,14 @@ class PokemonEggHatch_Scene
@pokemon.name = nickname
@nicknamed = true
end
if !$Trainer.pokedex.owned?(@pokemon.species)
$Trainer.pokedex.register(@pokemon)
$Trainer.pokedex.set_owned(@pokemon.species)
pbMessage(_INTL("{1}'s data was added to the Pokédex", @pokemon.name))
pbShowPokedex(@pokemon.species)
end
end
def pbEndScene
@@ -206,8 +214,6 @@ def pbHatch(pokemon)
end
$Trainer.pokedex.register(pokemon)
$Trainer.pokedex.set_owned(pokemon.species)
pokemon.record_first_moves
if !pbHatchAnimation(pokemon)
pbMessage(_INTL("Huh?\1"))
@@ -220,6 +226,7 @@ def pbHatch(pokemon)
pokemon.name = nickname
end
end
end
Events.onStepTaken += proc { |_sender,_e|

View File

@@ -607,6 +607,10 @@ class PokemonEvolutionScene
# Check for consumed item and check if Pokémon should be duplicated
pbEvolutionMethodAfterEvolution if !reversing
@pokemon
@pokemon.ability
oldAbility = @pokemon.ability.id
newSpecies = GameData::Species.get(@newspecies)
@@ -617,8 +621,17 @@ class PokemonEvolutionScene
@pokemon.form = 0 if @pokemon.isSpecies?(:MOTHIM)
@pokemon.calc_stats
# See and own evolved species
$Trainer.pokedex.register(@pokemon)
$Trainer.pokedex.set_owned(@newspecies)
#
if !$Trainer.pokedex.owned?(@newspecies)
$Trainer.pokedex.register(@pokemon)
$Trainer.pokedex.set_owned(@newspecies)
Kernel.pbMessageDisplay(@sprites["msgwindow"],
_INTL("{1}'s data was added to the Pokédex", newspeciesname))
@scene.pbShowPokedex(@newspecies)
end
if allNewPossibleAbilities.include?(oldAbility)
@pokemon.ability=oldAbility

View File

@@ -48,14 +48,14 @@ class Scene_Credits
CREDIT = <<_END_
Pokémon Infinite Fusion
By Frogman
By Chardub (Frogman)
General graphics / Music / Intellectual property
Nintendo
GameFreak
Programming / Eventing:
Frogman
Chardub
Fused Pokemon Sprites :
Japeal - Pokefusion 2
@@ -66,19 +66,19 @@ rip the sprites and to the owners of Japeal
for accepting to share their generated sprites.
Maps:
Frogman
Chardub, Kiwikelly
Some of the maps were based on work by:
BenGames, Zeak6464
Gameplay / Story:
Frogman
Chardub
The story and dialogues were based
off Pokémon Red and Blue, as well as
Pokémon Gold and Silver.
Both games are made by Game Freak.
Sprites pack manager
Kiwi
Sprites pack managers
Kiwikelly, Payapon, Thornsoflight
Sprite Managers
avianAnnihilator<s>Blaquaza
@@ -88,7 +88,7 @@ Howls<s>Ignus
Kiwi<s>Maelmc
Milchik the Miltank<s>Payapon
Pix<s>Rosemagwin
Thorns
Thornsoflight
All of the custom fused Pokémon sprites
@@ -100,11 +100,12 @@ Including massive contributions from these users:
{SPRITER_CREDITS}
Other custom graphics:
calicorn, Doctor Miawoo, Frogman, Kiwi,
Knuckles, magnuzone, ,mammuth89, Miawoo,
Milchik, Rick1234, Universez, UnworthyPie,
Kiwikelly
Knuckles
UnworthyPie
Doctor Miawoo
Chardub
The following free ressources were also used
with their respective authors' consent:

View File

@@ -2,23 +2,23 @@
#
#===============================================================================
class PokemonPokedexInfo_Scene
def pbStartScene(dexlist,index,region)
@endscene=false
@viewport = Viewport.new(0,0,Graphics.width,Graphics.height)
def pbStartScene(dexlist, index, region)
@endscene = false
@viewport = Viewport.new(0, 0, Graphics.width, Graphics.height)
@viewport.z = 99999
@dexlist = dexlist
@index = index
@region = region
@index = index
@region = region
@page = 1
@typebitmap = AnimatedBitmap.new(_INTL("Graphics/Pictures/Pokedex/icon_types"))
@sprites = {}
@sprites["background"] = IconSprite.new(0,0,@viewport)
@sprites["background"] = IconSprite.new(0, 0, @viewport)
@sprites["infosprite"] = PokemonSprite.new(@viewport)
@sprites["infosprite"].setOffset(PictureOrigin::Center)
@sprites["infosprite"].x = 104
@sprites["infosprite"].y = 136
@sprites["infosprite"].zoom_x = Settings::FRONTSPRITE_SCALE
@sprites["infosprite"].zoom_y = Settings::FRONTSPRITE_SCALE
@sprites["infosprite"].zoom_x = Settings::FRONTSPRITE_SCALE
@sprites["infosprite"].zoom_y = Settings::FRONTSPRITE_SCALE
# @mapdata = pbLoadTownMapData
# map_metadata = GameData::MapMetadata.try_get($game_map.map_id)
@@ -51,27 +51,15 @@ class PokemonPokedexInfo_Scene
@sprites["formback"] = PokemonSprite.new(@viewport)
@sprites["formback"].setOffset(PictureOrigin::Bottom)
@sprites["formback"].x = 382 # y is set below as it depends on metrics
@sprites["formback"].x = 382 # y is set below as it depends on metrics
@sprites["formicon"] = PokemonSpeciesIconSprite.new(nil, @viewport)
@sprites["formicon"].setOffset(PictureOrigin::Center)
@sprites["formicon"].x = 82
@sprites["formicon"].y = 328
@sprites["formicon"].visible=false
@sprites["uparrow"] = AnimatedSprite.new("Graphics/Pictures/leftarrow",8,40,28,2,@viewport)
@sprites["uparrow"].x = 20
@sprites["uparrow"].y = 250#268
@sprites["uparrow"].play
@sprites["uparrow"].visible = false
@sprites["downarrow"] = AnimatedSprite.new("Graphics/Pictures/rightarrow",8,40,28,2,@viewport)
@sprites["downarrow"].x = 440
@sprites["downarrow"].y = 250
@sprites["downarrow"].play
@sprites["downarrow"].visible = false
@sprites["overlay"] = BitmapSprite.new(Graphics.width,Graphics.height,@viewport)
@sprites["formicon"].visible = false
initializeSpritesPageGraphics
@sprites["overlay"] = BitmapSprite.new(Graphics.width, Graphics.height, @viewport)
pbSetSystemFont(@sprites["overlay"].bitmap)
pbUpdateDummyPokemon
@@ -81,60 +69,107 @@ class PokemonPokedexInfo_Scene
pbFadeInAndShow(@sprites) { pbUpdate }
end
def pbStartSceneBrief(species) # For standalone access, shows first page only
@viewport = Viewport.new(0,0,Graphics.width,Graphics.height)
def initializeSpritesPageGraphics()
@sprites["leftarrow"] = AnimatedSprite.new("Graphics/Pictures/leftarrow", 8, 40, 28, 2, @viewport)
@sprites["leftarrow"].x = 20
@sprites["leftarrow"].y = 250 #268
@sprites["leftarrow"].play
@sprites["leftarrow"].visible = false
@sprites["rightarrow"] = AnimatedSprite.new("Graphics/Pictures/rightarrow", 8, 40, 28, 2, @viewport)
@sprites["rightarrow"].x = 440
@sprites["rightarrow"].y = 250
@sprites["rightarrow"].play
@sprites["rightarrow"].visible = false
@sprites["uparrow"] = AnimatedSprite.new("Graphics/Pictures/uparrow", 8, 28, 40, 2, @viewport)
@sprites["uparrow"].x = 250
@sprites["uparrow"].y = 50 #268
@sprites["uparrow"].play
@sprites["uparrow"].visible = false
@sprites["downarrow"] = AnimatedSprite.new("Graphics/Pictures/downarrow", 8, 28, 40, 2, @viewport)
@sprites["downarrow"].x = 250
@sprites["downarrow"].y = 350
@sprites["downarrow"].play
@sprites["downarrow"].visible = false
end
def pbStartSpritesSelectSceneBrief(species,alts_list)
@available = alts_list
@species = species
@viewport = Viewport.new(0, 0, Graphics.width, Graphics.height)
@viewport.z = 99999
@index = 0
@page = 3
@brief = true
@sprites = {}
@sprites["background"] = IconSprite.new(0, 0, @viewport)
@sprites["overlay"] = BitmapSprite.new(Graphics.width, Graphics.height, @viewport)
@sprites["infosprite"] = PokemonSprite.new(@viewport)
@page = 3
initializeSpritesPageGraphics
initializeSpritesPage(@available)
drawPage(@page)
pbFadeInAndShow(@sprites) { pbUpdate }
end
def pbStartSceneBrief(species)
# For standalone access, shows first page only
@viewport = Viewport.new(0, 0, Graphics.width, Graphics.height)
@viewport.z = 99999
dexnum = 0
dexnumshift = false
if $Trainer.pokedex.unlocked?(-1) # National Dex is unlocked
if $Trainer.pokedex.unlocked?(-1) # National Dex is unlocked
species_data = GameData::Species.try_get(species)
dexnum = species_data.id_number if species_data
dexnumshift = true if Settings::DEXES_WITH_OFFSETS.include?(-1)
else
dexnum = 0
for i in 0...$Trainer.pokedex.dexes_count - 1 # Regional Dexes
for i in 0...$Trainer.pokedex.dexes_count - 1 # Regional Dexes
next if !$Trainer.pokedex.unlocked?(i)
num = pbGetRegionalNumber(i,species)
num = pbGetRegionalNumber(i, species)
next if num <= 0
dexnum = num
dexnumshift = true if Settings::DEXES_WITH_OFFSETS.include?(i)
break
end
end
@dexlist = [[species,"",0,0,dexnum,dexnumshift]]
@index = 0
@dexlist = [[species, "", 0, 0, dexnum, dexnumshift]]
@index = 0
@page = 1
@brief = true
@typebitmap = AnimatedBitmap.new(_INTL("Graphics/Pictures/Pokedex/icon_types"))
@sprites = {}
@sprites["background"] = IconSprite.new(0,0,@viewport)
@sprites["background"] = IconSprite.new(0, 0, @viewport)
@sprites["infosprite"] = PokemonSprite.new(@viewport)
@sprites["infosprite"].setOffset(PictureOrigin::Center)
@sprites["infosprite"].x = 104
@sprites["infosprite"].y = 136
@sprites["overlay"] = BitmapSprite.new(Graphics.width,Graphics.height,@viewport)
@sprites["overlay"] = BitmapSprite.new(Graphics.width, Graphics.height, @viewport)
pbSetSystemFont(@sprites["overlay"].bitmap)
pbUpdateDummyPokemon
drawPage(@page)
sprite_bitmap= @sprites["infosprite"].getBitmap
pbSetSystemFont(@sprites["overlay"].bitmap)
pbUpdateDummyPokemon
@page = 1
drawPage(@page)
sprite_bitmap = @sprites["infosprite"].getBitmap
pbFadeInAndShow(@sprites) { pbUpdate }
end
def pbStartSpritesPageBrief(species) end
def pbEndScene
pbFadeOutAndHide(@sprites) { pbUpdate }
pbDisposeSpriteHash(@sprites)
@typebitmap.dispose
@typebitmap.dispose if @typebitmap
@viewport.dispose
end
def pbUpdate
if @page==2
intensity = (Graphics.frame_count%40)*12
intensity = 480-intensity if intensity>240
if @page == 2
intensity = (Graphics.frame_count % 40) * 12
intensity = 480 - intensity if intensity > 240
@sprites["areahighlight"].opacity = intensity
end
pbUpdateSpriteHash(@sprites)
@@ -144,19 +179,18 @@ class PokemonPokedexInfo_Scene
@species = @dexlist[@index][0]
@gender, @form = $Trainer.pokedex.last_form_seen(@species)
if @sprites["selectedSprite"]
@sprites["selectedSprite"].visible=false
@sprites["selectedSprite"].visible = false
end
if @sprites["nextSprite"]
@sprites["nextSprite"].visible=false
@sprites["nextSprite"].visible = false
end
if @sprites["previousSprite"]
@sprites["previousSprite"].visible=false
@sprites["previousSprite"].visible = false
end
# species_data = pbGetSpeciesData(@species)
species_data = GameData::Species.get_species_form(@species, @form)
@sprites["infosprite"].setSpeciesBitmap(@species,@gender,@form)
species_data = GameData::Species.get_species_form(@species, @form)
@sprites["infosprite"].setSpeciesBitmap(@species, @gender, @form)
# if @sprites["formfront"]
# @sprites["formfront"].setSpeciesBitmap(@species,@gender,@form)
# end
@@ -170,76 +204,79 @@ class PokemonPokedexInfo_Scene
# end
end
def pbGetAvailableForms
ret = []
return ret
# multiple_forms = false
# # Find all genders/forms of @species that have been seen
# GameData::Species.each do |sp|
# next if sp.species != @species
# next if sp.form != 0 && (!sp.real_form_name || sp.real_form_name.empty?)
# next if sp.pokedex_form != sp.form
# multiple_forms = true if sp.form > 0
# case sp.gender_ratio
# when :AlwaysMale, :AlwaysFemale, :Genderless
# real_gender = (sp.gender_ratio == :AlwaysFemale) ? 1 : 0
# next if !$Trainer.pokedex.seen_form?(@species, real_gender, sp.form) && !Settings::DEX_SHOWS_ALL_FORMS
# real_gender = 2 if sp.gender_ratio == :Genderless
# ret.push([sp.form_name, real_gender, sp.form])
# else # Both male and female
# for real_gender in 0...2
# next if !$Trainer.pokedex.seen_form?(@species, real_gender, sp.form) && !Settings::DEX_SHOWS_ALL_FORMS
# ret.push([sp.form_name, real_gender, sp.form])
# break if sp.form_name && !sp.form_name.empty? # Only show 1 entry for each non-0 form
# end
# end
# end
# # Sort all entries
# ret.sort! { |a, b| (a[2] == b[2]) ? a[1] <=> b[1] : a[2] <=> b[2] }
# # Create form names for entries if they don't already exist
# ret.each do |entry|
# if !entry[0] || entry[0].empty? # Necessarily applies only to form 0
# case entry[1]
# when 0 then entry[0] = _INTL("Male")
# when 1 then entry[0] = _INTL("Female")
# else
# entry[0] = (multiple_forms) ? _INTL("One Form") : _INTL("Genderless")
# end
# end
# entry[1] = 0 if entry[1] == 2 # Genderless entries are treated as male
# end
# return ret
end
# def pbGetAvailableForms
# ret = []
# return ret
# # multiple_forms = false
# # # Find all genders/forms of @species that have been seen
# # GameData::Species.each do |sp|
# # next if sp.species != @species
# # next if sp.form != 0 && (!sp.real_form_name || sp.real_form_name.empty?)
# # next if sp.pokedex_form != sp.form
# # multiple_forms = true if sp.form > 0
# # case sp.gender_ratio
# # when :AlwaysMale, :AlwaysFemale, :Genderless
# # real_gender = (sp.gender_ratio == :AlwaysFemale) ? 1 : 0
# # next if !$Trainer.pokedex.seen_form?(@species, real_gender, sp.form) && !Settings::DEX_SHOWS_ALL_FORMS
# # real_gender = 2 if sp.gender_ratio == :Genderless
# # ret.push([sp.form_name, real_gender, sp.form])
# # else # Both male and female
# # for real_gender in 0...2
# # next if !$Trainer.pokedex.seen_form?(@species, real_gender, sp.form) && !Settings::DEX_SHOWS_ALL_FORMS
# # ret.push([sp.form_name, real_gender, sp.form])
# # break if sp.form_name && !sp.form_name.empty? # Only show 1 entry for each non-0 form
# # end
# # end
# # end
# # # Sort all entries
# # ret.sort! { |a, b| (a[2] == b[2]) ? a[1] <=> b[1] : a[2] <=> b[2] }
# # # Create form names for entries if they don't already exist
# # ret.each do |entry|
# # if !entry[0] || entry[0].empty? # Necessarily applies only to form 0
# # case entry[1]
# # when 0 then entry[0] = _INTL("Male")
# # when 1 then entry[0] = _INTL("Female")
# # else
# # entry[0] = (multiple_forms) ? _INTL("One Form") : _INTL("Genderless")
# # end
# # end
# # entry[1] = 0 if entry[1] == 2 # Genderless entries are treated as male
# # end
# # return ret
# end
def drawPage(page)
overlay = @sprites["overlay"].bitmap
overlay.clear
# Make certain sprites visible
@sprites["infosprite"].visible = (@page==1)
@sprites["areamap"].visible = (@page==2) if @sprites["areamap"]
@sprites["areahighlight"].visible = (@page==2) if @sprites["areahighlight"]
@sprites["areaoverlay"].visible = (@page==2) if @sprites["areaoverlay"]
@sprites["infosprite"].visible = (@page == 1)
@sprites["areamap"].visible = (@page == 2) if @sprites["areamap"]
@sprites["areahighlight"].visible = (@page == 2) if @sprites["areahighlight"]
@sprites["areaoverlay"].visible = (@page == 2) if @sprites["areaoverlay"]
# @sprites["formfront"].visible = (@page==3) if @sprites["formfront"]
#@sprites["formback"].visible = (@page==3) if @sprites["formback"]
#@sprites["formicon"].visible = (@page==3) if @sprites["formicon"]
@sprites["previousSprite"].visible = (@page==3) if @sprites["previousSprite"]
@sprites["selectedSprite"].visible = (@page==3) if @sprites["selectedSprite"]
@sprites["nextSprite"].visible = (@page==3) if @sprites["nextSprite"]
@sprites["previousSprite"].visible = (@page == 3) if @sprites["previousSprite"]
@sprites["selectedSprite"].visible = (@page == 3) if @sprites["selectedSprite"]
@sprites["nextSprite"].visible = (@page == 3) if @sprites["nextSprite"]
hide_all_selected_windows
# Draw page-specific information
case page
when 1 then drawPageInfo
when 2 then drawPageArea
when 3 then drawPageForms
when 1 then
drawPageInfo
when 2 then
drawPageArea
when 3 then
drawPageForms
end
end
def drawPageInfo
@sprites["background"].setBitmap(_INTL("Graphics/Pictures/Pokedex/bg_info"))
overlay = @sprites["overlay"].bitmap
base = Color.new(88, 88, 80)
base = Color.new(88, 88, 80)
shadow = Color.new(168, 184, 184)
imagepos = []
if @brief
@@ -249,16 +286,16 @@ class PokemonPokedexInfo_Scene
# Write various bits of text
indexText = "???"
#if @dexlist[@index][4] > 0
indexNumber = @dexlist[@index][4]
indexNumber -= 1 if @dexlist[@index][5]
indexNumber = @dexlist[@index][4]
indexNumber -= 1 if @dexlist[@index][5]
indexNumber = GameData::Species.get(@species).id_number
indexText = sprintf("%03d", indexNumber)
indexText = sprintf("%03d", indexNumber)
# end
textpos = [
[_INTL("{1}{2} {3}", indexText, " ", species_data.name),
246, 36, 0, Color.new(248, 248, 248), Color.new(0, 0, 0)],
[_INTL("Height"), 314, 152, 0, base, shadow],
[_INTL("Weight"), 314, 184, 0, base, shadow]
[_INTL("{1}{2} {3}", indexText, " ", species_data.name),
246, 36, 0, Color.new(248, 248, 248), Color.new(0, 0, 0)],
[_INTL("Height"), 314, 152, 0, base, shadow],
[_INTL("Weight"), 314, 184, 0, base, shadow]
]
if $Trainer.owned?(@species)
# Write the category
@@ -266,7 +303,7 @@ class PokemonPokedexInfo_Scene
# Write the height and weight
height = species_data.height
weight = species_data.weight
if System.user_language[3..4] == "US" # If the user is in the United States
if System.user_language[3..4] == "US" # If the user is in the United States
inches = (height / 0.254).round
pounds = (weight / 0.45359).round
textpos.push([_ISPRINTF("{1:d}'{2:02d}\"", inches / 12, inches % 12), 460, 152, 1, base, shadow])
@@ -276,12 +313,12 @@ class PokemonPokedexInfo_Scene
textpos.push([_ISPRINTF("{1:.1f} kg", weight / 10.0), 482, 184, 1, base, shadow])
end
# Draw the Pokédex entry text
drawTextEx(overlay, 40, 244, Graphics.width - (40 * 2), 4, # overlay, x, y, width, num lines
drawTextEx(overlay, 40, 244, Graphics.width - (40 * 2), 4, # overlay, x, y, width, num lines
species_data.pokedex_entry, base, shadow)
# Draw the footprint
footprintfile = GameData::Species.footprint_filename(@species, @form)
if footprintfile
footprint = RPG::Cache.load_bitmap("",footprintfile)
footprint = RPG::Cache.load_bitmap("", footprintfile)
overlay.blt(226, 138, footprint, footprint.rect)
footprint.dispose
end
@@ -300,7 +337,7 @@ class PokemonPokedexInfo_Scene
# Write the category
textpos.push([_INTL("????? Pokémon"), 246, 68, 0, base, shadow])
# Write the height and weight
if System.user_language[3..4] == "US" # If the user is in the United States
if System.user_language[3..4] == "US" # If the user is in the United States
textpos.push([_INTL("???'??\""), 460, 152, 1, base, shadow])
textpos.push([_INTL("????.? lbs."), 494, 184, 1, base, shadow])
else
@@ -326,13 +363,13 @@ class PokemonPokedexInfo_Scene
def drawPageArea
@sprites["background"].setBitmap(_INTL("Graphics/Pictures/Pokedex/bg_area"))
overlay = @sprites["overlay"].bitmap
base = Color.new(88,88,80)
shadow = Color.new(168,184,184)
base = Color.new(88, 88, 80)
shadow = Color.new(168, 184, 184)
@sprites["areahighlight"].bitmap.clear
# Fill the array "points" with all squares of the region map in which the
# species can be found
points = []
mapwidth = 1+PokemonRegionMap_Scene::RIGHT-PokemonRegionMap_Scene::LEFT
mapwidth = 1 + PokemonRegionMap_Scene::RIGHT - PokemonRegionMap_Scene::LEFT
GameData::Encounter.each_of_version($PokemonGlobal.encounter_version) do |enc_data|
next if !pbFindEncounter(enc_data.types, @species)
map_metadata = GameData::MapMetadata.try_get(enc_data.map)
@@ -340,88 +377,88 @@ class PokemonPokedexInfo_Scene
next if !mappos || mappos[0] != @region
showpoint = true
for loc in @mapdata[@region][2]
showpoint = false if loc[0]==mappos[1] && loc[1]==mappos[2] &&
loc[7] && !$game_switches[loc[7]]
showpoint = false if loc[0] == mappos[1] && loc[1] == mappos[2] &&
loc[7] && !$game_switches[loc[7]]
end
next if !showpoint
mapsize = map_metadata.town_map_size
if mapsize && mapsize[0] && mapsize[0]>0
sqwidth = mapsize[0]
sqheight = (mapsize[1].length*1.0/mapsize[0]).ceil
if mapsize && mapsize[0] && mapsize[0] > 0
sqwidth = mapsize[0]
sqheight = (mapsize[1].length * 1.0 / mapsize[0]).ceil
for i in 0...sqwidth
for j in 0...sqheight
if mapsize[1][i+j*sqwidth,1].to_i>0
points[mappos[1]+i+(mappos[2]+j)*mapwidth] = true
if mapsize[1][i + j * sqwidth, 1].to_i > 0
points[mappos[1] + i + (mappos[2] + j) * mapwidth] = true
end
end
end
else
points[mappos[1]+mappos[2]*mapwidth] = true
points[mappos[1] + mappos[2] * mapwidth] = true
end
end
# Draw coloured squares on each square of the region map with a nest
pointcolor = Color.new(0,248,248)
pointcolorhl = Color.new(192,248,248)
pointcolor = Color.new(0, 248, 248)
pointcolorhl = Color.new(192, 248, 248)
sqwidth = PokemonRegionMap_Scene::SQUAREWIDTH
sqheight = PokemonRegionMap_Scene::SQUAREHEIGHT
for j in 0...points.length
if points[j]
x = (j%mapwidth)*sqwidth
x += (Graphics.width-@sprites["areamap"].bitmap.width)/2
y = (j/mapwidth)*sqheight
y += (Graphics.height+32-@sprites["areamap"].bitmap.height)/2
@sprites["areahighlight"].bitmap.fill_rect(x,y,sqwidth,sqheight,pointcolor)
if j-mapwidth<0 || !points[j-mapwidth]
@sprites["areahighlight"].bitmap.fill_rect(x,y-2,sqwidth,2,pointcolorhl)
x = (j % mapwidth) * sqwidth
x += (Graphics.width - @sprites["areamap"].bitmap.width) / 2
y = (j / mapwidth) * sqheight
y += (Graphics.height + 32 - @sprites["areamap"].bitmap.height) / 2
@sprites["areahighlight"].bitmap.fill_rect(x, y, sqwidth, sqheight, pointcolor)
if j - mapwidth < 0 || !points[j - mapwidth]
@sprites["areahighlight"].bitmap.fill_rect(x, y - 2, sqwidth, 2, pointcolorhl)
end
if j+mapwidth>=points.length || !points[j+mapwidth]
@sprites["areahighlight"].bitmap.fill_rect(x,y+sqheight,sqwidth,2,pointcolorhl)
if j + mapwidth >= points.length || !points[j + mapwidth]
@sprites["areahighlight"].bitmap.fill_rect(x, y + sqheight, sqwidth, 2, pointcolorhl)
end
if j%mapwidth==0 || !points[j-1]
@sprites["areahighlight"].bitmap.fill_rect(x-2,y,2,sqheight,pointcolorhl)
if j % mapwidth == 0 || !points[j - 1]
@sprites["areahighlight"].bitmap.fill_rect(x - 2, y, 2, sqheight, pointcolorhl)
end
if (j+1)%mapwidth==0 || !points[j+1]
@sprites["areahighlight"].bitmap.fill_rect(x+sqwidth,y,2,sqheight,pointcolorhl)
if (j + 1) % mapwidth == 0 || !points[j + 1]
@sprites["areahighlight"].bitmap.fill_rect(x + sqwidth, y, 2, sqheight, pointcolorhl)
end
end
end
# Set the text
textpos = []
if points.length==0
pbDrawImagePositions(overlay,[
[sprintf("Graphics/Pictures/Pokedex/overlay_areanone"),108,188]
if points.length == 0
pbDrawImagePositions(overlay, [
[sprintf("Graphics/Pictures/Pokedex/overlay_areanone"), 108, 188]
])
textpos.push([_INTL("Area unknown"),Graphics.width/2,Graphics.height/2 - 6,2,base,shadow])
textpos.push([_INTL("Area unknown"), Graphics.width / 2, Graphics.height / 2 - 6, 2, base, shadow])
end
textpos.push([pbGetMessage(MessageTypes::RegionNames,@region),414,38,2,base,shadow])
textpos.push([_INTL("{1}'s area",GameData::Species.get(@species).name),
Graphics.width/2,346,2,base,shadow])
pbDrawTextPositions(overlay,textpos)
textpos.push([pbGetMessage(MessageTypes::RegionNames, @region), 414, 38, 2, base, shadow])
textpos.push([_INTL("{1}'s area", GameData::Species.get(@species).name),
Graphics.width / 2, 346, 2, base, shadow])
pbDrawTextPositions(overlay, textpos)
end
def drawPageForms
@sprites["background"].setBitmap(_INTL("Graphics/Pictures/Pokedex/bg_forms"))
overlay = @sprites["overlay"].bitmap
base = Color.new(88,88,80)
shadow = Color.new(168,184,184)
base = Color.new(88, 88, 80)
shadow = Color.new(168, 184, 184)
# Write species and form name
formname = ""
for i in @available
if i[1]==@gender && i[2]==@form
if i[1] == @gender && i[2] == @form
formname = i[0]; break
end
end
textpos = [
[GameData::Species.get(@species).name,Graphics.width/2,Graphics.height-94,2,base,shadow],
[formname,Graphics.width/2,Graphics.height-62,2,base,shadow],
[GameData::Species.get(@species).name, Graphics.width / 2, Graphics.height - 94, 2, base, shadow],
[formname, Graphics.width / 2, Graphics.height - 62, 2, base, shadow],
]
# Draw all text
pbDrawTextPositions(overlay,textpos)
pbDrawTextPositions(overlay, textpos)
end
def pbGoToPrevious
newindex = @index
while newindex>0
while newindex > 0
newindex -= 1
if $Trainer.seen?(@dexlist[newindex][0])
@index = newindex
@@ -432,7 +469,7 @@ class PokemonPokedexInfo_Scene
def pbGoToNext
newindex = @index
while newindex<@dexlist.length-1
while newindex < @dexlist.length - 1
newindex += 1
if $Trainer.seen?(@dexlist[newindex][0])
@index = newindex
@@ -441,22 +478,22 @@ class PokemonPokedexInfo_Scene
end
end
def pbChooseForm
def pbChooseAlt(brief=false)
index = 0
for i in 0...@available.length
if @available[i][1]==@gender && @available[i][2]==@form
if @available[i][1] == @gender && @available[i][2] == @form
index = i
break
end
end
oldindex = -1
loop do
if oldindex!=index
if oldindex != index
$Trainer.pokedex.set_last_form_seen(@species, @available[index][1], @available[index][2])
pbUpdateDummyPokemon
drawPage(@page)
@sprites["uparrow"].visible = (index>0)
@sprites["downarrow"].visible = (index<@available.length-1)
@sprites["uparrow"].visible = (index > 0)
@sprites["downarrow"].visible = (index < @available.length - 1)
oldindex = index
end
Graphics.update
@@ -464,10 +501,10 @@ class PokemonPokedexInfo_Scene
pbUpdate
if Input.trigger?(Input::UP)
pbPlayCursorSE
index = (index+@available.length-1)%@available.length
index = (index + @available.length - 1) % @available.length
elsif Input.trigger?(Input::DOWN)
pbPlayCursorSE
index = (index+1)%@available.length
index = (index + 1) % @available.length
elsif Input.trigger?(Input::BACK)
pbPlayCancelSE
break
@@ -476,7 +513,7 @@ class PokemonPokedexInfo_Scene
break
end
end
@sprites["uparrow"].visible = false
@sprites["uparrow"].visible = false
@sprites["downarrow"].visible = false
end
@@ -497,11 +534,11 @@ class PokemonPokedexInfo_Scene
if @page == 2 # Area
# dorefresh = true
elsif @page == 3 # Forms
if @available.length > 1
pbPlayDecisionSE
pbChooseForm
dorefresh = true
end
#if @available.length > 1
pbPlayDecisionSE
pbChooseAlt
dorefresh = true
# end
end
elsif Input.trigger?(Input::UP)
oldindex = @index
@@ -567,6 +604,23 @@ class PokemonPokedexInfo_Scene
end
end
end
def pbSelectSpritesSceneBrief
pbChooseAlt(true)
# loop do
# Graphics.update
# Input.update
# pbUpdate
# if Input.trigger?(Input::ACTION)
# pbPlayDecisionSE
# elsif Input.trigger?(Input::BACK)
# pbPlayCloseMenuSE
# break
# end
# end
end
end
#===============================================================================
@@ -577,30 +631,39 @@ class PokemonPokedexInfoScreen
@scene = scene
end
def pbStartScreen(dexlist,index,region)
@scene.pbStartScene(dexlist,index,region)
def pbStartScreen(dexlist, index, region)
@scene.pbStartScene(dexlist, index, region)
ret = @scene.pbScene
@scene.pbEndScene
return ret # Index of last species viewed in dexlist
return ret # Index of last species viewed in dexlist
end
def pbStartSceneSingle(species) # For use from a Pokémon's summary screen
def pbStartSceneSingle(species)
# For use from a Pokémon's summary screen
region = -1
if Settings::USE_CURRENT_REGION_DEX
region = pbGetCurrentRegion
region = -1 if region >= $Trainer.pokedex.dexes_count - 1
else
region = $PokemonGlobal.pokedexDex # National Dex -1, regional Dexes 0, 1, etc.
region = $PokemonGlobal.pokedexDex # National Dex -1, regional Dexes 0, 1, etc.
end
dexnum = GameData::Species.get(species).id_number#pbGetRegionalNumber(region,species)
dexnum = GameData::Species.get(species).id_number #pbGetRegionalNumber(region,species)
dexnumshift = Settings::DEXES_WITH_OFFSETS.include?(region)
dexlist = [[species,GameData::Species.get(species).name,0,0,dexnum,dexnumshift]]
@scene.pbStartScene(dexlist,0,region)
dexlist = [[species, GameData::Species.get(species).name, 0, 0, dexnum, dexnumshift]]
@scene.pbStartScene(dexlist, 0, region)
@scene.pbScene
@scene.pbEndScene
end
def pbDexEntry(species) # For use when capturing a new species
def pbDexEntry(species)
# For use when capturing a new species
nb_sprites_for_alts_page = isSpeciesFusion(species) ? 2 : 1
alts_list = @scene.pbGetAvailableForms(species)
if alts_list.length > nb_sprites_for_alts_page
@scene.pbStartSpritesSelectSceneBrief(species,alts_list)
@scene.pbSelectSpritesSceneBrief
@scene.pbEndScene
end
@scene.pbStartSceneBrief(species)
@scene.pbSceneBrief
@scene.pbEndScene

View File

@@ -14,6 +14,7 @@ class PokemonSystem
attr_accessor :sevolume
attr_accessor :textinput
attr_accessor :quicksurf
attr_accessor :level_caps
attr_accessor :battle_type
attr_accessor :download_sprites
@@ -571,6 +572,12 @@ class PokemonOption_Scene
"Start surfing automatically when interacting with water"
)
options << EnumOption.new(_INTL("Level caps"), [_INTL("Off"), _INTL("On")],
proc { $PokemonSystem.level_caps },
proc { |value| $PokemonSystem.level_caps = value },
"Prevents leveling above the next gym leader's highest leveled Pokemon"
)
return options
end

View File

@@ -24,19 +24,20 @@ class PokemonBoxIcon < IconSprite
return false
end
def createFusionIcon(species)
def createFusionIcon(species,spriteform_head=nil,spriteform_body=nil)
bodyPoke_number = getBodyID(species)
headPoke_number = getHeadID(species, bodyPoke_number)
bodyPoke = GameData::Species.get(bodyPoke_number).species
headPoke = GameData::Species.get(headPoke_number).species
icon1 = AnimatedBitmap.new(GameData::Species.icon_filename(headPoke))
icon2 = AnimatedBitmap.new(GameData::Species.icon_filename(bodyPoke))
icon1 = AnimatedBitmap.new(GameData::Species.icon_filename(headPoke,spriteform_head))
icon2 = AnimatedBitmap.new(GameData::Species.icon_filename(bodyPoke,spriteform_body))
dexNum = getDexNumberForSpecies(species)
ensureFusionIconExists
bitmapFileName = sprintf("Graphics/Pokemon/FusionIcons/icon%03d", dexNum)
headPokeFileName = GameData::Species.icon_filename(headPoke)
headPokeFileName = GameData::Species.icon_filename(headPoke,spriteform_head)
bitmapPath = sprintf("%s.png", bitmapFileName)
generated_new_icon = generateFusionIcon(headPokeFileName,bitmapPath)
result_icon = generated_new_icon ? AnimatedBitmap.new(bitmapPath) : icon1
@@ -68,7 +69,7 @@ class PokemonBoxIcon < IconSprite
if useRegularIcon(@pokemon.species) || @pokemon.egg?
self.setBitmap(GameData::Species.icon_filename_from_pokemon(@pokemon))
else
self.setBitmapDirectly(createFusionIcon(@pokemon.species))
self.setBitmapDirectly(createFusionIcon(@pokemon.species,@pokemon.spriteform_head, @pokemon.spriteform_body))
if fusion_enabled
self.visible = true
else
@@ -2200,7 +2201,7 @@ class PokemonStorageScreen
#
def pbFuseFromPC(selected, heldpoke)
box = selected[0]
box = selected[0]
index = selected[1]
poke_body = @storage[box, index]
poke_head = heldpoke
@@ -2317,6 +2318,7 @@ class PokemonStorageScreen
if (Kernel.pbConfirmMessage(_INTL("Fuse the two Pokémon?")))
playingBGM = $game_system.getPlayingBGM
pbFuse(selectedHead, selectedBase, isSuperSplicer)
if canDeleteItem(@fusionItem)
$PokemonBag.pbDeleteItem(@fusionItem)
@@ -2330,6 +2332,7 @@ class PokemonStorageScreen
@scene.setFusing(false)
@fusionMode = false
@scene.sprites["box"].enableFusions()
pbBGMPlay(playingBGM)
return
else
# print "fusion cancelled"