rematch evolution fix

mist stone fix
evolution scene resize
This commit is contained in:
infinitefusion
2021-12-21 11:02:17 -05:00
parent d0b1796ed3
commit 162dac0e0e
8 changed files with 99 additions and 92 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -458,16 +458,20 @@ class PokemonEvolutionScene
if canceled if canceled
pbRestoreSpriteState(@sprites["rsprite1"],oldstate) pbRestoreSpriteState(@sprites["rsprite1"],oldstate)
pbRestoreSpriteState(@sprites["rsprite2"],oldstate2) pbRestoreSpriteState(@sprites["rsprite2"],oldstate2)
@sprites["rsprite1"].zoom_x = 1.0 @sprites["rsprite1"].zoom_x = Settings::FRONTSPRITE_SCALE
@sprites["rsprite1"].zoom_y = 1.0 @sprites["rsprite1"].zoom_y = Settings::FRONTSPRITE_SCALE
@sprites["rsprite2"].zoom_x = Settings::FRONTSPRITE_SCALE
@sprites["rsprite2"].zoom_y = Settings::FRONTSPRITE_SCALE
@sprites["rsprite1"].color.alpha = 0 @sprites["rsprite1"].color.alpha = 0
@sprites["rsprite1"].visible = true @sprites["rsprite1"].visible = true
@sprites["rsprite2"].visible = false @sprites["rsprite2"].visible = false
else else
@sprites["rsprite1"].visible = false @sprites["rsprite1"].visible = false
@sprites["rsprite2"].visible = true @sprites["rsprite2"].visible = true
@sprites["rsprite2"].zoom_x = 1.0 @sprites["rsprite1"].zoom_x = Settings::FRONTSPRITE_SCALE
@sprites["rsprite2"].zoom_y = 1.0 @sprites["rsprite1"].zoom_y = Settings::FRONTSPRITE_SCALE
@sprites["rsprite2"].zoom_x = Settings::FRONTSPRITE_SCALE
@sprites["rsprite2"].zoom_y = Settings::FRONTSPRITE_SCALE
@sprites["rsprite2"].color.alpha = 0 @sprites["rsprite2"].color.alpha = 0
end end
(Graphics.frame_rate/4).times do (Graphics.frame_rate/4).times do
@@ -513,6 +517,10 @@ class PokemonEvolutionScene
@sprites["rsprite1"] = rsprite1 @sprites["rsprite1"] = rsprite1
@sprites["rsprite2"] = rsprite2 @sprites["rsprite2"] = rsprite2
pbGenerateMetafiles(rsprite1.ox,rsprite1.oy,rsprite2.ox,rsprite2.oy) pbGenerateMetafiles(rsprite1.ox,rsprite1.oy,rsprite2.ox,rsprite2.oy)
@sprites["rsprite1"].zoom_x = Settings::FRONTSPRITE_SCALE
@sprites["rsprite1"].zoom_y = Settings::FRONTSPRITE_SCALE
@sprites["rsprite2"].zoom_x = Settings::FRONTSPRITE_SCALE
@sprites["rsprite2"].zoom_y = Settings::FRONTSPRITE_SCALE
@sprites["msgwindow"] = pbCreateMessageWindow(@msgviewport) @sprites["msgwindow"] = pbCreateMessageWindow(@msgviewport)
pbFadeInAndShow(@sprites) { pbUpdate } pbFadeInAndShow(@sprites) { pbUpdate }
end end

View File

@@ -119,8 +119,11 @@ def pbChooseSpeciesList(default = nil)
# commands = [] # commands = []
# GameData::Species.each { |s| commands.push([s.id_number, s.real_name, s.id]) if s.form == 0 } # GameData::Species.each { |s| commands.push([s.id_number, s.real_name, s.id]) if s.form == 0 }
# return pbChooseList(commands, default, nil, -1) # return pbChooseList(commands, default, nil, -1)
#
defaultNumber = default == nil ? 1 : getDexNumberForSpecies(default)
params = ChooseNumberParams.new params = ChooseNumberParams.new
params.setRange(1,PBSpecies.maxValue) params.setRange(1,PBSpecies.maxValue)
params.setInitialValue(defaultNumber)
dexNum = pbMessageChooseNumber("dex number?",params) dexNum = pbMessageChooseNumber("dex number?",params)
return GameData::Species.get(dexNum) return GameData::Species.get(dexNum)
end end

View File

