mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-06 06:01:46 +00:00
Changed how Pokémon markings are recorded, and allowed variants of each mark (e.g. alternate colours)
This commit is contained in:
@@ -213,6 +213,11 @@ SaveData.register_conversion(:v20_refactor_day_care_variables) do
|
|||||||
slot.instance_eval do
|
slot.instance_eval do
|
||||||
@pokemon = old_slot[0]
|
@pokemon = old_slot[0]
|
||||||
@initial_level = old_slot[1]
|
@initial_level = old_slot[1]
|
||||||
|
if @pokemon && @pokemon.markings.is_a?(Integer)
|
||||||
|
markings = []
|
||||||
|
6.times { |i| markings[i] = ((@pokemon.markings & (1 << i)) == 0) ? 0 : 1 }
|
||||||
|
@pokemon.markings = markings
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -253,3 +258,103 @@ SaveData.register_conversion(:v20_adding_pokedex_records) do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
SaveData.register_conversion(:v20_convert_pokemon_markings_party) do
|
||||||
|
essentials_version 20
|
||||||
|
display_title 'Updating format of Pokémon markings (1/4)'
|
||||||
|
to_value :player do |player|
|
||||||
|
player.party.each do |pkmn|
|
||||||
|
next if !pkmn.markings.is_a?(Integer)
|
||||||
|
markings = []
|
||||||
|
6.times { |i| markings[i] = ((pkmn.markings & (1 << i)) == 0) ? 0 : 1 }
|
||||||
|
pkmn.markings = markings
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
SaveData.register_conversion(:v20_convert_pokemon_markings_global) do
|
||||||
|
essentials_version 20
|
||||||
|
display_title 'Updating format of Pokémon markings (2/4)'
|
||||||
|
to_value :global_metadata do |global|
|
||||||
|
if global.partner
|
||||||
|
global.partner[3].each do |pkmn|
|
||||||
|
next if !pkmn.markings.is_a?(Integer)
|
||||||
|
markings = []
|
||||||
|
6.times { |i| markings[i] = ((pkmn.markings & (1 << i)) == 0) ? 0 : 1 }
|
||||||
|
pkmn.markings = markings
|
||||||
|
end
|
||||||
|
end
|
||||||
|
# Pokémon in the Day Care have their markings converted above
|
||||||
|
if global.roamPokemon
|
||||||
|
global.roamPokemon.each do |pkmn|
|
||||||
|
next if !pkmn.markings.is_a?(Integer)
|
||||||
|
markings = []
|
||||||
|
6.times { |i| markings[i] = ((pkmn.markings & (1 << i)) == 0) ? 0 : 1 }
|
||||||
|
pkmn.markings = markings
|
||||||
|
end
|
||||||
|
end
|
||||||
|
global.purifyChamber.sets.each do |set|
|
||||||
|
set.shadow = PokeBattle_Pokemon.convert(set.shadow) if set.shadow
|
||||||
|
set.list.each do |pkmn|
|
||||||
|
next if !pkmn.markings.is_a?(Integer)
|
||||||
|
markings = []
|
||||||
|
6.times { |i| markings[i] = ((pkmn.markings & (1 << i)) == 0) ? 0 : 1 }
|
||||||
|
pkmn.markings = markings
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if global.hallOfFame
|
||||||
|
global.hallOfFame.each do |team|
|
||||||
|
next if !team
|
||||||
|
team.each do |pkmn|
|
||||||
|
next if !pkmn.markings.is_a?(Integer)
|
||||||
|
markings = []
|
||||||
|
6.times { |i| markings[i] = ((pkmn.markings & (1 << i)) == 0) ? 0 : 1 }
|
||||||
|
pkmn.markings = markings
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
SaveData.register_conversion(:v20_convert_pokemon_markings_variables) do
|
||||||
|
essentials_version 20
|
||||||
|
display_title 'Updating format of Pokémon markings (3/4)'
|
||||||
|
to_all do |save_data|
|
||||||
|
variables = save_data[:variables]
|
||||||
|
for i in 0..5000
|
||||||
|
value = variables[i]
|
||||||
|
next if value.nil?
|
||||||
|
if value.is_a?(Array)
|
||||||
|
value.each do |value2|
|
||||||
|
if value2.is_a?(Pokemon) && value2.markings.is_a?(Integer)
|
||||||
|
markings = []
|
||||||
|
6.times { |i| markings[i] = ((value2.markings & (1 << i)) == 0) ? 0 : 1 }
|
||||||
|
value2.markings = markings
|
||||||
|
end
|
||||||
|
end
|
||||||
|
elsif value.is_a?(Pokemon) && value.markings.is_a?(Integer)
|
||||||
|
markings = []
|
||||||
|
6.times { |i| markings[i] = ((value.markings & (1 << i)) == 0) ? 0 : 1 }
|
||||||
|
value.markings = markings
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
SaveData.register_conversion(:v20_convert_pokemon_markings_storage) do
|
||||||
|
essentials_version 20
|
||||||
|
display_title 'Updating format of Pokémon markings (4/4)'
|
||||||
|
to_value :storage_system do |storage|
|
||||||
|
storage.instance_eval do
|
||||||
|
for box in 0...self.maxBoxes
|
||||||
|
for i in 0...self.maxPokemon(box)
|
||||||
|
pkmn = self[box, i]
|
||||||
|
next if !pkmn || !pkmn.markings.is_a?(Integer)
|
||||||
|
markings = []
|
||||||
|
6.times { |i| markings[i] = ((pkmn.markings & (1 << i)) == 0) ? 0 : 1 }
|
||||||
|
pkmn.markings = markings
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end # storage.instance_eval
|
||||||
|
end # to_value
|
||||||
|
end
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ class Pokemon
|
|||||||
attr_accessor :happiness
|
attr_accessor :happiness
|
||||||
# @return [Symbol] the item ID of the Poké Ball this Pokémon is in
|
# @return [Symbol] the item ID of the Poké Ball this Pokémon is in
|
||||||
attr_accessor :poke_ball
|
attr_accessor :poke_ball
|
||||||
# @return [Integer] this Pokémon's markings, one bit per marking
|
# @return [Array<Integer>] this Pokémon's markings, one value per mark
|
||||||
attr_accessor :markings
|
attr_accessor :markings
|
||||||
# @return [Hash<Integer>] a hash of IV values for HP, Atk, Def, Speed, Sp. Atk and Sp. Def
|
# @return [Hash<Integer>] a hash of IV values for HP, Atk, Def, Speed, Sp. Atk and Sp. Def
|
||||||
attr_accessor :iv
|
attr_accessor :iv
|
||||||
@@ -1171,7 +1171,7 @@ class Pokemon
|
|||||||
@name = nil
|
@name = nil
|
||||||
@happiness = species_data.happiness
|
@happiness = species_data.happiness
|
||||||
@poke_ball = :POKEBALL
|
@poke_ball = :POKEBALL
|
||||||
@markings = 0
|
@markings = []
|
||||||
@iv = {}
|
@iv = {}
|
||||||
@ivMaxed = {}
|
@ivMaxed = {}
|
||||||
@ev = {}
|
@ev = {}
|
||||||
|
|||||||
@@ -609,7 +609,7 @@ class PokemonEvolutionScene
|
|||||||
new_pkmn = pkmn.clone
|
new_pkmn = pkmn.clone
|
||||||
new_pkmn.species = new_species
|
new_pkmn.species = new_species
|
||||||
new_pkmn.name = nil
|
new_pkmn.name = nil
|
||||||
new_pkmn.markings = 0
|
new_pkmn.markings = []
|
||||||
new_pkmn.poke_ball = :POKEBALL
|
new_pkmn.poke_ball = :POKEBALL
|
||||||
new_pkmn.item = nil
|
new_pkmn.item = nil
|
||||||
new_pkmn.clearAllRibbons
|
new_pkmn.clearAllRibbons
|
||||||
|
|||||||
@@ -102,6 +102,9 @@ end
|
|||||||
#
|
#
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
class PokemonSummary_Scene
|
class PokemonSummary_Scene
|
||||||
|
MARK_WIDTH = 16
|
||||||
|
MARK_HEIGHT = 16
|
||||||
|
|
||||||
def pbUpdate
|
def pbUpdate
|
||||||
pbUpdateSpriteHash(@sprites)
|
pbUpdateSpriteHash(@sprites)
|
||||||
end
|
end
|
||||||
@@ -282,12 +285,13 @@ class PokemonSummary_Scene
|
|||||||
end
|
end
|
||||||
|
|
||||||
def drawMarkings(bitmap,x,y)
|
def drawMarkings(bitmap,x,y)
|
||||||
|
mark_variants = @markingbitmap.bitmap.height / MARK_HEIGHT
|
||||||
markings = @pokemon.markings
|
markings = @pokemon.markings
|
||||||
markrect = Rect.new(0,0,16,16)
|
markrect = Rect.new(0, 0, MARK_WIDTH, MARK_HEIGHT)
|
||||||
for i in 0...6
|
(@markingbitmap.bitmap.width / MARK_WIDTH).times do |i|
|
||||||
markrect.x = i*16
|
markrect.x = i * MARK_WIDTH
|
||||||
markrect.y = (markings&(1<<i)!=0) ? 16 : 0
|
markrect.y = [(markings[i] || 0), mark_variants - 1].min * MARK_HEIGHT
|
||||||
bitmap.blt(x+i*16,y,@markingbitmap.bitmap,markrect)
|
bitmap.blt(x + i * MARK_WIDTH, y, @markingbitmap.bitmap, markrect)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -1067,19 +1071,21 @@ class PokemonSummary_Scene
|
|||||||
@sprites["markingsel"].visible = true
|
@sprites["markingsel"].visible = true
|
||||||
base = Color.new(248,248,248)
|
base = Color.new(248,248,248)
|
||||||
shadow = Color.new(104,104,104)
|
shadow = Color.new(104,104,104)
|
||||||
ret = pokemon.markings
|
ret = pokemon.markings.clone
|
||||||
markings = pokemon.markings
|
markings = pokemon.markings.clone
|
||||||
|
mark_variants = @markingbitmap.bitmap.height / MARK_HEIGHT
|
||||||
index = 0
|
index = 0
|
||||||
redraw = true
|
redraw = true
|
||||||
markrect = Rect.new(0,0,16,16)
|
markrect = Rect.new(0, 0, MARK_WIDTH, MARK_HEIGHT)
|
||||||
loop do
|
loop do
|
||||||
# Redraw the markings and text
|
# Redraw the markings and text
|
||||||
if redraw
|
if redraw
|
||||||
@sprites["markingoverlay"].bitmap.clear
|
@sprites["markingoverlay"].bitmap.clear
|
||||||
for i in 0...6
|
(@markingbitmap.bitmap.width / MARK_WIDTH).times do |i|
|
||||||
markrect.x = i*16
|
markrect.x = i * MARK_WIDTH
|
||||||
markrect.y = (markings&(1<<i)!=0) ? 16 : 0
|
markrect.y = [(markings[i] || 0), mark_variants - 1].min * MARK_HEIGHT
|
||||||
@sprites["markingoverlay"].bitmap.blt(300+58*(i%3),154+50*(i/3),@markingbitmap.bitmap,markrect)
|
@sprites["markingoverlay"].bitmap.blt(300 + 58 * (i % 3), 154 + 50 * (i / 3),
|
||||||
|
@markingbitmap.bitmap, markrect)
|
||||||
end
|
end
|
||||||
textpos = [
|
textpos = [
|
||||||
[_INTL("Mark {1}",pokemon.name),366,90,2,base,shadow],
|
[_INTL("Mark {1}",pokemon.name),366,90,2,base,shadow],
|
||||||
@@ -1117,12 +1123,13 @@ class PokemonSummary_Scene
|
|||||||
elsif index==7 # Cancel
|
elsif index==7 # Cancel
|
||||||
break
|
break
|
||||||
else
|
else
|
||||||
mask = (1<<index)
|
markings[index] = ((markings[index] || 0) + 1) % mark_variants
|
||||||
if (markings&mask)==0
|
redraw = true
|
||||||
markings |= mask
|
end
|
||||||
else
|
elsif Input.trigger?(Input::ACTION)
|
||||||
markings &= ~mask
|
if index < 6 && markings[index] > 0
|
||||||
end
|
pbPlayDecisionSE
|
||||||
|
markings[index] = 0
|
||||||
redraw = true
|
redraw = true
|
||||||
end
|
end
|
||||||
elsif Input.trigger?(Input::UP)
|
elsif Input.trigger?(Input::UP)
|
||||||
|
|||||||
@@ -564,6 +564,8 @@ end
|
|||||||
#===============================================================================
|
#===============================================================================
|
||||||
class PokemonStorageScene
|
class PokemonStorageScene
|
||||||
attr_reader :quickswap
|
attr_reader :quickswap
|
||||||
|
MARK_WIDTH = 16
|
||||||
|
MARK_HEIGHT = 16
|
||||||
|
|
||||||
def initialize
|
def initialize
|
||||||
@command = 1
|
@command = 1
|
||||||
@@ -1307,18 +1309,20 @@ class PokemonStorageScene
|
|||||||
else
|
else
|
||||||
pokemon = @storage.boxes[selected[0]][selected[1]]
|
pokemon = @storage.boxes[selected[0]][selected[1]]
|
||||||
end
|
end
|
||||||
markings = pokemon.markings
|
markings = pokemon.markings.clone
|
||||||
|
mark_variants = @markingbitmap.bitmap.height / MARK_HEIGHT
|
||||||
index = 0
|
index = 0
|
||||||
redraw = true
|
redraw = true
|
||||||
markrect = Rect.new(0,0,16,16)
|
markrect = Rect.new(0, 0, MARK_WIDTH, MARK_HEIGHT)
|
||||||
loop do
|
loop do
|
||||||
# Redraw the markings and text
|
# Redraw the markings and text
|
||||||
if redraw
|
if redraw
|
||||||
@sprites["markingoverlay"].bitmap.clear
|
@sprites["markingoverlay"].bitmap.clear
|
||||||
for i in 0...6
|
(@markingbitmap.bitmap.width / MARK_WIDTH).times do |i|
|
||||||
markrect.x = i*16
|
markrect.x = i * MARK_WIDTH
|
||||||
markrect.y = (markings&(1<<i)!=0) ? 16 : 0
|
markrect.y = [(markings[i] || 0), mark_variants - 1].min * MARK_HEIGHT
|
||||||
@sprites["markingoverlay"].bitmap.blt(336+58*(i%3),106+50*(i/3),@markingbitmap.bitmap,markrect)
|
@sprites["markingoverlay"].bitmap.blt(336 + 58 * (i % 3), 106 + 50 * (i / 3),
|
||||||
|
@markingbitmap.bitmap, markrect)
|
||||||
end
|
end
|
||||||
textpos = [
|
textpos = [
|
||||||
[_INTL("OK"),402,208,2,base,shadow,1],
|
[_INTL("OK"),402,208,2,base,shadow,1],
|
||||||
@@ -1353,12 +1357,7 @@ class PokemonStorageScene
|
|||||||
elsif index==7 # Cancel
|
elsif index==7 # Cancel
|
||||||
break
|
break
|
||||||
else
|
else
|
||||||
mask = (1<<index)
|
markings[index] = ((markings[index] || 0) + 1) % mark_variants
|
||||||
if (markings&mask)==0
|
|
||||||
markings |= mask
|
|
||||||
else
|
|
||||||
markings &= ~mask
|
|
||||||
end
|
|
||||||
redraw = true
|
redraw = true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -1383,11 +1382,12 @@ class PokemonStorageScene
|
|||||||
end
|
end
|
||||||
|
|
||||||
def drawMarkings(bitmap,x,y,_width,_height,markings)
|
def drawMarkings(bitmap,x,y,_width,_height,markings)
|
||||||
markrect = Rect.new(0,0,16,16)
|
mark_variants = @markingbitmap.bitmap.height / MARK_HEIGHT
|
||||||
for i in 0...8
|
markrect = Rect.new(0, 0, MARK_WIDTH, MARK_HEIGHT)
|
||||||
markrect.x = i*16
|
(@markingbitmap.bitmap.width / MARK_WIDTH).times do |i|
|
||||||
markrect.y = (markings&(1<<i)!=0) ? 16 : 0
|
markrect.x = i * MARK_WIDTH
|
||||||
bitmap.blt(x+i*16,y,@markingbitmap.bitmap,markrect)
|
markrect.y = [(markings[i] || 0), mark_variants - 1].min * MARK_HEIGHT
|
||||||
|
bitmap.blt(x + i * MARK_WIDTH, y, @markingbitmap.bitmap, markrect)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user