From f72ce066545f731469d74ccc6b77305dd3ac05f9 Mon Sep 17 00:00:00 2001 From: Maruno17 Date: Mon, 11 Jan 2021 22:44:01 +0000 Subject: [PATCH] Created setting MAX_PARTY_SIZE, fixed some bugs --- Data/Scripts/001_Settings.rb | 2 + .../001_Game data/011_Species files.rb | 10 +- .../003_PokeBattle_SceneConstants.rb | 2 +- .../008_PokeBattle_BattlePeer.rb | 4 +- .../013_Overworld/013_PField_DayCare.rb | 4 +- .../015_Items/002_PItem_ItemEffects.rb | 6 +- .../015_Items/003_PItem_BattleItemEffects.rb | 2 +- .../016_Pokemon/005_Pokemon_Evolution.rb | 2 +- .../016_Pokemon/009_Pokemon_Storage.rb | 37 +++--- Data/Scripts/017_UI/005_PScreen_Party.rb | 100 +++++++------- .../017_UI/017_PScreen_PokemonStorage.rb | 124 ++++++++++-------- Data/Scripts/017_UI/019_PScreen_PC.rb | 2 +- .../003_PBattle_OrgBattle.rb | 2 +- .../005_PBattle_OrgBattleGenerator.rb | 10 +- .../004_PSystem_PokemonUtilities.rb | 14 +- .../001_Debug menus/002_Debug_MenuCommands.rb | 2 +- .../003_Debug_MenuExtraCode.rb | 6 +- 17 files changed, 176 insertions(+), 153 deletions(-) diff --git a/Data/Scripts/001_Settings.rb b/Data/Scripts/001_Settings.rb index b741bd7d7..b56a87035 100644 --- a/Data/Scripts/001_Settings.rb +++ b/Data/Scripts/001_Settings.rb @@ -50,6 +50,8 @@ MAX_MONEY = 999_999 MAX_COINS = 99_999 # The maximum length, in characters, that the player's name can be. MAX_PLAYER_NAME_SIZE = 10 +# The maximum number of Pokémon that can be in the party. +MAX_PARTY_SIZE = 6 #=============================================================================== diff --git a/Data/Scripts/011_Data/001_Game data/011_Species files.rb b/Data/Scripts/011_Data/001_Game data/011_Species files.rb index 563f1bcf8..2c6653305 100644 --- a/Data/Scripts/011_Data/001_Game data/011_Species files.rb +++ b/Data/Scripts/011_Data/001_Game data/011_Species files.rb @@ -116,7 +116,7 @@ module GameData #=========================================================================== def self.egg_icon_filename(species, form) - ret = self.check_egg_graphic_file("Graphics/Pokemon/Icons", species, form, "_icon") + ret = self.check_egg_graphic_file("Graphics/Pokemon/Eggs/", species, form, "_icon") return (ret) ? ret : pbResolveBitmap("Graphics/Pokemon/Eggs/000_icon") end @@ -198,14 +198,14 @@ module GameData return nil if species_data.nil? species_id = self.get(species_data.species).id_number if form > 0 - ret = sprintf("Cries/%sCry_%d", species_data.species, form) + ret = sprintf("Cries/%s_%d", species_data.species, form) return ret if pbResolveAudioSE(ret) - ret = sprintf("Cries/%03dCry_%d", species_id, form) + ret = sprintf("Cries/%03d_%d", species_id, form) return ret if pbResolveAudioSE(ret) end - ret = sprintf("Cries/%sCry", species_data.species) + ret = sprintf("Cries/%s", species_data.species) return ret if pbResolveAudioSE(ret) - ret = sprintf("Cries/%03dCry", species_id) + ret = sprintf("Cries/%03d", species_id) return (pbResolveAudioSE(ret)) ? ret : nil end diff --git a/Data/Scripts/012_Battle/005_Battle scene/003_PokeBattle_SceneConstants.rb b/Data/Scripts/012_Battle/005_Battle scene/003_PokeBattle_SceneConstants.rb index 87fcf603e..854962f7c 100644 --- a/Data/Scripts/012_Battle/005_Battle scene/003_PokeBattle_SceneConstants.rb +++ b/Data/Scripts/012_Battle/005_Battle scene/003_PokeBattle_SceneConstants.rb @@ -5,7 +5,7 @@ module PokeBattle_SceneConstants MESSAGE_SHADOW_COLOR = Color.new(160, 160, 168) # The number of party balls to show in each side's lineup. - NUM_BALLS = 6 + NUM_BALLS = MAX_PARTY_SIZE # Centre bottom of the player's side base graphic PLAYER_BASE_X = 128 diff --git a/Data/Scripts/012_Battle/006_Other battle types/008_PokeBattle_BattlePeer.rb b/Data/Scripts/012_Battle/006_Other battle types/008_PokeBattle_BattlePeer.rb index 59edb77af..9570bfb65 100644 --- a/Data/Scripts/012_Battle/006_Other battle types/008_PokeBattle_BattlePeer.rb +++ b/Data/Scripts/012_Battle/006_Other battle types/008_PokeBattle_BattlePeer.rb @@ -7,7 +7,7 @@ class PokeBattle_NullBattlePeer def pbOnLeavingBattle(battle,pkmn,usedInBattle,endBattle=false); end def pbStorePokemon(player,pkmn) - player.party[player.party.length] = pkmn if player.party.length<6 + player.party[player.party.length] = pkmn if player.party.length < MAX_PARTY_SIZE return -1 end @@ -23,7 +23,7 @@ end #=============================================================================== class PokeBattle_RealBattlePeer def pbStorePokemon(player,pkmn) - if player.party.length<6 + if player.party.length < MAX_PARTY_SIZE player.party[player.party.length] = pkmn return -1 end diff --git a/Data/Scripts/013_Overworld/013_PField_DayCare.rb b/Data/Scripts/013_Overworld/013_PField_DayCare.rb index c7179eb88..7edf44264 100644 --- a/Data/Scripts/013_Overworld/013_PField_DayCare.rb +++ b/Data/Scripts/013_Overworld/013_PField_DayCare.rb @@ -65,7 +65,7 @@ end def pbDayCareWithdraw(index) if !$PokemonGlobal.daycare[index][0] raise _INTL("There's no Pokémon here...") - elsif $Trainer.party.length>=6 + elsif $Trainer.party.length >= MAX_PARTY_SIZE raise _INTL("Can't store the Pokémon...") else $Trainer.party[$Trainer.party.length] = $PokemonGlobal.daycare[index][0] @@ -154,7 +154,7 @@ end #=============================================================================== def pbDayCareGenerateEgg return if pbDayCareDeposited != 2 - raise _INTL("Can't store the egg.") if $Trainer.party.length >= 6 + raise _INTL("Can't store the egg.") if $Trainer.party.length >= MAX_PARTY_SIZE pkmn0 = $PokemonGlobal.daycare[0][0] pkmn1 = $PokemonGlobal.daycare[1][0] mother = nil diff --git a/Data/Scripts/015_Items/002_PItem_ItemEffects.rb b/Data/Scripts/015_Items/002_PItem_ItemEffects.rb index a1596fead..58fd28dda 100644 --- a/Data/Scripts/015_Items/002_PItem_ItemEffects.rb +++ b/Data/Scripts/015_Items/002_PItem_ItemEffects.rb @@ -985,7 +985,7 @@ ItemHandlers::UseOnPokemon.add(:DNASPLICERS,proc { |item,pkmn,scene| next true end # Unfusing - if $Trainer.party.length>=6 + if $Trainer.party.length >= MAX_PARTY_SIZE scene.pbDisplay(_INTL("You have no room to separate the Pokémon.")) next false end @@ -1034,7 +1034,7 @@ ItemHandlers::UseOnPokemon.add(:NSOLARIZER,proc { |item,pkmn,scene| next true end # Unfusing - if $Trainer.party.length>=6 + if $Trainer.party.length >= MAX_PARTY_SIZE scene.pbDisplay(_INTL("You have no room to separate the Pokémon.")) next false end @@ -1083,7 +1083,7 @@ ItemHandlers::UseOnPokemon.add(:NLUNARIZER,proc { |item,pkmn,scene| next true end # Unfusing - if $Trainer.party.length>=6 + if $Trainer.party.length >= MAX_PARTY_SIZE scene.pbDisplay(_INTL("You have no room to separate the Pokémon.")) next false end diff --git a/Data/Scripts/015_Items/003_PItem_BattleItemEffects.rb b/Data/Scripts/015_Items/003_PItem_BattleItemEffects.rb index 425c4e5a3..692565d15 100644 --- a/Data/Scripts/015_Items/003_PItem_BattleItemEffects.rb +++ b/Data/Scripts/015_Items/003_PItem_BattleItemEffects.rb @@ -23,7 +23,7 @@ ItemHandlers::CanUseInBattle.copy(:POKEDOLL,:FLUFFYTAIL,:POKETOY) ItemHandlers::CanUseInBattle.addIf(proc { |item| GameData::Item.get(item).is_poke_ball? }, # Poké Balls proc { |item,pokemon,battler,move,firstAction,battle,scene,showMessages| - if battle.pbPlayer.party.length>=6 && $PokemonStorage.full? + if battle.pbPlayer.party.length >= MAX_PARTY_SIZE && $PokemonStorage.full? scene.pbDisplay(_INTL("There is no room left in the PC!")) if showMessages next false end diff --git a/Data/Scripts/016_Pokemon/005_Pokemon_Evolution.rb b/Data/Scripts/016_Pokemon/005_Pokemon_Evolution.rb index 9390eff61..6db5f869a 100644 --- a/Data/Scripts/016_Pokemon/005_Pokemon_Evolution.rb +++ b/Data/Scripts/016_Pokemon/005_Pokemon_Evolution.rb @@ -452,7 +452,7 @@ PBEvolution.register(:Ninjask, { PBEvolution.register(:Shedinja, { "parameterType" => nil, "afterEvolution" => proc { |pkmn, new_species, parameter, evo_species| - next false if $Trainer.party.length>=6 + next false if $Trainer.party.length >= MAX_PARTY_SIZE next false if !$PokemonBag.pbHasItem?(:POKEBALL) PokemonEvolutionScene.pbDuplicatePokemon(pkmn, new_species) $PokemonBag.pbDeleteItem(:POKEBALL) diff --git a/Data/Scripts/016_Pokemon/009_Pokemon_Storage.rb b/Data/Scripts/016_Pokemon/009_Pokemon_Storage.rb index 0b2c49786..f9ccd61dc 100644 --- a/Data/Scripts/016_Pokemon/009_Pokemon_Storage.rb +++ b/Data/Scripts/016_Pokemon/009_Pokemon_Storage.rb @@ -3,7 +3,11 @@ class PokemonBox attr_accessor :name attr_accessor :background - def initialize(name,maxPokemon=30) + BOX_WIDTH = 6 + BOX_HEIGHT = 5 + BOX_SIZE = BOX_WIDTH * BOX_HEIGHT + + def initialize(name, maxPokemon = BOX_SIZE) @pokemon = [] @name = name @background = 0 @@ -17,15 +21,17 @@ class PokemonBox end def nitems - return @pokemon.nitems + ret = 0 + @pokemon.each { |pkmn| ret += 1 if !pkmn.nil? } + return ret end def full? - return (@pokemon.nitems==self.length) + return nitems == self.length end def empty? - return (@pokemon.nitems==0) + return nitems == 0 end def [](i) @@ -53,7 +59,7 @@ class PokemonStorage attr_writer :unlockedWallpapers BASICWALLPAPERQTY = 16 - def initialize(maxBoxes=NUM_STORAGE_BOXES,maxPokemon=30) + def initialize(maxBoxes = NUM_STORAGE_BOXES, maxPokemon = PokemonBox::BOX_SIZE) @boxes = [] for i in 0...maxBoxes @boxes[i] = PokemonBox.new(_INTL("Box {1}",i+1),maxPokemon) @@ -120,8 +126,8 @@ class PokemonStorage end def maxPokemon(box) - return 0 if box>=self.maxBoxes - return (box<0) ? 6 : self[box].length + return 0 if box >= self.maxBoxes + return (box < 0) ? MAX_PARTY_SIZE : self[box].length end def full? @@ -133,14 +139,13 @@ class PokemonStorage def pbFirstFreePos(box) if box==-1 - ret = self.party.nitems - return (ret==6) ? -1 : ret - else - for i in 0...maxPokemon(box) - return i if !self[box,i] - end - return -1 + ret = self.party.length + return (ret >= MAX_PARTY_SIZE) ? -1 : ret end + for i in 0...maxPokemon(box) + return i if !self[box,i] + end + return -1 end def [](x,y=nil) @@ -174,7 +179,7 @@ class PokemonStorage return false if !found end if boxDst==-1 # Copying into party - return false if self.party.nitems>=6 + return false if self.party.length >= MAX_PARTY_SIZE self.party[self.party.length] = self[boxSrc,indexSrc] self.party.compact! else # Copying into box @@ -195,7 +200,7 @@ class PokemonStorage end def pbMoveCaughtToParty(pkmn) - return false if self.party.nitems>=6 + return false if self.party.length >= MAX_PARTY_SIZE self.party[self.party.length] = pkmn end diff --git a/Data/Scripts/017_UI/005_PScreen_Party.rb b/Data/Scripts/017_UI/005_PScreen_Party.rb index c11d9c3d3..fc50f26c5 100644 --- a/Data/Scripts/017_UI/005_PScreen_Party.rb +++ b/Data/Scripts/017_UI/005_PScreen_Party.rb @@ -139,8 +139,8 @@ class PokemonPartyBlankPanel < SpriteWrapper def initialize(_pokemon,index,viewport=nil) super(viewport) - self.x = [0, Graphics.width/2][index%2] - self.y = [0, 16, 96, 112, 192, 208][index] + self.x = (index % 2) * Graphics.width / 2 + self.y = 16 * (index % 2) + 96 * (index / 2) @panelbgsprite = AnimatedBitmap.new("Graphics/Pictures/Party/panel_blank") self.bitmap = @panelbgsprite.bitmap @text = nil @@ -176,8 +176,8 @@ class PokemonPartyPanel < SpriteWrapper @pokemon = pokemon @active = (index==0) # true = rounded panel, false = rectangular panel @refreshing = true - self.x = [0, Graphics.width/2][index%2] - self.y = [0, 16, 96, 112, 192, 208][index] + self.x = (index % 2) * Graphics.width / 2 + self.y = 16 * (index % 2) + 96 * (index / 2) @panelbgsprite = ChangelingSprite.new(0,0,viewport) @panelbgsprite.z = self.z if @active # Rounded panel @@ -448,7 +448,7 @@ class PokemonParty_Scene pbBottomLeftLines(@sprites["helpwindow"],1) pbSetHelpText(starthelptext) # Add party Pokémon sprites - for i in 0...6 + for i in 0...MAX_PARTY_SIZE if @party[i] @sprites["pokemon#{i}"] = PokemonPartyPanel.new(@party[i],i,@viewport) else @@ -457,10 +457,10 @@ class PokemonParty_Scene @sprites["pokemon#{i}"].text = annotations[i] if annotations end if @multiselect - @sprites["pokemon6"] = PokemonPartyConfirmSprite.new(@viewport) - @sprites["pokemon7"] = PokemonPartyCancelSprite2.new(@viewport) + @sprites["pokemon#{MAX_PARTY_SIZE}"] = PokemonPartyConfirmSprite.new(@viewport) + @sprites["pokemon#{MAX_PARTY_SIZE + 1}"] = PokemonPartyCancelSprite2.new(@viewport) else - @sprites["pokemon6"] = PokemonPartyCancelSprite.new(@viewport) + @sprites["pokemon#{MAX_PARTY_SIZE}"] = PokemonPartyCancelSprite.new(@viewport) end # Select first Pokémon @activecmd = 0 @@ -573,14 +573,14 @@ class PokemonParty_Scene end def pbAnnotate(annot) - for i in 0...6 + for i in 0...MAX_PARTY_SIZE @sprites["pokemon#{i}"].text = (annot) ? annot[i] : nil end end def pbSelect(item) @activecmd = item - numsprites = (@multiselect) ? 8 : 7 + numsprites = MAX_PARTY_SIZE + ((@multiselect) ? 2 : 1) for i in 0...numsprites @sprites["pokemon#{i}"].selected = (i==@activecmd) end @@ -620,7 +620,7 @@ class PokemonParty_Scene Input.update self.update end - for i in 0...6 + for i in 0...MAX_PARTY_SIZE @sprites["pokemon#{i}"].preselected = false @sprites["pokemon#{i}"].switching = false end @@ -628,7 +628,7 @@ class PokemonParty_Scene end def pbClearSwitching - for i in 0...6 + for i in 0...MAX_PARTY_SIZE @sprites["pokemon#{i}"].preselected = false @sprites["pokemon#{i}"].switching = false end @@ -674,7 +674,7 @@ class PokemonParty_Scene end def pbChoosePokemon(switching=false,initialsel=-1,canswitch=0) - for i in 0...6 + for i in 0...MAX_PARTY_SIZE @sprites["pokemon#{i}"].preselected = (switching && i==@activecmd) @sprites["pokemon#{i}"].switching = switching end @@ -695,12 +695,12 @@ class PokemonParty_Scene end if @activecmd!=oldsel # Changing selection pbPlayCursorSE - numsprites = (@multiselect) ? 8 : 7 + numsprites = MAX_PARTY_SIZE + ((@multiselect) ? 2 : 1) for i in 0...numsprites @sprites["pokemon#{i}"].selected = (i==@activecmd) end end - cancelsprite = (@multiselect) ? 7 : 6 + cancelsprite = MAX_PARTY_SIZE + ((@multiselect) ? 1 : 0) if Input.trigger?(Input::A) && canswitch==1 && @activecmd!=cancelsprite pbPlayDecisionSE return [1,@activecmd] @@ -722,49 +722,49 @@ class PokemonParty_Scene end def pbChangeSelection(key,currentsel) - numsprites = (@multiselect) ? 8 : 7 + numsprites = MAX_PARTY_SIZE + ((@multiselect) ? 2 : 1) case key when Input::LEFT begin currentsel -= 1 - end while currentsel>0 && currentsel<@party.length && !@party[currentsel] - if currentsel>=@party.length && currentsel<6 - currentsel = @party.length-1 + end while currentsel > 0 && currentsel < @party.length && !@party[currentsel] + if currentsel >= @party.length && currentsel < MAX_PARTY_SIZE + currentsel = @party.length - 1 end - currentsel = numsprites-1 if currentsel<0 + currentsel = numsprites - 1 if currentsel < 0 when Input::RIGHT begin currentsel += 1 - end while currentsel<@party.length && !@party[currentsel] - if currentsel==@party.length - currentsel = 6 - elsif currentsel==numsprites + end while currentsel < @party.length && !@party[currentsel] + if currentsel == @party.length + currentsel = MAX_PARTY_SIZE + elsif currentsel == numsprites currentsel = 0 end when Input::UP - if currentsel>=6 + if currentsel >= MAX_PARTY_SIZE begin currentsel -= 1 - end while currentsel>0 && !@party[currentsel] + end while currentsel > 0 && !@party[currentsel] else begin currentsel -= 2 - end while currentsel>0 && !@party[currentsel] + end while currentsel > 0 && !@party[currentsel] end - if currentsel>=@party.length && currentsel<6 + if currentsel >= @party.length && currentsel < MAX_PARTY_SIZE currentsel = @party.length-1 end - currentsel = numsprites-1 if currentsel<0 + currentsel = numsprites - 1 if currentsel < 0 when Input::DOWN - if currentsel>=5 + if currentsel >= MAX_PARTY_SIZE - 1 currentsel += 1 else currentsel += 2 - currentsel = 6 if currentsel<6 && !@party[currentsel] + currentsel = MAX_PARTY_SIZE if currentsel < MAX_PARTY_SIZE && !@party[currentsel] end - if currentsel>=@party.length && currentsel<6 - currentsel = 6 - elsif currentsel>=numsprites + if currentsel >= @party.length && currentsel < MAX_PARTY_SIZE + currentsel = MAX_PARTY_SIZE + elsif currentsel >= numsprites currentsel = 0 end end @@ -774,14 +774,14 @@ class PokemonParty_Scene def pbHardRefresh oldtext = [] lastselected = -1 - for i in 0...6 + for i in 0...MAX_PARTY_SIZE oldtext.push(@sprites["pokemon#{i}"].text) lastselected = i if @sprites["pokemon#{i}"].selected @sprites["pokemon#{i}"].dispose end lastselected = @party.length-1 if lastselected>=@party.length lastselected = 0 if lastselected<0 - for i in 0...6 + for i in 0...MAX_PARTY_SIZE if @party[i] @sprites["pokemon#{i}"] = PokemonPartyPanel.new(@party[i],i,@viewport) else @@ -793,7 +793,7 @@ class PokemonParty_Scene end def pbRefresh - for i in 0...6 + for i in 0...MAX_PARTY_SIZE sprite = @sprites["pokemon#{i}"] if sprite if sprite.is_a?(PokemonPartyPanel) @@ -967,17 +967,17 @@ class PokemonPartyScreen def pbPokemonMultipleEntryScreenEx(ruleset) annot = [] statuses = [] - ordinals = [ - _INTL("INELIGIBLE"), - _INTL("NOT ENTERED"), - _INTL("BANNED"), - _INTL("FIRST"), - _INTL("SECOND"), - _INTL("THIRD"), - _INTL("FOURTH"), - _INTL("FIFTH"), - _INTL("SIXTH") - ] + ordinals = [_INTL("INELIGIBLE"), _INTL("NOT ENTERED"), _INTL("BANNED")] + positions = [_INTL("FIRST"), _INTL("SECOND"), _INTL("THIRD"), _INTL("FOURTH"), + _INTL("FIFTH"), _INTL("SIXTH"), _INTL("SEVENTH"), _INTL("EIGHTH"), + _INTL("NINTH"), _INTL("TENTH"), _INTL("ELEVENTH"), _INTL("TWELFTH")] + for i in 0...MAX_PARTY_SIZE + if i < positions.length + ordinals.push(positions[i]) + else + ordinals.push("#{i + 1}th") + end + end return nil if !ruleset.hasValidTeam?(@party) ret = nil addedEntry = false @@ -1006,12 +1006,12 @@ class PokemonPartyScreen end @scene.pbAnnotate(annot) if realorder.length==ruleset.number && addedEntry - @scene.pbSelect(6) + @scene.pbSelect(MAX_PARTY_SIZE) end @scene.pbSetHelpText(_INTL("Choose Pokémon and confirm.")) pkmnid = @scene.pbChoosePokemon addedEntry = false - if pkmnid==6 # Confirm was chosen + if pkmnid == MAX_PARTY_SIZE # Confirm was chosen ret = [] for i in realorder; ret.push(@party[i]); end error = [] diff --git a/Data/Scripts/017_UI/017_PScreen_PokemonStorage.rb b/Data/Scripts/017_UI/017_PScreen_PokemonStorage.rb index dde200a15..7f474f3a4 100644 --- a/Data/Scripts/017_UI/017_PScreen_PokemonStorage.rb +++ b/Data/Scripts/017_UI/017_PScreen_PokemonStorage.rb @@ -291,6 +291,7 @@ end class PokemonBoxSprite < SpriteWrapper attr_accessor :refreshBox attr_accessor :refreshSprites + def initialize(storage,boxnumber,viewport=nil) super(viewport) @storage = storage @@ -298,7 +299,7 @@ class PokemonBoxSprite < SpriteWrapper @refreshBox = true @refreshSprites = true @pokemonsprites = [] - for i in 0...30 + for i in 0...PokemonBox::BOX_SIZE @pokemonsprites[i] = nil pokemon = @storage[boxnumber,i] @pokemonsprites[i] = PokemonBoxIcon.new(pokemon,viewport) @@ -312,7 +313,7 @@ class PokemonBoxSprite < SpriteWrapper def dispose if !disposed? - for i in 0...30 + for i in 0...PokemonBox::BOX_SIZE @pokemonsprites[i].dispose if @pokemonsprites[i] @pokemonsprites[i] = nil end @@ -335,7 +336,7 @@ class PokemonBoxSprite < SpriteWrapper def color=(value) super if @refreshSprites - for i in 0...30 + for i in 0...PokemonBox::BOX_SIZE if @pokemonsprites[i] && !@pokemonsprites[i].disposed? @pokemonsprites[i].color = value end @@ -346,7 +347,7 @@ class PokemonBoxSprite < SpriteWrapper def visible=(value) super - for i in 0...30 + for i in 0...PokemonBox::BOX_SIZE if @pokemonsprites[i] && !@pokemonsprites[i].disposed? @pokemonsprites[i].visible = value end @@ -413,10 +414,10 @@ class PokemonBoxSprite < SpriteWrapper @refreshBox = false end yval = self.y+30 - for j in 0...5 + for j in 0...PokemonBox::BOX_HEIGHT xval = self.x+10 - for k in 0...6 - sprite = @pokemonsprites[j*6+k] + for k in 0...PokemonBox::BOX_WIDTH + sprite = @pokemonsprites[j * PokemonBox::BOX_WIDTH + k] if sprite && !sprite.disposed? sprite.viewport = self.viewport sprite.x = xval @@ -431,7 +432,7 @@ class PokemonBoxSprite < SpriteWrapper def update super - for i in 0...30 + for i in 0...PokemonBox::BOX_SIZE if @pokemonsprites[i] && !@pokemonsprites[i].disposed? @pokemonsprites[i].update end @@ -448,7 +449,7 @@ class PokemonBoxPartySprite < SpriteWrapper @party = party @boxbitmap = AnimatedBitmap.new("Graphics/Pictures/Storage/overlay_party") @pokemonsprites = [] - for i in 0...6 + for i in 0...MAX_PARTY_SIZE @pokemonsprites[i] = nil pokemon = @party[i] if pokemon @@ -464,7 +465,7 @@ class PokemonBoxPartySprite < SpriteWrapper end def dispose - for i in 0...6 + for i in 0...MAX_PARTY_SIZE @pokemonsprites[i].dispose if @pokemonsprites[i] end @boxbitmap.dispose @@ -484,7 +485,7 @@ class PokemonBoxPartySprite < SpriteWrapper def color=(value) super - for i in 0...6 + for i in 0...MAX_PARTY_SIZE if @pokemonsprites[i] && !@pokemonsprites[i].disposed? @pokemonsprites[i].color = pbSrcOver(@pokemonsprites[i].color,value) end @@ -493,7 +494,7 @@ class PokemonBoxPartySprite < SpriteWrapper def visible=(value) super - for i in 0...6 + for i in 0...MAX_PARTY_SIZE if @pokemonsprites[i] && !@pokemonsprites[i].disposed? @pokemonsprites[i].visible = value end @@ -528,23 +529,26 @@ class PokemonBoxPartySprite < SpriteWrapper end def refresh - @contents.blt(0,0,@boxbitmap.bitmap,Rect.new(0,0,172,352)) + @contents.blt(0, 0, @boxbitmap.bitmap, Rect.new(0, 0, 172, 352)) pbDrawTextPositions(self.bitmap,[ - [_INTL("Back"),86,240,2,Color.new(248,248,248),Color.new(80,80,80),1] + [_INTL("Back"), 86, 240, 2, Color.new(248, 248, 248), Color.new(80, 80, 80), 1] ]) - - xvalues = [18,90,18,90,18,90] - yvalues = [2,18,66,82,130,146] - for j in 0...6 + xvalues = [] # [18, 90, 18, 90, 18, 90] + yvalues = [] # [2, 18, 66, 82, 130, 146] + for i in 0...MAX_PARTY_SIZE + xvalues.push(18 + 72 * (i % 2)) + yvalues.push(2 + 16 * (i % 2) + 64 * (i / 2)) + end + for j in 0...MAX_PARTY_SIZE @pokemonsprites[j] = nil if @pokemonsprites[j] && @pokemonsprites[j].disposed? end @pokemonsprites.compact! - for j in 0...6 + for j in 0...MAX_PARTY_SIZE sprite = @pokemonsprites[j] if sprite && !sprite.disposed? sprite.viewport = self.viewport - sprite.x = self.x+xvalues[j] - sprite.y = self.y+yvalues[j] + sprite.x = self.x + xvalues[j] + sprite.y = self.y + yvalues[j] sprite.z = 0 end end @@ -552,7 +556,7 @@ class PokemonBoxPartySprite < SpriteWrapper def update super - for i in 0...6 + for i in 0...MAX_PARTY_SIZE @pokemonsprites[i].update if @pokemonsprites[i] && !@pokemonsprites[i].disposed? end end @@ -702,8 +706,8 @@ class PokemonStorageScene arrow.x = 207*2 arrow.y = 139*2 else - arrow.x = (97+24*(selection%6))*2 - arrow.y = (8+24*(selection/6))*2 + arrow.x = (97 + 24 * (selection % PokemonBox::BOX_WIDTH)) * 2 + arrow.y = (8 + 24 * (selection / PokemonBox::BOX_WIDTH)) * 2 end end @@ -713,24 +717,29 @@ class PokemonStorageScene if selection==-1 # Box name selection = -2 elsif selection==-2 # Party - selection = 25 + selection = PokemonBox::BOX_SIZE - 1 - PokemonBox::BOX_WIDTH * 2 / 3 # 25 elsif selection==-3 # Close Box - selection = 28 + selection = PokemonBox::BOX_SIZE - PokemonBox::BOX_WIDTH / 3 # 28 else - selection -= 6 - selection = -1 if selection<0 + selection -= PokemonBox::BOX_WIDTH + selection = -1 if selection < 0 end when Input::DOWN if selection==-1 # Box name - selection = 2 + selection = PokemonBox::BOX_WIDTH / 3 # 2 elsif selection==-2 # Party selection = -1 elsif selection==-3 # Close Box selection = -1 else - selection += 6 - selection = -2 if selection==30 || selection==31 || selection==32 - selection = -3 if selection==33 || selection==34 || selection==35 + selection += PokemonBox::BOX_WIDTH + if selection >= PokemonBox::BOX_SIZE + if selection < PokemonBox::BOX_SIZE + PokemonBox::BOX_WIDTH / 2 + selection = -2 # Party + else + selection = -3 # Close Box + end + end end when Input::LEFT if selection==-1 # Box name @@ -739,9 +748,10 @@ class PokemonStorageScene selection = -3 elsif selection==-3 selection = -2 + elsif (selection % PokemonBox::BOX_WIDTH) == 0 # Wrap around + selection += PokemonBox::BOX_WIDTH - 1 else selection -= 1 - selection += 6 if selection==-1 || selection%6==5 end when Input::RIGHT if selection==-1 # Box name @@ -750,48 +760,54 @@ class PokemonStorageScene selection = -3 elsif selection==-3 selection = -2 + elsif (selection % PokemonBox::BOX_WIDTH) == PokemonBox::BOX_WIDTH - 1 # Wrap around + selection -= PokemonBox::BOX_WIDTH - 1 else selection += 1 - selection -= 6 if selection%6==0 end end return selection end def pbPartySetArrow(arrow,selection) - if selection>=0 - xvalues = [100,136,100,136,100,136,118] - yvalues = [1,9,33,41,65,73,110] - arrow.angle = 0 - arrow.mirror = false - arrow.ox = 0 - arrow.oy = 0 - arrow.x = xvalues[selection]*2 - arrow.y = yvalues[selection]*2 + return if selection < 0 + xvalues = [] # [200, 272, 200, 272, 200, 272, 236] + yvalues = [] # [2, 18, 66, 82, 130, 146, 220] + for i in 0...MAX_PARTY_SIZE + xvalues.push(200 + 72 * (i % 2)) + yvalues.push(2 + 16 * (i % 2) + 64 * (i / 2)) end + xvalues.push(236) + yvalues.push(220) + arrow.angle = 0 + arrow.mirror = false + arrow.ox = 0 + arrow.oy = 0 + arrow.x = xvalues[selection] + arrow.y = yvalues[selection] end def pbPartyChangeSelection(key,selection) case key when Input::LEFT selection -= 1 - selection = 6 if selection<0 + selection = MAX_PARTY_SIZE if selection < 0 when Input::RIGHT selection += 1 - selection = 0 if selection>6 + selection = 0 if selection > MAX_PARTY_SIZE when Input::UP - if selection==6 - selection = 5 + if selection == MAX_PARTY_SIZE + selection = MAX_PARTY_SIZE - 1 else selection -= 2 - selection = 6 if selection<0 + selection = MAX_PARTY_SIZE if selection < 0 end when Input::DOWN - if selection==6 + if selection == MAX_PARTY_SIZE selection = 0 else selection += 2 - selection = 6 if selection>6 + selection = MAX_PARTY_SIZE if selection > MAX_PARTY_SIZE end end return selection @@ -929,17 +945,17 @@ class PokemonStorageScene pbSetMosaic(selection) end self.update - if Input.trigger?(Input::A) && @command==0 # Organize only + if Input.trigger?(Input::A) && @command == 0 # Organize only pbPlayDecisionSE pbSetQuickSwap(!@quickswap) elsif Input.trigger?(Input::B) @selection = selection return -1 elsif Input.trigger?(Input::C) - if selection>=0 && selection<6 + if selection >= 0 && selection < MAX_PARTY_SIZE @selection = selection return selection - elsif selection==6 # Close Box + elsif selection == MAX_PARTY_SIZE # Close Box @selection = selection return (depositing) ? -3 : -1 end @@ -1665,7 +1681,7 @@ class PokemonStorageScreen if box==-1 raise _INTL("Can't withdraw from party..."); end - if @storage.party.nitems>=6 + if @storage.party.length >= MAX_PARTY_SIZE pbDisplay(_INTL("Your party's full!")) return false end diff --git a/Data/Scripts/017_UI/019_PScreen_PC.rb b/Data/Scripts/017_UI/019_PScreen_PC.rb index ab06fc218..abd9a499b 100644 --- a/Data/Scripts/017_UI/019_PScreen_PC.rb +++ b/Data/Scripts/017_UI/019_PScreen_PC.rb @@ -48,7 +48,7 @@ class StorageSystemPC ) if command>=0 && command<3 if command==1 # Withdraw - if $PokemonStorage.party.length>=6 + if $PokemonStorage.party.length >= MAX_PARTY_SIZE pbMessage(_INTL("Your party is full!")) next end diff --git a/Data/Scripts/019_Other battles/003_PBattle_OrgBattle.rb b/Data/Scripts/019_Other battles/003_PBattle_OrgBattle.rb index e8ae26fe8..ab6775361 100644 --- a/Data/Scripts/019_Other battles/003_PBattle_OrgBattle.rb +++ b/Data/Scripts/019_Other battles/003_PBattle_OrgBattle.rb @@ -868,7 +868,7 @@ def pbBattleFactoryPokemon(rule,numwins,numswaps,_rentals) party=[] loop do party.clear - while party.length<6 + while party.length < MAX_PARTY_SIZE rnd=pokemonNumbers[0]+rand(pokemonNumbers[1]-pokemonNumbers[0]+1) rndpoke=btpokemon[rnd] indvalue=(party.length=6 && rules.ruleset.hasValidTeam?(numbersPokemon) + break if numbers.length >= MAX_PARTY_SIZE && rules.ruleset.hasValidTeam?(numbersPokemon) end - if numbers.length<6 || !rules.ruleset.hasValidTeam?(numbersPokemon) + if numbers.length < MAX_PARTY_SIZE || !rules.ruleset.hasValidTeam?(numbersPokemon) while numbers.length= MAX_PARTY_SIZE && $PokemonStorage.full?) end def pbNickname(pkmn) @@ -21,7 +21,7 @@ def pbStorePokemon(pkmn) return end pkmn.pbRecordFirstMoves - if $Trainer.party.length < 6 + if $Trainer.party.length < MAX_PARTY_SIZE $Trainer.party[$Trainer.party.length] = pkmn else oldcurbox = $PokemonStorage.currentBox @@ -85,7 +85,7 @@ def pbAddPokemonSilent(pkmn, level = 1, see_form = true) $Trainer.owned[pkmn.species] = true pbSeenForm(pkmn) if see_form pkmn.pbRecordFirstMoves - if $Trainer.party.length < 6 + if $Trainer.party.length < MAX_PARTY_SIZE $Trainer.party[$Trainer.party.length] = pkmn else $PokemonStorage.pbStoreCaught(pkmn) @@ -97,7 +97,7 @@ end # Giving Pokémon/eggs to the player (can only add to party) #=============================================================================== def pbAddToParty(pkmn, level = 1, see_form = true) - return false if !pkmn || $Trainer.party.length >= 6 + return false if !pkmn || $Trainer.party.length >= MAX_PARTY_SIZE pkmn = Pokemon.new(pkmn, level) if !pkmn.is_a?(Pokemon) species_name = pkmn.speciesName pbMessage(_INTL("{1} obtained {2}!\\me[Pkmn get]\\wtnp[80]\1", $Trainer.name, species_name)) @@ -107,7 +107,7 @@ def pbAddToParty(pkmn, level = 1, see_form = true) end def pbAddToPartySilent(pkmn, level = nil, see_form = true) - return false if !pkmn || $Trainer.party.length >= 6 + return false if !pkmn || $Trainer.party.length >= MAX_PARTY_SIZE pkmn = Pokemon.new(pkmn, level) if !pkmn.is_a?(Pokemon) $Trainer.seen[pkmn.species] = true $Trainer.owned[pkmn.species] = true @@ -118,7 +118,7 @@ def pbAddToPartySilent(pkmn, level = nil, see_form = true) end def pbAddForeignPokemon(pkmn, level = 1, owner_name = nil, nickname = nil, owner_gender = 0, see_form = true) - return false if !pkmn || $Trainer.party.length>=6 + return false if !pkmn || $Trainer.party.length >= MAX_PARTY_SIZE pkmn = Pokemon.new(pkmn, level) if !pkmn.is_a?(Pokemon) # Set original trainer to a foreign one pkmn.owner = Pokemon::Owner.new_foreign(owner_name || "", owner_gender) @@ -139,7 +139,7 @@ def pbAddForeignPokemon(pkmn, level = 1, owner_name = nil, nickname = nil, owner end def pbGenerateEgg(pkmn, text = "") - return false if !pkmn || $Trainer.party.length >= 6 + return false if !pkmn || $Trainer.party.length >= MAX_PARTY_SIZE pkmn = Pokemon.new(pkmn, EGG_LEVEL) if !pkmn.is_a?(Pokemon) # Set egg's details pkmn.name = _INTL("Egg") diff --git a/Data/Scripts/021_Debug/001_Debug menus/002_Debug_MenuCommands.rb b/Data/Scripts/021_Debug/001_Debug menus/002_Debug_MenuCommands.rb index 9658ba945..879942f35 100644 --- a/Data/Scripts/021_Debug/001_Debug menus/002_Debug_MenuCommands.rb +++ b/Data/Scripts/021_Debug/001_Debug menus/002_Debug_MenuCommands.rb @@ -605,7 +605,7 @@ DebugMenuCommands.register("fillboxes", { else # Both male and female $Trainer.formseen[sp][0][f] = true $Trainer.formseen[sp][1][f] = true - $Trainer.formlastseen[i] = [0, f] if f == 0 + $Trainer.formlastseen[sp] = [0, f] if f == 0 end elsif species_data.real_form_name && !species_data.real_form_name.empty? g = (species_data.gender_rate == PBGenderRates::AlwaysFemale) ? 1 : 0 diff --git a/Data/Scripts/021_Debug/001_Debug menus/003_Debug_MenuExtraCode.rb b/Data/Scripts/021_Debug/001_Debug menus/003_Debug_MenuExtraCode.rb index e764fd8dd..f4b0a1a63 100644 --- a/Data/Scripts/021_Debug/001_Debug menus/003_Debug_MenuExtraCode.rb +++ b/Data/Scripts/021_Debug/001_Debug menus/003_Debug_MenuExtraCode.rb @@ -291,7 +291,7 @@ def pbDebugDayCare when 0 # Withdraw Pokémon 1 if !$PokemonGlobal.daycare[0][0] pbPlayBuzzerSE - elsif $Trainer.party.length>=6 + elsif $Trainer.party.length >= MAX_PARTY_SIZE pbPlayBuzzerSE pbMessage(_INTL("Party is full, can't withdraw Pokémon.")) else @@ -303,7 +303,7 @@ def pbDebugDayCare when 1 # Withdraw Pokémon 2 if !$PokemonGlobal.daycare[1][0] pbPlayBuzzerSE - elsif $Trainer.party.length>=6 + elsif $Trainer.party.length >= MAX_PARTY_SIZE pbPlayBuzzerSE pbMessage(_INTL("Party is full, can't withdraw Pokémon.")) else @@ -344,7 +344,7 @@ def pbDebugDayCare when 4 # Collect egg if $PokemonGlobal.daycareEgg!=1 pbPlayBuzzerSE - elsif $Trainer.party.length>=6 + elsif $Trainer.party.length >= MAX_PARTY_SIZE pbPlayBuzzerSE pbMessage(_INTL("Party is full, can't collect the egg.")) else