@@ -81,11 +81,11 @@ def useLantern()
end end
Kernel.pbMessage(_INTL("The Lantern illuminated the cave!")) Kernel.pbMessage(_INTL("The Lantern illuminated the cave!"))
darkness.radius += 176 darkness.radius += 176
while darkness.radius<176 while darkness.radius < 176
Graphics.update Graphics.update
Input.update Input.update
pbUpdateSceneMapd pbUpdateSceneMapd
darkness.radius+=4 darkness.radius += 4
end end
return true return true
end end
@@ -107,7 +107,7 @@ ItemHandlers::UseInField.add(:TELEPORTER, proc { |item|
}) })
def useTeleporter() def useTeleporter()
if HiddenMoveHandlers.triggerCanUseMove(:TELEPORT, 0,true) if HiddenMoveHandlers.triggerCanUseMove(:TELEPORT, 0, true)
Kernel.pbMessage(_INTL("Teleport to where?", $Trainer.name)) Kernel.pbMessage(_INTL("Teleport to where?", $Trainer.name))
ret = pbBetterRegionMap(-1, true, true) ret = pbBetterRegionMap(-1, true, true)
pbShowMenu unless ret pbShowMenu unless ret
@@ -210,11 +210,11 @@ ItemHandlers::UseFromBag.add(:LANTERN, proc { |item|
Kernel.pbMessage(_INTL("The Lantern illuminated the cave!")) Kernel.pbMessage(_INTL("The Lantern illuminated the cave!"))
$PokemonGlobal.flashUsed = true $PokemonGlobal.flashUsed = true
darkness.radius += 176 darkness.radius += 176
while darkness.radius<176 while darkness.radius < 176
Graphics.update Graphics.update
Input.update Input.update
pbUpdateSceneMap pbUpdateSceneMap
darkness.radius+=4 darkness.radius += 4
end end
next true next true
}) })
@@ -389,8 +389,8 @@ ItemHandlers::UseOnPokemon.add(:MISTSTONE, proc { |item, pokemon, scene|
end end
}) })
ItemHandlers::UseFromBag.add(:DEBUGGER,proc{|item| ItemHandlers::UseFromBag.add(:DEBUGGER, proc { |item|
Kernel.pbMessage(_INTL("[{1}]The debugger should ONLY be used if you are stuck somewhere because of a glitch.",Settings::GAME_VERSION_NUMBER)) Kernel.pbMessage(_INTL("[{1}]The debugger should ONLY be used if you are stuck somewhere because of a glitch.", Settings::GAME_VERSION_NUMBER))
if Kernel.pbConfirmMessageSerious(_INTL("Innapropriate use of this item can lead to unwanted effects and make the game unplayable. Do you want to continue?")) if Kernel.pbConfirmMessageSerious(_INTL("Innapropriate use of this item can lead to unwanted effects and make the game unplayable. Do you want to continue?"))
$game_player.cancelMoveRoute() $game_player.cancelMoveRoute()
Kernel.pbStartOver(false) Kernel.pbStartOver(false)
@@ -398,7 +398,7 @@ ItemHandlers::UseFromBag.add(:DEBUGGER,proc{|item|
end end
}) })
ItemHandlers::UseFromBag.add(:MAGICBOOTS,proc{|item| ItemHandlers::UseFromBag.add(:MAGICBOOTS, proc { |item|
if $DEBUG if $DEBUG
if Kernel.pbConfirmMessageSerious(_INTL("Take off the Magic Boots?")) if Kernel.pbConfirmMessageSerious(_INTL("Take off the Magic Boots?"))
$DEBUG = false $DEBUG = false
@@ -413,7 +413,6 @@ ItemHandlers::UseFromBag.add(:MAGICBOOTS,proc{|item|
next 1 next 1
}) })
def pbForceEvo(pokemon) def pbForceEvo(pokemon)
newspecies = getEvolvedSpecies(pokemon) newspecies = getEvolvedSpecies(pokemon)
return false if newspecies == -1 return false if newspecies == -1
@@ -471,7 +470,6 @@ ItemHandlers::UseOnPokemon.add(:DNASPLICERS, proc { |item, pokemon, scene|
next false next false
}) })
ItemHandlers::UseOnPokemon.add(:DNAREVERSER, proc { |item, pokemon, scene| ItemHandlers::UseOnPokemon.add(:DNAREVERSER, proc { |item, pokemon, scene|
if !pokemon.isFusion? if !pokemon.isFusion?
scene.pbDisplay(_INTL("It won't have any effect.")) scene.pbDisplay(_INTL("It won't have any effect."))
@@ -534,7 +532,6 @@ ItemHandlers::UseOnPokemon.add(:INFINITEREVERSERS, proc { |item, pokemon, scene|
next false next false
}) })
# #
# def pbDNASplicing(pokemon, scene, supersplicers = false, superSplicer = false) # def pbDNASplicing(pokemon, scene, supersplicers = false, superSplicer = false)
# if (pokemon.species <= NB_POKEMON) # if (pokemon.species <= NB_POKEMON)
@@ -1191,21 +1188,22 @@ ItemHandlers::UseOnPokemon.add(:MISTSTONE, proc { |item, pokemon, scene|
}) })
def pbForceEvo(pokemon) def pbForceEvo(pokemon)
newspecies = getEvolvedSpecies(pokemon) evolutions = getEvolvedSpecies(pokemon)
return false if newspecies == -1 return false if evolutions.empty?
if newspecies > 0 #if multiple evolutions, pick a random one
evo = PokemonEvolutionScene.new #(format of returned value is [[speciesNum, level]])
evo.pbStartScreen(pokemon, newspecies) newspecies = evolutions[rand(evolutions.length - 1)][0]
evo.pbEvolution return false if newspecies == nil
evo.pbEndScreen evo = PokemonEvolutionScene.new
end evo.pbStartScreen(pokemon, newspecies)
evo.pbEvolution
evo.pbEndScreen
return true return true
end end
# format of returned value is [[speciesNum, evolutionMethod],[speciesNum, evolutionMethod],etc.]
def getEvolvedSpecies(pokemon) def getEvolvedSpecies(pokemon)
return pbCheckEvolutionEx(pokemon) { |pokemon, evonib, level, poke| return GameData::Species.get(pokemon.species).get_evolutions(true)
next pbMiniCheckEvolution(pokemon, evonib, level, poke, true)
}
end end
#(copie de fixEvolutionOverflow dans FusionScene) #(copie de fixEvolutionOverflow dans FusionScene)
@@ -1252,9 +1250,6 @@ ItemHandlers::UseOnPokemon.add(:DNASPLICERS, proc { |item, pokemon, scene|
next false next false
}) })
def pbDNASplicing(pokemon, scene, supersplicers = false, superSplicer = false) def pbDNASplicing(pokemon, scene, supersplicers = false, superSplicer = false)
playingBGM = $game_system.getPlayingBGM playingBGM = $game_system.getPlayingBGM
dexNumber = pokemon.species_data.id_number dexNumber = pokemon.species_data.id_number
@@ -1367,7 +1362,6 @@ def pbDNASplicing(pokemon, scene, supersplicers = false, superSplicer = false)
scene.pbDisplay(_INTL(" ... ")) scene.pbDisplay(_INTL(" ... "))
scene.pbDisplay(_INTL(" ... ")) scene.pbDisplay(_INTL(" ... "))
if pokemon.exp_when_fused_head == nil || pokemon.exp_when_fused_body == nil if pokemon.exp_when_fused_head == nil || pokemon.exp_when_fused_body == nil
new_level = calculateUnfuseLevelOldMethod(pokemon, supersplicers) new_level = calculateUnfuseLevelOldMethod(pokemon, supersplicers)
body_level = new_level body_level = new_level
@@ -1384,7 +1378,6 @@ def pbDNASplicing(pokemon, scene, supersplicers = false, superSplicer = false)
poke2.exp = exp_head poke2.exp = exp_head
end end
if $Trainer.party.length >= 6 if $Trainer.party.length >= 6
if (keepInParty == 0) if (keepInParty == 0)
$PokemonStorage.pbStoreCaught(poke2) $PokemonStorage.pbStoreCaught(poke2)

