mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-08 05:34:58 +00:00
shiny fusion fixes + custom starters option (events)
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -6,7 +6,7 @@
|
|||||||
module Settings
|
module Settings
|
||||||
# The version of your game. It has to adhere to the MAJOR.MINOR.PATCH format.
|
# The version of your game. It has to adhere to the MAJOR.MINOR.PATCH format.
|
||||||
GAME_VERSION = '5.0.0'
|
GAME_VERSION = '5.0.0'
|
||||||
GAME_VERSION_NUMBER = "5.0.34 - beta"
|
GAME_VERSION_NUMBER = "5.0.35"
|
||||||
|
|
||||||
POKERADAR_LIGHT_ANIMATION_RED_ID = 17
|
POKERADAR_LIGHT_ANIMATION_RED_ID = 17
|
||||||
POKERADAR_LIGHT_ANIMATION_GREEN_ID = 18
|
POKERADAR_LIGHT_ANIMATION_GREEN_ID = 18
|
||||||
@@ -29,7 +29,7 @@ module Settings
|
|||||||
EGGSPRITE_SCALE = 1
|
EGGSPRITE_SCALE = 1
|
||||||
BACKSPRITE_POSITION_OFFSET = 20
|
BACKSPRITE_POSITION_OFFSET = 20
|
||||||
FRONTSPRITE_POSITION = 200
|
FRONTSPRITE_POSITION = 200
|
||||||
SHINY_HUE_OFFSET = 60
|
SHINY_HUE_OFFSET = 75
|
||||||
|
|
||||||
RIVAL_STARTER_PLACEHOLDER_SPECIES = :MEW #(MEW)
|
RIVAL_STARTER_PLACEHOLDER_SPECIES = :MEW #(MEW)
|
||||||
VAR_1_PLACEHOLDER_SPECIES = :DIALGA
|
VAR_1_PLACEHOLDER_SPECIES = :DIALGA
|
||||||
|
|||||||
@@ -140,7 +140,6 @@ end
|
|||||||
class BitmapWrapper < Bitmap
|
class BitmapWrapper < Bitmap
|
||||||
attr_reader :refcount
|
attr_reader :refcount
|
||||||
attr_accessor :never_dispose
|
attr_accessor :never_dispose
|
||||||
|
|
||||||
def dispose
|
def dispose
|
||||||
return if self.disposed?
|
return if self.disposed?
|
||||||
@refcount -= 1
|
@refcount -= 1
|
||||||
|
|||||||
@@ -2,6 +2,10 @@
|
|||||||
#
|
#
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
class AnimatedBitmap
|
class AnimatedBitmap
|
||||||
|
attr_reader :path
|
||||||
|
attr_reader :filename
|
||||||
|
|
||||||
|
|
||||||
def initialize(file, hue = 0)
|
def initialize(file, hue = 0)
|
||||||
raise "Filename is nil (missing graphic)." if file.nil?
|
raise "Filename is nil (missing graphic)." if file.nil?
|
||||||
path = file
|
path = file
|
||||||
@@ -11,6 +15,8 @@ class AnimatedBitmap
|
|||||||
filename = split_file.pop
|
filename = split_file.pop
|
||||||
path = split_file.join('/') + '/'
|
path = split_file.join('/') + '/'
|
||||||
end
|
end
|
||||||
|
@filename= filename
|
||||||
|
@path= path
|
||||||
if filename[/^\[\d+(?:,\d+)?\]/] # Starts with 1 or 2 numbers in square brackets
|
if filename[/^\[\d+(?:,\d+)?\]/] # Starts with 1 or 2 numbers in square brackets
|
||||||
@bitmap = PngAnimatedBitmap.new(path, filename, hue)
|
@bitmap = PngAnimatedBitmap.new(path, filename, hue)
|
||||||
else
|
else
|
||||||
@@ -30,9 +36,13 @@ class AnimatedBitmap
|
|||||||
end
|
end
|
||||||
|
|
||||||
def shiftColors(offset=0)
|
def shiftColors(offset=0)
|
||||||
offset/=350 if offset >350
|
|
||||||
|
offset/=360 if offset >360
|
||||||
offset=30 if offset <30 #this method is only used for shinies. shinies that barely shift are boring
|
offset=30 if offset <30 #this method is only used for shinies. shinies that barely shift are boring
|
||||||
@bitmap.bitmap.hue_change(offset)
|
|
||||||
|
@bitmap = GifBitmap.new(@path, @filename, offset)
|
||||||
|
|
||||||
|
#@bitmap.bitmap.hue_change(offset)
|
||||||
end
|
end
|
||||||
|
|
||||||
def [](index)
|
def [](index)
|
||||||
@@ -243,14 +253,16 @@ end
|
|||||||
#===============================================================================
|
#===============================================================================
|
||||||
class GifBitmap
|
class GifBitmap
|
||||||
attr_accessor :bitmap
|
attr_accessor :bitmap
|
||||||
|
attr_reader :loaded_from_cache
|
||||||
# Creates a bitmap from a GIF file. Can also load non-animated bitmaps.
|
# Creates a bitmap from a GIF file. Can also load non-animated bitmaps.
|
||||||
def initialize(dir, filename, hue = 0)
|
def initialize(dir, filename, hue = 0)
|
||||||
@bitmap = nil
|
@bitmap = nil
|
||||||
@disposed = false
|
@disposed = false
|
||||||
|
@loaded_from_cache=false
|
||||||
filename = "" if !filename
|
filename = "" if !filename
|
||||||
begin
|
begin
|
||||||
@bitmap = RPG::Cache.load_bitmap(dir, filename, hue)
|
@bitmap = RPG::Cache.load_bitmap(dir, filename, hue)
|
||||||
|
@loaded_from_cache=true
|
||||||
rescue
|
rescue
|
||||||
@bitmap = nil
|
@bitmap = nil
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -54,9 +54,9 @@ class PokemonSprite < SpriteWrapper
|
|||||||
changeOrigin
|
changeOrigin
|
||||||
end
|
end
|
||||||
|
|
||||||
def setPokemonBitmapFromId(id, back = false)
|
def setPokemonBitmapFromId(id, back = false, shiny=false, bodyShiny=false, headShiny=false)
|
||||||
@_iconbitmap.dispose if @_iconbitmap
|
@_iconbitmap.dispose if @_iconbitmap
|
||||||
@_iconbitmap = GameData::Species.sprite_bitmap_from_pokemon_id(id, back)
|
@_iconbitmap = GameData::Species.sprite_bitmap_from_pokemon_id(id, back,shiny, bodyShiny,headShiny)
|
||||||
self.bitmap = (@_iconbitmap) ? @_iconbitmap.bitmap : nil
|
self.bitmap = (@_iconbitmap) ? @_iconbitmap.bitmap : nil
|
||||||
self.color = Color.new(0, 0, 0, 0)
|
self.color = Color.new(0, 0, 0, 0)
|
||||||
changeOrigin
|
changeOrigin
|
||||||
|
|||||||
@@ -31,6 +31,8 @@ class Pokemon
|
|||||||
# This Pokémon's shininess (true, false, nil). Is recalculated if made nil.
|
# This Pokémon's shininess (true, false, nil). Is recalculated if made nil.
|
||||||
# @param value [Boolean, nil] whether this Pokémon is shiny
|
# @param value [Boolean, nil] whether this Pokémon is shiny
|
||||||
attr_writer :shiny
|
attr_writer :shiny
|
||||||
|
attr_accessor :head_shiny
|
||||||
|
attr_accessor :body_shiny
|
||||||
# The index of this Pokémon's ability (0, 1 are natural abilities, 2+ are
|
# The index of this Pokémon's ability (0, 1 are natural abilities, 2+ are
|
||||||
# hidden abilities)as defined for its species/form. An ability may not be
|
# hidden abilities)as defined for its species/form. An ability may not be
|
||||||
# defined at this index. Is recalculated (as 0 or 1) if made nil.
|
# defined at this index. Is recalculated (as 0 or 1) if made nil.
|
||||||
@@ -162,6 +164,13 @@ class Pokemon
|
|||||||
return headSpecies == checkSpeciesId
|
return headSpecies == checkSpeciesId
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def bodyShiny?
|
||||||
|
return @body_shiny
|
||||||
|
end
|
||||||
|
|
||||||
|
def headShiny?
|
||||||
|
return @head_shiny
|
||||||
|
end
|
||||||
|
|
||||||
def isFusionOf(check_species)
|
def isFusionOf(check_species)
|
||||||
return hasBodyOf?(check_species) || hasHeadOf?(check_species)
|
return hasBodyOf?(check_species) || hasHeadOf?(check_species)
|
||||||
@@ -444,6 +453,8 @@ class Pokemon
|
|||||||
return [:AlwaysMale, :AlwaysFemale, :Genderless].include?(gender_ratio)
|
return [:AlwaysMale, :AlwaysFemale, :Genderless].include?(gender_ratio)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#=============================================================================
|
#=============================================================================
|
||||||
# Shininess
|
# Shininess
|
||||||
#=============================================================================
|
#=============================================================================
|
||||||
|
|||||||
@@ -535,10 +535,12 @@ class PokemonFusionScene
|
|||||||
@sprites["rsprite2"] = PokemonSprite.new(@viewport)
|
@sprites["rsprite2"] = PokemonSprite.new(@viewport)
|
||||||
@sprites["rsprite3"] = PokemonSprite.new(@viewport)
|
@sprites["rsprite3"] = PokemonSprite.new(@viewport)
|
||||||
|
|
||||||
@sprites["rsprite1"].setPokemonBitmapFromId(poke1_number, false)
|
@sprites["rsprite1"].setPokemonBitmapFromId(poke1_number, false,pokemon1.shiny?)
|
||||||
@sprites["rsprite3"].setPokemonBitmapFromId(poke2_number, false)
|
@sprites["rsprite3"].setPokemonBitmapFromId(poke2_number, false,pokemon2.shiny?)
|
||||||
|
|
||||||
@sprites["rsprite2"].setPokemonBitmapFromId(@newspecies, false)
|
|
||||||
|
|
||||||
|
@sprites["rsprite2"].setPokemonBitmapFromId(@newspecies, false, pokemon1.shiny? || pokemon2.shiny?,pokemon1.shiny?,pokemon2.shiny?)
|
||||||
|
|
||||||
@sprites["rsprite1"].ox = @sprites["rsprite1"].bitmap.width / 2
|
@sprites["rsprite1"].ox = @sprites["rsprite1"].bitmap.width / 2
|
||||||
@sprites["rsprite1"].oy = @sprites["rsprite1"].bitmap.height / 2
|
@sprites["rsprite1"].oy = @sprites["rsprite1"].bitmap.height / 2
|
||||||
@@ -707,10 +709,16 @@ class PokemonFusionScene
|
|||||||
_INTL("\\se[]Congratulations! Your Pokémon were fused into {2}!\\wt[80]", @pokemon1.name, newspeciesname))
|
_INTL("\\se[]Congratulations! Your Pokémon were fused into {2}!\\wt[80]", @pokemon1.name, newspeciesname))
|
||||||
|
|
||||||
#exp
|
#exp
|
||||||
@pokemon1.exp_when_fused_head = @pokemon2.exp #peut-être l'inverse
|
@pokemon1.exp_when_fused_head = @pokemon2.exp
|
||||||
@pokemon1.exp_when_fused_body = @pokemon1.exp #peut-être l'inverse
|
@pokemon1.exp_when_fused_body = @pokemon1.exp
|
||||||
@pokemon1.exp_gained_since_fused = 0
|
@pokemon1.exp_gained_since_fused = 0
|
||||||
|
|
||||||
|
if @pokemon2.shiny?
|
||||||
|
@pokemon1.head_shiny=true
|
||||||
|
end
|
||||||
|
if @pokemon1.shiny?
|
||||||
|
@pokemon1.body_shiny=true
|
||||||
|
end
|
||||||
setFusionIVs(superSplicer)
|
setFusionIVs(superSplicer)
|
||||||
#add to pokedex
|
#add to pokedex
|
||||||
if !$Trainer.pokedex.owned?(newSpecies)
|
if !$Trainer.pokedex.owned?(newSpecies)
|
||||||
|
|||||||
@@ -5,23 +5,35 @@ module GameData
|
|||||||
species = GameData::Species.get(species).id_number # Just to be sure it's a number
|
species = GameData::Species.get(species).id_number # Just to be sure it's a number
|
||||||
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,nil,nil,pkmn.shiny?)
|
ret = self.back_sprite_bitmap(species, nil, nil, pkmn.shiny?,pkmn.bodyShiny?,pkmn.headShiny?)
|
||||||
else
|
else
|
||||||
ret = self.front_sprite_bitmap(species,nil,nil,pkmn.shiny?)
|
ret = self.front_sprite_bitmap(species, nil, nil, pkmn.shiny?,pkmn.bodyShiny?,pkmn.headShiny?)
|
||||||
end
|
end
|
||||||
return ret
|
return ret
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.sprite_bitmap_from_pokemon_id(id, back = false)
|
def self.sprite_bitmap_from_pokemon_id(id, back = false, shiny=false, bodyShiny=false,headShiny=false)
|
||||||
if back
|
if back
|
||||||
ret = self.back_sprite_bitmap(id)
|
ret = self.back_sprite_bitmap(id,nil,nil,shiny,bodyShiny,headShiny)
|
||||||
else
|
else
|
||||||
ret = self.front_sprite_bitmap(id)
|
ret = self.front_sprite_bitmap(id,nil,nil,shiny,bodyShiny,headShiny)
|
||||||
end
|
end
|
||||||
return ret
|
return ret
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.front_sprite_bitmap(dex_number, a=0, b = 0, isShiny = false, d = 0)
|
def self.calculateShinyHueOffset(dex_number, isBodyShiny = false, isHeadShiny = false)
|
||||||
|
dex_offset = dex_number
|
||||||
|
if isBodyShiny && isHeadShiny
|
||||||
|
dex_offset = dex_number
|
||||||
|
elsif isHeadShiny
|
||||||
|
dex_offset = getHeadID(dex_number)
|
||||||
|
elsif isBodyShiny
|
||||||
|
dex_offset = getBodyID(dex_number)
|
||||||
|
end
|
||||||
|
return pbGet(VAR_SHINY_HUE_OFFSET) + dex_offset + Settings::SHINY_HUE_OFFSET
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.front_sprite_bitmap(dex_number, a = 0, b = 0, isShiny = false, bodyShiny = false, headShiny = false)
|
||||||
#la méthode est utilisé ailleurs avec d'autres arguments (gender, form, etc.) mais on les veut pas
|
#la méthode est utilisé ailleurs avec d'autres arguments (gender, form, etc.) mais on les veut pas
|
||||||
if dex_number.is_a?(Symbol)
|
if dex_number.is_a?(Symbol)
|
||||||
dex_number = GameData::Species.get(dex_number).id_number
|
dex_number = GameData::Species.get(dex_number).id_number
|
||||||
@@ -29,16 +41,16 @@ module GameData
|
|||||||
filename = self.sprite_filename(dex_number)
|
filename = self.sprite_filename(dex_number)
|
||||||
sprite = (filename) ? AnimatedBitmap.new(filename) : nil
|
sprite = (filename) ? AnimatedBitmap.new(filename) : nil
|
||||||
if isShiny
|
if isShiny
|
||||||
sprite.shiftColors(pbGet(VAR_SHINY_HUE_OFFSET)+dex_number)
|
sprite.shiftColors(self.calculateShinyHueOffset(dex_number, bodyShiny, headShiny))
|
||||||
end
|
end
|
||||||
return sprite
|
return sprite
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.back_sprite_bitmap(dex_number, b=0, form = 0, isShiny=false, c = false, shadow = false)
|
def self.back_sprite_bitmap(dex_number, b = 0, form = 0, isShiny = false, bodyShiny = false, headShiny = false)
|
||||||
filename = self.sprite_filename(dex_number)
|
filename = self.sprite_filename(dex_number)
|
||||||
sprite = (filename) ? AnimatedBitmap.new(filename) : nil
|
sprite = (filename) ? AnimatedBitmap.new(filename) : nil
|
||||||
if isShiny
|
if isShiny
|
||||||
sprite.shiftColors(pbGet(VAR_SHINY_HUE_OFFSET)+dex_number)
|
sprite.shiftColors(self.calculateShinyHueOffset(dex_number, bodyShiny, headShiny))
|
||||||
end
|
end
|
||||||
return sprite
|
return sprite
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -476,6 +476,7 @@ def reverseFusion(pokemon)
|
|||||||
pokemon.exp_when_fused_body = head_exp
|
pokemon.exp_when_fused_body = head_exp
|
||||||
pokemon.exp_when_fused_head = body_exp
|
pokemon.exp_when_fused_head = body_exp
|
||||||
|
|
||||||
|
pokemon.head_shiny,pokemon.body_shiny = pokemon.body_shiny,pokemon.head_shiny
|
||||||
#play animation
|
#play animation
|
||||||
pbFadeOutInWithMusic(99999) {
|
pbFadeOutInWithMusic(99999) {
|
||||||
fus = PokemonEvolutionScene.new
|
fus = PokemonEvolutionScene.new
|
||||||
@@ -1401,6 +1402,28 @@ def pbUnfuse(pokemon, scene, supersplicers, pcPosition = nil)
|
|||||||
pokemon.exp_when_fused_head = nil
|
pokemon.exp_when_fused_head = nil
|
||||||
pokemon.exp_when_fused_body = nil
|
pokemon.exp_when_fused_body = nil
|
||||||
|
|
||||||
|
|
||||||
|
if pokemon.shiny?
|
||||||
|
pokemon.shiny = false
|
||||||
|
if pokemon.bodyShiny? && pokemon.headShiny?
|
||||||
|
pokemon.shiny = true
|
||||||
|
poke2.shiny = true
|
||||||
|
elsif pokemon.bodyShiny?
|
||||||
|
pokemon.shiny = true
|
||||||
|
elsif pokemon.headShiny?
|
||||||
|
poke2.shiny = true
|
||||||
|
else #shiny was obtained already fused
|
||||||
|
if rand(2) == 0
|
||||||
|
pokemon.shiny = true
|
||||||
|
else
|
||||||
|
poke2.shiny = true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
pokemon.body_shiny=false
|
||||||
|
pokemon.head_shiny=false
|
||||||
|
|
||||||
|
|
||||||
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.
Reference in New Issue
Block a user