Files
infinitefusion-e18/Data/Scripts/998_InfiniteFusion/Fusion/Fusion data/fused_species_integration.rb
2025-05-08 22:59:30 -04:00

75 lines
2.2 KiB
Ruby

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 > Settings::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)
else
species_id = GameData::Species.keys[other-1]
return GameData::Species.get(species_id) if species_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
module ClassMethodsSymbols
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 > Settings::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)
else
species_id = GameData::Species.keys[other-1]
return GameData::Species.get(species_id) if species_id
end
end
raise "Unknown ID #{other}." unless self::DATA.has_key?(other)
return self::DATA[other]
end
def try_get(other)
return nil if other.nil?
validate other => [Symbol, self, String, Integer]
return other if other.is_a?(self)
other = other.to_sym if other.is_a?(String)
return (self::DATA.has_key?(other)) ? self::DATA[other] : nil
end
end
end