mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-07 21:24:59 +00:00
Migrate a reorganizes bunch of files from PIF
This commit is contained in:
@@ -0,0 +1,403 @@
|
||||
# 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() # hash[:abilities] || []
|
||||
# @hidden_abilities = calculate_hidden_abilities() # 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 get_body_species
|
||||
# return @body_pokemon.id_number
|
||||
# end
|
||||
#
|
||||
# def get_head_species
|
||||
# return @head_pokemon.id_number
|
||||
# end
|
||||
#
|
||||
# def get_body_species_symbol
|
||||
# return @body_pokemon.id
|
||||
# end
|
||||
#
|
||||
# def get_head_species_symbol
|
||||
# return @head_pokemon.id
|
||||
# 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()
|
||||
# abilities_hash = []
|
||||
#
|
||||
# ability1 = @body_pokemon.abilities[0]
|
||||
# ability2 = @head_pokemon.abilities[0]
|
||||
# abilities_hash << ability1
|
||||
# abilities_hash << ability2
|
||||
# return abilities_hash
|
||||
# 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()
|
||||
# abilities_hash = []
|
||||
#
|
||||
# #First two spots are the other abilities of the two pokemon
|
||||
# ability1 = @body_pokemon.abilities[1]
|
||||
# ability2 = @head_pokemon.abilities[1]
|
||||
# ability1 = @body_pokemon.abilities[0] if !ability1
|
||||
# ability2 = @head_pokemon.abilities[0] if !ability2
|
||||
#
|
||||
# abilities_hash << ability1
|
||||
# abilities_hash << ability2
|
||||
#
|
||||
# #add the hidden ability for the two base pokemon
|
||||
# hiddenAbility1 = @body_pokemon.hidden_abilities[0]
|
||||
# hiddenAbility1 = ability1 if !hiddenAbility1
|
||||
#
|
||||
# hiddenAbility2 = @head_pokemon.hidden_abilities[0]
|
||||
# hiddenAbility2 = ability2 if !hiddenAbility2
|
||||
#
|
||||
# abilities_hash << hiddenAbility1
|
||||
# abilities_hash << hiddenAbility2
|
||||
# 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
|
||||
# suffix = suffix.capitalize if prefix.end_with?(" ")
|
||||
# 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 get_random_dex_entry()
|
||||
# begin
|
||||
# file_path = Settings::POKEDEX_ENTRIES_PATH
|
||||
# json_data = File.read(file_path)
|
||||
# all_body_entries = HTTPLite::JSON.parse(json_data)
|
||||
#
|
||||
#
|
||||
# body_entry = all_body_entries[@body_pokemon.id_number.to_s].sample
|
||||
# body_entry = body_entry.gsub(/#{@body_pokemon.real_name}/i, @real_name)
|
||||
# body_entry = clean_json_string(body_entry).gsub(@body_pokemon.real_name, @real_name)
|
||||
#
|
||||
# head_entry = all_body_entries[@head_pokemon.id_number.to_s].sample
|
||||
# head_entry = head_entry.gsub(/#{@head_pokemon.real_name}/i, @real_name)
|
||||
# head_entry = clean_json_string(head_entry).gsub(@head_pokemon.real_name, @real_name)
|
||||
# rescue
|
||||
# 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)
|
||||
# end
|
||||
# echoln body_entry
|
||||
# echoln head_entry
|
||||
# combined_entry = split_and_combine_text(body_entry, head_entry, ".")
|
||||
# combined_entry += "." unless combined_entry.end_with?(".")
|
||||
# return combined_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 = [:Fast, :Medium, :Parabolic, :Fluctuating, :Erratic, :Slow] #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
|
||||
@@ -0,0 +1,31 @@
|
||||
# module GameData
|
||||
# module ClassMethods
|
||||
# def get(other)
|
||||
# validate other => [Symbol, self, String, Integer]
|
||||
# return other if other.is_a?(self)
|
||||
# other = other.to_sym if other.is_a?(String)
|
||||
#
|
||||
# if other.to_s.match?(/\AB\d+H\d+\z/)
|
||||
# species = GameData::FusedSpecies.new(other)
|
||||
# return species
|
||||
# end
|
||||
#
|
||||
# if other.is_a?(Integer) && self == GameData::Species
|
||||
# if other > NB_POKEMON
|
||||
# body_id = getBodyID(other)
|
||||
# head_id = getHeadID(other, body_id)
|
||||
# pokemon_id = getFusedPokemonIdFromDexNum(body_id, head_id)
|
||||
# return GameData::FusedSpecies.new(pokemon_id)
|
||||
# end
|
||||
# end
|
||||
#
|
||||
# if !self::DATA.has_key?(other)
|
||||
# # echoln _INTL("Unknown ID {1}.", other)
|
||||
# return self::get(:PIKACHU)
|
||||
# end
|
||||
#
|
||||
# raise "Unknown ID #{other}." unless self::DATA.has_key?(other)
|
||||
# return self::DATA[other]
|
||||
# end
|
||||
# end
|
||||
# end
|
||||
Reference in New Issue
Block a user