Changed: PokemonMap @@ -15,0 +15,1 @@ + attr_accessor :partner @@ -25,0 +26,1 @@ + @partner=nil @@ -266,1 +268,1 @@ - @tilemap=0 + @tilemap=1 Changed: PokemonOption @@ -235,1 +235,1 @@ - EnumOption2.new(_INTL("MAP VIEW"),[_INTL("DEFAULT"),_INTL("CUSTOM"),_INTL("PERSPECTIVE")]), + EnumOption2.new(_INTL("MAP VIEW"),[_INTL("ORIGINAL"),_INTL("CUSTOM"),_INTL("PERSPECTIVE")]), @@ -271,0 +271,1 @@ + pbRefreshSceneMap Deleted: sasa Changed: AnimationSprite @@ -36,0 +36,12 @@ +def pbDayNightTint(object) + if !$scene.is_a?(Scene_Map) + return + else + if $game_map && pbGetMetadata($game_map.map_id,1) + pbSetDayNightTone(object.tone) + else + object.tone.set(0,0,0,0) + end + end +end + @@ -65,1 +77,1 @@ - pbSetDayNightTone(@viewport3.tone) + pbSetDayNightTone(@tilemap.tone) @@ -67,1 +79,1 @@ - @viewport3.tone.set(0,0,0,0) + @tilemap.tone.set(0,0,0,0) @@ -78,2 +90,6 @@ - if self.map==$game_map - tintScreen + if $PokemonSystem.tilemap==0 + if self.map==$game_map + pbDayNightTint(@viewport3) + else + @viewport3.tone.set(0,0,0,0) + end @@ -81,1 +97,1 @@ - @viewport3.tone.set(0,0,0,0) + pbDayNightTint(@tilemap) Changed: PerspectiveTilemap @@ -115,9 +115,3 @@ -################ -# Size of each strip of the map. Higher numbers will lag less. -# Recommended that this number be a power of 2. -# Do not make higher than 64. -StripSize = 8 -# Whether the map is curled, for overworlds (old method) -Curve = false -Pitch = 10 -############# + StripSize = 8 + Curve = false + Pitch = 10 @@ -133,1 +127,0 @@ - attr_accessor :plus_y @@ -136,0 +129,2 @@ + attr_accessor :color + attr_accessor :tone @@ -153,0 +148,2 @@ + @tone=Tone.new(0,0,0,0) + @color=Color.new(0,0,0,0) @@ -154,0 +151,1 @@ + @numsprites=0 @@ -210,0 +208,7 @@ + end + for s in @sprites + for sprite in s + next if !sprite.is_a?(Sprite) + sprite.tone=@tone + sprite.color=@color + end @@ -325,0 +330,2 @@ + sprite.tone=@tone + sprite.color=@color Changed: Sprite_Character @@ -67,0 +67,6 @@ + if $PokemonSystem.tilemap==0 || + (@character.is_a?(Game_Event) && @character.name=="RegularTone") + self.tone.set(0,0,0,0) + else + pbDayNightTint(self) + end Changed: Walk/Run @@ -2,6 +2,31 @@ -alias update_old update -def update -meta=pbGetMetadata(0,MetadataPlayerA+$PokemonGlobal.playerID) -if !$game_system.map_interpreter.running? && - !moving? && !@move_route_forcing - if $PokemonGlobal.playerID>=0 && meta && $PokemonGlobal && +def fullPattern + case self.direction + when 2 + return self.pattern + when 4 + return 4+self.pattern + when 6 + return 8+self.pattern + when 8 + return 12+self.pattern + else + return 0 + end +end +def setDefaultCharName(chname,pattern) + return if pattern<0||pattern>=16 + @defaultCharacterName="" + @direction=[2,4,6,8][pattern/4] + @pattern=pattern%4 +end +def character_name + if !@defaultCharacterName + @defaultCharacterName="" + end + if @defaultCharacterName!="" + return @defaultCharacterName + end + if !$game_system.map_interpreter.running? && + !moving? && !@move_route_forcing && $PokemonGlobal + meta=pbGetMetadata(0,MetadataPlayerA+$PokemonGlobal.playerID) + if $PokemonGlobal.playerID>=0 && meta && @@ -11,4 +36,5 @@ - if meta[5] && meta[5]!="" && Input.press?(Input::A) && Input.dir4!=0 - @character_name=meta[5] - else - @character_name=meta[1] + if meta[5] && meta[5]!="" && Input.press?(Input::A) && Input.dir4!=0 + @character_name=meta[5] + else + @character_name=meta[1] + end @@ -17,1 +43,7 @@ - if $PokemonGlobal && $PokemonGlobal.bicycle + return @character_name +end +alias update_old update +def update +if !$game_system.map_interpreter.running? && + !moving? && !@move_route_forcing && $PokemonGlobal + if $PokemonGlobal.bicycle Changed: PokemonField @@ -14,0 +14,4 @@ +FISHINGBEGINCOMMONEVENT=3 +FISHINGENDCOMMONEVENT=3 +HIDDENMACHINECOMMONEVENT=3 + @@ -143,1 +147,11 @@ - "021-Normal01","Battle","Mosaic","ShrinkingPieces"] + "021-Normal01","Battle","Mosaic","ShrinkingPieces", +"computertrclose", +"hexatr", +"hexatzr", +"battle1", +"battle2", +"battle3", +"battle4", +"computertr", +"hexatrc" +] @@ -300,-1 +314,88 @@ +end + +def pbRegisterPartner(trainerid,trainername,partyid=0) + trainer=pbLoadTrainer(trainerid,trainername,partyid) + trainerobject=PokeBattle_Trainer.new(trainername,trainerid) + trainerobject.setForeignID($Trainer) + for i in trainer[2] + i.trainerID=trainerobject.id + i.ot=trainerobject.name + i.calcStats + end + $PokemonMap.partner=[trainerid,trainerobject.name,trainerobject.id,trainer[2]] +end + +def pbDeregisterPartner + $PokemonMap.partner=nil +end + +def pbDoubleWildBattle(species1,level1,species2,level2) + if Input.press?(Input::CTRL) && $DEBUG + Kernel.pbMessage(_INTL("SKIPPING BATTLE...")) + $game_variables[variable]=1 if variable + $PokemonGlobal.nextBattleBGM=nil + $PokemonGlobal.nextBattleME=nil + return true + end + currentlevels=[] + for i in $Trainer.party + currentlevels.push(i.level) + end + othertrainer=PokeBattle_Trainer.new( + $PokemonMap.partner[1], + $PokemonMap.partner[0]) + othertrainer.id=$PokemonMap.partner[2] + othertrainer.party=$PokemonMap.partner[3] + genwildpoke=pbGenerateWildPokemon(species1,level1) + genwildpoke2=pbGenerateWildPokemon(species2,level2) + pokerus=(genwildpoke.pokerus==1)||(genwildpoke2.pokerus==1) + scene=PokeBattle_Scene.new + combinedParty=[] + for i in 0...$Trainer.party.length + combinedParty[i]=$Trainer.party[i] + end + for i in 0...othertrainer.party.length + combinedParty[6+i]=othertrainer.party[i] + end + battle=PokeBattle_Battle.new(scene,combinedParty,[genwildpoke,genwildpoke2], + [$Trainer,othertrainer],nil) + battle.internalbattle=true + battle.fullparty1=true + battle.doublebattle=true + pbPrepareBattle(battle) + wildbgm=pbGetWildBattleBGM(species1) + playingBGS=$game_system.getPlayingBGS + playingBGM=$game_system.getPlayingBGM + $game_system.bgm_pause + $game_system.bgs_pause + restorebgm=true + decision=0 + pbBattleAnimation(wildbgm) { + decision=battle.pbStartBattle + for i in $Trainer.party + i.heal + end + if decision==2 + $game_system.bgm_unpause + $game_system.bgs_unpause + Kernel.pbStartOver + restorebgm=false + else + # Check conditions for evolution + pbEvolutionCheck(currentlevels) + if decision==1 + for pkmn in $Trainer.party + Kernel.pbPickup(pkmn) + end + end + pbPokerusCheck if pokerus + end + } + if restorebgm + $game_system.bgm_resume(playingBGM) + $game_system.bgs_resume(playingBGS) + end + $PokemonGlobal.nextBattleBGM=nil + $PokemonGlobal.nextBattleME=nil + $PokemonEncounters.clearStepCount + Input.update @@ -371,1 +474,18 @@ -def Kernel.pbOnStepTaken +def pbEncounter(enctype) + if $PokemonMap.partner + encounter1=$PokemonEncounters.pbEncounteredPokemon(enctype) + return false if !encounter1 + encounter2=$PokemonEncounters.pbEncounteredPokemon(enctype) + return false if !encounter2 + pbDoubleWildBattle(encounter1[0],encounter1[1], + encounter2[0],encounter2[1]) + return true + else + encounter=$PokemonEncounters.pbEncounteredPokemon(enctype) + return false if !encounter + pbWildBattle(encounter[0],encounter[1]) + return true + end +end + +def Kernel.pbOnStepTaken(eventTriggered) @@ -426,20 +546,11 @@ - if $PokemonGlobal.surfing - encounter=$PokemonEncounters.pbGenerateEncounter(2) - if encounter && !(Input.press?(Input::CTRL) && $DEBUG) - encname=PBSpecies.getName(encounter[0]) - pbWildBattle(encounter[0],encounter[1]) - end - elsif $PokemonEncounters.isCave? - encounter=$PokemonEncounters.pbGenerateEncounter(1) - if encounter && !(Input.press?(Input::CTRL) && $DEBUG) - encname=PBSpecies.getName(encounter[0]) - pbWildBattle(encounter[0],encounter[1]) - end - elsif $PokemonEncounters.isGrass? && !(Input.press?(Input::CTRL) && $DEBUG) - encounter=$PokemonEncounters.pbGenerateEncounter(pbLandEncounterType) - x=$game_player.x - y=$game_player.y - if pbIsGrassTag?($game_map.terrain_tag(x,y)) - if encounter - encname=PBSpecies.getName(encounter[0]) - pbWildBattle(encounter[0],encounter[1]) + if !eventTriggered + if $PokemonGlobal.surfing + encounter=$PokemonEncounters.pbGenerateEncounter(2) + if encounter && !(Input.press?(Input::CTRL) && $DEBUG) + if $PokemonMap.partner + encounter2=$PokemonEncounters.pbEncounteredPokemon(2) + pbDoubleWildBattle(encounter[0],encounter[1], + encounter2[0],encounter2[1]) + else + pbWildBattle(encounter[0],encounter[1]) + end @@ -447,-1 +558,25 @@ + elsif $PokemonEncounters.isCave? + encounter=$PokemonEncounters.pbGenerateEncounter(1) + if encounter && !(Input.press?(Input::CTRL) && $DEBUG) + if $PokemonMap.partner + encounter2=$PokemonEncounters.pbEncounteredPokemon(1) + pbDoubleWildBattle(encounter[0],encounter[1], + encounter2[0],encounter2[1]) + else + pbWildBattle(encounter[0],encounter[1]) + end + end + elsif $PokemonEncounters.isGrass? && !(Input.press?(Input::CTRL) && $DEBUG) + encounter=$PokemonEncounters.pbGenerateEncounter(pbLandEncounterType) + x=$game_player.x + y=$game_player.y + if pbIsGrassTag?($game_map.terrain_tag(x,y)) + if encounter + if $PokemonMap.partner + encounter2=$PokemonEncounters.pbEncounteredPokemon(pbLandEncounterType) + pbDoubleWildBattle(encounter[0],encounter[1], + encounter2[0],encounter2[1]) + else + pbWildBattle(encounter[0],encounter[1]) + end + end @@ -803,2 +940,2 @@ - if !$Trainer || !$PokemonGlobal || !$game_player || !$game_map - elsif Time.now.sec==0 && !$PokemonTemp.batterywarning && pbBatteryLow? && + if Time.now.sec==0 && $Trainer && $PokemonGlobal && !$game_player && !$game_map && + !$PokemonTemp.batterywarning && @@ -807,1 +944,2 @@ - !$game_temp.message_window_showing + !$game_temp.message_window_showing && + pbBatteryLow? @@ -854,1 +992,32 @@ -def pbFishing +def pbFishingBegin + if !pbCommonEvent(FISHINGBEGINCOMMONEVENT) + pattern=0 + playertrainer=pbGetPlayerTrainerType + 5.times do |pattern| + $game_player.setDefaultCharName(sprintf("fishing%03d",playertrainer),pattern) + 2.times do + Graphics.update + Input.update + pbUpdateSceneMap + end + end + end +end + +def pbFishingEnd(oldpattern) + if !pbCommonEvent(FISHINGENDCOMMONEVENT) + pattern=0 + playertrainer=pbGetPlayerTrainerType + 5.times do |pattern| + $game_player.setDefaultCharName(sprintf("fishing%03d",playertrainer),4-pattern) + pattern+=1 + 2.times do + Graphics.update + Input.update + pbUpdateSceneMap + end + end + end +end + +def pbFishing(hasencounter) @@ -857,0 +1026,2 @@ + oldpattern=$game_player.fullPattern + pbFishingBegin @@ -865,0 +1036,2 @@ + pbFishingEnd(oldpattern) + $game_player.setDefaultCharName("",oldpattern) @@ -870,1 +1043,1 @@ - if rnd@frames + end + def update + return if done? + t=(@curframe*1.0/@frames) + x1=@oldrect.x + x2=@newrect.x + x=x1+t*(x2-x1) + y1=@oldrect.y + y2=@newrect.y + y=y1+t*(y2-y1) + rx1=@oldrect.x+@oldrect.width + rx2=@newrect.x+@newrect.width + rx=rx1+t*(rx2-rx1) + ry1=@oldrect.y+@oldrect.height + ry2=@newrect.y+@newrect.height + ry=ry1+t*(ry2-ry1) + minx=xrx ? x : rx + miny=yry ? y : ry + @rect.set(minx,miny,maxx-minx,maxy-miny) + @curframe+=1 + end +end + +class PointInterpolator + def initialize(oldx,oldy,newx,newy,frames) + restart(oldx,oldy,newx,newy,frames) + end + def restart(oldx,oldy,newx,newy,frames) + @oldx=oldx + @oldy=oldy + @newx=newx + @newy=newy + @frames=frames + @curframe=0 + @x=oldx + @y=oldy + end + def x; @x;end + def y; @y;end + def done? + @curframe>@frames + end + def update + return if done? + t=(@curframe*1.0/@frames) + rx1=@oldx + rx2=@newx + @x=rx1+t*(rx2-rx1) + ry1=@oldy + ry2=@newy + @y=ry1+t*(ry2-ry1) + @curframe+=1 + end +end + +def pbHiddenMoveAnimation(pokemon) + return false if !pokemon + viewport=Viewport.new(0,0,0,0) + viewport.z=99999 + ptinterp=nil + pkmnbitmap=pbLoadPokemonBitmap(pokemon) + interp=RectInterpolator.new( + Rect.new(Graphics.width,Graphics.height/2,0,0), + Rect.new(0,(Graphics.height-pkmnbitmap.height)/2, + Graphics.width,pkmnbitmap.height),20 + ) + plane=ColoredPlane.new(Color.new(0,0,0,255),viewport) + sprite=Sprite.new + sprite.z=99999 + sprite.bitmap=pkmnbitmap + sprite.visible=false + sprite.ox=pkmnbitmap.width/2 + sprite.oy=pkmnbitmap.height/2 + strobes=[] + 15.times do |i| + strobe=Sprite.new(viewport) + strobe.bitmap=Bitmap.new(80,8) + strobe.bitmap.fill_rect(0,0,80,8,Color.new(248,248,248)) + strobe.visible=false + strobes.push(strobe) + end + phase=1 + frames=0 + begin + Graphics.update + Input.update + case phase + when 1 + interp.update + interp.set(viewport.rect) + if interp.done? + phase=2 + ptinterp=PointInterpolator.new( + Graphics.width+(sprite.bitmap.width/2),Graphics.height/2, + Graphics.width/2,Graphics.height/2,15 + ) + end + when 2 + ptinterp.update + sprite.x=ptinterp.x + sprite.y=ptinterp.y + sprite.visible=true + if ptinterp.done? + phase=3 + pbPlayCry(pokemon.species) + frames=0 + end + when 3 + frames+=1 + if frames>30 + phase=4 + ptinterp=PointInterpolator.new( + Graphics.width/2,Graphics.height/2, + -(sprite.bitmap.width/2),Graphics.height/2,15 + ) + frames=0 + end + when 4 + ptinterp.update + sprite.x=ptinterp.x + sprite.y=ptinterp.y + if ptinterp.done? + phase=5 + sprite.visible=false + interp=RectInterpolator.new( + Rect.new(0,(Graphics.height-pkmnbitmap.height)/2, + Graphics.width,pkmnbitmap.height), + Rect.new(0,(Graphics.height)/2,Graphics.width,0),20 + ) + end + when 5 + interp.update + interp.set(viewport.rect) + phase=6 if interp.done? + end + for strobe in strobes + strobe.ox=strobe.viewport.rect.x + strobe.oy=strobe.viewport.rect.y + if strobe.visible && strobe.x+strobe.src_rect.width>=0 + strobe.x-=32 + elsif !strobe.visible + randomY=[80,100,120,140,160,180,200,220,240] + strobe.y=randomY[rand(randomY.length)] + strobe.x=rand(Graphics.width) + strobe.src_rect.width=20+rand(40) + strobe.visible=true + else + randomY=[80,100,120,140,160,180,200,220,240] + strobe.y=randomY[rand(randomY.length)] + strobe.x=Graphics.width+rand(Graphics.width/4) + strobe.src_rect.width=20+rand(40) + end + end + pbUpdateSceneMap + end while phase!=6 + sprite.bitmap.dispose + sprite.dispose + for strobe in strobes + strobe.bitmap.dispose + strobe.dispose + end + strobes.clear + plane.dispose + viewport.dispose + return true +end + + @@ -1040,5 +1405,1 @@ - encounter=$PokemonEncounters.pbEncounteredPokemon(3) - if encounter - encname=PBSpecies.getName(encounter[0]) - Kernel.pbWildBattle(encounter[0],encounter[1]) - end + pbEncounter(3) @@ -1062,5 +1423,1 @@ - encounter=$PokemonEncounters.pbEncounteredPokemon(chance==1 ? 7 : 8) - if encounter - encname=PBSpecies.getName(encounter[0]) - Kernel.pbWildBattle(encounter[0],encounter[1]) - else + if !pbEncounter(chance==1 ? 7 : 8) @@ -1095,0 +1452,1 @@ + pbHiddenMoveAnimation(movefinder) @@ -1115,1 +1473,2 @@ - Kernel.pbMessage(_INTL("{1} used Strength!",speciesname)) + pbHiddenMoveAnimation(movefinder) + Kernel.pbMessage(_INTL("{1} used Strength!\1",speciesname)) @@ -1136,0 +1495,1 @@ + pbHiddenMoveAnimation(movefinder) @@ -1167,0 +1527,1 @@ + pbHiddenMoveAnimation(movefinder) @@ -1257,0 +1618,1 @@ + pbHiddenMoveAnimation(movefinder) @@ -1279,0 +1641,1 @@ + pbHiddenMoveAnimation(movefinder) @@ -1313,2 +1676,2 @@ - $game_player.check_event_trigger_here([1,2]) - Kernel.pbOnStepTaken + result=$game_player.check_event_trigger_here([1,2]) + Kernel.pbOnStepTaken(result) @@ -1550,1 +1913,3 @@ - Kernel.pbMessage(_INTL("{1} used Fly!",pokemon.name)) + if !pbHiddenMoveAnimation(pokemon) + Kernel.pbMessage(_INTL("{1} used Fly!",pokemon.name)) + end @@ -1563,1 +1928,3 @@ - Kernel.pbMessage(_INTL("{1} used Cut!",pokemon.name)) + if !pbHiddenMoveAnimation(pokemon) + Kernel.pbMessage(_INTL("{1} used Cut!",pokemon.name)) + end @@ -1571,1 +1938,3 @@ - Kernel.pbMessage(_INTL("{1} used Surf!",pokemon.name)) + if !pbHiddenMoveAnimation(pokemon) + Kernel.pbMessage(_INTL("{1} used Surf!",pokemon.name)) + end @@ -1580,1 +1949,2 @@ - Kernel.pbMessage(_INTL("{1} used Strength!",pokemon.name)) + pbHiddenMoveAnimation(pokemon) + Kernel.pbMessage(_INTL("{1} used Strength!\1",pokemon.name)) @@ -1585,1 +1955,3 @@ - Kernel.pbMessage(_INTL("{1} used Rock Smash!",pokemon.name)) + if !pbHiddenMoveAnimation(pokemon) + Kernel.pbMessage(_INTL("{1} used Rock Smash!",pokemon.name)) + end @@ -1595,1 +1967,3 @@ - Kernel.pbMessage(_INTL("{1} used Flash!",pokemon.name)) + if !pbHiddenMoveAnimation(pokemon) + Kernel.pbMessage(_INTL("{1} used Flash!",pokemon.name)) + end @@ -1607,1 +1981,3 @@ - Kernel.pbMessage(_INTL("{1} used Waterfall.",pokemon.name)) + if !pbHiddenMoveAnimation(pokemon) + Kernel.pbMessage(_INTL("{1} used Waterfall.",pokemon.name)) + end @@ -1627,1 +2003,3 @@ - Kernel.pbMessage(_INTL("{1} used Dive.",speciesname)) + if !pbHiddenMoveAnimation(pokemon) + Kernel.pbMessage(_INTL("{1} used Dive.",speciesname)) + end @@ -1646,1 +2024,3 @@ - Kernel.pbMessage(_INTL("{1} used Headbutt!",pokemon.name)) + if !pbHiddenMoveAnimation(pokemon) + Kernel.pbMessage(_INTL("{1} used Headbutt!",pokemon.name)) + end @@ -1649,1 +2029,3 @@ - Kernel.pbMessage(_INTL("{1} used Sweet Scent!",pokemon.name)) + if !pbHiddenMoveAnimation(pokemon) + Kernel.pbMessage(_INTL("{1} used Sweet Scent!",pokemon.name)) + end @@ -1712,0 +2094,1 @@ + pbUpdateSceneMap @@ -1715,0 +2098,1 @@ + enctype=nil @@ -1716,1 +2100,1 @@ - encounter=$PokemonEncounters.pbEncounteredPokemon(2) + enctype=2 @@ -1718,1 +2102,1 @@ - encounter=$PokemonEncounters.pbEncounteredPokemon(1) + enctype=1 @@ -1720,3 +2104,3 @@ - encounter=$PokemonEncounters.pbEncounteredPokemon(pbLandEncounterType) - end - if !encounter + enctype=pbLandEncounterType + end + if !enctype || !pbEncounter(enctype) @@ -1724,2 +2108,0 @@ - else - pbWildBattle(encounter[0],encounter[1]) Changed: PokeBattle_ActualScene @@ -748,1 +748,1 @@ -def pokeballThrow(ball,shakes) +def pokeballThrow(ball,shakes,targetBattler) @@ -756,1 +756,1 @@ - spritePoke=@sprites["pokemon1"] + spritePoke=@sprites["pokemon#{targetBattler}"] @@ -762,1 +762,1 @@ - center=getSpriteCenter(@sprites["pokemon1"]) + center=getSpriteCenter(@sprites["pokemon#{targetBattler}"]) @@ -954,0 +954,1 @@ + @sprites["playerB"].x-=8 if @sprites["playerB"] @@ -962,1 +963,9 @@ - @animdone=true if @sprites["player"].x<=-128 + pa=@sprites["player"] + pb=@sprites["playerB"] + pawidth=(pa && pa.bitmap && !pa.bitmap.disposed?) ? pa.bitmap.width : 128 + pbwidth=(pb && pb.bitmap && !pb.bitmap.disposed?) ? pb.bitmap.width : 128 + if pb + @animdone=true if pb.x<=-pbwidth + else + @animdone=true if pa.x<=-pawidth + end @@ -1349,1 +1358,1 @@ - pbAddSprite("trainer",-176,16+@yoffset,trainerfile,@viewport) + pbAddSprite("trainer",-192,16+@yoffset,trainerfile,@viewport) @@ -1353,1 +1362,1 @@ - pbAddSprite("trainer",-176,16+@yoffset,trainerfile,@viewport) + pbAddSprite("trainer",-192,16+@yoffset,trainerfile,@viewport) @@ -1367,3 +1376,5 @@ - meta=pbGetMetadata(0,MetadataPlayerA+$PokemonGlobal.playerID) - if meta - pbAddSprite("player",576,96+@yoffset,"Graphics/Pictures/#{meta[3]}",@viewport) + if @battle.player.is_a?(Array) + trainerfile=sprintf("Graphics/Pictures/trback%03d.png",@battle.player[0].trainertype) + pbAddSprite("player",576-48,96+@yoffset,trainerfile,@viewport) + trainerfile=sprintf("Graphics/Pictures/trback%03d.png",@battle.player[1].trainertype) + pbAddSprite("playerB",576+48,96+@yoffset,trainerfile,@viewport) @@ -1371,1 +1382,2 @@ - pbAddSprite("player",576,96+@yoffset,"Graphics/Pictures/trback.png",@viewport) + trainerfile=sprintf("Graphics/Pictures/trback%03d.png",@battle.player.trainertype) + pbAddSprite("player",576,96+@yoffset,trainerfile,@viewport) @@ -1391,9 +1403,10 @@ - @sprites["pokemon1"].bitmap=pbLoadPokemonBitmap(@battle.party2[0],false) - @sprites["pokemon1"].x=-192 # ends at 144*2 - species=@battle.party2[0].species - metrics=load_data("Data/metrics.dat") - factor=metrics[1][species] # enemy Y - factor-=metrics[2][species] # altitude (affects shadows) - @sprites["pokemon1"].y=factor*2+16+@yoffset - @sprites["pokemon1"].visible=true - pbPositionPokemonSprite( + if @battle.party2.length>=1 + @sprites["pokemon1"].bitmap=pbLoadPokemonBitmap(@battle.party2[0],false) + @sprites["pokemon1"].x=-192 # ends at 144*2 + species=@battle.party2[0].species + metrics=load_data("Data/metrics.dat") + factor=metrics[1][species] # enemy Y + factor-=metrics[2][species] # altitude (affects shadows) + @sprites["pokemon1"].y=factor*2+16+@yoffset + @sprites["pokemon1"].visible=true + pbPositionPokemonSprite( @@ -1403,2 +1416,21 @@ - ) - trainersprite1=@sprites["pokemon1"] + ) + trainersprite1=@sprites["pokemon1"] + end + if @battle.party2.length==2 + @sprites["pokemon1"].x=-144 + @sprites["pokemon1"].y+=8 + @sprites["pokemon3"].bitmap=pbLoadPokemonBitmap(@battle.party2[1],false) + @sprites["pokemon3"].x=-240 + species=@battle.party2[1].species + metrics=load_data("Data/metrics.dat") + factor=metrics[1][species] # enemy Y + factor-=metrics[2][species] # altitude (affects shadows) + @sprites["pokemon3"].y=factor*2+8+@yoffset + @sprites["pokemon3"].visible=true + pbPositionPokemonSprite( + @sprites["pokemon3"], + @sprites["pokemon3"].x, + @sprites["pokemon3"].y + ) + trainersprite2=@sprites["pokemon3"] + end @@ -1423,0 +1455,1 @@ + @sprites["playerB"].x-=4 if @sprites["playerB"] @@ -1470,0 +1503,2 @@ + @sprites["battler3"].appear if @battle.party2.length==2 + appearing=true @@ -1474,1 +1509,6 @@ - end while @sprites["battler1"].appearing + appearing=@sprites["battler1"].appearing + if @battle.party2.length==2 + @sprites["battler3"].update + appearing=(appearing||@sprites["battler3"].appearing) + end + end while appearing @@ -1915,1 +1955,1 @@ - if @battle.doublebattle + if @battle.doublebattle && !@battle.fullparty1 @@ -1922,1 +1962,1 @@ - for i in 0...party.length + for i in 0...6 @@ -1926,1 +1966,1 @@ - for i in 0...party.length + for i in 0...6 @@ -1931,1 +1971,2 @@ - @switchscreen.pbStartScene(_INTL("Choose a Pokemon."),@battle.doublebattle) + @switchscreen.pbStartScene(_INTL("Choose a Pokemon."), + @battle.doublebattle && !@battle.fullparty1) @@ -2202,3 +2243,3 @@ -def pbThrowAndDeflect(ball) -end -def pbThrow(ball,shakes) +def pbThrowAndDeflect(ball,targetBattler) +end +def pbThrow(ball,shakes,targetBattler) @@ -2206,1 +2247,1 @@ - pokeballThrow(ball,shakes) + pokeballThrow(ball,shakes,targetBattler) Changed: PokemonTrainers @@ -20,1 +20,1 @@ - pokemon=PokeBattle_Pokemon.new(species,level) + pokemon=PokeBattle_Pokemon.new(species,level,$opponent) @@ -32,1 +32,1 @@ - pokemon.moves[i]=PBMove.new(poke[4+k]) + pokemon.moves[k]=PBMove.new(poke[4+k]) @@ -229,0 +229,21 @@ + if $PokemonMap.partner + othertrainer=PokeBattle_Trainer.new( + $PokemonMap.partner[1], + $PokemonMap.partner[0]) + othertrainer.id=$PokemonMap.partner[2] + othertrainer.party=$PokemonMap.partner[3] + playerparty=[] + for i in 0...$Trainer.party.length + playerparty[i]=$Trainer.party[i] + end + for i in 0...othertrainer.party.length + playerparty[6+i]=othertrainer.party[i] + end + fullparty1=true + playertrainer=[$Trainer,othertrainer] + doublebattle=true + else + playerparty=$Trainer.party + playertrainer=$Trainer + fullparty1=false + end @@ -249,3 +270,3 @@ - $Trainer.party, - combinedParty, - $Trainer, + playerparty, + combinedParty, + playertrainer, @@ -257,0 +278,1 @@ + battle.fullparty1=fullparty1 @@ -263,1 +285,2 @@ - battle=PokeBattle_Battle.new(scene,$Trainer.party,trainer[2],$Trainer,trainer[0]) + battle=PokeBattle_Battle.new(scene,playerparty,trainer[2],playertrainer,trainer[0]) + battle.fullparty1=fullparty1 @@ -292,0 +315,3 @@ + if $PokemonMap.partner + for i in $Trainer.party; i.heal; end + end Changed: PokeBattle_SafariZone @@ -3,1 +3,1 @@ - def initialize(pokemon) + def initialize(pokemon,index) @@ -5,0 +5,1 @@ + @index=index @@ -15,1 +16,1 @@ - return 1 + return @index @@ -26,0 +27,1 @@ + attr_reader :player @@ -32,4 +34,4 @@ - PokeBattle_FakeBattler.new(party2[0]), - PokeBattle_FakeBattler.new(party2[0]), - PokeBattle_FakeBattler.new(party2[0]), - PokeBattle_FakeBattler.new(party2[0]) + PokeBattle_FakeBattler.new(party2[0],0), + PokeBattle_FakeBattler.new(party2[0],1), + PokeBattle_FakeBattler.new(party2[0],2), + PokeBattle_FakeBattler.new(party2[0],3) Changed: WindowAndTilemap @@ -552,0 +552,2 @@ + attr_accessor :tone + attr_accessor :color @@ -568,0 +570,4 @@ + @tone=Tone.new(0,0,0,0) + @color=Color.new(0,0,0,0) + @oldtone=Tone.new(0,0,0,0) + @oldcolor=Color.new(0,0,0,0) @@ -609,0 +615,11 @@ + if @oldtone!=@tone + @layer0.tone=tone + @flash.tone=tone if @flash + for sprite in @autosprites + sprite.tone=@tone + end + for sprite in @tiles + sprite.tone=@tone if sprite.is_a?(Sprite) + end + @oldtone=@tone + end @@ -811,0 +828,1 @@ + sprite.tone=@tone @@ -826,0 +844,1 @@ + sprite.tone=@tone @@ -1371,0 +1390,2 @@ + @color=Color.new(0,0,0,0) + @tone=Tone.new(0,0,0,0) @@ -1402,0 +1423,6 @@ + def tone + @tilemap.tone rescue @tone + end + def tone=(value) + @tilemap.tone=value rescue nil + end Changed: Game_Player* @@ -620,2 +620,1 @@ - Kernel.pbOnStepTaken # *Added function call - pbCheckEventTriggerFromDistance([2]) + result = pbCheckEventTriggerFromDistance([2]) @@ -623,1 +622,1 @@ - result = check_event_trigger_here([1,2]) + result |= check_event_trigger_here([1,2]) @@ -625,0 +624,1 @@ + Kernel.pbOnStepTaken(result) # *Added function call Changed: Audio @@ -53,1 +53,3 @@ - @handle = w32_LL.call("audio.dll") + if FileTest.exist?("audio.dll") + @handle = w32_LL.call("audio.dll") + end @@ -345,4 +347,4 @@ - def bgm_resume(*arg); bgm_play(*arg); end - def bgs_resume(*arg); bgs_play(*arg); end -end -end + def bgm_resume(*arg); bgm_play(*arg); end + def bgs_resume(*arg); bgs_play(*arg); end +end +end Changed: Spriteset_Map @@ -103,0 +103,1 @@ + @sprite.tone=@rsprite.tone Changed: PokemonEditor @@ -1836,0 +1836,4 @@ +end + +def chooseMapScreen(title,currentmap) + return pbListScreen(title,MapLister.new(currentmap)) Changed: PokemonMessages @@ -26,0 +26,9 @@ +def pbRefreshSceneMap + if $scene && $scene.is_a?(Scene_Map) + begin + $scene.miniupdate + rescue NoMethodError + $scene.updatemini + end + end +end @@ -662,1 +671,2 @@ - case $game_system.message_position + if $game_system && $game_system.respond_to?("message_position") + case $game_system.message_position @@ -669,2 +679,4 @@ - end - if $game_system.message_frame != 0 + end + end + if $game_system && $game_system.respond_to?("message_frame") + if $game_system.message_frame != 0 @@ -672,0 +684,1 @@ + end Changed: SpriteWindow @@ -2618,1 +2618,0 @@ - @index=0 @@ -2622,0 +2621,1 @@ + self.index=0 @@ -2641,1 +2641,2 @@ - self.index=self.index + self.update_cursor_rect + self.refresh @@ -2647,0 +2648,1 @@ + self.update_cursor_rect @@ -2653,0 +2655,1 @@ + self.update_cursor_rect @@ -3134,1 +3137,5 @@ - @animbitmap=BitmapCache.load_bitmap(animname) + begin + @animbitmap=BitmapCache.load_bitmap(animname) + rescue + @animbitmap=Bitmap.new(framewidth,frameheight) + end Changed: PokemonSystem @@ -60,7 +60,1 @@ - playingbgm=$game_system.playing_bgm - $game_system.bgm_fade(1.0) - if playingbgm.name!="022-Field05.mid" - $game_system.bgm_play("022-Field05.mid") - else - $game_system.bgm_play("018-Field01.mid") - end + $Trainer.party[0].hp=0 Changed: PokemonUtilities @@ -114,1 +114,0 @@ -# $Trainer.party[i].exp=PBExperience.pbGetStartExperience(21,$Trainer.party[i].growthrate) @@ -190,0 +189,9 @@ +end + +def pbCheckAble(pokemonIndex) + for i in 0...$Trainer.party.length + p=$Trainer.party[i] + next if i==pokemonIndex + return true if p && !p.egg? && p.hp>0 + end + return false @@ -947,0 +955,15 @@ +def pbCommonEvent(id) + ce=$data_common_events[id] + return false if !ce + celist=ce.list + interp=Interpreter.new + interp.setup(celist,0) + begin + Graphics.update + Input.update + interp.update + pbUpdateSceneMap + end while interp.running? + return true +end + Changed: PokeBattle_Battle @@ -79,1 +79,1 @@ - @scene.pbThrowAndDeflect(ball) + @scene.pbThrowAndDeflect(ball,1) @@ -141,1 +141,1 @@ - @scene.pbThrow(ball,shakes) + @scene.pbThrow(ball,shakes,battler.index) @@ -232,1 +232,1 @@ - @scene.pbThrow(ball,shakes) + @scene.pbThrow(ball,shakes,battler.index) @@ -294,0 +294,2 @@ +attr_accessor(:fullparty1) # True if player's party's max size is 6 instead of 3 +attr_accessor(:fullparty2) # True if opponent's party's max size is 6 instead of 3 @@ -310,0 +312,6 @@ + if opponent && player.is_a?(Array) && player.length==0 + player=player[0] + end + if opponent && opponent.is_a?(Array) && opponent.length==0 + opponent=opponent[0] + end @@ -326,0 +334,2 @@ + @fullparty1=false + @fullparty2=false @@ -349,10 +359,2 @@ - if p1.length>6 - raise ArgumentError.new(_INTL("Party 1 has more than six Pokemon.")) - return - end - if p2.length>6 - raise ArgumentError.new(_INTL("Party 2 has more than six Pokemon.")) - return - end - if p2.length!=1 && !opponent - raise ArgumentError.new(_INTL("Wild battles with more than one Pokemon are not supported.")) + if p2.length>2 && !opponent + raise ArgumentError.new(_INTL("Wild battles with more than two Pokemon are not allowed.")) @@ -396,2 +398,3 @@ -def pbFindNextUnfainted(party,start) - for i in start...party.length +def pbFindNextUnfainted(party,start,finish=-1) + finish=party.length if finish<0 + for i in start...finish @@ -412,0 +415,8 @@ +def pbSecondPartyBegin(battlerIndex) + if pbIsOpposing?(battlerIndex) + return @fullparty2 ? 6 : 3 + else + return @fullparty1 ? 6 : 3 + end +end + @@ -414,0 +425,1 @@ + side=(pbIsOpposing?(battlerIndex)) ? @opponent : @player @@ -415,1 +427,1 @@ - if !@opponent || !@opponent.is_a?(Array) + if !side || !side.is_a?(Array) @@ -420,1 +432,1 @@ - for i in 0...3 + for i in 0...pbSecondPartyBegin(battlerIndex) @@ -426,2 +438,2 @@ - j=3 - for i in 3...6 + j=pbSecondPartyBegin(battlerIndex) + for i in pbSecondPartyBegin(battlerIndex)...party.length @@ -438,1 +450,1 @@ - for i in 0...6 + for i in 0...party.length @@ -446,0 +458,1 @@ + secondParty=pbSecondPartyBegin(battlerIndex) @@ -450,1 +463,1 @@ - return (battlerIndex==0) ? partyIndex<3 : partyIndex>=3 + return (battlerIndex==0) ? partyIndex=secondParty @@ -455,1 +468,16 @@ - return (battlerIndex==1) ? partyIndex<3 : partyIndex>=3 + return (battlerIndex==1) ? partyIndex=secondParty + end +end + +def pbPartyGetOwner(battlerIndex,partyIndex) + secondParty=pbSecondPartyBegin(battlerIndex) + if !pbIsOpposing?(battlerIndex) + if !@player || !@player.is_a?(Array) + return @player + end + return (partyIndexMAXPARTYSIZE + raise ArgumentError.new(_INTL("Party 1 has more than six Pokemon.")) + end + if !@fullparty2 && @party2.length>MAXPARTYSIZE + raise ArgumentError.new(_INTL("Party 2 has more than six Pokemon.")) + end @@ -524,13 +560,26 @@ - wildpoke=@party2[0] - self.pbPlayer.seen[wildpoke.species]=true - @battlers[1].pbInitialize(wildpoke,0,false) - @scene.pbStartBattle(self) - pbDisplayPaused(_INTL("Wild {1} appeared!",wildpoke.name)) - sendout=pbFindNextUnfainted(@party1,0) - if sendout<0 - raise _INTL("Player has no unfainted Pokemon") - end - playerpoke=@party1[sendout] - pbDisplayBrief(_INTL("Go! {1}!",playerpoke.name)) - @battlers[0].pbInitialize(playerpoke,sendout,false) - @scene.pbSendOut(0,playerpoke) + # + # Initialize wild Pokemon + # + if @party2.length==1 + if @doublebattle + raise _INTL("Only two wild Pokemon are allowed in double battles") + end + wildpoke=@party2[0] + self.pbPlayer.seen[wildpoke.species]=true + @battlers[1].pbInitialize(wildpoke,0,false) + @scene.pbStartBattle(self) + pbDisplayPaused(_INTL("Wild {1} appeared!",wildpoke.name)) + elsif @party2.length==2 + if !@doublebattle + raise _INTL("Only one wild Pokemon is allowed in single battles") + end + @battlers[1].pbInitialize(@party2[0],0,false) + @battlers[3].pbInitialize(@party2[1],0,false) + self.pbPlayer.seen[@party2[0].species]=true + self.pbPlayer.seen[@party2[1].species]=true + @scene.pbStartBattle(self) + pbDisplayPaused(_INTL("Wild {1} and {2} appeared!", + @party2[0].name,@party2[1].name)) + else + raise _INTL("Only one or two wild Pokemon are allowed") + end @@ -538,0 +587,3 @@ + # + # Initialize opponents in double battles + # @@ -540,1 +592,1 @@ - @opponent=@opponent.array[0] + @opponent=@opponent[0] @@ -547,1 +599,1 @@ - @player=@player.array[0] + @player=@player[0] @@ -555,1 +607,1 @@ - sendout1=pbFindNextUnfainted(@party2,0) + sendout1=pbFindNextUnfainted(@party2,0,pbSecondPartyBegin(1)) @@ -557,1 +609,1 @@ - sendout2=pbFindNextUnfainted(@party2,3) + sendout2=pbFindNextUnfainted(@party2,pbSecondPartyBegin(1)) @@ -576,20 +628,0 @@ - if @player.is_a?(Array) - sendout1=pbFindNextUnfainted(@party1,0) - raise _INTL("Player 1 has no unfainted Pokemon") if sendout1<0 - sendout2=pbFindNextUnfainted(@party1,3) - raise _INTL("Player 2 has no unfainted Pokemon") if sendout2<0 - pbDisplayBrief(_INTL("{1} sent out {2}! Go! {3}!",@player[1].fullname,@party1[sendout2].name,@party1[sendout1].name)) - self.pbPlayer.seen[@party1[sendout1].species]=true - self.pbPlayer.seen[@party1[sendout2].species]=true - else - sendout1=pbFindNextUnfainted(@party1,0) - sendout2=pbFindNextUnfainted(@party1,sendout1+1) - if sendout1<0 || sendout2<0 - raise _INTL("Player doesn't have two unfainted Pokemon") - end - pbDisplayBrief(_INTL("Go! {1} and {2}!",@party1[sendout1].name,@party1[sendout2].name)) - end - @battlers[0].pbInitialize(@party1[sendout1],sendout1,false) - @battlers[2].pbInitialize(@party1[sendout2],sendout2,false) - @scene.pbSendOut(0,@party1[sendout1]) - @scene.pbSendOut(2,@party1[sendout2]) @@ -597,0 +629,3 @@ + # + # Initialize opponent in single battles + # @@ -616,0 +651,29 @@ + end + # + # Initialize players in double battles + # + if @doublebattle + if @player.is_a?(Array) + sendout1=pbFindNextUnfainted(@party1,0,pbSecondPartyBegin(0)) + raise _INTL("Player 1 has no unfainted Pokemon") if sendout1<0 + sendout2=pbFindNextUnfainted(@party1,pbSecondPartyBegin(0)) + raise _INTL("Player 2 has no unfainted Pokemon") if sendout2<0 + pbDisplayBrief(_INTL("{1} sent out {2}! Go! {3}!",@player[1].fullname,@party1[sendout2].name,@party1[sendout1].name)) + self.pbPlayer.seen[@party1[sendout1].species]=true + self.pbPlayer.seen[@party1[sendout2].species]=true + else + sendout1=pbFindNextUnfainted(@party1,0) + sendout2=pbFindNextUnfainted(@party1,sendout1+1) + if sendout1<0 || sendout2<0 + raise _INTL("Player doesn't have two unfainted Pokemon") + end + pbDisplayBrief(_INTL("Go! {1} and {2}!",@party1[sendout1].name,@party1[sendout2].name)) + end + @battlers[0].pbInitialize(@party1[sendout1],sendout1,false) + @battlers[2].pbInitialize(@party1[sendout2],sendout2,false) + @scene.pbSendOut(0,@party1[sendout1]) + @scene.pbSendOut(2,@party1[sendout2]) + else + # + # Initialize player in single battles + # @@ -625,0 +689,3 @@ + # + # Initialize battle + # @@ -696,1 +763,1 @@ - for i in 0...6 + for i in 0...@party1.length @@ -704,1 +771,3 @@ - pbDisplayPaused(_INTL("{1} got ${2} for winning!",self.pbPlayer.name,maxlevel)) + if maxlevel>0 + pbDisplayPaused(_INTL("{1} got ${2} for winning!",self.pbPlayer.name,maxlevel)) + end @@ -834,3 +903,14 @@ - speedEnemy=@battlers[idxPokemon].pbOppositeOpposing.speed - if speedPlayer>speedEnemy - rate=256 + opposing=@battlers[idxPokemon].pbOppositeOpposing + if opposing.hp<=0 + opposing=opposing.pbPartner + end + if opposing.hp>0 + speedEnemy=opposing.speed + if speedPlayer>speedEnemy + rate=256 + else + speedEnemy=1 if speedEnemy<=0 + rate=speedPlayer*128/speedEnemy + rate+=@runCommand*30 + rate&=0xFF + end @@ -838,4 +918,1 @@ - speedEnemy=1 if speedEnemy==0 - rate=speedPlayer*128/speedEnemy - rate+=@runCommand*30 - rate&=0xFF + rate=256 @@ -1125,1 +1202,1 @@ - owner=pbGetOwner(pkmnidxTo) + owner=pbPartyGetOwner(idxPokemon,pkmnidxTo) @@ -1955,1 +2032,1 @@ - if !@opponent && successbegin + if !@opponent && successbegin && pbAllFainted?(@party2) @@ -2023,1 +2100,3 @@ - raise RuntimeError.new(_INTL("The new level ({1}) is less than the Pokemon's\r\ncurrent level ({2}), which shouldn't happen.\r\n[Debug: {3}]",newlevel,curlevel,debuginfo)) + raise RuntimeError.new( + _INTL("The new level ({1}) is less than the Pokemon's\r\ncurrent level ({2}), which shouldn't happen.\r\n[Debug: {3}]", + newlevel,curlevel,debuginfo)) @@ -2110,3 +2189,4 @@ - newenemy=pbSwitchInBetween(index,false,false) - opponent=pbGetOwner(index) - if !@doublebattle && firstbattlerhp>0 && @shiftStyle && + if @opponent + newenemy=pbSwitchInBetween(index,false,false) + opponent=pbGetOwner(index) + if !@doublebattle && firstbattlerhp>0 && @shiftStyle && @@ -2114,6 +2194,7 @@ - pbDisplayPaused(_INTL("{1} is about to send in {2}.",opponent.fullname,@party2[newenemy].name)) - if pbDisplayConfirm(_INTL("Will {1} change Pokemon?",self.pbPlayer.name)) - newpoke=pbSwitchPlayer(0,true,true) - if newpoke>=0 - pbDisplayBrief(_INTL("{1}, that's enough! Come back!",@battlers[0].name)) - pbRecallAndReplace(0,newpoke) + pbDisplayPaused(_INTL("{1} is about to send in {2}.",opponent.fullname,@party2[newenemy].name)) + if pbDisplayConfirm(_INTL("Will {1} change Pokemon?",self.pbPlayer.name)) + newpoke=pbSwitchPlayer(0,true,true) + if newpoke>=0 + pbDisplayBrief(_INTL("{1}, that's enough! Come back!",@battlers[0].name)) + pbRecallAndReplace(0,newpoke) + end @@ -2122,2 +2203,2 @@ - end - pbRecallAndReplace(index,newenemy) + pbRecallAndReplace(index,newenemy) + end @@ -2127,1 +2208,1 @@ - else + elsif @@ -2257,0 +2338,1 @@ + break if @decision!=0 Changed: PokemonItems @@ -317,8 +317,6 @@ - if pbFishing - enctype=4 # Old Rod - enctype=5 if item==PBItems::GOODROD - enctype=6 if item==PBItems::SUPERROD - encounter=$PokemonEncounters.pbEncounteredPokemon(enctype) - if encounter - pbWildBattle(encounter[0],encounter[1]) - end + enctype=4 # Old Rod + enctype=5 if item==PBItems::GOODROD + enctype=6 if item==PBItems::SUPERROD + encounter=$PokemonEncounters.hasEncounter?(enctype) + if pbFishing(encounter) + pbEncounter(enctype) Changed: PokemonScreen @@ -339,1 +339,1 @@ - yvalues=[20,132,20,84,148,212] + yvalues=[20,148,20,84,148,212] Changed: PokemonStorage @@ -196,1 +196,1 @@ - if box==-1 && $Trainer.pokemonCount<=1 && !heldpoke + if box==-1 && pbAbleCount<=1 && pbAble?(pokemon) && !heldpoke @@ -219,0 +219,12 @@ +def pbAble?(pokemon) + pokemon && !pokemon.egg? && pokemon.hp>0 +end + +def pbAbleCount + count=0 + for p in $Trainer.party + count+=1 if pbAble?(p) + end + return count +end + @@ -225,1 +237,1 @@ - if $Trainer.pokemonCount<=1 && !@storage[box,index].egg? && !heldpoke + if pbAbleCount<=1 && pbAble?(@storage[box,index]) && !heldpoke @@ -283,0 +295,2 @@ + + @@ -286,1 +300,1 @@ - if box==-1 && !@storage[box,index].egg? && $Trainer.pokemonCount<=1 + if box==-1 && pbAble?(@storage[box,index]) && pbAbleCount<=1 @@ -302,1 +316,1 @@ - if box==-1 && !@storage[box,index].egg? && $Trainer.pokemonCount<=1 && @heldpkmn.egg? + if box==-1 && pbAble?(@storage[box,index]) && pbAbleCount<=1 && !pbAble?(@heldpkmn) @@ -505,0 +519,1 @@ + next if !pokemon Changed: PokemonMap Changed: PokemonOption Deleted: sasa Changed: AnimationSprite Changed: PerspectiveTilemap Changed: Sprite_Character Changed: Walk/Run Changed: PokemonField Changed: PokeBattle_ActualScene Changed: PokemonTrainers Changed: PokeBattle_SafariZone Changed: WindowAndTilemap Changed: Game_Player* Changed: Audio Changed: Spriteset_Map Changed: PokemonEditor Changed: PokemonMessages Changed: SpriteWindow Changed: PokemonSystem Changed: PokemonUtilities Changed: PokeBattle_Battle Changed: PokemonItems Changed: PokemonScreen Changed: PokemonStorage