mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-06 06:01:46 +00:00
[wip] fusedPokemon
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -30,6 +30,11 @@ module GameData
|
|||||||
# p "Please switch to symbols, thanks."
|
# p "Please switch to symbols, thanks."
|
||||||
# end
|
# end
|
||||||
raise "Unknown ID #{other}." unless self::DATA.has_key?(other)
|
raise "Unknown ID #{other}." unless self::DATA.has_key?(other)
|
||||||
|
|
||||||
|
if other == :Species
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
return self::DATA[other]
|
return self::DATA[other]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -1110,6 +1110,7 @@ class Pokemon
|
|||||||
this_base_stats = species_data.base_stats
|
this_base_stats = species_data.base_stats
|
||||||
ret = {}
|
ret = {}
|
||||||
GameData::Stat.each_main { |s| ret[s.id] = this_base_stats[s.id] }
|
GameData::Stat.each_main { |s| ret[s.id] = this_base_stats[s.id] }
|
||||||
|
p ret
|
||||||
return ret
|
return ret
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,91 @@
|
|||||||
class FusedPokemon < Pokemon
|
class FusedPokemon < Pokemon
|
||||||
|
attr_reader :body_pokemon, :head_pokemon
|
||||||
|
|
||||||
def initialize(species, level, owner = $Trainer, withMoves = true, recheck_form = true)
|
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
|
super
|
||||||
end
|
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
|
end
|
||||||
|
|
||||||
|
|||||||
3
Data/Scripts/048_Fusion/FusedSpecies.rb
Normal file
3
Data/Scripts/048_Fusion/FusedSpecies.rb
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
class FusedSpecies < Species
|
||||||
|
|
||||||
|
end
|
||||||
@@ -71,24 +71,24 @@ module GameData
|
|||||||
return offset
|
return offset
|
||||||
end
|
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
|
#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 body_number.is_a?(Symbol)
|
||||||
dex_number = GameData::Species.get(dex_number).id_number
|
body_number = GameData::Species.get(body_number).id_number
|
||||||
end
|
end
|
||||||
filename = self.sprite_filename(dex_number)
|
filename = self.sprite_filename(body_number)
|
||||||
sprite = (filename) ? AnimatedBitmap.new(filename) : nil
|
sprite = (filename) ? AnimatedBitmap.new(filename) : nil
|
||||||
if isShiny
|
if isShiny
|
||||||
sprite.shiftColors(self.calculateShinyHueOffset(dex_number, bodyShiny, headShiny))
|
sprite.shiftColors(self.calculateShinyHueOffset(body_number, bodyShiny, headShiny))
|
||||||
end
|
end
|
||||||
return sprite
|
return sprite
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.back_sprite_bitmap(dex_number, b = 0, form = 0, isShiny = false, bodyShiny = false, headShiny = false)
|
def self.back_sprite_bitmap(body_number, head_number = nil, form = 0, isShiny = false, bodyShiny = false, headShiny = false)
|
||||||
filename = self.sprite_filename(dex_number)
|
filename = self.sprite_filename(body_number)
|
||||||
sprite = (filename) ? AnimatedBitmap.new(filename) : nil
|
sprite = (filename) ? AnimatedBitmap.new(filename) : nil
|
||||||
if isShiny
|
if isShiny
|
||||||
sprite.shiftColors(self.calculateShinyHueOffset(dex_number, bodyShiny, headShiny))
|
sprite.shiftColors(self.calculateShinyHueOffset(body_number, bodyShiny, headShiny))
|
||||||
end
|
end
|
||||||
return sprite
|
return sprite
|
||||||
end
|
end
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user