mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2026-07-22 15:47:00 +00:00
Update 6.8
This commit is contained in:
@@ -55,7 +55,7 @@ module GameData
|
||||
|
||||
if !self::DATA.has_key?(other)
|
||||
if self == GameData::Item
|
||||
return nil
|
||||
return self::get(:UNKNOWN)
|
||||
else
|
||||
return self::get(:PIKACHU)
|
||||
end
|
||||
@@ -108,12 +108,25 @@ module GameData
|
||||
keys.each { |key| yield self::DATA[key] if !key.is_a?(Integer) }
|
||||
end
|
||||
|
||||
def load
|
||||
const_set(:DATA, load_data("Data/#{self::DATA_FILENAME}"))
|
||||
end
|
||||
|
||||
|
||||
def load
|
||||
filename = "Data/#{self::DATA_FILENAME}"
|
||||
raw = File.open(filename, "rb") { |f| f.read }
|
||||
begin
|
||||
const_set(:DATA, Marshal.load(Encryption.xor(raw)))
|
||||
rescue TypeError, ArgumentError => e
|
||||
echoln "Encrypted load failed for #{filename}: #{e.message}, trying plain..."
|
||||
begin
|
||||
const_set(:DATA, Marshal.load(raw))
|
||||
rescue => e2
|
||||
echoln "Plain load also failed for #{filename}: #{e2.message}"
|
||||
end
|
||||
end
|
||||
end
|
||||
def save
|
||||
save_data(self::DATA, "Data/#{self::DATA_FILENAME}")
|
||||
raw = Marshal.dump(self::DATA)
|
||||
File.open("Data/#{self::DATA_FILENAME}", "wb") { |f| f.write(Encryption.xor(raw)) }
|
||||
end
|
||||
end
|
||||
|
||||
@@ -171,11 +184,22 @@ module GameData
|
||||
end
|
||||
|
||||
def load
|
||||
const_set(:DATA, load_data("Data/#{self::DATA_FILENAME}"))
|
||||
filename = "Data/#{self::DATA_FILENAME}"
|
||||
raw = File.open(filename, "rb") { |f| f.read }
|
||||
begin
|
||||
const_set(:DATA, Marshal.load(Encryption.xor(raw)))
|
||||
rescue TypeError, ArgumentError => e
|
||||
echoln "Encrypted load failed for #{filename}: #{e.message}, trying plain..."
|
||||
begin
|
||||
const_set(:DATA, Marshal.load(raw))
|
||||
rescue => e2
|
||||
echoln "Plain load also failed for #{filename}: #{e2.message}"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def save
|
||||
save_data(self::DATA, "Data/#{self::DATA_FILENAME}")
|
||||
raw = Marshal.dump(self::DATA)
|
||||
File.open("Data/#{self::DATA_FILENAME}", "wb") { |f| f.write(Encryption.xor(raw)) }
|
||||
end
|
||||
end
|
||||
|
||||
@@ -228,11 +252,22 @@ module GameData
|
||||
end
|
||||
|
||||
def load
|
||||
const_set(:DATA, load_data("Data/#{self::DATA_FILENAME}"))
|
||||
filename = "Data/#{self::DATA_FILENAME}"
|
||||
raw = File.open(filename, "rb") { |f| f.read }
|
||||
begin
|
||||
const_set(:DATA, Marshal.load(Encryption.xor(raw)))
|
||||
rescue TypeError, ArgumentError => e
|
||||
echoln "Encrypted load failed for #{filename}: #{e.message}, trying plain..."
|
||||
begin
|
||||
const_set(:DATA, Marshal.load(raw))
|
||||
rescue => e2
|
||||
echoln "Plain load also failed for #{filename}: #{e2.message}"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def save
|
||||
save_data(self::DATA, "Data/#{self::DATA_FILENAME}")
|
||||
raw = Marshal.dump(self::DATA)
|
||||
File.open("Data/#{self::DATA_FILENAME}", "wb") { |f| f.write(Encryption.xor(raw)) }
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -61,7 +61,7 @@ module GameData
|
||||
# @param exp [Integer] an Exp amount
|
||||
# @return [Integer] the level of a Pokémon that has the given Exp amount
|
||||
def level_from_exp(exp)
|
||||
return ArgumentError.new("Exp amount #{level} is invalid.") if !exp || exp < 0
|
||||
return ArgumentError.new("Exp amount #{exp} is invalid.") if !exp || exp < 0
|
||||
max = GrowthRate.max_level
|
||||
return max if exp >= maximum_exp
|
||||
for level in 1..max
|
||||
|
||||
@@ -21,22 +21,29 @@ module GameData
|
||||
attr_reader :must_walk
|
||||
attr_reader :ignore_passability
|
||||
|
||||
#oricorio
|
||||
attr_reader :acroBike
|
||||
|
||||
|
||||
# oricorio
|
||||
attr_reader :flowerRed
|
||||
attr_reader :flowerPink
|
||||
attr_reader :flowerYellow
|
||||
attr_reader :flowerBlue
|
||||
attr_reader :flower
|
||||
|
||||
#common objects
|
||||
attr_reader :trashcan
|
||||
attr_reader :chair
|
||||
|
||||
attr_reader :chair
|
||||
|
||||
attr_reader :sharpedoObstacle
|
||||
attr_reader :underwater #only visible when diving
|
||||
attr_reader :underwater # only visible when diving
|
||||
|
||||
attr_reader :secretBase_tree
|
||||
attr_reader :secretBase_cave
|
||||
attr_reader :secretBase_bush
|
||||
|
||||
|
||||
DATA = {}
|
||||
|
||||
extend ClassMethods
|
||||
@@ -74,7 +81,7 @@ module GameData
|
||||
@ice = hash[:ice] || false
|
||||
@waterCurrent = hash[:waterCurrent] || false
|
||||
@bridge = hash[:bridge] || false
|
||||
@shows_reflections = hash[:shows_reflections] || false
|
||||
@shows_reflections = hash[:shows_reflections] || false
|
||||
@must_walk = hash[:must_walk] || false
|
||||
@ignore_passability = hash[:ignore_passability] || false
|
||||
@ignore_passability = hash[:ignore_passability] || false
|
||||
@@ -85,7 +92,11 @@ module GameData
|
||||
@flowerBlue = hash[:flowerBlue] || false
|
||||
@flower = hash[:flower] || false
|
||||
@trashcan = hash[:trashcan] || false
|
||||
@sharpedoObstacle = hash[:sharpedoObstacle] || false
|
||||
|
||||
@acroBike = hash[:acroBike] || false
|
||||
@chair = hash[:chair] || false
|
||||
|
||||
@sharpedoObstacle = hash[:chair] || false
|
||||
@underwater = hash[:underwater] || false
|
||||
|
||||
@secretBase_tree = hash[:secretBase_tree] || false
|
||||
@@ -156,8 +167,6 @@ GameData::TerrainTag.register({
|
||||
:battle_environment => :MovingWater
|
||||
})
|
||||
|
||||
|
||||
|
||||
GameData::TerrainTag.register({
|
||||
:id => :Water,
|
||||
:id_number => 7,
|
||||
@@ -306,7 +315,7 @@ GameData::TerrainTag.register({
|
||||
:can_surf => true,
|
||||
:can_fish => true,
|
||||
:battle_environment => :StillWater,
|
||||
:shows_reflections => true
|
||||
:shows_reflections => true
|
||||
})
|
||||
|
||||
GameData::TerrainTag.register({
|
||||
@@ -316,7 +325,6 @@ GameData::TerrainTag.register({
|
||||
:underwater => true,
|
||||
})
|
||||
|
||||
|
||||
GameData::TerrainTag.register({
|
||||
:id => :Secretbase_Tree,
|
||||
:id_number => 29,
|
||||
@@ -333,4 +341,22 @@ GameData::TerrainTag.register({
|
||||
:id => :Secretbase_Bush,
|
||||
:id_number => 31,
|
||||
:secretBase_bush => true,
|
||||
})
|
||||
|
||||
GameData::TerrainTag.register({
|
||||
:id => :Chair,
|
||||
:id_number => 32,
|
||||
:chair => true
|
||||
})
|
||||
|
||||
GameData::TerrainTag.register({
|
||||
:id => :Stairs,
|
||||
:id_number => 33,
|
||||
:must_walk => true
|
||||
})
|
||||
|
||||
GameData::TerrainTag.register({
|
||||
:id => :AcroBike,
|
||||
:id_number => 34,
|
||||
:acroBike => true,
|
||||
})
|
||||
@@ -191,4 +191,26 @@ GameData::Weather.register({
|
||||
:tone_proc => proc { |strength|
|
||||
next Tone.new(64, 64, 32, 0)
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
GameData::Weather.register({
|
||||
:id => :Ash,
|
||||
:id_number => 12,
|
||||
:graphics => [["ash_1", "ash_2", "ash_3"]],
|
||||
:particle_delta_x => 20,
|
||||
:particle_delta_y => 100,
|
||||
:tone_proc => proc { |strength|
|
||||
next Tone.new(strength / 2, strength / 2, strength / 2, 0)
|
||||
}
|
||||
})
|
||||
|
||||
GameData::Weather.register({ #Used underwater
|
||||
:id => :Bubbles,
|
||||
:id_number => 13,
|
||||
:graphics => [["bubble_1", "bubble_2", "bubble_3"]],
|
||||
:particle_delta_x => 20,
|
||||
:particle_delta_y => 40,
|
||||
:tone_proc => proc { |strength|
|
||||
next Tone.new(strength / 2, strength / 2, strength / 2, 0)
|
||||
}
|
||||
})
|
||||
@@ -55,6 +55,7 @@ GameData::EncounterType.register({
|
||||
:old_slots => [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]
|
||||
})
|
||||
|
||||
|
||||
GameData::EncounterType.register({
|
||||
:id => :LandDay,
|
||||
:type => :land,
|
||||
|
||||
@@ -129,3 +129,9 @@ GameData::Environment.register({
|
||||
:id => :UltraSpace,
|
||||
:name => _INTL("Ultra Space")
|
||||
})
|
||||
|
||||
GameData::Environment.register({
|
||||
:id => :Bridge,
|
||||
:name => _INTL("Bridge"),
|
||||
:battle_base => "Bridge"
|
||||
})
|
||||
|
||||
@@ -66,12 +66,17 @@ module Effectiveness
|
||||
SUPER_EFFECTIVE_ONE = 4
|
||||
NORMAL_EFFECTIVE = NORMAL_EFFECTIVE_ONE ** 3
|
||||
|
||||
NOT_VERY_EFFECTIVE = 4
|
||||
EXTREMELY_EFFECTIVE = 32
|
||||
module_function
|
||||
|
||||
def ineffective?(value)
|
||||
return value == INEFFECTIVE
|
||||
end
|
||||
|
||||
def mostly_ineffective?(value)
|
||||
return value > INEFFECTIVE && value < NOT_VERY_EFFECTIVE
|
||||
end
|
||||
def not_very_effective?(value)
|
||||
return value > INEFFECTIVE && value < NORMAL_EFFECTIVE
|
||||
end
|
||||
@@ -88,6 +93,10 @@ module Effectiveness
|
||||
return value > NORMAL_EFFECTIVE
|
||||
end
|
||||
|
||||
def extremely_effective?(value)
|
||||
return value >= EXTREMELY_EFFECTIVE
|
||||
end
|
||||
|
||||
def ineffective_type?(attack_type, defend_type1, defend_type2 = nil, defend_type3 = nil)
|
||||
value = calculate(attack_type, defend_type1, defend_type2, defend_type3)
|
||||
return ineffective?(value)
|
||||
|
||||
@@ -192,26 +192,23 @@ module GameData
|
||||
end
|
||||
# @return [String] the translated name of this species
|
||||
def name
|
||||
return @real_name
|
||||
#return pbGetMessage(MessageTypes::Species, @id_number)
|
||||
ret = MessageTypes.get(MessageTypes::Species, @id_number)
|
||||
return (ret && !ret.empty?) ? ret : @real_name
|
||||
end
|
||||
|
||||
# @return [String] the translated name of this form of this species
|
||||
def form_name
|
||||
return @real_form_name
|
||||
#return pbGetMessage(MessageTypes::FormNames, @id_number)
|
||||
ret = MessageTypes.get(MessageTypes::FormNames, @id_number)
|
||||
return (ret && !ret.empty?) ? ret : @real_form_name
|
||||
end
|
||||
|
||||
# @return [String] the translated Pokédex category of this species
|
||||
def category
|
||||
return @real_category
|
||||
#return pbGetMessage(MessageTypes::Kinds, @id_number)
|
||||
ret = MessageTypes.get(MessageTypes::Kinds, @id_number)
|
||||
return (ret && !ret.empty?) ? ret : @real_category
|
||||
end
|
||||
|
||||
# @return [String] the translated Pokédex entry of this species
|
||||
def pokedex_entry
|
||||
return @real_pokedex_entry
|
||||
#return pbGetMessage(MessageTypes::Entries, @id_number)
|
||||
ret = MessageTypes.get(MessageTypes::Entries, @id_number)
|
||||
return (ret && !ret.empty?) ? ret : @real_pokedex_entry
|
||||
end
|
||||
|
||||
def is_fusion
|
||||
@@ -287,6 +284,40 @@ module GameData
|
||||
return ret
|
||||
end
|
||||
|
||||
def get_ordered_family_species(exclude_invalid = true)
|
||||
baby = self.get_baby_species
|
||||
tree = GameData::Species.get(baby).build_evo_tree(exclude_invalid)
|
||||
result = []
|
||||
flatten_evo_tree(tree, result)
|
||||
return result
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def flatten_evo_tree(node, result)
|
||||
result << node[:species]
|
||||
node[:children].each { |child| flatten_evo_tree(child, result) }
|
||||
end
|
||||
|
||||
def build_evo_tree(exclude_invalid = true)
|
||||
evos = self.get_evolutions(exclude_invalid)
|
||||
evos = evos.sort do |a, b|
|
||||
a_is_level = (a[1] == :Level)
|
||||
b_is_level = (b[1] == :Level)
|
||||
if a_is_level && b_is_level
|
||||
(a[2] || 0) <=> (b[2] || 0)
|
||||
elsif a_is_level then -1
|
||||
elsif b_is_level then 1
|
||||
else a[1].to_s <=> b[1].to_s
|
||||
end
|
||||
end
|
||||
|
||||
{
|
||||
species: @species,
|
||||
children: evos.map { |evo| GameData::Species.get(evo[0]).build_evo_tree(exclude_invalid) }
|
||||
}
|
||||
end
|
||||
|
||||
def get_previous_species
|
||||
return @species if @evolutions.length == 0
|
||||
@evolutions.each { |evo| return evo[0] if evo[3] } # Is the prevolution
|
||||
|
||||
@@ -226,7 +226,8 @@ module GameData
|
||||
|
||||
def self.play_cry_from_species(species, form = 0, volume = 90, pitch = 100)
|
||||
dex_num = getDexNumberForSpecies(species)
|
||||
return if !dex_num
|
||||
return unless dex_num
|
||||
return unless dex_num.is_a?(Integer)
|
||||
return play_triple_fusion_cry(species, volume, pitch) if dex_num > Settings::ZAPMOLCUNO_NB
|
||||
if dex_num > NB_POKEMON
|
||||
body_number = getBodyID(dex_num)
|
||||
@@ -254,9 +255,6 @@ module GameData
|
||||
|
||||
def self.play_triple_fusion_cry(species_id, volume, pitch)
|
||||
fusion_components = get_triple_fusion_components(species_id)
|
||||
|
||||
echoln fusion_components
|
||||
echoln species_id
|
||||
for id in fusion_components
|
||||
cry_filename = self.check_cry_file(id,nil)
|
||||
pbSEPlay(cry_filename,volume-10) rescue nil
|
||||
|
||||
@@ -45,10 +45,10 @@ module GameData
|
||||
|
||||
def self.front_sprite_filename(tr_type)
|
||||
tr_type_data = self.try_get(tr_type)
|
||||
path = "Graphics/Trainers/"
|
||||
file = sprintf("trainer%03d", tr_type_data.id_number)
|
||||
ret = path + file
|
||||
return ret if pbResolveBitmap(ret)
|
||||
path = "Graphics/Trainers/#{tr_type.to_s}"
|
||||
#file = sprintf("trainer%03d", tr_type_data.id_number)
|
||||
#ret = path + file
|
||||
return path if pbResolveBitmap(path)
|
||||
end
|
||||
|
||||
def self.player_front_sprite_filename(tr_type)
|
||||
|
||||
@@ -11,12 +11,17 @@ module GameData
|
||||
|
||||
|
||||
attr_accessor :loseText_rematch
|
||||
attr_accessor :loseText_rematch_double
|
||||
|
||||
attr_accessor :battleText
|
||||
attr_accessor :preRematchText
|
||||
attr_accessor :preRematchText_caught
|
||||
attr_accessor :preRematchText_evolved
|
||||
attr_accessor :preRematchText_fused
|
||||
attr_accessor :preRematchText_unfused
|
||||
attr_accessor :preRematchText_reversed
|
||||
attr_accessor :preRematchText_gift
|
||||
attr_accessor :infoText
|
||||
|
||||
DATA = {}
|
||||
DATA_FILENAME = "trainers.dat"
|
||||
@@ -28,6 +33,8 @@ module GameData
|
||||
"Form" => [:form, "u"],
|
||||
"Name" => [:name, "s"],
|
||||
"Moves" => [:moves, "*e", :Move],
|
||||
"MovesHard" => [:moves_hard, "*e", :Move],
|
||||
"MovesEasy" => [:moves_easy, "*e", :Move],
|
||||
"Ability" => [:ability, "s"],
|
||||
"AbilityIndex" => [:ability_index, "u"],
|
||||
"Item" => [:item, "e", :Item],
|
||||
@@ -42,12 +49,16 @@ module GameData
|
||||
"Ball" => [:poke_ball, "s"],
|
||||
|
||||
"LoseTextRematch" => [:loseText_rematch, "s"],
|
||||
"LoseTextRematchDouble" => [:loseText_rematch_double, "s"],
|
||||
"BattleText" => [:battleText, "s"],
|
||||
"PreRematchText" => [:preRematchText, "s"],
|
||||
"PreRematchText_caught" => [:preRematchText_caught, "s"],
|
||||
"PreRematchText_evolved" => [:preRematchText_evolved, "s"],
|
||||
"PreRematchText_fused" => [:preRematchText_fused, "s"],
|
||||
"PreRematchText_unfused" => [:preRematchText_unfused, "s"],
|
||||
"PreRematchText_reversed" => [:preRematchText_reversed, "s"],
|
||||
"PreRematchText_gift" => [:preRematchText_gift, "s"],
|
||||
"TrainerInfo" => [:infoText, "s"],
|
||||
|
||||
|
||||
}
|
||||
@@ -112,14 +123,17 @@ module GameData
|
||||
pkmn[:ev][s.id] ||= 0 if pkmn[:ev]
|
||||
end
|
||||
end
|
||||
|
||||
@battleText = hash[:battleText]
|
||||
@loseText_rematch = hash[:loseText_rematch] || @real_lose_text
|
||||
@preRematchText = hash[:preRematchText] || "Are you up for a rematch? Or maybe you want to trade..."
|
||||
@preRematchText = hash[:preRematchText] || _INTL("Are you up for a rematch? Or maybe you want to trade...")
|
||||
@preRematchText_caught = hash[:preRematchText_caught] || @preRematchText
|
||||
@preRematchText_evolved = hash[:preRematchText_evolved] || @preRematchText
|
||||
@preRematchText_fused = hash[:preRematchText_fused] || @preRematchText
|
||||
@preRematchText_unfused = hash[:preRematchText_unfused] || @preRematchText
|
||||
@preRematchText_reversed = hash[:preRematchText_reversed] || @preRematchText
|
||||
@preRematchText_gift = hash[:preRematchText_gift] || @preRematchText
|
||||
@infoText = hash[:infoText]
|
||||
|
||||
end
|
||||
|
||||
# @return [String] the translated name of this trainer
|
||||
@@ -127,6 +141,10 @@ module GameData
|
||||
return pbGetMessageFromHash(MessageTypes::TrainerNames, @real_name)
|
||||
end
|
||||
|
||||
def battle_text
|
||||
return pbGetMessageFromHash(MessageTypes::BeginSpeech, @battleText)
|
||||
end
|
||||
|
||||
# @return [String] the translated in-battle lose message of this trainer
|
||||
def lose_text
|
||||
return pbGetMessageFromHash(MessageTypes::TrainerLoseText, @real_lose_text)
|
||||
@@ -160,6 +178,14 @@ module GameData
|
||||
return pbGetMessageFromHash(MessageTypes::BeginSpeech, @preRematchText_reversed)
|
||||
end
|
||||
|
||||
def preRematch_text_gift
|
||||
return pbGetMessageFromHash(MessageTypes::BeginSpeech, @preRematchText_gift)
|
||||
end
|
||||
|
||||
def infoText
|
||||
return pbGetMessageFromHash(MessageTypes::TrainerInfoText, @infoText)
|
||||
end
|
||||
|
||||
def replace_species_with_placeholder(species)
|
||||
case species
|
||||
when Settings::RIVAL_STARTER_PLACEHOLDER_SPECIES
|
||||
@@ -186,6 +212,7 @@ module GameData
|
||||
end
|
||||
|
||||
def generateRandomGymSpecies(old_species)
|
||||
echoln "GENERATING GYM SPECIES"
|
||||
gym_index = pbGet(VAR_CURRENT_GYM_TYPE)
|
||||
return old_species if gym_index == -1
|
||||
return generateRandomChampionSpecies(old_species) if gym_index == 999
|
||||
@@ -195,10 +222,12 @@ module GameData
|
||||
customsList = getCustomSpeciesList()
|
||||
bst_range = pbGet(VAR_RANDOMIZER_TRAINER_BST)
|
||||
gym_type = GameData::Type.get(type_id)
|
||||
echoln "type: #{gym_type.id}"
|
||||
|
||||
while true
|
||||
new_species = $game_switches[SWITCH_RANDOM_GYM_CUSTOMS] ? getSpecies(getNewCustomSpecies(old_species, customsList, bst_range)) : getSpecies(getNewSpecies(old_species, bst_range))
|
||||
if new_species.hasType?(gym_type) || $game_switches[SWITCH_RANDOM_GYM_CUSTOMS] || $game_switches[SWITCH_LEGENDARY_MODE]
|
||||
# Note: gym Type validation is handled in-house for legendary mode
|
||||
return new_species if $game_switches[SWITCH_LEGENDARY_MODE] # new_species = $game_switches[SWITCH_RANDOM_GYM_CUSTOMS] ? getSpecies(getNewCustomSpecies(old_species, customsList, bst_range)) : getSpecies(getNewSpecies(old_species, bst_range))
|
||||
if new_species.hasType?(gym_type)
|
||||
return new_species
|
||||
end
|
||||
end
|
||||
@@ -248,7 +277,7 @@ module GameData
|
||||
end
|
||||
|
||||
def replace_species_to_randomized_regular(species, trainerId, pokemonIndex)
|
||||
if $PokemonGlobal.randomTrainersHash[trainerId] == nil
|
||||
if !$PokemonGlobal.randomTrainersHash || $PokemonGlobal.randomTrainersHash[trainerId] == nil
|
||||
Kernel.pbMessage(_INTL("The trainers need to be re-shuffled."))
|
||||
Kernel.pbShuffleTrainers()
|
||||
end
|
||||
@@ -384,7 +413,11 @@ module GameData
|
||||
else
|
||||
pkmn.item = pkmn_data[:item]
|
||||
end
|
||||
if pkmn_data[:moves] && pkmn_data[:moves].length > 0 && original_species == species
|
||||
if pkmn_data[:moves_hard] && pkmn_data[:moves_hard].length > 0 && $game_switches[SWITCH_GAME_DIFFICULTY_HARD] && original_species == species
|
||||
pkmn_data[:moves_hard].each { |move| pkmn.learn_move(move) }
|
||||
elsif pkmn_data[:moves_easy] && pkmn_data[:moves_easy].length > 0 && $game_switches[SWITCH_GAME_DIFFICULTY_EASY] && original_species == species
|
||||
pkmn_data[:moves_easy].each { |move| pkmn.learn_move(move) }
|
||||
elsif pkmn_data[:moves] && pkmn_data[:moves].length > 0 && original_species == species
|
||||
pkmn_data[:moves].each { |move| pkmn.learn_move(move) }
|
||||
else
|
||||
pkmn.reset_moves
|
||||
@@ -392,13 +425,6 @@ module GameData
|
||||
pkmn.ability_index = pkmn_data[:ability_index]
|
||||
pkmn.ability = pkmn_data[:ability]
|
||||
|
||||
if $game_switches[SWITCH_DOUBLE_ABILITIES] && pkmn.isFusion?
|
||||
secondary_ability_index = pkmn.ability_index == 0 ? 1 : 0
|
||||
pkmn.ability2_index = secondary_ability_index
|
||||
pkmn.ability2 = pkmn.getAbilityList[secondary_ability_index][0]
|
||||
#print "Primary: {1}, Secondary: {2}",pkmn.ability.id, pkmn.ability2.id
|
||||
end
|
||||
|
||||
pkmn.gender = pkmn_data[:gender] || ((trainer.male?) ? 0 : 1)
|
||||
pkmn.shiny = (pkmn_data[:shininess]) ? true : false
|
||||
if pkmn_data[:nature]
|
||||
|
||||
@@ -14,6 +14,7 @@ module GameData
|
||||
attr_reader :snap_edges
|
||||
attr_reader :random_dungeon
|
||||
attr_reader :battle_background
|
||||
attr_reader :battle_background_water
|
||||
attr_reader :wild_battle_BGM
|
||||
attr_reader :trainer_battle_BGM
|
||||
attr_reader :wild_victory_ME
|
||||
@@ -39,13 +40,14 @@ module GameData
|
||||
"SnapEdges" => [11, "b"],
|
||||
"Dungeon" => [12, "b"],
|
||||
"BattleBack" => [13, "s"],
|
||||
"WildBattleBGM" => [14, "s"],
|
||||
"TrainerBattleBGM" => [15, "s"],
|
||||
"WildVictoryME" => [16, "s"],
|
||||
"TrainerVictoryME" => [17, "s"],
|
||||
"WildCaptureME" => [18, "s"],
|
||||
"MapSize" => [19, "us"],
|
||||
"Environment" => [20, "e", :Environment]
|
||||
"BattleBackWater" => [14, "s"],
|
||||
"WildBattleBGM" => [15, "s"],
|
||||
"TrainerBattleBGM" => [16, "s"],
|
||||
"WildVictoryME" => [17, "s"],
|
||||
"TrainerVictoryME" => [18, "s"],
|
||||
"WildCaptureME" => [19, "s"],
|
||||
"MapSize" => [20, "us"],
|
||||
"Environment" => [21, "e", :Environment]
|
||||
}
|
||||
|
||||
extend ClassMethodsIDNumbers
|
||||
@@ -66,6 +68,7 @@ module GameData
|
||||
["SnapEdges", BooleanProperty, _INTL("If true, when the player goes near this map's edge, the game doesn't center the player as usual.")],
|
||||
["Dungeon", BooleanProperty, _INTL("If true, this map has a randomly generated layout. See the wiki for more information.")],
|
||||
["BattleBack", StringProperty, _INTL("PNG files named 'XXX_bg', 'XXX_base0', 'XXX_base1', 'XXX_message' in Battlebacks folder, where XXX is this property's value.")],
|
||||
["BattleBackWater", StringProperty, _INTL("PNG files named 'XXX_bg', 'XXX_base0', 'XXX_base1', 'XXX_message' in Battlebacks folder, where XXX is this property's value.")],
|
||||
["WildBattleBGM", BGMProperty, _INTL("Default BGM for wild Pokémon battles on this map.")],
|
||||
["TrainerBattleBGM", BGMProperty, _INTL("Default BGM for trainer battles on this map.")],
|
||||
["WildVictoryME", MEProperty, _INTL("Default ME played after winning a wild Pokémon battle on this map.")],
|
||||
@@ -91,6 +94,7 @@ module GameData
|
||||
@snap_edges = hash[:snap_edges]
|
||||
@random_dungeon = hash[:random_dungeon]
|
||||
@battle_background = hash[:battle_background]
|
||||
@battle_background_water = hash[:battle_background_water]
|
||||
@wild_battle_BGM = hash[:wild_battle_BGM]
|
||||
@trainer_battle_BGM = hash[:trainer_battle_BGM]
|
||||
@wild_victory_ME = hash[:wild_victory_ME]
|
||||
@@ -115,6 +119,7 @@ module GameData
|
||||
when "SnapEdges" then return @snap_edges
|
||||
when "Dungeon" then return @random_dungeon
|
||||
when "BattleBack" then return @battle_background
|
||||
when "BattleBackWater" then return @battle_background_water
|
||||
when "WildBattleBGM" then return @wild_battle_BGM
|
||||
when "TrainerBattleBGM" then return @trainer_battle_BGM
|
||||
when "WildVictoryME" then return @wild_victory_ME
|
||||
|
||||
Reference in New Issue
Block a user