mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-06 06:01:46 +00:00
@@ -1,336 +0,0 @@
|
||||
module GameData
|
||||
class FusedSpecies < GameData::Species
|
||||
attr_reader :growth_rate
|
||||
attr_reader :body_pokemon
|
||||
attr_reader :head_pokemon
|
||||
|
||||
def initialize(id)
|
||||
if id.is_a?(Integer)
|
||||
body_id = getBodyID(id)
|
||||
head_id = getHeadID(id, body_id)
|
||||
pokemon_id = getFusedPokemonIdFromDexNum(body_id, head_id)
|
||||
return GameData::FusedSpecies.new(pokemon_id)
|
||||
end
|
||||
head_id = get_head_number_from_symbol(id)
|
||||
body_id = get_body_number_from_symbol(id)
|
||||
|
||||
@body_pokemon = GameData::Species.get(body_id)
|
||||
@head_pokemon = GameData::Species.get(head_id)
|
||||
|
||||
@id = id
|
||||
@id_number = calculate_dex_number()
|
||||
@species = @id
|
||||
@form = 0
|
||||
@real_name = calculate_name()
|
||||
@real_form_name = nil
|
||||
|
||||
@type1 = calculate_type1()
|
||||
@type2 = calculate_type2()
|
||||
|
||||
#Stats
|
||||
@base_stats = calculate_base_stats()
|
||||
@evs = calculate_evs()
|
||||
adjust_stats_with_evs()
|
||||
|
||||
@base_exp = calculate_base_exp()
|
||||
@growth_rate = calculate_growth_rate()
|
||||
@gender_ratio = calculate_gender() #todo
|
||||
@catch_rate = calculate_catch_rate()
|
||||
@happiness = calculate_base_happiness()
|
||||
|
||||
#Moves
|
||||
@moves = calculate_moveset()
|
||||
@tutor_moves = calculate_tutor_moves() # hash[:tutor_moves] || []
|
||||
@egg_moves = calculate_egg_moves() # hash[:egg_moves] || []
|
||||
|
||||
#Abilities
|
||||
@abilities = calculate_abilities(@body_pokemon, @head_pokemon) # hash[:abilities] || []
|
||||
@hidden_abilities = calculate_hidden_abilities(@body_pokemon, @head_pokemon) # hash[:hidden_abilities] || []
|
||||
|
||||
#wild held items
|
||||
@wild_item_common = get_wild_item(@head_pokemon.wild_item_common, @body_pokemon.wild_item_common) # hash[:wild_item_common]
|
||||
@wild_item_uncommon = get_wild_item(@head_pokemon.wild_item_uncommon, @body_pokemon.wild_item_uncommon) # hash[:wild_item_uncommon]
|
||||
@wild_item_rare = get_wild_item(@head_pokemon.wild_item_rare, @body_pokemon.wild_item_rare) # hash[:wild_item_rare]
|
||||
|
||||
@evolutions = calculate_evolutions() # hash[:evolutions] || []
|
||||
|
||||
#breeding
|
||||
@egg_groups = [:Undiscovered] #calculate_egg_groups() # hash[:egg_groups] || [:Undiscovered]
|
||||
@hatch_steps = calculate_hatch_steps() # hash[:hatch_steps] || 1
|
||||
@incense = nil #hash[:incense]
|
||||
|
||||
#pokedex
|
||||
@pokedex_form = @form #ignored
|
||||
@real_category = calculate_category()
|
||||
@real_pokedex_entry = calculate_dex_entry()
|
||||
@height = average_values(@head_pokemon.height, @body_pokemon.height)
|
||||
@weight = average_values(@head_pokemon.weight, @body_pokemon.weight)
|
||||
@color = @head_pokemon.color
|
||||
@shape = @body_pokemon.shape
|
||||
|
||||
#sprite positioning
|
||||
@back_sprite_x = @body_pokemon.back_sprite_x
|
||||
@back_sprite_y = @body_pokemon.back_sprite_y
|
||||
@front_sprite_x = @body_pokemon.front_sprite_x
|
||||
@front_sprite_y = @body_pokemon.front_sprite_y
|
||||
@front_sprite_altitude = @body_pokemon.front_sprite_altitude
|
||||
@shadow_x = @body_pokemon.shadow_x
|
||||
@shadow_size = @body_pokemon.shadow_size
|
||||
|
||||
# #unused attributes from Species class
|
||||
#
|
||||
# @shape = :Head
|
||||
# @habitat = :None
|
||||
# @generation = 0
|
||||
# @mega_stone = nil
|
||||
# @mega_move = nil
|
||||
# @unmega_form = 0
|
||||
# @mega_message = 0
|
||||
end
|
||||
|
||||
def get_body_number_from_symbol(id)
|
||||
return id.to_s.match(/\d+/)[0].to_i
|
||||
end
|
||||
|
||||
def get_head_number_from_symbol(id)
|
||||
return id.to_s.match(/(?<=H)\d+/)[0].to_i
|
||||
end
|
||||
|
||||
def adjust_stats_with_evs
|
||||
GameData::Stat.each_main do |s|
|
||||
@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
|
||||
end
|
||||
end
|
||||
|
||||
#FUSION CALCULATIONS
|
||||
def calculate_dex_number()
|
||||
return (@body_pokemon.id_number * NB_POKEMON) + @head_pokemon.id_number
|
||||
end
|
||||
|
||||
def calculate_type1()
|
||||
return @head_pokemon.type2 if @head_pokemon.type1 == :NORMAL && @head_pokemon.type2 == :FLYING
|
||||
return @head_pokemon.type1
|
||||
end
|
||||
|
||||
def calculate_type2()
|
||||
return @body_pokemon.type1 if @body_pokemon.type2 == @type1
|
||||
return @body_pokemon.type2
|
||||
end
|
||||
|
||||
def calculate_base_stats()
|
||||
head_stats = @head_pokemon.base_stats
|
||||
body_stats = @body_pokemon.base_stats
|
||||
|
||||
fused_stats = {}
|
||||
|
||||
#Head dominant stats
|
||||
fused_stats[:HP] = calculate_fused_stats(head_stats[:HP], body_stats[:HP])
|
||||
fused_stats[:SPECIAL_DEFENSE] = calculate_fused_stats(head_stats[:SPECIAL_DEFENSE], body_stats[:SPECIAL_DEFENSE])
|
||||
fused_stats[:SPECIAL_ATTACK] = calculate_fused_stats(head_stats[:SPECIAL_ATTACK], body_stats[:SPECIAL_ATTACK])
|
||||
|
||||
#Body dominant stats
|
||||
fused_stats[:ATTACK] = calculate_fused_stats(body_stats[:ATTACK], head_stats[:ATTACK])
|
||||
fused_stats[:DEFENSE] = calculate_fused_stats(body_stats[:DEFENSE], head_stats[:DEFENSE])
|
||||
fused_stats[:SPEED] = calculate_fused_stats(body_stats[:SPEED], head_stats[:SPEED])
|
||||
|
||||
return fused_stats
|
||||
end
|
||||
|
||||
def calculate_base_exp()
|
||||
head_exp = @head_pokemon.base_exp
|
||||
body_exp = @body_pokemon.base_exp
|
||||
return average_values(head_exp, body_exp)
|
||||
end
|
||||
|
||||
def calculate_catch_rate
|
||||
return get_lowest_value(@body_pokemon.catch_rate, @head_pokemon.catch_rate)
|
||||
end
|
||||
|
||||
def calculate_base_happiness
|
||||
return @head_pokemon.happiness
|
||||
end
|
||||
|
||||
def calculate_moveset
|
||||
return combine_arrays(@body_pokemon.moves, @head_pokemon.moves)
|
||||
end
|
||||
|
||||
def calculate_egg_moves
|
||||
return combine_arrays(@body_pokemon.egg_moves, @head_pokemon.egg_moves)
|
||||
end
|
||||
|
||||
def calculate_tutor_moves
|
||||
return combine_arrays(@body_pokemon.tutor_moves, @head_pokemon.tutor_moves)
|
||||
end
|
||||
|
||||
def get_wild_item(body_item, head_item)
|
||||
rand_num = rand(2)
|
||||
if rand_num == 0
|
||||
return body_item
|
||||
else
|
||||
return head_item
|
||||
end
|
||||
end
|
||||
|
||||
def calculate_abilities(pokemon1, pokemon2)
|
||||
abilities_hash = []
|
||||
|
||||
ability1 = pokemon1.abilities[0]
|
||||
ability2 = pokemon2.abilities[1]
|
||||
if !ability2
|
||||
ability2 = pokemon2.abilities[0]
|
||||
end
|
||||
abilities_hash << ability1
|
||||
abilities_hash << ability2
|
||||
return abilities_hash
|
||||
end
|
||||
|
||||
def calculate_hidden_abilities(pokemon1, pokemon2)
|
||||
#First two spots are the other abilities of the two pokemon
|
||||
abilities_hash = calculate_abilities(pokemon2, pokemon1)
|
||||
#add the hidden ability for the two base pokemon
|
||||
abilities_hash << @body_pokemon.hidden_abilities[0]
|
||||
abilities_hash << @head_pokemon.hidden_abilities[0]
|
||||
return abilities_hash
|
||||
end
|
||||
|
||||
def calculate_name()
|
||||
body_nat_dex = GameData::NAT_DEX_MAPPING[@body_pokemon.id_number] ? GameData::NAT_DEX_MAPPING[@body_pokemon.id_number] : @body_pokemon.id_number
|
||||
head_nat_dex = GameData::NAT_DEX_MAPPING[@head_pokemon.id_number] ? GameData::NAT_DEX_MAPPING[@head_pokemon.id_number] : @head_pokemon.id_number
|
||||
begin
|
||||
prefix = GameData::SPLIT_NAMES[head_nat_dex][0]
|
||||
suffix = GameData::SPLIT_NAMES[body_nat_dex][1]
|
||||
if prefix[-1] == suffix[0]
|
||||
prefix = prefix[0..-2]
|
||||
end
|
||||
return prefix + suffix
|
||||
|
||||
rescue
|
||||
print("species with error: " + @species.to_s)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
def calculate_evolutions()
|
||||
body_evolutions = @body_pokemon.evolutions
|
||||
head_evolutions = @head_pokemon.evolutions
|
||||
|
||||
fused_evolutions = []
|
||||
|
||||
#body
|
||||
for evolution in body_evolutions
|
||||
evolutionSpecies = evolution[0]
|
||||
evolutionSpecies_dex = GameData::Species.get(evolutionSpecies).id_number
|
||||
fused_species = _INTL("B{1}H{2}", evolutionSpecies_dex, @head_pokemon.id_number)
|
||||
fused_evolutions << build_evolution_array(evolution, fused_species)
|
||||
end
|
||||
|
||||
#head
|
||||
for evolution in head_evolutions
|
||||
evolutionSpecies = evolution[0]
|
||||
evolutionSpecies_dex = GameData::Species.get(evolutionSpecies).id_number
|
||||
fused_species = _INTL("B{1}H{2}", @body_pokemon.id_number, evolutionSpecies_dex)
|
||||
fused_evolutions << build_evolution_array(evolution, fused_species)
|
||||
end
|
||||
|
||||
return fused_evolutions
|
||||
end
|
||||
|
||||
#Change the evolution species depending if head & body and keep the rest of the data the same
|
||||
def build_evolution_array(evolution_data, new_species)
|
||||
fused_evolution_array = []
|
||||
fused_evolution_array << new_species.to_sym
|
||||
|
||||
#add the rest
|
||||
for data in evolution_data
|
||||
next if evolution_data.index(data) == 0
|
||||
fused_evolution_array << data
|
||||
end
|
||||
return fused_evolution_array
|
||||
end
|
||||
|
||||
def calculate_dex_entry
|
||||
body_entry = @body_pokemon.real_pokedex_entry.gsub(@body_pokemon.real_name, @real_name)
|
||||
head_entry = @head_pokemon.real_pokedex_entry.gsub(@head_pokemon.real_name, @real_name)
|
||||
|
||||
return split_and_combine_text(body_entry, head_entry, ".")
|
||||
end
|
||||
|
||||
def calculate_egg_groups
|
||||
body_egg_groups = @body_pokemon.egg_groups
|
||||
head_egg_groups = @head_pokemon.egg_groups
|
||||
return :Undiscovered if body_egg_groups.include?(:Undiscovered) || head_egg_groups.include?(:Undiscovered)
|
||||
return combine_arrays(body_egg_groups, head_egg_groups)
|
||||
end
|
||||
|
||||
def calculate_hatch_steps
|
||||
return average_values(@head_pokemon.hatch_steps, @body_pokemon.hatch_steps)
|
||||
end
|
||||
|
||||
def calculate_evs()
|
||||
return average_map_values(@body_pokemon.evs, @head_pokemon.evs)
|
||||
end
|
||||
|
||||
def calculate_category
|
||||
return split_and_combine_text(@body_pokemon.category, @head_pokemon.category, " ")
|
||||
end
|
||||
|
||||
def calculate_growth_rate
|
||||
growth_rate_priority = [:Slow, :Erratic, :Fluctuating, :Parabolic, :Medium, :Fast] #todo rearrange order for balance?
|
||||
body_growth_rate = @body_pokemon.growth_rate
|
||||
head_growth_rate = @head_pokemon.growth_rate
|
||||
base_growth_rates =[body_growth_rate,head_growth_rate]
|
||||
for rate in growth_rate_priority
|
||||
return rate if base_growth_rates.include?(rate)
|
||||
end
|
||||
return :Medium
|
||||
end
|
||||
|
||||
#TODO
|
||||
# ################## UNFINISHED ####################
|
||||
def calculate_gender
|
||||
return :Genderless
|
||||
end
|
||||
|
||||
############################# UTIL METHODS ###############################
|
||||
|
||||
#Takes 2 strings, splits and combines them using the beginning of the first one and the end of the second one
|
||||
# (for example for pokedex entries)
|
||||
def split_and_combine_text(beginingText_full, endText_full, separator)
|
||||
beginingText_split = beginingText_full.split(separator, 2)
|
||||
endText_split = endText_full.split(separator, 2)
|
||||
|
||||
beginningText = beginingText_split[0]
|
||||
endText = endText_split[1] && endText_split[1] != "" ? endText_split[1] : endText_split[0]
|
||||
return beginningText + separator + endText
|
||||
end
|
||||
|
||||
def calculate_fused_stats(dominantStat, otherStat)
|
||||
return ((2 * dominantStat) / 3) + (otherStat / 3).floor
|
||||
end
|
||||
|
||||
def average_values(value1, value2)
|
||||
return ((value1 + value2) / 2).floor
|
||||
end
|
||||
|
||||
def average_map_values(map1, map2)
|
||||
averaged_map = map1.merge(map2) do |key, value1, value2|
|
||||
((value1 + value2) / 2.0).floor
|
||||
end
|
||||
return averaged_map
|
||||
end
|
||||
|
||||
def get_highest_value(value1, value2)
|
||||
return value1 > value2 ? value1 : value2
|
||||
end
|
||||
|
||||
def get_lowest_value(value1, value2)
|
||||
return value1 < value2 ? value1 : value2
|
||||
end
|
||||
|
||||
def combine_arrays(array1, array2)
|
||||
return array1 + array2
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
@@ -1,38 +0,0 @@
|
||||
# class PokemonFusionScene
|
||||
# HEAD_SPRITE_STARTING_POS = Graphics.width / 2
|
||||
#
|
||||
#
|
||||
# def pbStartScreen(pokemon_head,pokemon_body,pokemon_fused)
|
||||
#
|
||||
# @pokemon_head = pokemon_head
|
||||
# @pokemon_body = pokemon_body
|
||||
#
|
||||
# @pokemon_fused = pokemon_fused
|
||||
#
|
||||
# @sprites = {}
|
||||
# @viewport = Viewport.new(0, 0, Graphics.width, Graphics.height)
|
||||
# @viewport.z = 99999
|
||||
#
|
||||
# initialize_background()
|
||||
# initialize_sprites()
|
||||
# end
|
||||
#
|
||||
# def initialize_background()
|
||||
# addBackgroundOrColoredPlane(@sprites, "background", "DNAbg",
|
||||
# Color.new(248, 248, 248), @viewport)
|
||||
# end
|
||||
#
|
||||
# def initialize_sprites()
|
||||
# pokeHead_number = GameData::Species.get(@pokemon_head.species).id_number
|
||||
# pokeBody_number = GameData::Species.get(@pokemon_body.species).id_number
|
||||
#
|
||||
# @sprites["poke_head"] = PokemonSprite.new(@viewport)
|
||||
# @sprites["poke_head"].setPokemonBitmapFromId(pokeHead_number, false, @pokemon_head.shiny?)
|
||||
#
|
||||
# @sprites["poke_head"].ox = @sprites["rsprite1"].bitmap.width / 2
|
||||
# @sprites["poke_head"].x = Graphics.width / 2
|
||||
# @sprites["poke_head"].zoom_x = Settings::FRONTSPRITE_SCALE
|
||||
#
|
||||
# end
|
||||
#
|
||||
# end
|
||||
@@ -140,13 +140,10 @@ class SpriteMetafile
|
||||
end
|
||||
|
||||
def bitmap=(value)
|
||||
@values[BITMAP]= value
|
||||
@metafile.push([BITMAP, value])
|
||||
|
||||
# if value && !value.disposed?
|
||||
# @values[SRC_RECT].set(0, 0, value.width, value.height)
|
||||
# @metafile.push([SRC_RECT, @values[SRC_RECT].clone])
|
||||
# end
|
||||
if value && !value.disposed?
|
||||
@values[SRC_RECT].set(0, 0, value.width, value.height)
|
||||
@metafile.push([SRC_RECT, @values[SRC_RECT].clone])
|
||||
end
|
||||
end
|
||||
|
||||
def src_rect
|
||||
@@ -344,10 +341,6 @@ class SpriteMetafilePlayer
|
||||
sprite.color = value
|
||||
when SpriteMetafile::TONE
|
||||
sprite.tone = value
|
||||
when SpriteMetafile::BITMAP
|
||||
sprite.bitmap = value
|
||||
echo "\n"
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -418,125 +411,7 @@ end
|
||||
class PokemonFusionScene
|
||||
private
|
||||
|
||||
def generateSplicerMetaFile(nb_seconds,x_pos,y_pos)
|
||||
dna_splicer = SpriteMetafile.new
|
||||
dna_splicer.opacity = 255
|
||||
dna_splicer.x = x_pos
|
||||
dna_splicer.y = y_pos
|
||||
|
||||
max_y = 160
|
||||
min_y = 140
|
||||
|
||||
dna_splicer.z = 0
|
||||
duration = Graphics.frame_rate * nb_seconds
|
||||
direction = 1
|
||||
dna_splicer.bitmap = pbBitmap("Graphics/Items/POTION")
|
||||
|
||||
for j in 0...Graphics.frame_rate * 50
|
||||
if j % 2 ==0
|
||||
dna_splicer.bitmap = pbBitmap("Graphics/Items/SUPERSPLICERS")
|
||||
else
|
||||
dna_splicer.bitmap = pbBitmap("Graphics/Items/DNASPLICERS")
|
||||
end
|
||||
|
||||
if j % 5 == 0
|
||||
dna_splicer.y += direction
|
||||
direction = -1 if dna_splicer.y == max_y
|
||||
direction = 1 if dna_splicer.y == min_y
|
||||
end
|
||||
|
||||
|
||||
dna_splicer.opacity=0 if j >= duration * 0.75
|
||||
dna_splicer.update
|
||||
end
|
||||
@metafile4 = dna_splicer
|
||||
|
||||
end
|
||||
|
||||
#NEW FUSION ANIMATION (WIP)
|
||||
# def pbGenerateMetafiles(nb_seconds,ellipse_center_x,ellipse_center_y,ellipse_major_axis_length,ellipse_minor_axis_length)
|
||||
# sprite_head = SpriteMetafile.new
|
||||
# sprite_body = SpriteMetafile.new
|
||||
# sprite_fused = SpriteMetafile.new
|
||||
#
|
||||
# sprite_head.z = 10
|
||||
# sprite_body.z = 10
|
||||
#
|
||||
# sprite_head.opacity = 0
|
||||
# sprite_body.opacity = 0
|
||||
# sprite_fused.opacity = 0
|
||||
#
|
||||
# duration = Graphics.frame_rate * nb_seconds
|
||||
#
|
||||
# sprite_head_angle = 0
|
||||
# sprite_body_angle = Math::PI
|
||||
#
|
||||
# #Spinning
|
||||
# angle_incr = 0.1 #speed basically
|
||||
# acceleration = 2
|
||||
# sprite_head.opacity = 255
|
||||
# sprite_body.opacity = 255
|
||||
# for j in 0...duration
|
||||
# if j % 20 == 0
|
||||
# ellipse_major_axis_length -= 10 if ellipse_minor_axis_length > 100
|
||||
# ellipse_major_axis_length -= 18 if ellipse_minor_axis_length > 40
|
||||
# ellipse_minor_axis_length -= 5 if ellipse_minor_axis_length > 10
|
||||
# angle_incr += 0.02*acceleration
|
||||
# acceleration+=0.01
|
||||
# end
|
||||
#
|
||||
# sprite_head.x = ellipse_center_x + ellipse_major_axis_length * Math.cos(sprite_head_angle)
|
||||
# sprite_head.y = ellipse_center_y + ellipse_minor_axis_length * Math.sin(sprite_head_angle)
|
||||
#
|
||||
# sprite_body.x = ellipse_center_x + ellipse_major_axis_length * Math.cos(sprite_body_angle)
|
||||
# sprite_body.y = ellipse_center_y + ellipse_minor_axis_length * Math.sin(sprite_body_angle)
|
||||
#
|
||||
# sprite_head_angle += angle_incr
|
||||
# sprite_body_angle += angle_incr
|
||||
#
|
||||
#
|
||||
# sprite_head.mirror= sprite_head.y < ellipse_center_y
|
||||
# sprite_body.mirror= sprite_body.y < ellipse_center_y
|
||||
#
|
||||
# #sprite_body.mirror if sprite_body_angle == 0 || sprite_body_angle == Math::PI
|
||||
#
|
||||
# sprite_head.update
|
||||
# sprite_fused.update
|
||||
# sprite_body.update
|
||||
# end
|
||||
# sprite_head.opacity = 0
|
||||
# sprite_body.opacity = 0
|
||||
# sprite_fused.opacity = 255
|
||||
#
|
||||
# @metafile1 = sprite_head
|
||||
# @metafile2 = sprite_fused
|
||||
# @metafile3 = sprite_body
|
||||
# end
|
||||
|
||||
# def pbGenerateMetafiles(nb_seconds,ellipse_center_x,ellipse_center_y,ellipse_major_axis_length,ellipse_minor_axis_length)
|
||||
|
||||
#def pbGenerateMetafiles(s1x, s1y, s2x, s2y, s3x, s3y, sxx, s3xx)
|
||||
def pbGenerateMetafiles(nb_seconds,ellipse_center_x,ellipse_center_y,ellipse_major_axis_length,ellipse_minor_axis_length)
|
||||
|
||||
@sprites["rsprite1"].ox = @sprites["rsprite1"].bitmap.width / 2
|
||||
@sprites["rsprite1"].oy = @sprites["rsprite1"].bitmap.height / 2
|
||||
|
||||
@sprites["rsprite3"].ox = @sprites["rsprite3"].bitmap.width / 2
|
||||
@sprites["rsprite3"].oy = @sprites["rsprite3"].bitmap.height / 2
|
||||
|
||||
@sprites["rsprite2"].ox = @sprites["rsprite2"].bitmap.width / 2
|
||||
@sprites["rsprite2"].oy = @sprites["rsprite2"].bitmap.height / 2
|
||||
|
||||
@sprites["rsprite2"].x = Graphics.width / 2
|
||||
@sprites["rsprite1"].y = (Graphics.height - 96) / 2
|
||||
@sprites["rsprite3"].y = (Graphics.height - 96) / 2
|
||||
|
||||
@sprites["rsprite1"].x = (Graphics.width / 2) - 100
|
||||
@sprites["rsprite3"].x = (Graphics.width / 2) + 100
|
||||
s1x, s1y, s2x, s2y, s3x, s3y, sxx, s3xx =@sprites["rsprite1"].ox, @sprites["rsprite1"].oy, @sprites["rsprite2"].ox, @sprites["rsprite2"].oy, @sprites["rsprite3"].ox, @sprites["rsprite3"].oy, @sprites["rsprite1"].x, @sprites["rsprite3"].x
|
||||
|
||||
second = Graphics.frame_rate * 1
|
||||
|
||||
def pbGenerateMetafiles(s1x, s1y, s2x, s2y, s3x, s3y, sxx, s3xx)
|
||||
sprite = SpriteMetafile.new
|
||||
sprite3 = SpriteMetafile.new
|
||||
sprite2 = SpriteMetafile.new
|
||||
@@ -640,10 +515,9 @@ class PokemonFusionScene
|
||||
|
||||
end
|
||||
|
||||
|
||||
# Starts the fusion screen
|
||||
|
||||
def pbStartScreen(pokemon1, pokemon2, newspecies,splicerItem)
|
||||
def pbStartScreen(pokemon1, pokemon2, newspecies)
|
||||
@sprites = {}
|
||||
@viewport = Viewport.new(0, 0, Graphics.width, Graphics.height)
|
||||
@viewport.z = 99999
|
||||
@@ -660,19 +534,12 @@ class PokemonFusionScene
|
||||
@sprites["rsprite1"] = PokemonSprite.new(@viewport)
|
||||
@sprites["rsprite2"] = PokemonSprite.new(@viewport)
|
||||
@sprites["rsprite3"] = PokemonSprite.new(@viewport)
|
||||
@sprites["dnasplicer"] = IconSprite.new(300, 150, @viewport)
|
||||
@sprites["dnasplicer"].x=(Graphics.width/2)-30
|
||||
@sprites["dnasplicer"].y=(Graphics.height/2)-50
|
||||
@sprites["dnasplicer"].opacity=0
|
||||
|
||||
@sprites["rsprite1"].setPokemonBitmapFromId(poke1_number, false, pokemon1.shiny?)
|
||||
@sprites["rsprite3"].setPokemonBitmapFromId(poke2_number, false, pokemon2.shiny?)
|
||||
|
||||
@sprites["rsprite2"].setPokemonBitmapFromId(@newspecies, false, pokemon1.shiny? || pokemon2.shiny?, pokemon1.shiny?, pokemon2.shiny?)
|
||||
|
||||
splicer_bitmap = _INTL("Graphics/Items/{1}",splicerItem)
|
||||
@sprites["dnasplicer"].setBitmap(splicer_bitmap)
|
||||
|
||||
@sprites["rsprite1"].ox = @sprites["rsprite1"].bitmap.width / 2
|
||||
@sprites["rsprite1"].oy = @sprites["rsprite1"].bitmap.height / 2
|
||||
|
||||
@@ -701,21 +568,8 @@ class PokemonFusionScene
|
||||
@sprites["rsprite3"].zoom_x = Settings::FRONTSPRITE_SCALE
|
||||
@sprites["rsprite3"].zoom_y = Settings::FRONTSPRITE_SCALE
|
||||
|
||||
#pbGenerateMetafiles(@sprites["rsprite1"].ox, @sprites["rsprite1"].oy, @sprites["rsprite2"].ox, @sprites["rsprite2"].oy, @sprites["rsprite3"].ox, @sprites["rsprite3"].oy, @sprites["rsprite1"].x, @sprites["rsprite3"].x)
|
||||
pbGenerateMetafiles(@sprites["rsprite1"].ox, @sprites["rsprite1"].oy, @sprites["rsprite2"].ox, @sprites["rsprite2"].oy, @sprites["rsprite3"].ox, @sprites["rsprite3"].oy, @sprites["rsprite1"].x, @sprites["rsprite3"].x)
|
||||
|
||||
ellipse_center_x = (Graphics.width/2)
|
||||
ellipse_center_y = (Graphics.height/2)-50
|
||||
ellipse_major_axis_length = 250
|
||||
ellipse_minor_axis_length = 100
|
||||
|
||||
@sprites["rsprite1"].x = ellipse_center_x + ellipse_major_axis_length * Math.cos(0)-75
|
||||
@sprites["rsprite1"].y = ellipse_center_y + ellipse_minor_axis_length * Math.sin(0)
|
||||
|
||||
@sprites["rsprite3"].x = ellipse_center_x + ellipse_major_axis_length * Math.cos(Math::PI)+75
|
||||
@sprites["rsprite3"].y = ellipse_center_y + ellipse_minor_axis_length * Math.sin(Math::PI)
|
||||
|
||||
pbGenerateMetafiles(7.2,ellipse_center_x,ellipse_center_y,ellipse_major_axis_length,ellipse_minor_axis_length)
|
||||
generateSplicerMetaFile(7.2,@sprites["dnasplicer"].x,@sprites["dnasplicer"].y)
|
||||
@sprites["msgwindow"] = Kernel.pbCreateMessageWindow(@viewport)
|
||||
pbFadeInAndShow(@sprites)
|
||||
|
||||
@@ -783,12 +637,11 @@ class PokemonFusionScene
|
||||
metaplayer1 = SpriteMetafilePlayer.new(@metafile1, @sprites["rsprite1"])
|
||||
metaplayer2 = SpriteMetafilePlayer.new(@metafile2, @sprites["rsprite2"])
|
||||
metaplayer3 = SpriteMetafilePlayer.new(@metafile3, @sprites["rsprite3"])
|
||||
metaplayer4 = SpriteMetafilePlayer.new(@metafile4, @sprites["dnasplicer"])
|
||||
|
||||
metaplayer1.play
|
||||
metaplayer2.play
|
||||
metaplayer3.play
|
||||
#metaplayer4.play
|
||||
|
||||
pbBGMStop()
|
||||
pbPlayCry(@pokemon)
|
||||
Kernel.pbMessageDisplay(@sprites["msgwindow"],
|
||||
@@ -808,7 +661,6 @@ class PokemonFusionScene
|
||||
metaplayer1.update
|
||||
metaplayer2.update
|
||||
metaplayer3.update
|
||||
metaplayer4.update
|
||||
|
||||
Graphics.update
|
||||
Input.update
|
||||
@@ -831,7 +683,7 @@ class PokemonFusionScene
|
||||
frames.times do
|
||||
Graphics.update
|
||||
end
|
||||
#pbMEPlay("Voltorb Flip Win")
|
||||
pbMEPlay("Voltorb Flip Win")
|
||||
newSpecies = GameData::Species.get(@newspecies)
|
||||
newspeciesname = newSpecies.real_name
|
||||
oldspeciesname = GameData::Species.get(@pokemon1.species).real_name
|
||||
@@ -839,11 +691,11 @@ class PokemonFusionScene
|
||||
overlay = BitmapSprite.new(Graphics.width, Graphics.height, @viewport).bitmap
|
||||
|
||||
sprite_bitmap = @sprites["rsprite2"].getBitmap
|
||||
drawSpriteCredits(sprite_bitmap.filename, sprite_bitmap.path, @viewport)
|
||||
pbBGMPlay(pbGetWildVictoryME)
|
||||
drawSpriteCredits(sprite_bitmap.filename,sprite_bitmap.path, @viewport)
|
||||
Kernel.pbMessageDisplay(@sprites["msgwindow"],
|
||||
_INTL("\\se[]Congratulations! Your Pokémon were fused into {2}!\\wt[80]", @pokemon1.name, newspeciesname))
|
||||
|
||||
|
||||
#exp
|
||||
@pokemon1.exp_when_fused_head = @pokemon2.exp
|
||||
@pokemon1.exp_when_fused_body = @pokemon1.exp
|
||||
@@ -897,7 +749,7 @@ class PokemonFusionScene
|
||||
removeItem = false
|
||||
if @pokemon2.isShiny? || @pokemon1.isShiny?
|
||||
@pokemon1.makeShiny
|
||||
if !(@pokemon1.debug_shiny || @pokemon2.debug_shiny)
|
||||
if !(@pokemon1.debug_shiny ||@pokemon2.debug_shiny)
|
||||
@pokemon1.natural_shiny = true if @pokemon2.natural_shiny
|
||||
end
|
||||
end
|
||||
@@ -913,31 +765,30 @@ class PokemonFusionScene
|
||||
@pokemon1.level = setPokemonLevel(@pokemon1.level, @pokemon2.level, superSplicer)
|
||||
@pokemon1.calc_stats
|
||||
@pokemon1.obtain_method = 0
|
||||
pbBGMStop
|
||||
pbBGMPlay($PokemonTemp.cueBGM)
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def drawSpriteCredits(filename, path, viewport)
|
||||
def drawSpriteCredits(filename,path,viewport)
|
||||
overlay = BitmapSprite.new(Graphics.width, Graphics.height, @viewport).bitmap
|
||||
|
||||
return if path.start_with?(Settings::BATTLERS_FOLDER)
|
||||
x = Graphics.width / 2
|
||||
y = 240
|
||||
spritename = File.basename(filename, '.*')
|
||||
x= Graphics.width/2
|
||||
y=240
|
||||
spritename = File.basename(filename,'.*')
|
||||
|
||||
discord_name = getSpriteCredits(spritename)
|
||||
return if !discord_name
|
||||
return if !discord_name
|
||||
|
||||
author_name = File.basename(discord_name, '#*')
|
||||
return if author_name == nil
|
||||
author_name = File.basename(discord_name,'#*')
|
||||
return if author_name == nil
|
||||
|
||||
label_base_color = Color.new(98, 231, 110)
|
||||
label_shadow_color = Color.new(27, 169, 40)
|
||||
|
||||
#label_shadow_color = Color.new(33, 209, 50)
|
||||
text = _INTL("Sprite by {1}", author_name)
|
||||
text = _INTL("Sprite by {1}",author_name)
|
||||
textpos = [[text, x, y, 2, label_base_color, label_shadow_color]]
|
||||
pbDrawTextPositions(overlay, textpos)
|
||||
end
|
||||
@@ -960,8 +811,9 @@ def setAbilityAndNatureAndNickname(abilitiesList, naturesList)
|
||||
@pokemon1.body_original_ability_index = @pokemon1.ability_index
|
||||
@pokemon1.head_original_ability_index = @pokemon2.ability_index
|
||||
|
||||
|
||||
@pokemon1.ability = scene.selectedAbility
|
||||
@pokemon1.ability_index = locate_ability_index(@pokemon1, scene.selectedAbility)
|
||||
@pokemon1.ability_index = locate_ability_index(@pokemon1,scene.selectedAbility)
|
||||
@pokemon1.nature = scene.selectedNature
|
||||
if scene.hasNickname
|
||||
@pokemon1.name = scene.nickname
|
||||
@@ -979,6 +831,7 @@ def locate_ability_index(pokemon, ability)
|
||||
return nil
|
||||
end
|
||||
|
||||
|
||||
def setFusionMoves(fusedPoke, poke2, selected2ndOption = false)
|
||||
#NEW METHOD (not ready)
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user