View File

@@ -25,7 +25,7 @@ end
# #
def incrNbRematches(trainerId) def incrNbRematches(trainerId)
$PokemonGlobal.rematchedTrainers.each do |key, trainer| $PokemonGlobal.rematchedTrainers.each do |key, trainer|
if(trainer.id == trainerId) if (trainer.id == trainerId)
trainer.incrementNbTimes() trainer.incrementNbTimes()
end end
end end
@@ -71,11 +71,6 @@ def addNewTrainerRematch(trainerId)
end end
def getNumberRematchOld(trainerId) def getNumberRematchOld(trainerId)
if $PokemonGlobal.rematchedTrainers == nil if $PokemonGlobal.rematchedTrainers == nil
$PokemonGlobal.rematchedTrainers = Hash.new $PokemonGlobal.rematchedTrainers = Hash.new
@@ -83,7 +78,7 @@ def getNumberRematchOld(trainerId)
end end
$PokemonGlobal.rematchedTrainers.each do |key, trainer| $PokemonGlobal.rematchedTrainers.each do |key, trainer|
if(trainer.id == trainerId) if (trainer.id == trainerId)
return (trainer.nbTimesRematched) return (trainer.nbTimesRematched)
end end
end end
@@ -91,12 +86,10 @@ def getNumberRematchOld(trainerId)
return 0 return 0
end end
def getRematchLevel(originalLevel, nbRematch)
levelCap = getLevelCap(originalLevel, $Trainer.numbadges)
def getRematchLevel(originalLevel,nbRematch)
levelCap = getLevelCap(originalLevel,$Trainer.numbadges)
expRate = getLevelRate(originalLevel) expRate = getLevelRate(originalLevel)
levelIncr =0 levelIncr = 0
for i in 0..nbRematch for i in 0..nbRematch
if i % expRate == 0 if i % expRate == 0
levelIncr += 1 levelIncr += 1
@@ -108,32 +101,31 @@ def getRematchLevel(originalLevel,nbRematch)
end end
def getLevelRate(originalLevel) def getLevelRate(originalLevel)
return 2 + (originalLevel/20).ceil return 2 + (originalLevel / 20).ceil
end end
def getLevelCap(originalLevel,nbBadges) def getLevelCap(originalLevel, nbBadges)
return 100 if $game_switches[599] #no cap in battle arena return 100 if $game_switches[599] #no cap in battle arena
cap = originalLevel + nbBadges +2 cap = originalLevel + nbBadges + 2
return cap < 100 ? cap : 100 return cap < 100 ? cap : 100
end end
def decreaseRematchNumber(trainerId) def decreaseRematchNumber(trainerId)
$PokemonGlobal.rematchedTrainers.each do |key, trainer| $PokemonGlobal.rematchedTrainers.each do |key, trainer|
if(trainer.id == trainerId) if (trainer.id == trainerId)
trainer.removeNbTimes() trainer.removeNbTimes()
return return
end end
end end
end end
def evolveRematchPokemon(nbRematch, speciesSymbol)
def evolveRematchPokemon(nbRematch,species) species = getDexNumberForSpecies(speciesSymbol)
if(nbRematch >= 10 && $Trainer.numbadges >= 3) if (nbRematch >= 10 && $Trainer.numbadges >= 3)
evospecies=getEvolution(species) evospecies = getEvolution(species)
return species if evospecies == -1 return species if evospecies == -1
if(nbRematch >= 20 && $Trainer.numbadges >= 8) if (nbRematch >= 20 && $Trainer.numbadges >= 8)
secondEvoSpecies=getEvolution(evospecies) secondEvoSpecies = getEvolution(evospecies)
return secondEvoSpecies == -1 ? evospecies : secondEvoSpecies return secondEvoSpecies == -1 ? evospecies : secondEvoSpecies
end end
return evospecies return evospecies
@@ -143,28 +135,40 @@ end
def getEvolution(species) def getEvolution(species)
if species >= Settings::NB_POKEMON if species >= Settings::NB_POKEMON
pokemon = PokeBattle_Pokemon.new(species,1)
body = getBasePokemonID(species) body = getBasePokemonID(species)
head = getBasePokemonID(species,false) head = getBasePokemonID(species, false)
ret_evoB = pbGetEvolvedFormData(body)
ret_evoH = pbGetEvolvedFormData(head) bodyPossibleEvolutions = GameData::Species.get(body).get_evolutions(true)
evoBody = ret_evoB.any? ? ret_evoB[0][2] : -1 headPossibleEvolutions = GameData::Species.get(head).get_evolutions(true)
evoHead = ret_evoH.any? ? ret_evoH[0][2] : -1
return -1 if isNegativeOrNull(evoBody) && isNegativeOrNull(evoHead) bodyCanEvolve = !bodyPossibleEvolutions.empty?
return body*Settings::NB_POKEMON+evoHead if isNegativeOrNull(evoBody) #only head evolves headCanEvolve = !headPossibleEvolutions.empty?
return evoBody*Settings::NB_POKEMON + head if isNegativeOrNull(evoHead) #only body evolves
return evoBody*Settings::NB_POKEMON+evoHead #both evolve evoBodySpecies = bodyCanEvolve ? bodyPossibleEvolutions[rand(bodyPossibleEvolutions.length - 1)][0] : nil
evoHeadSpecies = headCanEvolve ? headPossibleEvolutions[rand(headPossibleEvolutions.length - 1)][0] : nil
if evoBodySpecies != nil
evoBody= getDexNumberForSpecies(evoBodySpecies)
end
if evoHeadSpecies != nil
evoHead= getDexNumberForSpecies(evoHeadSpecies)
end
return -1 if evoBody == nil && evoHead == nil
return body * Settings::NB_POKEMON + evoHead if evoBody == nil #only head evolves
return evoBody * Settings::NB_POKEMON + head if evoHead == nil #only body evolves
return evoBody * Settings::NB_POKEMON + evoHead #both evolve
else else
evo = pbGetEvolvedFormData(species) evo = pbGetEvolvedFormData(species)
return evo.any? ? getDexNumberForSpecies(evo[0][0]) : -1 newSpecies = evo[rand(evo.length - 1)][0]
return evo.any? ? getDexNumberForSpecies(newSpecies) : -1
end end
end end
def getFusionSpecies(body, head)
def getFusionSpecies(body,head)
id = body * Settings::NB_POKEMON + head id = body * Settings::NB_POKEMON + head
return GameData::Species.get(id).species return GameData::Species.get(id).species
end end
# #
def evolveHead(species) def evolveHead(species)
species_id = getDexNumberForSpecies(species) species_id = getDexNumberForSpecies(species)
@@ -172,10 +176,10 @@ def evolveHead(species)
evo = getEvolution(species_id) evo = getEvolution(species_id)
return evo == -1 ? species_id : evo return evo == -1 ? species_id : evo
end end
head = getBasePokemonID(species_id,false) head = getBasePokemonID(species_id, false)
body = getBasePokemonID(species_id) body = getBasePokemonID(species_id)
headEvo = getEvolution(head) headEvo = getEvolution(head)
return headEvo == -1 ? species_id : getFusionSpecies(body,headEvo) return headEvo == -1 ? species_id : getFusionSpecies(body, headEvo)
end end
def evolveBody(species) def evolveBody(species)
@@ -184,49 +188,48 @@ def evolveBody(species)
evo = getEvolution(species_id) evo = getEvolution(species_id)
return evo == -1 ? species_id : evo return evo == -1 ? species_id : evo
end end
head = getBasePokemonID(species_id,false) head = getBasePokemonID(species_id, false)
body = getBasePokemonID(species_id) body = getBasePokemonID(species_id)
bodyEvo = getEvolution(body) bodyEvo = getEvolution(body)
return bodyEvo == -1 ? species_id : getFusionSpecies(bodyEvo,head) return bodyEvo == -1 ? species_id : getFusionSpecies(bodyEvo, head)
end end
def getCorrectEvolvedSpecies(pokemon) def getCorrectEvolvedSpecies(pokemon)
if pokemon.species >= Settings::NB_POKEMON if pokemon.species >= Settings::NB_POKEMON
body = getBasePokemonID(pokemon.species) body = getBasePokemonID(pokemon.species)
head = getBasePokemonID(pokemon.species,false) head = getBasePokemonID(pokemon.species, false)
ret1=-1;ret2=-1 ret1 = -1; ret2 = -1
for form in pbGetEvolvedFormData(body) for form in pbGetEvolvedFormData(body)
retB=yield pokemon,form[0],form[1],form[2] retB = yield pokemon, form[0], form[1], form[2]
break if retB>0 break if retB > 0
end end
for form in pbGetEvolvedFormData(head) for form in pbGetEvolvedFormData(head)
retH=yield pokemon,form[0],form[1],form[2] retH = yield pokemon, form[0], form[1], form[2]
break if retH>0 break if retH > 0
end end
return ret if ret == retB && ret == retH return ret if ret == retB && ret == retH
return fixEvolutionOverflow(retB,retH,pokemon.species) return fixEvolutionOverflow(retB, retH, pokemon.species)
else else
for form in pbGetEvolvedFormData(pokemon.species) for form in pbGetEvolvedFormData(pokemon.species)
newspecies=form[2] newspecies = form[2]
end end
return newspecies; return newspecies;
end end
end end
def printDebugRematchInfo(nbRematch, expRate, newLevel, levelCap, originalLevel)
def printDebugRematchInfo(nbRematch,expRate,newLevel,levelCap,originalLevel)
info = "" info = ""
info << "total rematched trainers: "+ $PokemonGlobal.rematchedTrainers.length.to_s + "\n" info << "total rematched trainers: " + $PokemonGlobal.rematchedTrainers.length.to_s + "\n"
info << "nb times: "+ nbRematch.to_s + "\n" info << "nb times: " + nbRematch.to_s + "\n"
info << "lvl up every " + expRate.to_s + " times" + "\n" info << "lvl up every " + expRate.to_s + " times" + "\n"
info << "original level: " << originalLevel.to_s + "\n" info << "original level: " << originalLevel.to_s + "\n"
info << "new level: " + newLevel.to_s + "\n" info << "new level: " + newLevel.to_s + "\n"
info << "level cap: "+ levelCap.to_s info << "level cap: " + levelCap.to_s
print info print info
end end
# #
# #
# #

Binary file not shown.