diff --git a/Data/Actors.rxdata b/Data/Actors.rxdata index 7967a5432..41edc8e26 100644 Binary files a/Data/Actors.rxdata and b/Data/Actors.rxdata differ diff --git a/Data/Animations.rxdata b/Data/Animations.rxdata index 17f99d75e..6e93f365d 100644 Binary files a/Data/Animations.rxdata and b/Data/Animations.rxdata differ diff --git a/Data/Armors.rxdata b/Data/Armors.rxdata index 2249bec14..901f2bb2b 100644 Binary files a/Data/Armors.rxdata and b/Data/Armors.rxdata differ diff --git a/Data/CommonEvents.rxdata b/Data/CommonEvents.rxdata index b1f3b4c57..f5439b6a0 100644 Binary files a/Data/CommonEvents.rxdata and b/Data/CommonEvents.rxdata differ diff --git a/Data/Enemies.rxdata b/Data/Enemies.rxdata index 004ee903d..be622f513 100644 Binary files a/Data/Enemies.rxdata and b/Data/Enemies.rxdata differ diff --git a/Data/Items.rxdata b/Data/Items.rxdata index 3e62ba6d2..fe767fa0b 100644 Binary files a/Data/Items.rxdata and b/Data/Items.rxdata differ diff --git a/Data/MapInfos.rxdata b/Data/MapInfos.rxdata index 38a8e0b72..e3607c8aa 100644 Binary files a/Data/MapInfos.rxdata and b/Data/MapInfos.rxdata differ diff --git a/Data/Scripts/010_Data/001_GameData.rb b/Data/Scripts/010_Data/001_GameData.rb index ca75946f8..6a74fdf05 100644 --- a/Data/Scripts/010_Data/001_GameData.rb +++ b/Data/Scripts/010_Data/001_GameData.rb @@ -30,6 +30,11 @@ module GameData # p "Please switch to symbols, thanks." # end raise "Unknown ID #{other}." unless self::DATA.has_key?(other) + + if other == :Species + + end + return self::DATA[other] end diff --git a/Data/Scripts/014_Pokemon/001_Pokemon.rb b/Data/Scripts/014_Pokemon/001_Pokemon.rb index c5b73b66f..5946799df 100644 --- a/Data/Scripts/014_Pokemon/001_Pokemon.rb +++ b/Data/Scripts/014_Pokemon/001_Pokemon.rb @@ -1110,6 +1110,7 @@ class Pokemon this_base_stats = species_data.base_stats ret = {} GameData::Stat.each_main { |s| ret[s.id] = this_base_stats[s.id] } + p ret return ret end diff --git a/Data/Scripts/048_Fusion/FusedPokemon.rb b/Data/Scripts/048_Fusion/FusedPokemon.rb index 3c8f07105..ae530dd81 100644 --- a/Data/Scripts/048_Fusion/FusedPokemon.rb +++ b/Data/Scripts/048_Fusion/FusedPokemon.rb @@ -1,6 +1,91 @@ class FusedPokemon < Pokemon + attr_reader :body_pokemon, :head_pokemon + def initialize(species, level, owner = $Trainer, withMoves = true, recheck_form = true) + @body_pokemon = GameData::Species.get((getBodyID(species))) + @head_pokemon = GameData::Species.get((getHeadID(species, @body_pokemon))) + + #default to body for missing values + super(getBodyID(species), level, owner, withMoves, recheck_form) + end + + + + + #TODO + def name + return @body_pokemon.name + " " + @head_pokemon.name + end + + #Types + #Todo: type exceptions + def type1 + return @head_pokemon.type1 + end + + def type2 + return @body_pokemon.type2 + end + + def baseStats + 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 + + #Always return genderless + def gender + @gender = 2 + return @gender + end + + #todo + def growth_rate super end + + def base_exp + head_exp = @head_pokemon.base_exp + body_exp = @body_pokemon.base_exp + return average_values(head_exp, body_exp) + end + + def evYield + super + end + + #Util methods + 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) + p map1 + p map2 + + averaged_map = map1.merge(map2) do |key, value1, value2| + ((value1 + value2) / 2.0).floor + end + p averaged_map + return averaged_map + end + end diff --git a/Data/Scripts/048_Fusion/FusedSpecies.rb b/Data/Scripts/048_Fusion/FusedSpecies.rb new file mode 100644 index 000000000..7a6949f19 --- /dev/null +++ b/Data/Scripts/048_Fusion/FusedSpecies.rb @@ -0,0 +1,3 @@ +class FusedSpecies < Species + +end diff --git a/Data/Scripts/048_Fusion/FusionSprites.rb b/Data/Scripts/048_Fusion/FusionSprites.rb index f219c0abd..682206d0d 100644 --- a/Data/Scripts/048_Fusion/FusionSprites.rb +++ b/Data/Scripts/048_Fusion/FusionSprites.rb @@ -71,24 +71,24 @@ module GameData return offset end - def self.front_sprite_bitmap(dex_number, a = 0, b = 0, isShiny = false, bodyShiny = false, headShiny = false) + def self.front_sprite_bitmap(body_number, head_number = nil, 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 - if dex_number.is_a?(Symbol) - dex_number = GameData::Species.get(dex_number).id_number + if body_number.is_a?(Symbol) + body_number = GameData::Species.get(body_number).id_number end - filename = self.sprite_filename(dex_number) + filename = self.sprite_filename(body_number) sprite = (filename) ? AnimatedBitmap.new(filename) : nil if isShiny - sprite.shiftColors(self.calculateShinyHueOffset(dex_number, bodyShiny, headShiny)) + sprite.shiftColors(self.calculateShinyHueOffset(body_number, bodyShiny, headShiny)) end return sprite end - def self.back_sprite_bitmap(dex_number, b = 0, form = 0, isShiny = false, bodyShiny = false, headShiny = false) - filename = self.sprite_filename(dex_number) + def self.back_sprite_bitmap(body_number, head_number = nil, form = 0, isShiny = false, bodyShiny = false, headShiny = false) + filename = self.sprite_filename(body_number) sprite = (filename) ? AnimatedBitmap.new(filename) : nil if isShiny - sprite.shiftColors(self.calculateShinyHueOffset(dex_number, bodyShiny, headShiny)) + sprite.shiftColors(self.calculateShinyHueOffset(body_number, bodyShiny, headShiny)) end return sprite end diff --git a/Data/Skills.rxdata b/Data/Skills.rxdata index 61cba7ea2..a45219f5e 100644 Binary files a/Data/Skills.rxdata and b/Data/Skills.rxdata differ diff --git a/Data/States.rxdata b/Data/States.rxdata index 0f9b4ae5d..868d49e59 100644 Binary files a/Data/States.rxdata and b/Data/States.rxdata differ diff --git a/Data/System.rxdata b/Data/System.rxdata index 8c7f7b35b..2f7bd23b4 100644 Binary files a/Data/System.rxdata and b/Data/System.rxdata differ diff --git a/Data/Tilesets.rxdata b/Data/Tilesets.rxdata index f52e6f43e..6d74b21a8 100644 Binary files a/Data/Tilesets.rxdata and b/Data/Tilesets.rxdata differ diff --git a/Data/Weapons.rxdata b/Data/Weapons.rxdata index d9bd35260..c7ea19a7a 100644 Binary files a/Data/Weapons.rxdata and b/Data/Weapons.rxdata differ