mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-07 21:24:59 +00:00
75 lines
2.4 KiB
Ruby
75 lines
2.4 KiB
Ruby
#===============================================================================
|
|
#
|
|
#===============================================================================
|
|
module GameData
|
|
class ShadowPokemon
|
|
attr_reader :id
|
|
attr_reader :species
|
|
attr_reader :form
|
|
attr_reader :moves
|
|
attr_reader :gauge_size
|
|
attr_reader :flags
|
|
attr_reader :pbs_file_suffix
|
|
|
|
DATA = {}
|
|
DATA_FILENAME = "shadow_pokemon.dat"
|
|
PBS_BASE_FILENAME = "shadow_pokemon"
|
|
OPTIONAL = true
|
|
SCHEMA = {
|
|
"SectionName" => [:id, "eV", :Species],
|
|
"GaugeSize" => [:gauge_size, "v"],
|
|
"Moves" => [:moves, "*e", :Move],
|
|
"Flags" => [:flags, "*s"]
|
|
}
|
|
HEART_GAUGE_SIZE = 4000 # Default gauge size
|
|
|
|
extend ClassMethodsSymbols
|
|
include InstanceMethods
|
|
|
|
singleton_class.alias_method(:__orig__load, :load) unless singleton_class.method_defined?(:__orig__load)
|
|
def self.load
|
|
__orig__load if FileTest.exist?("Data/#{self::DATA_FILENAME}")
|
|
end
|
|
|
|
# @param species [Symbol, self, String]
|
|
# @param form [Integer]
|
|
# @return [self, nil]
|
|
def self.get_species_form(species, form)
|
|
return nil if !species || !form
|
|
validate species => [Symbol, self, String]
|
|
validate form => Integer
|
|
species = species.species if species.is_a?(self)
|
|
species = species.to_sym if species.is_a?(String)
|
|
trial = sprintf("%s_%d", species, form).to_sym
|
|
species_form = (DATA[trial].nil?) ? species : trial
|
|
return (DATA.has_key?(species_form)) ? DATA[species_form] : nil
|
|
end
|
|
|
|
#---------------------------------------------------------------------------
|
|
|
|
def initialize(hash)
|
|
@id = hash[:id]
|
|
@species = hash[:species] || @id
|
|
@form = hash[:form] || 0
|
|
@gauge_size = hash[:gauge_size] || HEART_GAUGE_SIZE
|
|
@moves = hash[:moves] || []
|
|
@flags = hash[:flags] || []
|
|
@pbs_file_suffix = hash[:pbs_file_suffix] || ""
|
|
end
|
|
|
|
def has_flag?(flag)
|
|
return @flags.any? { |f| f.downcase == flag.downcase }
|
|
end
|
|
|
|
alias __orig__get_property_for_PBS get_property_for_PBS unless method_defined?(:__orig__get_property_for_PBS)
|
|
def get_property_for_PBS(key)
|
|
ret = __orig__get_property_for_PBS(key)
|
|
case key
|
|
when "SectionName"
|
|
ret = [@species, (@form > 0) ? @form : nil]
|
|
end
|
|
return ret
|
|
end
|
|
end
|
|
end
|