mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-08 21:54:58 +00:00
Fixed crash when using upgradeRibbon, fixed crash when trading Pokémon, fixed crash when trying to play Triple Triad, fixed crash when generating Battle Frontier data
This commit is contained in:
@@ -740,20 +740,20 @@ class Pokemon
|
|||||||
# Replaces one ribbon with the next one along, if possible. If none of the
|
# Replaces one ribbon with the next one along, if possible. If none of the
|
||||||
# given ribbons are owned, give the first one.
|
# given ribbons are owned, give the first one.
|
||||||
# @return [Symbol, String, GameData::Ribbon] ID of the ribbon that was gained
|
# @return [Symbol, String, GameData::Ribbon] ID of the ribbon that was gained
|
||||||
def upgradeRibbon(*arg)
|
def upgradeRibbon(*args)
|
||||||
for i in 0...arg.length - 1
|
args.each_with_index do |ribbon, i|
|
||||||
this_ribbon_data = GameData::Ribbon.try_get(i)
|
this_ribbon_data = GameData::Ribbon.try_get(ribbon)
|
||||||
next if !this_ribbon_data
|
next if !this_ribbon_data
|
||||||
for j in 0...@ribbons.length
|
for j in 0...@ribbons.length
|
||||||
next if @ribbons[j] != this_ribbon_data.id
|
next if @ribbons[j] != this_ribbon_data.id
|
||||||
next_ribbon_data = GameData::Ribbon.try_get(arg[i + 1])
|
next_ribbon_data = GameData::Ribbon.try_get(args[i + 1])
|
||||||
next if !next_ribbon_data
|
next if !next_ribbon_data
|
||||||
@ribbons[j] = next_ribbon_data.id
|
@ribbons[j] = next_ribbon_data.id
|
||||||
return @ribbons[j]
|
return @ribbons[j]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
first_ribbon_data = GameData::Ribbon.try_get(arg[0])
|
first_ribbon_data = GameData::Ribbon.try_get(args.first)
|
||||||
last_ribbon_data = GameData::Ribbon.try_get(arg[arg.length - 1])
|
last_ribbon_data = GameData::Ribbon.try_get(args.last)
|
||||||
if first_ribbon_data && last_ribbon_data && !hasRibbon?(last_ribbon_data.id)
|
if first_ribbon_data && last_ribbon_data && !hasRibbon?(last_ribbon_data.id)
|
||||||
giveRibbon(first_ribbon_data.id)
|
giveRibbon(first_ribbon_data.id)
|
||||||
return first_ribbon_data.id
|
return first_ribbon_data.id
|
||||||
|
|||||||
@@ -200,18 +200,17 @@ end
|
|||||||
def pbStartTrade(pokemonIndex,newpoke,nickname,trainerName,trainerGender=0)
|
def pbStartTrade(pokemonIndex,newpoke,nickname,trainerName,trainerGender=0)
|
||||||
$stats.trade_count += 1
|
$stats.trade_count += 1
|
||||||
myPokemon = $player.party[pokemonIndex]
|
myPokemon = $player.party[pokemonIndex]
|
||||||
opponent = NPCTrainer.new(trainerName,trainerGender)
|
|
||||||
opponent.id = $player.make_foreign_ID
|
|
||||||
yourPokemon = nil
|
yourPokemon = nil
|
||||||
resetmoves = true
|
resetmoves = true
|
||||||
if newpoke.is_a?(Pokemon)
|
if newpoke.is_a?(Pokemon)
|
||||||
newpoke.owner = Pokemon::Owner.new_from_trainer(opponent)
|
newpoke.owner = Pokemon::Owner.new_foreign(trainerName, trainerGender)
|
||||||
yourPokemon = newpoke
|
yourPokemon = newpoke
|
||||||
resetmoves = false
|
resetmoves = false
|
||||||
else
|
else
|
||||||
species_data = GameData::Species.try_get(newpoke)
|
species_data = GameData::Species.try_get(newpoke)
|
||||||
raise _INTL("Species does not exist ({1}).", newpoke) if !species_data
|
raise _INTL("Species {1} does not exist.", newpoke) if !species_data
|
||||||
yourPokemon = Pokemon.new(species_data.id, myPokemon.level, opponent)
|
yourPokemon = Pokemon.new(species_data.id, myPokemon.level)
|
||||||
|
yourPokemon.owner = Pokemon::Owner.new_foreign(trainerName, trainerGender)
|
||||||
end
|
end
|
||||||
yourPokemon.name = nickname
|
yourPokemon.name = nickname
|
||||||
yourPokemon.obtain_method = 2 # traded
|
yourPokemon.obtain_method = 2 # traded
|
||||||
@@ -221,7 +220,7 @@ def pbStartTrade(pokemonIndex,newpoke,nickname,trainerName,trainerGender=0)
|
|||||||
$player.pokedex.set_owned(yourPokemon.species)
|
$player.pokedex.set_owned(yourPokemon.species)
|
||||||
pbFadeOutInWithMusic {
|
pbFadeOutInWithMusic {
|
||||||
evo = PokemonTrade_Scene.new
|
evo = PokemonTrade_Scene.new
|
||||||
evo.pbStartScreen(myPokemon, yourPokemon, $player.name, opponent.name)
|
evo.pbStartScreen(myPokemon, yourPokemon, $player.name, trainerName)
|
||||||
evo.pbTrade
|
evo.pbTrade
|
||||||
evo.pbEndScreen
|
evo.pbEndScreen
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -730,7 +730,7 @@ class TriadScreen
|
|||||||
square = TriadSquare.new
|
square = TriadSquare.new
|
||||||
if @elements
|
if @elements
|
||||||
loop do
|
loop do
|
||||||
trial_type = type_keys[type_keys.sample]
|
trial_type = type_keys.sample
|
||||||
type_data = GameData::Type.get(trial_type)
|
type_data = GameData::Type.get(trial_type)
|
||||||
next if type_data.pseudo_type
|
next if type_data.pseudo_type
|
||||||
square.type = type_data.id
|
square.type = type_data.id
|
||||||
@@ -774,7 +774,7 @@ class TriadScreen
|
|||||||
species_keys = GameData::Species.keys
|
species_keys = GameData::Species.keys
|
||||||
candidates = []
|
candidates = []
|
||||||
while candidates.length < 200
|
while candidates.length < 200
|
||||||
card = species_keys[species_keys.sample]
|
card = species_keys.sample
|
||||||
card_data = GameData::Species.get(card)
|
card_data = GameData::Species.get(card)
|
||||||
card = card_data.id # Make sure it's a symbol
|
card = card_data.id # Make sure it's a symbol
|
||||||
triad = TriadCard.new(card)
|
triad = TriadCard.new(card)
|
||||||
|
|||||||
@@ -132,10 +132,10 @@ def isBattlePokemonDuplicate(pk, pk2)
|
|||||||
moves1.push((pk.moves[i]) ? pk.moves[i].id : nil)
|
moves1.push((pk.moves[i]) ? pk.moves[i].id : nil)
|
||||||
moves2.push((pk2.moves[i]) ? pk2.moves[i].id : nil)
|
moves2.push((pk2.moves[i]) ? pk2.moves[i].id : nil)
|
||||||
end
|
end
|
||||||
moves1.sort!
|
moves1.compact.sort
|
||||||
moves2.sort!
|
moves2.compact.sort
|
||||||
# Accept as same if moves are same and there are MAX_MOVES number of moves each
|
# Accept as same if moves are same and there are MAX_MOVES number of moves each
|
||||||
return true if moves1 == moves2 && moves1[Pokemon::MAX_MOVES - 1]
|
return true if moves1 == moves2 && moves1.length == Pokemon::MAX_MOVES
|
||||||
same_evs = true
|
same_evs = true
|
||||||
GameData::Stat.each_main { |s| same_evs = false if pk.ev[s.id] != pk2.ev[s.id] }
|
GameData::Stat.each_main { |s| same_evs = false if pk.ev[s.id] != pk2.ev[s.id] }
|
||||||
return pk.item_id == pk2.item_id && pk.nature_id == pk2.nature_id && same_evs
|
return pk.item_id == pk2.item_id && pk.nature_id == pk2.nature_id && same_evs
|
||||||
|
|||||||
Reference in New Issue
Block a user