From 19e50bd507af6f28cd682b9c865beebf37af57c7 Mon Sep 17 00:00:00 2001 From: Maruno17 Date: Sun, 20 Feb 2022 23:29:09 +0000 Subject: [PATCH] Updated Power Green fonts, repositioned all text accordingly --- .../001_Technical/001_MKXP_Compatibility.rb | 4 + .../002_MessageConfig.rb | 12 +- .../005_SpriteWindow_text.rb | 21 +-- .../007_Objects and windows/010_DrawText.rb | 9 +- Data/Scripts/009_Scenes/002_EventScene.rb | 2 +- .../004_Scene/005_Battle_Scene_Menus.rb | 6 +- .../004_Scene/006_Battle_Scene_Objects.rb | 12 +- .../001_SafariBattle.rb | 4 +- .../004_BattleArenaBattle.rb | 18 +-- .../002_Overworld_BattleIntroAnim.rb | 4 +- Data/Scripts/013_Items/006_Item_Mail.rb | 4 +- .../006_UI_HallOfFame.rb | 14 +- Data/Scripts/016_UI/002_UI_Pokedex_Menu.rb | 4 +- Data/Scripts/016_UI/003_UI_Pokedex_Main.rb | 130 ++++++++-------- Data/Scripts/016_UI/004_UI_Pokedex_Entry.rb | 42 +++--- Data/Scripts/016_UI/005_UI_Party.rb | 19 ++- Data/Scripts/016_UI/006_UI_Summary.rb | 139 +++++++++--------- Data/Scripts/016_UI/007_UI_Bag.rb | 10 +- Data/Scripts/016_UI/008_UI_Pokegear.rb | 2 +- Data/Scripts/016_UI/009_UI_RegionMap.rb | 8 +- Data/Scripts/016_UI/012_UI_TrainerCard.rb | 24 +-- Data/Scripts/016_UI/013_UI_Load.rb | 62 ++++---- Data/Scripts/016_UI/015_UI_Options.rb | 4 +- Data/Scripts/016_UI/016_UI_ReadyMenu.rb | 6 +- Data/Scripts/016_UI/017_UI_PokemonStorage.rb | 28 ++-- Data/Scripts/016_UI/018_UI_ItemStorage.rb | 10 +- Data/Scripts/016_UI/020_UI_PokeMart.rb | 8 +- Data/Scripts/016_UI/021_UI_MoveRelearner.rb | 23 ++- Data/Scripts/016_UI/022_UI_PurifyChamber.rb | 14 +- Data/Scripts/016_UI/024_UI_TextEntry.rb | 14 +- .../017_Minigames/002_Minigame_TripleTriad.rb | 6 +- .../017_Minigames/004_Minigame_VoltorbFlip.rb | 10 +- .../002_EditorScreens_TerrainTags.rb | 6 +- .../002_AnimEditor_ControlsButtons.rb | 6 +- Fonts/power green narrow.ttf | Bin 17796 -> 24704 bytes Fonts/power green small.ttf | Bin 17072 -> 23480 bytes Fonts/power green.ttf | Bin 18648 -> 25864 bytes 37 files changed, 353 insertions(+), 332 deletions(-) diff --git a/Data/Scripts/001_Technical/001_MKXP_Compatibility.rb b/Data/Scripts/001_Technical/001_MKXP_Compatibility.rb index 3c1853169..bd09633d2 100644 --- a/Data/Scripts/001_Technical/001_MKXP_Compatibility.rb +++ b/Data/Scripts/001_Technical/001_MKXP_Compatibility.rb @@ -10,13 +10,17 @@ def pbSetWindowText(string) end class Bitmap + attr_accessor :text_offset_y + alias mkxp_draw_text draw_text unless method_defined?(:mkxp_draw_text) def draw_text(x, y, width, height = nil, text = "", align = 0) if x.is_a?(Rect) + x.y -= (@text_offset_y || 0) # rect, string & alignment mkxp_draw_text(x, y, width) else + y -= (@text_offset_y || 0) height = text_size(text).height mkxp_draw_text(x, y, width, height, text, align) end diff --git a/Data/Scripts/007_Objects and windows/002_MessageConfig.rb b/Data/Scripts/007_Objects and windows/002_MessageConfig.rb index 99664fa5b..7c7a16369 100644 --- a/Data/Scripts/007_Objects and windows/002_MessageConfig.rb +++ b/Data/Scripts/007_Objects and windows/002_MessageConfig.rb @@ -4,11 +4,14 @@ module MessageConfig DARK_TEXT_MAIN_COLOR = Color.new(80, 80, 88) DARK_TEXT_SHADOW_COLOR = Color.new(160, 160, 168) FONT_NAME = "Power Green" - FONT_SIZE = 29 + FONT_SIZE = 27 + FONT_Y_OFFSET = 8 SMALL_FONT_NAME = "Power Green Small" - SMALL_FONT_SIZE = 25 + SMALL_FONT_SIZE = 21 + SMALL_FONT_Y_OFFSET = 8 NARROW_FONT_NAME = "Power Green Narrow" - NARROW_FONT_SIZE = 29 + NARROW_FONT_SIZE = 27 + NARROW_FONT_Y_OFFSET = 8 # 0 = Pause cursor is displayed at end of text # 1 = Pause cursor is displayed at bottom right # 2 = Pause cursor is displayed at lower middle side @@ -408,18 +411,21 @@ end def pbSetSystemFont(bitmap) bitmap.font.name = MessageConfig.pbGetSystemFontName bitmap.font.size = MessageConfig::FONT_SIZE + bitmap.text_offset_y = MessageConfig::FONT_Y_OFFSET end # Sets a bitmap's font to the system small font. def pbSetSmallFont(bitmap) bitmap.font.name = MessageConfig.pbGetSmallFontName bitmap.font.size = MessageConfig::SMALL_FONT_SIZE + bitmap.text_offset_y = MessageConfig::SMALL_FONT_Y_OFFSET end # Sets a bitmap's font to the system narrow font. def pbSetNarrowFont(bitmap) bitmap.font.name = MessageConfig.pbGetNarrowFontName bitmap.font.size = MessageConfig::NARROW_FONT_SIZE + bitmap.text_offset_y = MessageConfig::NARROW_FONT_Y_OFFSET end #=============================================================================== diff --git a/Data/Scripts/007_Objects and windows/005_SpriteWindow_text.rb b/Data/Scripts/007_Objects and windows/005_SpriteWindow_text.rb index 3a0f14893..e09de47db 100644 --- a/Data/Scripts/007_Objects and windows/005_SpriteWindow_text.rb +++ b/Data/Scripts/007_Objects and windows/005_SpriteWindow_text.rb @@ -1,7 +1,7 @@ #=============================================================================== # #=============================================================================== -# Represents a window with no formatting capabilities. Its text color can be set, +# Represents a window with no formatting capabilities. Its text color can be set, # though, and line breaks are supported, but the text is generally unformatted. class Window_UnformattedTextPokemon < SpriteWindow_Base attr_reader :text @@ -101,7 +101,7 @@ class Window_UnformattedTextPokemon < SpriteWindow_Base self.contents = pbDoEnsureBitmap(self.contents, self.width - self.borderX, self.height - self.borderY) self.contents.clear - drawTextEx(self.contents, 0, 4, self.contents.width, 0, + drawTextEx(self.contents, 0, -2, self.contents.width, 0, # TEXT OFFSET @text.gsub(/\r/, ""), @baseColor, @shadowColor) end end @@ -317,7 +317,6 @@ class Window_AdvancedTextPokemon < SpriteWindow_Base chy = ch[2] + ch[4] width = chx if width < chx height = chy if height < chy - ch[2] += 4 if !ch[5] && ch[0] == "\n" numlines += 1 if numlines >= visiblelines @@ -345,7 +344,6 @@ class Window_AdvancedTextPokemon < SpriteWindow_Base chy = ch[2] + ch[4] width = chx if width < chx height = chy if height < chy - ch[2] += 4 @textchars.push(ch[5] ? "" : ch[0]) end end @@ -715,7 +713,10 @@ class Window_InputNumberPokemon < SpriteWindow_Base def textHelper(x, y, text, i) textwidth = self.contents.text_size(text).width - pbDrawShadowText(self.contents, x + (12 - (textwidth / 2)), y, textwidth + 4, 32, text, @baseColor, @shadowColor) + pbDrawShadowText(self.contents, + x + (12 - (textwidth / 2)), + y - 2 + (self.contents.text_offset_y || 0), # TEXT OFFSET (the - 2) + textwidth + 4, 32, text, @baseColor, @shadowColor) if @index == i && @active && @frame / 15 == 0 self.contents.fill_rect(x + (12 - (textwidth / 2)), y + 30, textwidth, 2, @baseColor) end @@ -735,7 +736,7 @@ class SpriteWindow_Selectable < SpriteWindow_Base super(x, y, width, height) @item_max = 1 @column_max = 1 - @virtualOy = 0 + @virtualOy = 2 # TEXT OFFSET @index = -1 @row_height = 32 @column_spacing = 32 @@ -803,7 +804,7 @@ class SpriteWindow_Selectable < SpriteWindow_Base def top_row=(row) row = row_max - 1 if row > row_max - 1 row = 0 if row < 0 - @virtualOy = row * @row_height + @virtualOy = (row * @row_height) + 2 # TEXT OFFSET (the + 2) end def top_item @@ -1106,7 +1107,7 @@ class Window_DrawableCommand < SpriteWindow_SelectableEx def drawCursor(index, rect) if self.index == index - pbCopyBitmap(self.contents, @selarrow.bitmap, rect.x, rect.y) + pbCopyBitmap(self.contents, @selarrow.bitmap, rect.x, rect.y + 2) # TEXT OFFSET (counters the offset above) end return Rect.new(rect.x + 16, rect.y, rect.width - 16, rect.height) end @@ -1223,8 +1224,8 @@ class Window_CommandPokemon < Window_DrawableCommand def drawItem(index, _count, rect) pbSetSystemFont(self.contents) if @starting rect = drawCursor(index, rect) - pbDrawShadowText(self.contents, rect.x, rect.y, rect.width, rect.height, - @commands[index], self.baseColor, self.shadowColor) + pbDrawShadowText(self.contents, rect.x, rect.y + (self.contents.text_offset_y || 0), + rect.width, rect.height, @commands[index], self.baseColor, self.shadowColor) end end diff --git a/Data/Scripts/007_Objects and windows/010_DrawText.rb b/Data/Scripts/007_Objects and windows/010_DrawText.rb index 577d75cce..7feaa0a7e 100644 --- a/Data/Scripts/007_Objects and windows/010_DrawText.rb +++ b/Data/Scripts/007_Objects and windows/010_DrawText.rb @@ -663,7 +663,7 @@ def getFormattedText(bitmap, xDst, yDst, widthDst, heightDst, text, lineheight = elsif isspace hadspace = true end - texty = (lineheight * y) + yDst + yStart + texty = (lineheight * y) + yDst + yStart - 2 # TEXT OFFSET colors = getLastColors(colorstack, opacitystack, defaultcolors) # Push character if heightDst < 0 || texty < yDst + heightDst @@ -1083,8 +1083,8 @@ def drawTextEx(bitmap, x, y, width, numlines, text, baseColor, shadowColor) end def drawFormattedTextEx(bitmap, x, y, width, text, baseColor = nil, shadowColor = nil, lineheight = 32) - base = baseColor ? baseColor.clone : Color.new(12 * 8, 12 * 8, 12 * 8) - shadow = shadowColor ? shadowColor.clone : Color.new(26 * 8, 26 * 8, 25 * 8) + base = baseColor ? baseColor.clone : Color.new(96, 96, 96) + shadow = shadowColor ? shadowColor.clone : Color.new(208, 208, 200) text = "" + text chars = getFormattedText(bitmap, x, y, width, -1, text, lineheight) drawFormattedChars(bitmap, chars) @@ -1100,7 +1100,6 @@ def pbDrawShadowText(bitmap, x, y, width, height, string, baseColor, shadowColor return if !bitmap || !string width = (width < 0) ? bitmap.text_size(string).width + 1 : width height = (height < 0) ? bitmap.text_size(string).height + 1 : height - y += 4 if shadowColor && shadowColor.alpha > 0 bitmap.font.color = shadowColor bitmap.draw_text(x + 2, y, width, height, string, align) @@ -1148,7 +1147,7 @@ def pbDrawTextPositions(bitmap, textpos) textpos.each do |i| textsize = bitmap.text_size(i[0]) x = i[1] - y = i[2] + 6 + y = i[2] case i[3] when true, 1 # right align x -= textsize.width diff --git a/Data/Scripts/009_Scenes/002_EventScene.rb b/Data/Scripts/009_Scenes/002_EventScene.rb index 0aa75c87c..519466ca3 100644 --- a/Data/Scripts/009_Scenes/002_EventScene.rb +++ b/Data/Scripts/009_Scenes/002_EventScene.rb @@ -55,7 +55,7 @@ end def pbTextBitmap(text, maxwidth = Graphics.width) tmp = Bitmap.new(maxwidth, Graphics.height) pbSetSystemFont(tmp) - drawFormattedTextEx(tmp, 0, 0, maxwidth, text, Color.new(248, 248, 248), Color.new(168, 184, 184)) + drawFormattedTextEx(tmp, 0, 4, maxwidth, text, Color.new(248, 248, 248), Color.new(168, 184, 184)) return tmp end diff --git a/Data/Scripts/011_Battle/004_Scene/005_Battle_Scene_Menus.rb b/Data/Scripts/011_Battle/004_Scene/005_Battle_Scene_Menus.rb index 6c1a5a62d..ee06be229 100644 --- a/Data/Scripts/011_Battle/004_Scene/005_Battle_Scene_Menus.rb +++ b/Data/Scripts/011_Battle/004_Scene/005_Battle_Scene_Menus.rb @@ -352,7 +352,7 @@ class Battle::Scene::FightMenu < Battle::Scene::MenuBase @buttons.each_with_index do |button, i| next if !@visibility["button_#{i}"] x = button.x - self.x + (button.src_rect.width / 2) - y = button.y - self.y + 2 + y = button.y - self.y + 14 moveNameBase = TEXT_BASE_COLOR if GET_MOVE_TEXT_COLOR_FROM_MOVE_BUTTON && moves[i].display_type(@battler) # NOTE: This takes a color from a particular pixel in the button @@ -411,7 +411,7 @@ class Battle::Scene::FightMenu < Battle::Scene::MenuBase ppFraction = [(4.0 * move.pp / move.total_pp).ceil, 3].min textPos = [] textPos.push([_INTL("PP: {1}/{2}", move.pp, move.total_pp), - 448, 44, 2, PP_COLORS[ppFraction * 2], PP_COLORS[(ppFraction * 2) + 1]]) + 448, 56, 2, PP_COLORS[ppFraction * 2], PP_COLORS[(ppFraction * 2) + 1]]) pbDrawTextPositions(@infoOverlay.bitmap, textPos) end end @@ -544,7 +544,7 @@ class Battle::Scene::TargetMenu < Battle::Scene::MenuBase @buttons.each_with_index do |button, i| next if !button || nil_or_empty?(@texts[i]) x = button.x - self.x + (button.src_rect.width / 2) - y = button.y - self.y + 2 + y = button.y - self.y + 14 textpos.push([@texts[i], x, y, 2, TEXT_BASE_COLOR, TEXT_SHADOW_COLOR]) end pbDrawTextPositions(@overlay.bitmap, textpos) diff --git a/Data/Scripts/011_Battle/004_Scene/006_Battle_Scene_Objects.rb b/Data/Scripts/011_Battle/004_Scene/006_Battle_Scene_Objects.rb index 38c76a334..7c69964ad 100644 --- a/Data/Scripts/011_Battle/004_Scene/006_Battle_Scene_Objects.rb +++ b/Data/Scripts/011_Battle/004_Scene/006_Battle_Scene_Objects.rb @@ -81,7 +81,7 @@ class Battle::Scene::PokemonDataBox < SpriteWrapper @expBarBitmap = AnimatedBitmap.new(_INTL("Graphics/Pictures/Battle/overlay_exp")) # Create sprite to draw HP numbers on @hpNumbers = BitmapSprite.new(124, 16, viewport) - pbSetSmallFont(@hpNumbers.bitmap) +# pbSetSmallFont(@hpNumbers.bitmap) @sprites["hpNumbers"] = @hpNumbers # Create sprite wrapper that displays HP bar @hpBar = SpriteWrapper.new(viewport) @@ -216,13 +216,13 @@ class Battle::Scene::PokemonDataBox < SpriteWrapper nameWidth = self.bitmap.text_size(@battler.name).width nameOffset = 0 nameOffset = nameWidth - 116 if nameWidth > 116 - textPos.push([@battler.name, @spriteBaseX + 8 - nameOffset, 0, false, NAME_BASE_COLOR, NAME_SHADOW_COLOR]) + textPos.push([@battler.name, @spriteBaseX + 8 - nameOffset, 12, false, NAME_BASE_COLOR, NAME_SHADOW_COLOR]) # Draw Pokémon's gender symbol case @battler.displayGender when 0 # Male - textPos.push([_INTL("♂"), @spriteBaseX + 126, 0, false, MALE_BASE_COLOR, MALE_SHADOW_COLOR]) + textPos.push([_INTL("♂"), @spriteBaseX + 126, 12, false, MALE_BASE_COLOR, MALE_SHADOW_COLOR]) when 1 # Female - textPos.push([_INTL("♀"), @spriteBaseX + 126, 0, false, FEMALE_BASE_COLOR, FEMALE_SHADOW_COLOR]) + textPos.push([_INTL("♀"), @spriteBaseX + 126, 12, false, FEMALE_BASE_COLOR, FEMALE_SHADOW_COLOR]) end pbDrawTextPositions(self.bitmap, textPos) # Draw Pokémon's level @@ -457,10 +457,10 @@ class Battle::Scene::AbilitySplashBar < SpriteWrapper textPos = [] textX = (@side == 0) ? 10 : self.bitmap.width - 8 # Draw Pokémon's name - textPos.push([_INTL("{1}'s", @battler.name), textX, -4, @side == 1, + textPos.push([_INTL("{1}'s", @battler.name), textX, 8, @side == 1, TEXT_BASE_COLOR, TEXT_SHADOW_COLOR, true]) # Draw Pokémon's ability - textPos.push([@battler.abilityName, textX, 26, @side == 1, + textPos.push([@battler.abilityName, textX, 38, @side == 1, TEXT_BASE_COLOR, TEXT_SHADOW_COLOR, true]) pbDrawTextPositions(self.bitmap, textPos) end diff --git a/Data/Scripts/011_Battle/007_Other battle types/001_SafariBattle.rb b/Data/Scripts/011_Battle/007_Other battle types/001_SafariBattle.rb index 407d51f16..03000d664 100644 --- a/Data/Scripts/011_Battle/007_Other battle types/001_SafariBattle.rb +++ b/Data/Scripts/011_Battle/007_Other battle types/001_SafariBattle.rb @@ -83,8 +83,8 @@ class Battle::Scene::SafariDataBox < SpriteWrapper base = Color.new(72, 72, 72) shadow = Color.new(184, 184, 184) textpos = [] - textpos.push([_INTL("Safari Balls"), 30, 2, false, base, shadow]) - textpos.push([_INTL("Left: {1}", @battle.ballCount), 30, 32, false, base, shadow]) + textpos.push([_INTL("Safari Balls"), 30, 14, false, base, shadow]) + textpos.push([_INTL("Left: {1}", @battle.ballCount), 30, 44, false, base, shadow]) pbDrawTextPositions(self.bitmap, textpos) end diff --git a/Data/Scripts/011_Battle/007_Other battle types/004_BattleArenaBattle.rb b/Data/Scripts/011_Battle/007_Other battle types/004_BattleArenaBattle.rb index de3285eae..215eaf0cc 100644 --- a/Data/Scripts/011_Battle/007_Other battle types/004_BattleArenaBattle.rb +++ b/Data/Scripts/011_Battle/007_Other battle types/004_BattleArenaBattle.rb @@ -241,15 +241,15 @@ class Battle::Scene window.contents.clear pbSetSystemFont(window.contents) textpos = [ - [battler1.name, 64, -6, 2, Color.new(248, 0, 0), Color.new(208, 208, 200)], - [_INTL("VS"), 144, -6, 2, Color.new(72, 72, 72), Color.new(208, 208, 200)], - [battler2.name, 224, -6, 2, Color.new(72, 72, 72), Color.new(208, 208, 200)], - [_INTL("Mind"), 144, 42, 2, Color.new(72, 72, 72), Color.new(208, 208, 200)], - [_INTL("Skill"), 144, 74, 2, Color.new(72, 72, 72), Color.new(208, 208, 200)], - [_INTL("Body"), 144, 106, 2, Color.new(72, 72, 72), Color.new(208, 208, 200)], - [sprintf("%d", total1), 64, 154, 2, Color.new(72, 72, 72), Color.new(208, 208, 200)], - [_INTL("Judgment"), 144, 154, 2, Color.new(72, 72, 72), Color.new(208, 208, 200)], - [sprintf("%d", total2), 224, 154, 2, Color.new(72, 72, 72), Color.new(208, 208, 200)] + [battler1.name, 64, 6, 2, Color.new(248, 0, 0), Color.new(208, 208, 200)], + [_INTL("VS"), 144, 6, 2, Color.new(72, 72, 72), Color.new(208, 208, 200)], + [battler2.name, 224, 6, 2, Color.new(72, 72, 72), Color.new(208, 208, 200)], + [_INTL("Mind"), 144, 54, 2, Color.new(72, 72, 72), Color.new(208, 208, 200)], + [_INTL("Skill"), 144, 86, 2, Color.new(72, 72, 72), Color.new(208, 208, 200)], + [_INTL("Body"), 144, 118, 2, Color.new(72, 72, 72), Color.new(208, 208, 200)], + [sprintf("%d", total1), 64, 166, 2, Color.new(72, 72, 72), Color.new(208, 208, 200)], + [_INTL("Judgment"), 144, 166, 2, Color.new(72, 72, 72), Color.new(208, 208, 200)], + [sprintf("%d", total2), 224, 166, 2, Color.new(72, 72, 72), Color.new(208, 208, 200)] ] pbDrawTextPositions(window.contents, textpos) images = [] diff --git a/Data/Scripts/012_Overworld/002_Battle triggering/002_Overworld_BattleIntroAnim.rb b/Data/Scripts/012_Overworld/002_Battle triggering/002_Overworld_BattleIntroAnim.rb index aa07eadc8..f43000f3a 100644 --- a/Data/Scripts/012_Overworld/002_Battle triggering/002_Overworld_BattleIntroAnim.rb +++ b/Data/Scripts/012_Overworld/002_Battle triggering/002_Overworld_BattleIntroAnim.rb @@ -283,9 +283,9 @@ SpecialBattleIntroAnimations.register("vs_animation", 50, # Priority 50 trainer.tone = Tone.new(0, 0, 0) trainername = foe[0].name textpos = [ - [$player.name, Graphics.width / 4, (Graphics.height / 1.5) + 4, 2, + [$player.name, Graphics.width / 4, (Graphics.height / 1.5) + 16, 2, Color.new(248, 248, 248), Color.new(72, 72, 72)], - [trainername, (Graphics.width / 4) + (Graphics.width / 2), (Graphics.height / 1.5) + 4, 2, + [trainername, (Graphics.width / 4) + (Graphics.width / 2), (Graphics.height / 1.5) + 16, 2, Color.new(248, 248, 248), Color.new(72, 72, 72)] ] pbDrawTextPositions(overlay.bitmap, textpos) diff --git a/Data/Scripts/013_Items/006_Item_Mail.rb b/Data/Scripts/013_Items/006_Item_Mail.rb index 1bf4c07c5..8312a6499 100644 --- a/Data/Scripts/013_Items/006_Item_Mail.rb +++ b/Data/Scripts/013_Items/006_Item_Mail.rb @@ -70,13 +70,13 @@ def pbDisplayMail(mail, _bearer = nil) shadowForLightBG = Color.new(168, 168, 176) if mail.message && mail.message != "" isDark = isDarkBackground(sprites["card"].bitmap, Rect.new(48, 48, Graphics.width - 96, 32 * 7)) - drawTextEx(overlay, 48, 52, Graphics.width - (48 * 2), 7, mail.message, + drawTextEx(overlay, 48, 52, Graphics.width - 94, 7, mail.message, (isDark) ? baseForDarkBG : baseForLightBG, (isDark) ? shadowForDarkBG : shadowForLightBG) end if mail.sender && mail.sender != "" isDark = isDarkBackground(sprites["card"].bitmap, Rect.new(336, 322, 144, 32 * 1)) - drawTextEx(overlay, 336, 326, 144, 1, mail.sender, + drawTextEx(overlay, 336, 328, 144, 1, mail.sender, (isDark) ? baseForDarkBG : baseForLightBG, (isDark) ? shadowForDarkBG : shadowForLightBG) end diff --git a/Data/Scripts/016_UI/001_Non-interactive UI/006_UI_HallOfFame.rb b/Data/Scripts/016_UI/001_Non-interactive UI/006_UI_HallOfFame.rb index 00abf3f45..5fe3e2e8a 100644 --- a/Data/Scripts/016_UI/001_Non-interactive UI/006_UI_HallOfFame.rb +++ b/Data/Scripts/016_UI/001_Non-interactive UI/006_UI_HallOfFame.rb @@ -311,16 +311,16 @@ class HallOfFame_Scene dexnumber = _ISPRINTF("No. {1:03d}", number) end textPositions = [ - [dexnumber, 32, Graphics.height - 86, 0, BASECOLOR, SHADOWCOLOR], - [pokename, Graphics.width - 192, Graphics.height - 86, 2, BASECOLOR, SHADOWCOLOR], + [dexnumber, 32, Graphics.height - 74, 0, BASECOLOR, SHADOWCOLOR], + [pokename, Graphics.width - 192, Graphics.height - 74, 2, BASECOLOR, SHADOWCOLOR], [_INTL("Lv. {1}", pokemon.egg? ? "?" : pokemon.level), - 64, Graphics.height - 54, 0, BASECOLOR, SHADOWCOLOR], + 64, Graphics.height - 42, 0, BASECOLOR, SHADOWCOLOR], [_INTL("IDNo.{1}", pokemon.egg? ? "?????" : idno), - Graphics.width - 192, Graphics.height - 54, 2, BASECOLOR, SHADOWCOLOR] + Graphics.width - 192, Graphics.height - 42, 2, BASECOLOR, SHADOWCOLOR] ] if hallNumber > -1 - textPositions.push([_INTL("Hall of Fame No."), (Graphics.width / 2) - 104, -6, 0, BASECOLOR, SHADOWCOLOR]) - textPositions.push([hallNumber.to_s, (Graphics.width / 2) + 104, -6, 1, BASECOLOR, SHADOWCOLOR]) + textPositions.push([_INTL("Hall of Fame No."), (Graphics.width / 2) - 104, 6, 0, BASECOLOR, SHADOWCOLOR]) + textPositions.push([hallNumber.to_s, (Graphics.width / 2) + 104, 6, 1, BASECOLOR, SHADOWCOLOR]) end pbDrawTextPositions(overlay, textPositions) end @@ -329,7 +329,7 @@ class HallOfFame_Scene overlay = @sprites["overlay"].bitmap overlay.clear pbDrawTextPositions(overlay, [[_INTL("Welcome to the Hall of Fame!"), - Graphics.width / 2, Graphics.height - 80, 2, BASECOLOR, SHADOWCOLOR]]) + Graphics.width / 2, Graphics.height - 68, 2, BASECOLOR, SHADOWCOLOR]]) end def pbAnimationLoop diff --git a/Data/Scripts/016_UI/002_UI_Pokedex_Menu.rb b/Data/Scripts/016_UI/002_UI_Pokedex_Menu.rb index 3a9418c31..69839f348 100644 --- a/Data/Scripts/016_UI/002_UI_Pokedex_Menu.rb +++ b/Data/Scripts/016_UI/002_UI_Pokedex_Menu.rb @@ -25,8 +25,8 @@ class Window_DexesList < Window_CommandPokemon allown = (@commands2[index][1] >= @commands2[index][2]) pbDrawImagePositions( self.contents, - [["Graphics/Pictures/Pokedex/icon_menuseenown", rect.x + 236, rect.y + 2, (allseen) ? 24 : 0, 0, 24, 24], - ["Graphics/Pictures/Pokedex/icon_menuseenown", rect.x + 332, rect.y + 2, (allown) ? 24 : 0, 24, 24, 24]] + [["Graphics/Pictures/Pokedex/icon_menuseenown", rect.x + 236, rect.y + 6, (allseen) ? 24 : 0, 0, 24, 24], + ["Graphics/Pictures/Pokedex/icon_menuseenown", rect.x + 332, rect.y + 6, (allown) ? 24 : 0, 24, 24, 24]] ) end end diff --git a/Data/Scripts/016_UI/003_UI_Pokedex_Main.rb b/Data/Scripts/016_UI/003_UI_Pokedex_Main.rb index 17a506daf..d791029c3 100644 --- a/Data/Scripts/016_UI/003_UI_Pokedex_Main.rb +++ b/Data/Scripts/016_UI/003_UI_Pokedex_Main.rb @@ -40,9 +40,9 @@ class Window_Pokedex < Window_DrawableCommand indexNumber -= 1 if @commands[index][5] if $player.seen?(species) if $player.owned?(species) - pbCopyBitmap(self.contents, @pokeballOwn.bitmap, rect.x - 6, rect.y + 8) + pbCopyBitmap(self.contents, @pokeballOwn.bitmap, rect.x - 6, rect.y + 10) else - pbCopyBitmap(self.contents, @pokeballSeen.bitmap, rect.x - 6, rect.y + 8) + pbCopyBitmap(self.contents, @pokeballSeen.bitmap, rect.x - 6, rect.y + 10) end text = sprintf("%03d%s %s", indexNumber, " ", @commands[index][1]) else @@ -424,17 +424,17 @@ class PokemonPokedex_Scene end end textpos = [ - [dexname, Graphics.width / 2, -2, 2, Color.new(248, 248, 248), Color.new(0, 0, 0)] + [dexname, Graphics.width / 2, 10, 2, Color.new(248, 248, 248), Color.new(0, 0, 0)] ] - textpos.push([GameData::Species.get(iconspecies).name, 112, 46, 2, base, shadow]) if iconspecies + textpos.push([GameData::Species.get(iconspecies).name, 112, 58, 2, base, shadow]) if iconspecies if @searchResults - textpos.push([_INTL("Search results"), 112, 302, 2, base, shadow]) - textpos.push([@dexlist.length.to_s, 112, 334, 2, base, shadow]) + textpos.push([_INTL("Search results"), 112, 314, 2, base, shadow]) + textpos.push([@dexlist.length.to_s, 112, 346, 2, base, shadow]) else - textpos.push([_INTL("Seen:"), 42, 302, 0, base, shadow]) - textpos.push([$player.pokedex.seen_count(pbGetPokedexRegion).to_s, 182, 302, 1, base, shadow]) - textpos.push([_INTL("Owned:"), 42, 334, 0, base, shadow]) - textpos.push([$player.pokedex.owned_count(pbGetPokedexRegion).to_s, 182, 334, 1, base, shadow]) + textpos.push([_INTL("Seen:"), 42, 314, 0, base, shadow]) + textpos.push([$player.pokedex.seen_count(pbGetPokedexRegion).to_s, 182, 314, 1, base, shadow]) + textpos.push([_INTL("Owned:"), 42, 346, 0, base, shadow]) + textpos.push([$player.pokedex.owned_count(pbGetPokedexRegion).to_s, 182, 346, 1, base, shadow]) end # Draw all text pbDrawTextPositions(overlay, textpos) @@ -477,36 +477,36 @@ class PokemonPokedex_Scene shadow = Color.new(72, 72, 72) # Write various bits of text textpos = [ - [_INTL("Search Mode"), Graphics.width / 2, -2, 2, base, shadow], - [_INTL("Order"), 136, 52, 2, base, shadow], - [_INTL("Name"), 58, 110, 2, base, shadow], - [_INTL("Type"), 58, 162, 2, base, shadow], - [_INTL("Height"), 58, 214, 2, base, shadow], - [_INTL("Weight"), 58, 266, 2, base, shadow], - [_INTL("Color"), 326, 110, 2, base, shadow], - [_INTL("Shape"), 454, 162, 2, base, shadow], - [_INTL("Reset"), 80, 338, 2, base, shadow, 1], - [_INTL("Start"), Graphics.width / 2, 338, 2, base, shadow, 1], - [_INTL("Cancel"), Graphics.width - 80, 338, 2, base, shadow, 1] + [_INTL("Search Mode"), Graphics.width / 2, 10, 2, base, shadow], + [_INTL("Order"), 136, 64, 2, base, shadow], + [_INTL("Name"), 58, 122, 2, base, shadow], + [_INTL("Type"), 58, 174, 2, base, shadow], + [_INTL("Height"), 58, 226, 2, base, shadow], + [_INTL("Weight"), 58, 278, 2, base, shadow], + [_INTL("Color"), 326, 122, 2, base, shadow], + [_INTL("Shape"), 454, 174, 2, base, shadow], + [_INTL("Reset"), 80, 346, 2, base, shadow, 1], + [_INTL("Start"), Graphics.width / 2, 346, 2, base, shadow, 1], + [_INTL("Cancel"), Graphics.width - 80, 346, 2, base, shadow, 1] ] # Write order, name and color parameters - textpos.push([@orderCommands[params[0]], 344, 58, 2, base, shadow, 1]) - textpos.push([(params[1] < 0) ? "----" : @nameCommands[params[1]], 176, 116, 2, base, shadow, 1]) - textpos.push([(params[8] < 0) ? "----" : @colorCommands[params[8]].name, 444, 116, 2, base, shadow, 1]) + textpos.push([@orderCommands[params[0]], 344, 66, 2, base, shadow, 1]) + textpos.push([(params[1] < 0) ? "----" : @nameCommands[params[1]], 176, 124, 2, base, shadow, 1]) + textpos.push([(params[8] < 0) ? "----" : @colorCommands[params[8]].name, 444, 124, 2, base, shadow, 1]) # Draw type icons if params[2] >= 0 type_number = @typeCommands[params[2]].icon_position typerect = Rect.new(0, type_number * 32, 96, 32) overlay.blt(128, 168, @typebitmap.bitmap, typerect) else - textpos.push(["----", 176, 168, 2, base, shadow, 1]) + textpos.push(["----", 176, 176, 2, base, shadow, 1]) end if params[3] >= 0 type_number = @typeCommands[params[3]].icon_position typerect = Rect.new(0, type_number * 32, 96, 32) overlay.blt(256, 168, @typebitmap.bitmap, typerect) else - textpos.push(["----", 304, 168, 2, base, shadow, 1]) + textpos.push(["----", 304, 176, 2, base, shadow, 1]) end # Write height and weight limits ht1 = (params[4] < 0) ? 0 : (params[4] >= @heightCommands.length) ? 999 : @heightCommands[params[4]] @@ -519,16 +519,16 @@ class PokemonPokedex_Scene ht2 = (params[5] < 0) ? 99 * 12 : (ht2 / 0.254).round wt1 = (params[6] >= @weightCommands.length) ? 99_990 : (wt1 / 0.254).round wt2 = (params[7] < 0) ? 99_990 : (wt2 / 0.254).round - textpos.push([sprintf("%d'%02d''", ht1 / 12, ht1 % 12), 166, 220, 2, base, shadow, 1]) - textpos.push([sprintf("%d'%02d''", ht2 / 12, ht2 % 12), 294, 220, 2, base, shadow, 1]) - textpos.push([sprintf("%.1f", wt1 / 10.0), 166, 272, 2, base, shadow, 1]) - textpos.push([sprintf("%.1f", wt2 / 10.0), 294, 272, 2, base, shadow, 1]) + textpos.push([sprintf("%d'%02d''", ht1 / 12, ht1 % 12), 166, 228, 2, base, shadow, 1]) + textpos.push([sprintf("%d'%02d''", ht2 / 12, ht2 % 12), 294, 228, 2, base, shadow, 1]) + textpos.push([sprintf("%.1f", wt1 / 10.0), 166, 280, 2, base, shadow, 1]) + textpos.push([sprintf("%.1f", wt2 / 10.0), 294, 280, 2, base, shadow, 1]) hwoffset = true else - textpos.push([sprintf("%.1f", ht1 / 10.0), 166, 220, 2, base, shadow, 1]) - textpos.push([sprintf("%.1f", ht2 / 10.0), 294, 220, 2, base, shadow, 1]) - textpos.push([sprintf("%.1f", wt1 / 10.0), 166, 272, 2, base, shadow, 1]) - textpos.push([sprintf("%.1f", wt2 / 10.0), 294, 272, 2, base, shadow, 1]) + textpos.push([sprintf("%.1f", ht1 / 10.0), 166, 228, 2, base, shadow, 1]) + textpos.push([sprintf("%.1f", ht2 / 10.0), 294, 228, 2, base, shadow, 1]) + textpos.push([sprintf("%.1f", wt1 / 10.0), 166, 280, 2, base, shadow, 1]) + textpos.push([sprintf("%.1f", wt2 / 10.0), 294, 280, 2, base, shadow, 1]) end overlay.blt(344, 214, @hwbitmap.bitmap, Rect.new(0, (hwoffset) ? 44 : 0, 32, 44)) overlay.blt(344, 266, @hwbitmap.bitmap, Rect.new(32, (hwoffset) ? 44 : 0, 32, 44)) @@ -549,13 +549,13 @@ class PokemonPokedex_Scene shadow = Color.new(72, 72, 72) # Write various bits of text textpos = [ - [_INTL("Search Mode"), Graphics.width / 2, -2, 2, base, shadow], - [_INTL("OK"), 80, 338, 2, base, shadow, 1], - [_INTL("Cancel"), Graphics.width - 80, 338, 2, base, shadow, 1] + [_INTL("Search Mode"), Graphics.width / 2, 10, 2, base, shadow], + [_INTL("OK"), 80, 346, 2, base, shadow, 1], + [_INTL("Cancel"), Graphics.width - 80, 346, 2, base, shadow, 1] ] title = [_INTL("Order"), _INTL("Name"), _INTL("Type"), _INTL("Height"), _INTL("Weight"), _INTL("Color"), _INTL("Shape")][mode] - textpos.push([title, 102, (mode == 6) ? 58 : 52, 0, base, shadow]) + textpos.push([title, 102, (mode == 6) ? 70 : 64, 0, base, shadow]) case mode when 0 # Order xstart = 46 @@ -615,7 +615,7 @@ class PokemonPokedex_Scene when 2 # Type icons 2.times do |i| if !sel[i] || sel[i] < 0 - textpos.push(["----", 298 + (128 * i), 58, 2, base, shadow, 1]) + textpos.push(["----", 298 + (128 * i), 66, 2, base, shadow, 1]) else type_number = @typeCommands[sel[i]].icon_position typerect = Rect.new(0, type_number * 32, 96, 32) @@ -636,8 +636,8 @@ class PokemonPokedex_Scene txt1 = sprintf("%.1f", ht1 / 10.0) txt2 = sprintf("%.1f", ht2 / 10.0) end - textpos.push([txt1, 286, 58, 2, base, shadow, 1]) - textpos.push([txt2, 414, 58, 2, base, shadow, 1]) + textpos.push([txt1, 286, 66, 2, base, shadow, 1]) + textpos.push([txt2, 414, 66, 2, base, shadow, 1]) overlay.blt(462, 52, @hwbitmap.bitmap, Rect.new(0, (hwoffset) ? 44 : 0, 32, 44)) when 4 # Weight range wt1 = (sel[0] < 0) ? 0 : (sel[0] >= @weightCommands.length) ? 9999 : @weightCommands[sel[0]] @@ -653,14 +653,14 @@ class PokemonPokedex_Scene txt1 = sprintf("%.1f", wt1 / 10.0) txt2 = sprintf("%.1f", wt2 / 10.0) end - textpos.push([txt1, 286, 58, 2, base, shadow, 1]) - textpos.push([txt2, 414, 58, 2, base, shadow, 1]) + textpos.push([txt1, 286, 66, 2, base, shadow, 1]) + textpos.push([txt2, 414, 66, 2, base, shadow, 1]) overlay.blt(462, 52, @hwbitmap.bitmap, Rect.new(32, (hwoffset) ? 44 : 0, 32, 44)) when 5 # Color if sel[0] < 0 - textpos.push(["----", 362, 58, 2, base, shadow, 1]) + textpos.push(["----", 362, 66, 2, base, shadow, 1]) else - textpos.push([cmds[sel[0]].name, 362, 58, 2, base, shadow, 1]) + textpos.push([cmds[sel[0]].name, 362, 66, 2, base, shadow, 1]) end when 6 # Shape icon if sel[0] >= 0 @@ -670,9 +670,9 @@ class PokemonPokedex_Scene else if sel[0] < 0 text = ["----", "-", "----", "", "", "----", ""][mode] - textpos.push([text, 362, 58, 2, base, shadow, 1]) + textpos.push([text, 362, 66, 2, base, shadow, 1]) else - textpos.push([cmds[sel[0]], 362, 58, 2, base, shadow, 1]) + textpos.push([cmds[sel[0]], 362, 66, 2, base, shadow, 1]) end end # Draw selected option(s) button graphic @@ -682,8 +682,8 @@ class PokemonPokedex_Scene xpos2 = xstart + ((sel[1] + 1) * xgap) xpos2 = xstart + (cols * xgap) if sel[1] < 0 xpos2 = xstart if sel[1] >= cols - 1 - ypos1 = ystart + 172 - ypos2 = ystart + 28 + ypos1 = ystart + 180 + ypos2 = ystart + 36 overlay.blt(16, 120, @searchsliderbitmap.bitmap, Rect.new(0, 192, 32, 44)) if sel[1] < cols - 1 overlay.blt(464, 120, @searchsliderbitmap.bitmap, Rect.new(32, 192, 32, 44)) if sel[1] >= 0 overlay.blt(16, 264, @searchsliderbitmap.bitmap, Rect.new(0, 192, 32, 44)) if sel[0] >= 0 @@ -698,9 +698,13 @@ class PokemonPokedex_Scene sel.length.times do |i| selrect = Rect.new(0, selbuttony, @selbitmap.bitmap.width, selbuttonheight) if sel[i] >= 0 - overlay.blt(xstart + ((sel[i] % cols) * xgap), ystart + ((sel[i] / cols).floor * ygap), @selbitmap.bitmap, selrect) + overlay.blt(xstart + ((sel[i] % cols) * xgap), + ystart + ((sel[i] / cols).floor * ygap), + @selbitmap.bitmap, selrect) else - overlay.blt(xstart + ((cols - 1) * xgap), ystart + ((cmds.length / cols).floor * ygap), @selbitmap.bitmap, selrect) + overlay.blt(xstart + ((cols - 1) * xgap), + ystart + ((cmds.length / cols).floor * ygap), + @selbitmap.bitmap, selrect) end end end @@ -709,34 +713,44 @@ class PokemonPokedex_Scene when 0, 1 # Order, name cmds.length.times do |i| x = xstart + halfwidth + ((i % cols) * xgap) - y = ystart + 6 + ((i / cols).floor * ygap) + y = ystart + 14 + ((i / cols).floor * ygap) textpos.push([cmds[i], x, y, 2, base, shadow, 1]) end if mode != 0 textpos.push([(mode == 1) ? "-" : "----", - xstart + halfwidth + ((cols - 1) * xgap), ystart + 6 + ((cmds.length / cols).floor * ygap), 2, base, shadow, 1]) + xstart + halfwidth + ((cols - 1) * xgap), + ystart + 14 + ((cmds.length / cols).floor * ygap), + 2, base, shadow, 1]) end when 2 # Type typerect = Rect.new(0, 0, 96, 32) cmds.length.times do |i| typerect.y = @typeCommands[i].icon_position * 32 - overlay.blt(xstart + 14 + ((i % cols) * xgap), ystart + 6 + ((i / cols).floor * ygap), @typebitmap.bitmap, typerect) + overlay.blt(xstart + 14 + ((i % cols) * xgap), + ystart + 6 + ((i / cols).floor * ygap), + @typebitmap.bitmap, typerect) end textpos.push(["----", - xstart + halfwidth + ((cols - 1) * xgap), ystart + 6 + ((cmds.length / cols).floor * ygap), 2, base, shadow, 1]) + xstart + halfwidth + ((cols - 1) * xgap), + ystart + 14 + ((cmds.length / cols).floor * ygap), + 2, base, shadow, 1]) when 5 # Color cmds.length.times do |i| x = xstart + halfwidth + ((i % cols) * xgap) - y = ystart + 6 + ((i / cols).floor * ygap) + y = ystart + 14 + ((i / cols).floor * ygap) textpos.push([cmds[i].name, x, y, 2, base, shadow, 1]) end textpos.push(["----", - xstart + halfwidth + ((cols - 1) * xgap), ystart + 6 + ((cmds.length / cols).floor * ygap), 2, base, shadow, 1]) + xstart + halfwidth + ((cols - 1) * xgap), + ystart + 14 + ((cmds.length / cols).floor * ygap), + 2, base, shadow, 1]) when 6 # Shape shaperect = Rect.new(0, 0, 60, 60) cmds.length.times do |i| shaperect.y = @shapeCommands[i].icon_position * 60 - overlay.blt(xstart + 4 + ((i % cols) * xgap), ystart + 4 + ((i / cols).floor * ygap), @shapebitmap.bitmap, shaperect) + overlay.blt(xstart + 4 + ((i % cols) * xgap), + ystart + 4 + ((i / cols).floor * ygap), + @shapebitmap.bitmap, shaperect) end end # Draw all text diff --git a/Data/Scripts/016_UI/004_UI_Pokedex_Entry.rb b/Data/Scripts/016_UI/004_UI_Pokedex_Entry.rb index cc9947bb3..ed742888b 100644 --- a/Data/Scripts/016_UI/004_UI_Pokedex_Entry.rb +++ b/Data/Scripts/016_UI/004_UI_Pokedex_Entry.rb @@ -215,18 +215,18 @@ class PokemonPokedexInfo_Scene end textpos = [ [_INTL("{1}{2} {3}", indexText, " ", species_data.name), - 246, 36, 0, Color.new(248, 248, 248), Color.new(0, 0, 0)] + 246, 48, 0, Color.new(248, 248, 248), Color.new(0, 0, 0)] ] if @show_battled_count - textpos.push([_INTL("Number Battled"), 314, 152, 0, base, shadow]) - textpos.push([$player.pokedex.battled_count(@species).to_s, 452, 184, 1, base, shadow]) + textpos.push([_INTL("Number Battled"), 314, 164, 0, base, shadow]) + textpos.push([$player.pokedex.battled_count(@species).to_s, 452, 196, 1, base, shadow]) else - textpos.push([_INTL("Height"), 314, 152, 0, base, shadow]) - textpos.push([_INTL("Weight"), 314, 184, 0, base, shadow]) + textpos.push([_INTL("Height"), 314, 164, 0, base, shadow]) + textpos.push([_INTL("Weight"), 314, 196, 0, base, shadow]) end if $player.owned?(@species) # Write the category - textpos.push([_INTL("{1} Pokémon", species_data.category), 246, 68, 0, base, shadow]) + textpos.push([_INTL("{1} Pokémon", species_data.category), 246, 80, 0, base, shadow]) # Write the height and weight if !@show_battled_count height = species_data.height @@ -234,15 +234,15 @@ class PokemonPokedexInfo_Scene if System.user_language[3..4] == "US" # If the user is in the United States inches = (height / 0.254).round pounds = (weight / 0.45359).round - textpos.push([_ISPRINTF("{1:d}'{2:02d}\"", inches / 12, inches % 12), 460, 152, 1, base, shadow]) - textpos.push([_ISPRINTF("{1:4.1f} lbs.", pounds / 10.0), 494, 184, 1, base, shadow]) + textpos.push([_ISPRINTF("{1:d}'{2:02d}\"", inches / 12, inches % 12), 460, 164, 1, base, shadow]) + textpos.push([_ISPRINTF("{1:4.1f} lbs.", pounds / 10.0), 494, 196, 1, base, shadow]) else - textpos.push([_ISPRINTF("{1:.1f} m", height / 10.0), 470, 152, 1, base, shadow]) - textpos.push([_ISPRINTF("{1:.1f} kg", weight / 10.0), 482, 184, 1, base, shadow]) + textpos.push([_ISPRINTF("{1:.1f} m", height / 10.0), 470, 164, 1, base, shadow]) + textpos.push([_ISPRINTF("{1:.1f} kg", weight / 10.0), 482, 196, 1, base, shadow]) end end # Draw the Pokédex entry text - drawTextEx(overlay, 40, 244, Graphics.width - (40 * 2), 4, # overlay, x, y, width, num lines + drawTextEx(overlay, 40, 246, Graphics.width - (40 * 2), 4, # overlay, x, y, width, num lines species_data.pokedex_entry, base, shadow) # Draw the footprint footprintfile = GameData::Species.footprint_filename(@species, @form) @@ -261,15 +261,15 @@ class PokemonPokedexInfo_Scene end else # Write the category - textpos.push([_INTL("????? Pokémon"), 246, 68, 0, base, shadow]) + textpos.push([_INTL("????? Pokémon"), 246, 80, 0, base, shadow]) # Write the height and weight if !@show_battled_count if System.user_language[3..4] == "US" # If the user is in the United States - textpos.push([_INTL("???'??\""), 460, 152, 1, base, shadow]) - textpos.push([_INTL("????.? lbs."), 494, 184, 1, base, shadow]) + textpos.push([_INTL("???'??\""), 460, 164, 1, base, shadow]) + textpos.push([_INTL("????.? lbs."), 494, 196, 1, base, shadow]) else - textpos.push([_INTL("????.? m"), 470, 152, 1, base, shadow]) - textpos.push([_INTL("????.? kg"), 482, 184, 1, base, shadow]) + textpos.push([_INTL("????.? m"), 470, 164, 1, base, shadow]) + textpos.push([_INTL("????.? kg"), 482, 196, 1, base, shadow]) end end end @@ -372,11 +372,11 @@ class PokemonPokedexInfo_Scene overlay, [[sprintf("Graphics/Pictures/Pokedex/overlay_areanone"), 108, 188]] ) - textpos.push([_INTL("Area unknown"), Graphics.width / 2, (Graphics.height / 2) - 6, 2, base, shadow]) + textpos.push([_INTL("Area unknown"), Graphics.width / 2, (Graphics.height / 2) + 6, 2, base, shadow]) end - textpos.push([pbGetMessage(MessageTypes::RegionNames, @region), 414, 38, 2, base, shadow]) + textpos.push([pbGetMessage(MessageTypes::RegionNames, @region), 414, 50, 2, base, shadow]) textpos.push([_INTL("{1}'s area", GameData::Species.get(@species).name), - Graphics.width / 2, 346, 2, base, shadow]) + Graphics.width / 2, 358, 2, base, shadow]) pbDrawTextPositions(overlay, textpos) end @@ -394,8 +394,8 @@ class PokemonPokedexInfo_Scene end end textpos = [ - [GameData::Species.get(@species).name, Graphics.width / 2, Graphics.height - 94, 2, base, shadow], - [formname, Graphics.width / 2, Graphics.height - 62, 2, base, shadow] + [GameData::Species.get(@species).name, Graphics.width / 2, Graphics.height - 82, 2, base, shadow], + [formname, Graphics.width / 2, Graphics.height - 50, 2, base, shadow] ] # Draw all text pbDrawTextPositions(overlay, textpos) diff --git a/Data/Scripts/016_UI/005_UI_Party.rb b/Data/Scripts/016_UI/005_UI_Party.rb index 25174adc3..89466a525 100644 --- a/Data/Scripts/016_UI/005_UI_Party.rb +++ b/Data/Scripts/016_UI/005_UI_Party.rb @@ -19,8 +19,7 @@ class PokemonPartyConfirmCancelSprite < SpriteWrapper @overlaysprite = BitmapSprite.new(@bgsprite.bitmap.width, @bgsprite.bitmap.height, viewport) @overlaysprite.z = self.z + 1 pbSetSystemFont(@overlaysprite.bitmap) - @yoffset = 8 - textpos = [[text, 56, (narrowbox) ? -4 : 2, 2, Color.new(248, 248, 248), Color.new(40, 40, 40)]] + textpos = [[text, 56, (narrowbox) ? 8 : 14, 2, Color.new(248, 248, 248), Color.new(40, 40, 40)]] pbDrawTextPositions(@overlaysprite.bitmap, textpos) self.x = x self.y = y @@ -126,8 +125,8 @@ class Window_CommandPokemonColor < Window_CommandPokemon base = Color.new(0, 80, 160) shadow = Color.new(128, 192, 240) end - pbDrawShadowText(self.contents, rect.x, rect.y, rect.width, rect.height, - @commands[index], base, shadow) + pbDrawShadowText(self.contents, rect.x, rect.y + (self.contents.text_offset_y || 0), + rect.width, rect.height, @commands[index], base, shadow) end end @@ -365,11 +364,11 @@ class PokemonPartyPanel < SpriteWrapper pbSetSystemFont(@overlaysprite.bitmap) textpos = [] # Draw Pokémon name - textpos.push([@pokemon.name, 96, 10, 0, basecolor, shadowcolor]) + textpos.push([@pokemon.name, 96, 22, 0, basecolor, shadowcolor]) if !@pokemon.egg? if !@text || @text.length == 0 # Draw HP numbers - textpos.push([sprintf("% 3d /% 3d", @pokemon.hp, @pokemon.totalhp), 224, 54, 1, basecolor, shadowcolor]) + textpos.push([sprintf("% 3d /% 3d", @pokemon.hp, @pokemon.totalhp), 224, 66, 1, basecolor, shadowcolor]) # Draw HP bar if @pokemon.hp > 0 w = @pokemon.hp * 96 / @pokemon.totalhp.to_f @@ -397,9 +396,9 @@ class PokemonPartyPanel < SpriteWrapper end # Draw gender symbol if @pokemon.male? - textpos.push([_INTL("♂"), 224, 10, 0, Color.new(0, 112, 248), Color.new(120, 184, 232)]) + textpos.push([_INTL("♂"), 224, 22, 0, Color.new(0, 112, 248), Color.new(120, 184, 232)]) elsif @pokemon.female? - textpos.push([_INTL("♀"), 224, 10, 0, Color.new(232, 32, 16), Color.new(248, 168, 184)]) + textpos.push([_INTL("♀"), 224, 22, 0, Color.new(232, 32, 16), Color.new(248, 168, 184)]) end # Draw shiny icon if @pokemon.shiny? @@ -414,13 +413,13 @@ class PokemonPartyPanel < SpriteWrapper [["Graphics/Pictures/Party/overlay_lv", 20, 70, 0, 0, 22, 14]]) pbSetSmallFont(@overlaysprite.bitmap) pbDrawTextPositions(@overlaysprite.bitmap, - [[@pokemon.level.to_s, 42, 57, 0, basecolor, shadowcolor]]) + [[@pokemon.level.to_s, 42, 68, 0, basecolor, shadowcolor]]) end # Draw annotation text if @text && @text.length > 0 pbSetSystemFont(@overlaysprite.bitmap) pbDrawTextPositions(@overlaysprite.bitmap, - [[@text, 96, 52, 0, basecolor, shadowcolor]]) + [[@text, 96, 62, 0, basecolor, shadowcolor]]) end end @refreshing = false diff --git a/Data/Scripts/016_UI/006_UI_Summary.rb b/Data/Scripts/016_UI/006_UI_Summary.rb index b822ec413..a9a55bf22 100644 --- a/Data/Scripts/016_UI/006_UI_Summary.rb +++ b/Data/Scripts/016_UI/006_UI_Summary.rb @@ -340,22 +340,22 @@ class PokemonSummary_Scene _INTL("MOVES"), _INTL("RIBBONS")][page - 1] textpos = [ - [pagename, 26, 10, 0, base, shadow], - [@pokemon.name, 46, 56, 0, base, shadow], - [@pokemon.level.to_s, 46, 86, 0, Color.new(64, 64, 64), Color.new(176, 176, 176)], - [_INTL("Item"), 66, 312, 0, base, shadow] + [pagename, 26, 22, 0, base, shadow], + [@pokemon.name, 46, 68, 0, base, shadow], + [@pokemon.level.to_s, 46, 98, 0, Color.new(64, 64, 64), Color.new(176, 176, 176)], + [_INTL("Item"), 66, 324, 0, base, shadow] ] # Write the held item's name if @pokemon.hasItem? - textpos.push([@pokemon.item.name, 16, 346, 0, Color.new(64, 64, 64), Color.new(176, 176, 176)]) + textpos.push([@pokemon.item.name, 16, 358, 0, Color.new(64, 64, 64), Color.new(176, 176, 176)]) else - textpos.push([_INTL("None"), 16, 346, 0, Color.new(192, 200, 208), Color.new(208, 216, 224)]) + textpos.push([_INTL("None"), 16, 358, 0, Color.new(192, 200, 208), Color.new(208, 216, 224)]) end # Write the gender symbol if @pokemon.male? - textpos.push([_INTL("♂"), 178, 56, 0, Color.new(24, 112, 216), Color.new(136, 168, 208)]) + textpos.push([_INTL("♂"), 178, 68, 0, Color.new(24, 112, 216), Color.new(136, 168, 208)]) elsif @pokemon.female? - textpos.push([_INTL("♀"), 178, 56, 0, Color.new(248, 56, 32), Color.new(224, 152, 144)]) + textpos.push([_INTL("♀"), 178, 68, 0, Color.new(248, 56, 32), Color.new(224, 152, 144)]) end # Draw all text pbDrawTextPositions(overlay, textpos) @@ -388,12 +388,12 @@ class PokemonSummary_Scene end # Write various bits of text textpos = [ - [_INTL("Dex No."), 238, 74, 0, base, shadow], - [_INTL("Species"), 238, 106, 0, base, shadow], - [@pokemon.speciesName, 435, 106, 2, Color.new(64, 64, 64), Color.new(176, 176, 176)], - [_INTL("Type"), 238, 138, 0, base, shadow], - [_INTL("OT"), 238, 170, 0, base, shadow], - [_INTL("ID No."), 238, 202, 0, base, shadow] + [_INTL("Dex No."), 238, 86, 0, base, shadow], + [_INTL("Species"), 238, 118, 0, base, shadow], + [@pokemon.speciesName, 435, 118, 2, Color.new(64, 64, 64), Color.new(176, 176, 176)], + [_INTL("Type"), 238, 150, 0, base, shadow], + [_INTL("OT"), 238, 182, 0, base, shadow], + [_INTL("ID No."), 238, 214, 0, base, shadow] ] # Write the Regional/National Dex number dexnum = 0 @@ -412,15 +412,15 @@ class PokemonSummary_Scene end end if dexnum <= 0 - textpos.push(["???", 435, 74, 2, dexNumBase, dexNumShadow]) + textpos.push(["???", 435, 86, 2, dexNumBase, dexNumShadow]) else dexnum -= 1 if dexnumshift - textpos.push([sprintf("%03d", dexnum), 435, 74, 2, dexNumBase, dexNumShadow]) + textpos.push([sprintf("%03d", dexnum), 435, 86, 2, dexNumBase, dexNumShadow]) end # Write Original Trainer's name and ID number if @pokemon.owner.name.empty? - textpos.push([_INTL("RENTAL"), 435, 170, 2, Color.new(64, 64, 64), Color.new(176, 176, 176)]) - textpos.push(["?????", 435, 202, 2, Color.new(64, 64, 64), Color.new(176, 176, 176)]) + textpos.push([_INTL("RENTAL"), 435, 182, 2, Color.new(64, 64, 64), Color.new(176, 176, 176)]) + textpos.push(["?????", 435, 214, 2, Color.new(64, 64, 64), Color.new(176, 176, 176)]) else ownerbase = Color.new(64, 64, 64) ownershadow = Color.new(176, 176, 176) @@ -432,12 +432,13 @@ class PokemonSummary_Scene ownerbase = Color.new(248, 56, 32) ownershadow = Color.new(224, 152, 144) end - textpos.push([@pokemon.owner.name, 435, 170, 2, ownerbase, ownershadow]) - textpos.push([sprintf("%05d", @pokemon.owner.public_id), 435, 202, 2, Color.new(64, 64, 64), Color.new(176, 176, 176)]) + textpos.push([@pokemon.owner.name, 435, 182, 2, ownerbase, ownershadow]) + textpos.push([sprintf("%05d", @pokemon.owner.public_id), 435, 214, 2, + Color.new(64, 64, 64), Color.new(176, 176, 176)]) end # Write Exp text OR heart gauge message (if a Shadow Pokémon) if @pokemon.shadowPokemon? - textpos.push([_INTL("Heart Gauge"), 238, 234, 0, base, shadow]) + textpos.push([_INTL("Heart Gauge"), 238, 246, 0, base, shadow]) heartmessage = [_INTL("The door to its heart is open! Undo the final lock!"), _INTL("The door to its heart is almost fully open."), _INTL("The door to its heart is nearly open."), @@ -445,13 +446,13 @@ class PokemonSummary_Scene _INTL("The door to its heart is opening up."), _INTL("The door to its heart is tightly shut.")][@pokemon.heartStage] memo = sprintf("%s\n", heartmessage) - drawFormattedTextEx(overlay, 234, 304, 264, memo) + drawFormattedTextEx(overlay, 234, 308, 264, memo) else endexp = @pokemon.growth_rate.minimum_exp_for_level(@pokemon.level + 1) - textpos.push([_INTL("Exp. Points"), 238, 234, 0, base, shadow]) - textpos.push([@pokemon.exp.to_s_formatted, 488, 266, 1, Color.new(64, 64, 64), Color.new(176, 176, 176)]) - textpos.push([_INTL("To Next Lv."), 238, 298, 0, base, shadow]) - textpos.push([(endexp - @pokemon.exp).to_s_formatted, 488, 330, 1, Color.new(64, 64, 64), Color.new(176, 176, 176)]) + textpos.push([_INTL("Exp. Points"), 238, 246, 0, base, shadow]) + textpos.push([@pokemon.exp.to_s_formatted, 488, 278, 1, Color.new(64, 64, 64), Color.new(176, 176, 176)]) + textpos.push([_INTL("To Next Lv."), 238, 310, 0, base, shadow]) + textpos.push([(endexp - @pokemon.exp).to_s_formatted, 488, 342, 1, Color.new(64, 64, 64), Color.new(176, 176, 176)]) end # Draw all text pbDrawTextPositions(overlay, textpos) @@ -487,15 +488,15 @@ class PokemonSummary_Scene pbDrawImagePositions(overlay, imagepos) # Write various bits of text textpos = [ - [_INTL("TRAINER MEMO"), 26, 10, 0, base, shadow], - [@pokemon.name, 46, 56, 0, base, shadow], - [_INTL("Item"), 66, 312, 0, base, shadow] + [_INTL("TRAINER MEMO"), 26, 22, 0, base, shadow], + [@pokemon.name, 46, 68, 0, base, shadow], + [_INTL("Item"), 66, 324, 0, base, shadow] ] # Write the held item's name if @pokemon.hasItem? - textpos.push([@pokemon.item.name, 16, 346, 0, Color.new(64, 64, 64), Color.new(176, 176, 176)]) + textpos.push([@pokemon.item.name, 16, 358, 0, Color.new(64, 64, 64), Color.new(176, 176, 176)]) else - textpos.push([_INTL("None"), 16, 346, 0, Color.new(192, 200, 208), Color.new(208, 216, 224)]) + textpos.push([_INTL("None"), 16, 358, 0, Color.new(192, 200, 208), Color.new(208, 216, 224)]) end # Draw all text pbDrawTextPositions(overlay, textpos) @@ -524,7 +525,7 @@ class PokemonSummary_Scene eggstate = _INTL("Sounds can be heard coming from inside! It will hatch soon!") if @pokemon.steps_to_hatch < 1275 memo += sprintf("%s\n", eggstate) # Draw all text - drawFormattedTextEx(overlay, 232, 82, 268, memo) + drawFormattedTextEx(overlay, 232, 86, 268, memo) # Draw the Pokémon's markings drawMarkings(overlay, 84, 292) end @@ -620,7 +621,7 @@ class PokemonSummary_Scene memo += sprintf("%s\n", characteristics[best_stat][best_iv % 5]) end # Write all text - drawFormattedTextEx(overlay, 232, 82, 268, memo) + drawFormattedTextEx(overlay, 232, 86, 268, memo) end def drawPageThree @@ -638,25 +639,25 @@ class PokemonSummary_Scene end # Write various bits of text textpos = [ - [_INTL("HP"), 292, 70, 2, base, statshadows[:HP]], - [sprintf("%d/%d", @pokemon.hp, @pokemon.totalhp), 462, 70, 1, Color.new(64, 64, 64), Color.new(176, 176, 176)], - [_INTL("Attack"), 248, 114, 0, base, statshadows[:ATTACK]], - [sprintf("%d", @pokemon.attack), 456, 114, 1, Color.new(64, 64, 64), Color.new(176, 176, 176)], - [_INTL("Defense"), 248, 146, 0, base, statshadows[:DEFENSE]], - [sprintf("%d", @pokemon.defense), 456, 146, 1, Color.new(64, 64, 64), Color.new(176, 176, 176)], - [_INTL("Sp. Atk"), 248, 178, 0, base, statshadows[:SPECIAL_ATTACK]], - [sprintf("%d", @pokemon.spatk), 456, 178, 1, Color.new(64, 64, 64), Color.new(176, 176, 176)], - [_INTL("Sp. Def"), 248, 210, 0, base, statshadows[:SPECIAL_DEFENSE]], - [sprintf("%d", @pokemon.spdef), 456, 210, 1, Color.new(64, 64, 64), Color.new(176, 176, 176)], - [_INTL("Speed"), 248, 242, 0, base, statshadows[:SPEED]], - [sprintf("%d", @pokemon.speed), 456, 242, 1, Color.new(64, 64, 64), Color.new(176, 176, 176)], - [_INTL("Ability"), 224, 278, 0, base, shadow] + [_INTL("HP"), 292, 82, 2, base, statshadows[:HP]], + [sprintf("%d/%d", @pokemon.hp, @pokemon.totalhp), 462, 82, 1, Color.new(64, 64, 64), Color.new(176, 176, 176)], + [_INTL("Attack"), 248, 126, 0, base, statshadows[:ATTACK]], + [sprintf("%d", @pokemon.attack), 456, 126, 1, Color.new(64, 64, 64), Color.new(176, 176, 176)], + [_INTL("Defense"), 248, 158, 0, base, statshadows[:DEFENSE]], + [sprintf("%d", @pokemon.defense), 456, 158, 1, Color.new(64, 64, 64), Color.new(176, 176, 176)], + [_INTL("Sp. Atk"), 248, 190, 0, base, statshadows[:SPECIAL_ATTACK]], + [sprintf("%d", @pokemon.spatk), 456, 190, 1, Color.new(64, 64, 64), Color.new(176, 176, 176)], + [_INTL("Sp. Def"), 248, 222, 0, base, statshadows[:SPECIAL_DEFENSE]], + [sprintf("%d", @pokemon.spdef), 456, 222, 1, Color.new(64, 64, 64), Color.new(176, 176, 176)], + [_INTL("Speed"), 248, 254, 0, base, statshadows[:SPEED]], + [sprintf("%d", @pokemon.speed), 456, 254, 1, Color.new(64, 64, 64), Color.new(176, 176, 176)], + [_INTL("Ability"), 224, 290, 0, base, shadow] ] # Draw ability name and description ability = @pokemon.ability if ability - textpos.push([ability.name, 362, 278, 0, Color.new(64, 64, 64), Color.new(176, 176, 176)]) - drawTextEx(overlay, 224, 320, 282, 2, ability.description, Color.new(64, 64, 64), Color.new(176, 176, 176)) + textpos.push([ability.name, 362, 290, 0, Color.new(64, 64, 64), Color.new(176, 176, 176)]) + drawTextEx(overlay, 224, 322, 282, 2, ability.description, Color.new(64, 64, 64), Color.new(176, 176, 176)) end # Draw all text pbDrawTextPositions(overlay, textpos) @@ -693,12 +694,12 @@ class PokemonSummary_Scene textpos = [] imagepos = [] # Write move names, types and PP amounts for each known move - yPos = 92 + yPos = 104 Pokemon::MAX_MOVES.times do |i| move = @pokemon.moves[i] if move type_number = GameData::Type.get(move.display_type(@pokemon)).icon_position - imagepos.push(["Graphics/Pictures/types", 248, yPos + 8, 0, type_number * 28, 64, 28]) + imagepos.push(["Graphics/Pictures/types", 248, yPos - 4, 0, type_number * 28, 64, 28]) textpos.push([move.name, 316, yPos, 0, moveBase, moveShadow]) if move.total_pp > 0 textpos.push([_INTL("PP"), 342, yPos + 32, 0, moveBase, moveShadow]) @@ -746,14 +747,14 @@ class PokemonSummary_Scene end # Write various bits of text textpos = [ - [_INTL("MOVES"), 26, 10, 0, base, shadow], - [_INTL("CATEGORY"), 20, 116, 0, base, shadow], - [_INTL("POWER"), 20, 148, 0, base, shadow], - [_INTL("ACCURACY"), 20, 180, 0, base, shadow] + [_INTL("MOVES"), 26, 22, 0, base, shadow], + [_INTL("CATEGORY"), 20, 128, 0, base, shadow], + [_INTL("POWER"), 20, 160, 0, base, shadow], + [_INTL("ACCURACY"), 20, 192, 0, base, shadow] ] imagepos = [] # Write move names, types and PP amounts for each known move - yPos = 92 + yPos = 104 yPos -= 76 if move_to_learn limit = (move_to_learn) ? Pokemon::MAX_MOVES + 1 : Pokemon::MAX_MOVES limit.times do |i| @@ -764,7 +765,7 @@ class PokemonSummary_Scene end if move type_number = GameData::Type.get(move.display_type(@pokemon)).icon_position - imagepos.push(["Graphics/Pictures/types", 248, yPos + 8, 0, type_number * 28, 64, 28]) + imagepos.push(["Graphics/Pictures/types", 248, yPos - 4, 0, type_number * 28, 64, 28]) textpos.push([move.name, 316, yPos, 0, moveBase, moveShadow]) if move.total_pp > 0 textpos.push([_INTL("PP"), 342, yPos + 32, 0, moveBase, moveShadow]) @@ -810,14 +811,14 @@ class PokemonSummary_Scene textpos = [] # Write power and accuracy values for selected move case selected_move.display_damage(@pokemon) - when 0 then textpos.push(["---", 216, 148, 1, base, shadow]) # Status move - when 1 then textpos.push(["???", 216, 148, 1, base, shadow]) # Variable power move - else textpos.push([selected_move.display_damage(@pokemon).to_s, 216, 148, 1, base, shadow]) + when 0 then textpos.push(["---", 216, 160, 1, base, shadow]) # Status move + when 1 then textpos.push(["???", 216, 160, 1, base, shadow]) # Variable power move + else textpos.push([selected_move.display_damage(@pokemon).to_s, 216, 160, 1, base, shadow]) end if selected_move.display_accuracy(@pokemon) == 0 - textpos.push(["---", 216, 180, 1, base, shadow]) + textpos.push(["---", 216, 192, 1, base, shadow]) else - textpos.push(["#{selected_move.display_accuracy(@pokemon)}%", 216 + overlay.text_size("%").width, 180, 1, base, shadow]) + textpos.push(["#{selected_move.display_accuracy(@pokemon)}%", 216 + overlay.text_size("%").width, 192, 1, base, shadow]) end # Draw all text pbDrawTextPositions(overlay, textpos) @@ -825,7 +826,7 @@ class PokemonSummary_Scene imagepos = [["Graphics/Pictures/category", 166, 124, 0, selected_move.display_category(@pokemon) * 28, 64, 28]] pbDrawImagePositions(overlay, imagepos) # Draw selected move's description - drawTextEx(overlay, 4, 222, 230, 5, selected_move.description, base, shadow) + drawTextEx(overlay, 4, 224, 230, 5, selected_move.description, base, shadow) end def drawPageFive @@ -834,8 +835,8 @@ class PokemonSummary_Scene @sprites["downarrow"].visible = false # Write various bits of text textpos = [ - [_INTL("No. of Ribbons:"), 234, 326, 0, Color.new(64, 64, 64), Color.new(176, 176, 176)], - [@pokemon.numRibbons.to_s, 450, 326, 1, Color.new(64, 64, 64), Color.new(176, 176, 176)] + [_INTL("No. of Ribbons:"), 234, 338, 0, Color.new(64, 64, 64), Color.new(176, 176, 176)], + [@pokemon.numRibbons.to_s, 450, 338, 1, Color.new(64, 64, 64), Color.new(176, 176, 176)] ] # Draw all text pbDrawTextPositions(overlay, textpos) @@ -874,11 +875,11 @@ class PokemonSummary_Scene pbDrawImagePositions(overlay, imagepos) # Draw name of selected ribbon textpos = [ - [name, 18, 280, 0, nameBase, nameShadow] + [name, 18, 292, 0, nameBase, nameShadow] ] pbDrawTextPositions(overlay, textpos) # Draw selected ribbon's description - drawTextEx(overlay, 18, 322, 480, 2, desc, base, shadow) + drawTextEx(overlay, 18, 324, 480, 2, desc, base, shadow) end def pbGoToPrevious @@ -1083,9 +1084,9 @@ class PokemonSummary_Scene @markingbitmap.bitmap, markrect) end textpos = [ - [_INTL("Mark {1}", pokemon.name), 366, 90, 2, base, shadow], - [_INTL("OK"), 366, 242, 2, base, shadow], - [_INTL("Cancel"), 366, 292, 2, base, shadow] + [_INTL("Mark {1}", pokemon.name), 366, 102, 2, base, shadow], + [_INTL("OK"), 366, 254, 2, base, shadow], + [_INTL("Cancel"), 366, 304, 2, base, shadow] ] pbDrawTextPositions(@sprites["markingoverlay"].bitmap, textpos) redraw = false diff --git a/Data/Scripts/016_UI/007_UI_Bag.rb b/Data/Scripts/016_UI/007_UI_Bag.rb index a4c355a55..56d049bbd 100644 --- a/Data/Scripts/016_UI/007_UI_Bag.rb +++ b/Data/Scripts/016_UI/007_UI_Bag.rb @@ -66,7 +66,7 @@ class Window_PokemonBag < Window_DrawableCommand rect = Rect.new(rect.x + 16, rect.y + 16, rect.width - 16, rect.height) thispocket = @bag.pockets[@pocket] if index == self.itemCount - 1 - textpos.push([_INTL("CLOSE BAG"), rect.x, rect.y - 2, false, self.baseColor, self.shadowColor]) + textpos.push([_INTL("CLOSE BAG"), rect.x, rect.y + 2, false, self.baseColor, self.shadowColor]) else item = (@filterlist) ? thispocket[@filterlist[@pocket][index]][0] : thispocket[index][0] baseColor = self.baseColor @@ -76,7 +76,7 @@ class Window_PokemonBag < Window_DrawableCommand shadowColor = Color.new(248, 144, 144) end textpos.push( - [@adapter.getDisplayName(item), rect.x, rect.y - 2, false, baseColor, shadowColor] + [@adapter.getDisplayName(item), rect.x, rect.y + 2, false, baseColor, shadowColor] ) if GameData::Item.get(item).is_important? if @bag.registered?(item) @@ -94,7 +94,7 @@ class Window_PokemonBag < Window_DrawableCommand qty = (@filterlist) ? thispocket[@filterlist[@pocket][index]][1] : thispocket[index][1] qtytext = _ISPRINTF("x{1: 3d}", qty) xQty = rect.x + rect.width - self.contents.text_size(qtytext).width - 16 - textpos.push([qtytext, xQty, rect.y - 2, false, baseColor, shadowColor]) + textpos.push([qtytext, xQty, rect.y + 2, false, baseColor, shadowColor]) end end pbDrawTextPositions(self.contents, textpos) @@ -200,7 +200,7 @@ class PokemonBag_Scene @sprites["itemlist"].shadowColor = ITEMLISTSHADOWCOLOR @sprites["itemicon"] = ItemIconSprite.new(48, Graphics.height - 48, nil, @viewport) @sprites["itemtext"] = Window_UnformattedTextPokemon.newWithSize( - "", 72, 270, Graphics.width - 72 - 24, 128, @viewport + "", 72, 272, Graphics.width - 72 - 24, 128, @viewport ) @sprites["itemtext"].baseColor = ITEMTEXTBASECOLOR @sprites["itemtext"].shadowColor = ITEMTEXTSHADOWCOLOR @@ -293,7 +293,7 @@ class PokemonBag_Scene # Draw the pocket name pbDrawTextPositions( overlay, - [[PokemonBag.pocket_names[@bag.last_viewed_pocket - 1], 94, 176, 2, POCKETNAMEBASECOLOR, POCKETNAMESHADOWCOLOR]] + [[PokemonBag.pocket_names[@bag.last_viewed_pocket - 1], 94, 186, 2, POCKETNAMEBASECOLOR, POCKETNAMESHADOWCOLOR]] ) # Draw slider arrows showslider = false diff --git a/Data/Scripts/016_UI/008_UI_Pokegear.rb b/Data/Scripts/016_UI/008_UI_Pokegear.rb index c91fc2801..c1672a340 100644 --- a/Data/Scripts/016_UI/008_UI_Pokegear.rb +++ b/Data/Scripts/016_UI/008_UI_Pokegear.rb @@ -45,7 +45,7 @@ class PokegearButton < SpriteWrapper rect.y = @button.height / 2 if @selected self.bitmap.blt(0, 0, @button.bitmap, rect) textpos = [ - [@name, rect.width / 2, (rect.height / 2) - 22, 2, TEXT_BASE_COLOR, TEXT_SHADOW_COLOR] + [@name, rect.width / 2, (rect.height / 2) - 10, 2, TEXT_BASE_COLOR, TEXT_SHADOW_COLOR] ] pbDrawTextPositions(self.bitmap, textpos) imagepos = [ diff --git a/Data/Scripts/016_UI/009_UI_RegionMap.rb b/Data/Scripts/016_UI/009_UI_RegionMap.rb index e114717f2..82c875c04 100644 --- a/Data/Scripts/016_UI/009_UI_RegionMap.rb +++ b/Data/Scripts/016_UI/009_UI_RegionMap.rb @@ -39,9 +39,9 @@ class MapBottomSprite < SpriteWrapper def refresh bitmap.clear textpos = [ - [@mapname, 18, -8, 0, TEXT_MAIN_COLOR, TEXT_SHADOW_COLOR], - [@maplocation, 18, 348, 0, TEXT_MAIN_COLOR, TEXT_SHADOW_COLOR], - [@mapdetails, Graphics.width - 16, 348, 1, TEXT_MAIN_COLOR, TEXT_SHADOW_COLOR] + [@mapname, 18, 4, 0, TEXT_MAIN_COLOR, TEXT_SHADOW_COLOR], + [@maplocation, 18, 360, 0, TEXT_MAIN_COLOR, TEXT_SHADOW_COLOR], + [@mapdetails, Graphics.width - 16, 360, 1, TEXT_MAIN_COLOR, TEXT_SHADOW_COLOR] ] pbDrawTextPositions(bitmap, textpos) end @@ -251,7 +251,7 @@ class PokemonRegionMap_Scene text = (@mode == 0) ? _INTL("ACTION: Fly") : _INTL("ACTION: Cancel Fly") pbDrawTextPositions( @sprites["help"].bitmap, - [[text, Graphics.width - 16, -8, 1, Color.new(248, 248, 248), Color.new(0, 0, 0)]] + [[text, Graphics.width - 16, 4, 1, Color.new(248, 248, 248), Color.new(0, 0, 0)]] ) @sprites.each do |key, sprite| next if !key.include?("point") diff --git a/Data/Scripts/016_UI/012_UI_TrainerCard.rb b/Data/Scripts/016_UI/012_UI_TrainerCard.rb index 21f9f38a4..eefbbfaa2 100644 --- a/Data/Scripts/016_UI/012_UI_TrainerCard.rb +++ b/Data/Scripts/016_UI/012_UI_TrainerCard.rb @@ -49,18 +49,18 @@ class PokemonTrainerCard_Scene $PokemonGlobal.startTime.day, $PokemonGlobal.startTime.year) textPositions = [ - [_INTL("Name"), 34, 58, 0, baseColor, shadowColor], - [$player.name, 302, 58, 1, baseColor, shadowColor], - [_INTL("ID No."), 332, 58, 0, baseColor, shadowColor], - [sprintf("%05d", $player.public_ID), 468, 58, 1, baseColor, shadowColor], - [_INTL("Money"), 34, 106, 0, baseColor, shadowColor], - [_INTL("${1}", $player.money.to_s_formatted), 302, 106, 1, baseColor, shadowColor], - [_INTL("Pokédex"), 34, 154, 0, baseColor, shadowColor], - [sprintf("%d/%d", $player.pokedex.owned_count, $player.pokedex.seen_count), 302, 154, 1, baseColor, shadowColor], - [_INTL("Time"), 34, 202, 0, baseColor, shadowColor], - [time, 302, 202, 1, baseColor, shadowColor], - [_INTL("Started"), 34, 250, 0, baseColor, shadowColor], - [starttime, 302, 250, 1, baseColor, shadowColor] + [_INTL("Name"), 34, 70, 0, baseColor, shadowColor], + [$player.name, 302, 70, 1, baseColor, shadowColor], + [_INTL("ID No."), 332, 70, 0, baseColor, shadowColor], + [sprintf("%05d", $player.public_ID), 468, 70, 1, baseColor, shadowColor], + [_INTL("Money"), 34, 118, 0, baseColor, shadowColor], + [_INTL("${1}", $player.money.to_s_formatted), 302, 118, 1, baseColor, shadowColor], + [_INTL("Pokédex"), 34, 166, 0, baseColor, shadowColor], + [sprintf("%d/%d", $player.pokedex.owned_count, $player.pokedex.seen_count), 302, 166, 1, baseColor, shadowColor], + [_INTL("Time"), 34, 214, 0, baseColor, shadowColor], + [time, 302, 214, 1, baseColor, shadowColor], + [_INTL("Started"), 34, 262, 0, baseColor, shadowColor], + [starttime, 302, 262, 1, baseColor, shadowColor] ] pbDrawTextPositions(overlay, textPositions) x = 72 diff --git a/Data/Scripts/016_UI/013_UI_Load.rb b/Data/Scripts/016_UI/013_UI_Load.rb index 4a4dfc145..dc0799161 100644 --- a/Data/Scripts/016_UI/013_UI_Load.rb +++ b/Data/Scripts/016_UI/013_UI_Load.rb @@ -49,44 +49,44 @@ class PokemonLoadPanel < SpriteWrapper return if disposed? @refreshing = true if !self.bitmap || self.bitmap.disposed? - self.bitmap = BitmapWrapper.new(@bgbitmap.width, 111 * 2) + self.bitmap = BitmapWrapper.new(@bgbitmap.width, 222) pbSetSystemFont(self.bitmap) end if @refreshBitmap @refreshBitmap = false self.bitmap&.clear if @isContinue - self.bitmap.blt(0, 0, @bgbitmap.bitmap, Rect.new(0, (@selected) ? 111 * 2 : 0, @bgbitmap.width, 111 * 2)) + self.bitmap.blt(0, 0, @bgbitmap.bitmap, Rect.new(0, (@selected) ? 222 : 0, @bgbitmap.width, 222)) else - self.bitmap.blt(0, 0, @bgbitmap.bitmap, Rect.new(0, (111 * 2 * 2) + ((@selected) ? 23 * 2 : 0), @bgbitmap.width, 23 * 2)) + self.bitmap.blt(0, 0, @bgbitmap.bitmap, Rect.new(0, 444 + ((@selected) ? 46 : 0), @bgbitmap.width, 46)) end textpos = [] if @isContinue - textpos.push([@title, 16 * 2, 2 * 2, 0, TEXTCOLOR, TEXTSHADOWCOLOR]) - textpos.push([_INTL("Badges:"), 16 * 2, 53 * 2, 0, TEXTCOLOR, TEXTSHADOWCOLOR]) - textpos.push([@trainer.badge_count.to_s, 103 * 2, 53 * 2, 1, TEXTCOLOR, TEXTSHADOWCOLOR]) - textpos.push([_INTL("Pokédex:"), 16 * 2, 69 * 2, 0, TEXTCOLOR, TEXTSHADOWCOLOR]) - textpos.push([@trainer.pokedex.seen_count.to_s, 103 * 2, 69 * 2, 1, TEXTCOLOR, TEXTSHADOWCOLOR]) - textpos.push([_INTL("Time:"), 16 * 2, 85 * 2, 0, TEXTCOLOR, TEXTSHADOWCOLOR]) + textpos.push([@title, 32, 16, 0, TEXTCOLOR, TEXTSHADOWCOLOR]) + textpos.push([_INTL("Badges:"), 32, 118, 0, TEXTCOLOR, TEXTSHADOWCOLOR]) + textpos.push([@trainer.badge_count.to_s, 206, 118, 1, TEXTCOLOR, TEXTSHADOWCOLOR]) + textpos.push([_INTL("Pokédex:"), 32, 150, 0, TEXTCOLOR, TEXTSHADOWCOLOR]) + textpos.push([@trainer.pokedex.seen_count.to_s, 206, 150, 1, TEXTCOLOR, TEXTSHADOWCOLOR]) + textpos.push([_INTL("Time:"), 32, 182, 0, TEXTCOLOR, TEXTSHADOWCOLOR]) hour = @totalsec / 60 / 60 min = @totalsec / 60 % 60 if hour > 0 - textpos.push([_INTL("{1}h {2}m", hour, min), 103 * 2, 85 * 2, 1, TEXTCOLOR, TEXTSHADOWCOLOR]) + textpos.push([_INTL("{1}h {2}m", hour, min), 206, 182, 1, TEXTCOLOR, TEXTSHADOWCOLOR]) else - textpos.push([_INTL("{1}m", min), 103 * 2, 85 * 2, 1, TEXTCOLOR, TEXTSHADOWCOLOR]) + textpos.push([_INTL("{1}m", min), 206, 182, 1, TEXTCOLOR, TEXTSHADOWCOLOR]) end if @trainer.male? - textpos.push([@trainer.name, 56 * 2, 29 * 2, 0, MALETEXTCOLOR, MALETEXTSHADOWCOLOR]) + textpos.push([@trainer.name, 112, 70, 0, MALETEXTCOLOR, MALETEXTSHADOWCOLOR]) elsif @trainer.female? - textpos.push([@trainer.name, 56 * 2, 29 * 2, 0, FEMALETEXTCOLOR, FEMALETEXTSHADOWCOLOR]) + textpos.push([@trainer.name, 112, 70, 0, FEMALETEXTCOLOR, FEMALETEXTSHADOWCOLOR]) else - textpos.push([@trainer.name, 56 * 2, 29 * 2, 0, TEXTCOLOR, TEXTSHADOWCOLOR]) + textpos.push([@trainer.name, 112, 70, 0, TEXTCOLOR, TEXTSHADOWCOLOR]) end mapname = pbGetMapNameFromId(@mapid) mapname.gsub!(/\\PN/, @trainer.name) - textpos.push([mapname, 193 * 2, 2 * 2, 1, TEXTCOLOR, TEXTSHADOWCOLOR]) + textpos.push([mapname, 386, 16, 1, TEXTCOLOR, TEXTSHADOWCOLOR]) else - textpos.push([@title, 16 * 2, 1 * 2, 0, TEXTCOLOR, TEXTSHADOWCOLOR]) + textpos.push([@title, 32, 14, 0, TEXTCOLOR, TEXTSHADOWCOLOR]) end pbDrawTextPositions(self.bitmap, textpos) end @@ -104,16 +104,16 @@ class PokemonLoad_Scene @viewport = Viewport.new(0, 0, Graphics.width, Graphics.height) @viewport.z = 99998 addBackgroundOrColoredPlane(@sprites, "background", "loadbg", Color.new(248, 248, 248), @viewport) - y = 16 * 2 + y = 32 commands.length.times do |i| @sprites["panel#{i}"] = PokemonLoadPanel.new( i, commands[i], (show_continue) ? (i == 0) : false, trainer, frame_count, stats, map_id, @viewport ) - @sprites["panel#{i}"].x = 24 * 2 + @sprites["panel#{i}"].x = 48 @sprites["panel#{i}"].y = y @sprites["panel#{i}"].pbRefresh - y += (show_continue && i == 0) ? 112 * 2 : 24 * 2 + y += (show_continue && i == 0) ? 224 : 48 end @sprites["cmdwindow"] = Window_CommandPokemon.new([]) @sprites["cmdwindow"].viewport = @viewport @@ -140,25 +140,25 @@ class PokemonLoad_Scene @sprites["panel#{oldi}"].pbRefresh @sprites["panel#{newi}"].selected = true @sprites["panel#{newi}"].pbRefresh - while @sprites["panel#{newi}"].y > Graphics.height - (40 * 2) + while @sprites["panel#{newi}"].y > Graphics.height - 80 @commands.length.times do |i| - @sprites["panel#{i}"].y -= 24 * 2 + @sprites["panel#{i}"].y -= 48 end 6.times do |i| break if !@sprites["party#{i}"] - @sprites["party#{i}"].y -= 24 * 2 + @sprites["party#{i}"].y -= 48 end - @sprites["player"].y -= 24 * 2 if @sprites["player"] + @sprites["player"].y -= 48 if @sprites["player"] end - while @sprites["panel#{newi}"].y < 16 * 2 + while @sprites["panel#{newi}"].y < 32 @commands.length.times do |i| - @sprites["panel#{i}"].y += 24 * 2 + @sprites["panel#{i}"].y += 48 end 6.times do |i| break if !@sprites["party#{i}"] - @sprites["party#{i}"].y += 24 * 2 + @sprites["party#{i}"].y += 48 end - @sprites["player"].y += 24 * 2 if @sprites["player"] + @sprites["player"].y += 48 if @sprites["player"] end end end @@ -171,15 +171,15 @@ class PokemonLoad_Scene @sprites["player"] = TrainerWalkingCharSprite.new(filename, @viewport) charwidth = @sprites["player"].bitmap.width charheight = @sprites["player"].bitmap.height - @sprites["player"].x = (56 * 2) - (charwidth / 8) - @sprites["player"].y = (56 * 2) - (charheight / 8) + @sprites["player"].x = 112 - (charwidth / 8) + @sprites["player"].y = 112 - (charheight / 8) @sprites["player"].src_rect = Rect.new(0, 0, charwidth / 4, charheight / 4) end trainer.party.each_with_index do |pkmn, i| @sprites["party#{i}"] = PokemonIconSprite.new(pkmn, @viewport) @sprites["party#{i}"].setOffset(PictureOrigin::CENTER) - @sprites["party#{i}"].x = (167 + (33 * (i % 2))) * 2 - @sprites["party#{i}"].y = (56 + (25 * (i / 2))) * 2 + @sprites["party#{i}"].x = 334 + (66 * (i % 2)) + @sprites["party#{i}"].y = 112 + (50 * (i / 2)) @sprites["party#{i}"].z = 99999 end end diff --git a/Data/Scripts/016_UI/015_UI_Options.rb b/Data/Scripts/016_UI/015_UI_Options.rb index 94bbf70cf..d0a6efc0f 100644 --- a/Data/Scripts/016_UI/015_UI_Options.rb +++ b/Data/Scripts/016_UI/015_UI_Options.rb @@ -193,14 +193,14 @@ class Window_PokemonOption < Window_DrawableCommand when EnumOption if @options[index].values.length > 1 totalwidth = 0 - @options[index].each_value do |value| + @options[index].values.each do |value| totalwidth += self.contents.text_size(value).width end spacing = (rect.width - rect.x - optionwidth - totalwidth) / (@options[index].values.length - 1) spacing = 0 if spacing < 0 xpos = optionwidth + rect.x ivalue = 0 - @options[index].each_value do |value| + @options[index].values.each do |value| pbDrawShadowText(self.contents, xpos, rect.y, optionwidth, rect.height, value, (ivalue == self[index]) ? SEL_VALUE_BASE_COLOR : self.baseColor, (ivalue == self[index]) ? SEL_VALUE_SHADOW_COLOR : self.shadowColor) diff --git a/Data/Scripts/016_UI/016_UI_ReadyMenu.rb b/Data/Scripts/016_UI/016_UI_ReadyMenu.rb index ad48b1d33..cc878efce 100644 --- a/Data/Scripts/016_UI/016_UI_ReadyMenu.rb +++ b/Data/Scripts/016_UI/016_UI_ReadyMenu.rb @@ -71,15 +71,15 @@ class ReadyMenuButton < SpriteWrapper self.bitmap.blt(0, 0, @button.bitmap, rect) textx = (@command[2]) ? 164 : (GameData::Item.get(@command[0]).is_important?) ? 146 : 124 textpos = [ - [@command[1], textx, 16, 2, Color.new(248, 248, 248), Color.new(40, 40, 40), 1] + [@command[1], textx, 24, 2, Color.new(248, 248, 248), Color.new(40, 40, 40), 1] ] if !@command[2] && !GameData::Item.get(@command[0]).is_important? qty = $bag.quantity(@command[0]) if qty > 99 - textpos.push([_INTL(">99"), 230, 16, 1, + textpos.push([_INTL(">99"), 230, 24, 1, Color.new(248, 248, 248), Color.new(40, 40, 40), 1]) else - textpos.push([_INTL("x{1}", qty), 230, 16, 1, + textpos.push([_INTL("x{1}", qty), 230, 24, 1, Color.new(248, 248, 248), Color.new(40, 40, 40), 1]) end end diff --git a/Data/Scripts/016_UI/017_UI_PokemonStorage.rb b/Data/Scripts/016_UI/017_UI_PokemonStorage.rb index df223ae42..facfd8c42 100644 --- a/Data/Scripts/016_UI/017_UI_PokemonStorage.rb +++ b/Data/Scripts/016_UI/017_UI_PokemonStorage.rb @@ -409,7 +409,7 @@ class PokemonBoxSprite < SpriteWrapper pbSetSystemFont(@contents) widthval = @contents.text_size(boxname).width xval = 162 - (widthval / 2) - pbDrawShadowText(@contents, xval, 8, widthval, 32, + pbDrawShadowText(@contents, xval, 14, widthval, 32, boxname, Color.new(248, 248, 248), Color.new(40, 48, 48)) @refreshBox = false end @@ -531,7 +531,7 @@ class PokemonBoxPartySprite < SpriteWrapper @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, 248, 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] @@ -1326,8 +1326,8 @@ class PokemonStorageScene @markingbitmap.bitmap, markrect) end textpos = [ - [_INTL("OK"), 402, 208, 2, base, shadow, 1], - [_INTL("Cancel"), 402, 272, 2, base, shadow, 1] + [_INTL("OK"), 402, 216, 2, base, shadow, 1], + [_INTL("Cancel"), 402, 280, 2, base, shadow, 1] ] pbDrawTextPositions(@sprites["markingoverlay"].bitmap, textpos) pbMarkingSetArrow(@sprites["arrow"], index) @@ -1400,8 +1400,8 @@ class PokemonStorageScene buttonshadow = Color.new(80, 80, 80) pbDrawTextPositions( overlay, - [[_INTL("Party: {1}", (@storage.party.length rescue 0)), 270, 326, 2, buttonbase, buttonshadow, 1], - [_INTL("Exit"), 446, 326, 2, buttonbase, buttonshadow, 1]] + [[_INTL("Party: {1}", (@storage.party.length rescue 0)), 270, 334, 2, buttonbase, buttonshadow, 1], + [_INTL("Exit"), 446, 334, 2, buttonbase, buttonshadow, 1]] ) pokemon = nil if @screen.pbHeldPokemon @@ -1420,26 +1420,26 @@ class PokemonStorageScene nonshadow = Color.new(224, 224, 224) pokename = pokemon.name textstrings = [ - [pokename, 10, 2, false, base, shadow] + [pokename, 10, 14, false, base, shadow] ] if !pokemon.egg? imagepos = [] if pokemon.male? - textstrings.push([_INTL("♂"), 148, 2, false, Color.new(24, 112, 216), Color.new(136, 168, 208)]) + textstrings.push([_INTL("♂"), 148, 14, false, Color.new(24, 112, 216), Color.new(136, 168, 208)]) elsif pokemon.female? - textstrings.push([_INTL("♀"), 148, 2, false, Color.new(248, 56, 32), Color.new(224, 152, 144)]) + textstrings.push([_INTL("♀"), 148, 14, false, Color.new(248, 56, 32), Color.new(224, 152, 144)]) end imagepos.push(["Graphics/Pictures/Storage/overlay_lv", 6, 246]) - textstrings.push([pokemon.level.to_s, 28, 228, false, base, shadow]) + textstrings.push([pokemon.level.to_s, 28, 240, false, base, shadow]) if pokemon.ability - textstrings.push([pokemon.ability.name, 86, 300, 2, base, shadow]) + textstrings.push([pokemon.ability.name, 86, 312, 2, base, shadow]) else - textstrings.push([_INTL("No ability"), 86, 300, 2, nonbase, nonshadow]) + textstrings.push([_INTL("No ability"), 86, 312, 2, nonbase, nonshadow]) end if pokemon.item - textstrings.push([pokemon.item.name, 86, 336, 2, base, shadow]) + textstrings.push([pokemon.item.name, 86, 348, 2, base, shadow]) else - textstrings.push([_INTL("No item"), 86, 336, 2, nonbase, nonshadow]) + textstrings.push([_INTL("No item"), 86, 348, 2, nonbase, nonshadow]) end if pokemon.shiny? imagepos.push(["Graphics/Pictures/shiny", 156, 198]) diff --git a/Data/Scripts/016_UI/018_UI_ItemStorage.rb b/Data/Scripts/016_UI/018_UI_ItemStorage.rb index 90a68dfd4..cb730a02f 100644 --- a/Data/Scripts/016_UI/018_UI_ItemStorage.rb +++ b/Data/Scripts/016_UI/018_UI_ItemStorage.rb @@ -32,17 +32,17 @@ class Window_PokemonItemStorage < Window_DrawableCommand rect = drawCursor(index, rect) textpos = [] if index == @bag.length - textpos.push([_INTL("CANCEL"), rect.x, rect.y - 6, false, self.baseColor, self.shadowColor]) + textpos.push([_INTL("CANCEL"), rect.x, rect.y, false, self.baseColor, self.shadowColor]) else item = @bag[index][0] itemname = @adapter.getDisplayName(item) baseColor = (index == @sortIndex) ? Color.new(248, 24, 24) : self.baseColor - textpos.push([itemname, rect.x, rect.y - 6, false, self.baseColor, self.shadowColor]) + textpos.push([itemname, rect.x, rect.y, false, self.baseColor, self.shadowColor]) if !GameData::Item.get(item).is_important? # Not a Key item/HM/TM qty = _ISPRINTF("x{1: 2d}", @bag[index][1]) sizeQty = self.contents.text_size(qty).width xQty = rect.x + rect.width - sizeQty - 2 - textpos.push([qty, xQty, rect.y - 6, false, baseColor, self.shadowColor]) + textpos.push([qty, xQty, rect.y, false, baseColor, self.shadowColor]) end end pbDrawTextPositions(self.contents, textpos) @@ -90,7 +90,7 @@ class ItemStorage_Scene @sprites["pocketwindow"].y = 16 pbSetNarrowFont(@sprites["pocketwindow"].bitmap) # Item description - @sprites["itemtextwindow"] = Window_UnformattedTextPokemon.newWithSize("", 84, 270, Graphics.width - 84, 128, @viewport) + @sprites["itemtextwindow"] = Window_UnformattedTextPokemon.newWithSize("", 84, 272, Graphics.width - 84, 128, @viewport) @sprites["itemtextwindow"].baseColor = ITEMTEXTBASECOLOR @sprites["itemtextwindow"].shadowColor = ITEMTEXTSHADOWCOLOR @sprites["itemtextwindow"].windowskin = nil @@ -132,7 +132,7 @@ class ItemStorage_Scene def pbRefresh bm = @sprites["pocketwindow"].bitmap # Draw title at upper left corner ("Toss Item/Withdraw Item") - drawTextEx(bm, 0, 4, bm.width, 2, @title, TITLEBASECOLOR, TITLESHADOWCOLOR) + drawTextEx(bm, 0, 8, bm.width, 2, @title, TITLEBASECOLOR, TITLESHADOWCOLOR) itemwindow = @sprites["itemwindow"] # Draw item icon @sprites["icon"].item = itemwindow.item diff --git a/Data/Scripts/016_UI/020_UI_PokeMart.rb b/Data/Scripts/016_UI/020_UI_PokeMart.rb index d9094e59f..adab1c894 100644 --- a/Data/Scripts/016_UI/020_UI_PokeMart.rb +++ b/Data/Scripts/016_UI/020_UI_PokeMart.rb @@ -176,15 +176,15 @@ class Window_PokemonMart < Window_DrawableCommand rect = drawCursor(index, rect) ypos = rect.y if index == count - 1 - textpos.push([_INTL("CANCEL"), rect.x, ypos - 4, false, self.baseColor, self.shadowColor]) + textpos.push([_INTL("CANCEL"), rect.x, ypos + 2, false, self.baseColor, self.shadowColor]) else item = @stock[index] itemname = @adapter.getDisplayName(item) qty = @adapter.getDisplayPrice(item) sizeQty = self.contents.text_size(qty).width xQty = rect.x + rect.width - sizeQty - 2 - 16 - textpos.push([itemname, rect.x, ypos - 4, false, self.baseColor, self.shadowColor]) - textpos.push([qty, xQty, ypos - 4, false, self.baseColor, self.shadowColor]) + textpos.push([itemname, rect.x, ypos + 2, false, self.baseColor, self.shadowColor]) + textpos.push([qty, xQty, ypos + 2, false, self.baseColor, self.shadowColor]) end pbDrawTextPositions(self.contents, textpos) end @@ -228,7 +228,7 @@ class PokemonMart_Scene @sprites["icon"] = ItemIconSprite.new(36, Graphics.height - 50, nil, @viewport) winAdapter = buying ? BuyAdapter.new(adapter) : SellAdapter.new(adapter) @sprites["itemwindow"] = Window_PokemonMart.new( - stock, winAdapter, Graphics.width - 316 - 16, 12, 330 + 16, Graphics.height - 126 + stock, winAdapter, Graphics.width - 316 - 16, 10, 330 + 16, Graphics.height - 124 ) @sprites["itemwindow"].viewport = @viewport @sprites["itemwindow"].index = 0 diff --git a/Data/Scripts/016_UI/021_UI_MoveRelearner.rb b/Data/Scripts/016_UI/021_UI_MoveRelearner.rb index 3f3735730..39d512c54 100644 --- a/Data/Scripts/016_UI/021_UI_MoveRelearner.rb +++ b/Data/Scripts/016_UI/021_UI_MoveRelearner.rb @@ -59,24 +59,23 @@ class MoveRelearner_Scene overlay.blt(type_x, 70, @typebitmap.bitmap, type_rect) end textpos = [ - [_INTL("Teach which move?"), 16, 2, 0, Color.new(88, 88, 80), Color.new(168, 184, 184)] + [_INTL("Teach which move?"), 16, 14, 0, Color.new(88, 88, 80), Color.new(168, 184, 184)] ] imagepos = [] - yPos = 76 + yPos = 88 VISIBLEMOVES.times do |i| moveobject = @moves[@sprites["commands"].top_item + i] if moveobject moveData = GameData::Move.get(moveobject) type_number = GameData::Type.get(moveData.display_type(@pokemon)).icon_position - imagepos.push(["Graphics/Pictures/types", 12, yPos + 8, 0, type_number * 28, 64, 28]) + imagepos.push(["Graphics/Pictures/types", 12, yPos - 4, 0, type_number * 28, 64, 28]) textpos.push([moveData.name, 80, yPos, 0, Color.new(248, 248, 248), Color.new(0, 0, 0)]) + textpos.push([_INTL("PP"), 112, yPos + 32, 0, Color.new(64, 64, 64), Color.new(176, 176, 176)]) if moveData.total_pp > 0 - textpos.push([_INTL("PP"), 112, yPos + 32, 0, Color.new(64, 64, 64), Color.new(176, 176, 176)]) textpos.push([_INTL("{1}/{1}", moveData.total_pp), 230, yPos + 32, 1, Color.new(64, 64, 64), Color.new(176, 176, 176)]) else - textpos.push(["-", 80, yPos, 0, Color.new(64, 64, 64), Color.new(176, 176, 176)]) - textpos.push(["--", 228, yPos + 32, 1, Color.new(64, 64, 64), Color.new(176, 176, 176)]) + textpos.push(["--", 230, yPos + 32, 1, Color.new(64, 64, 64), Color.new(176, 176, 176)]) end end yPos += 64 @@ -88,13 +87,13 @@ class MoveRelearner_Scene basedamage = selMoveData.display_damage(@pokemon) category = selMoveData.display_category(@pokemon) accuracy = selMoveData.display_accuracy(@pokemon) - textpos.push([_INTL("CATEGORY"), 272, 108, 0, Color.new(248, 248, 248), Color.new(0, 0, 0)]) - textpos.push([_INTL("POWER"), 272, 140, 0, Color.new(248, 248, 248), Color.new(0, 0, 0)]) + textpos.push([_INTL("CATEGORY"), 272, 120, 0, Color.new(248, 248, 248), Color.new(0, 0, 0)]) + textpos.push([_INTL("POWER"), 272, 152, 0, Color.new(248, 248, 248), Color.new(0, 0, 0)]) textpos.push([basedamage <= 1 ? basedamage == 1 ? "???" : "---" : sprintf("%d", basedamage), - 468, 140, 2, Color.new(64, 64, 64), Color.new(176, 176, 176)]) - textpos.push([_INTL("ACCURACY"), 272, 172, 0, Color.new(248, 248, 248), Color.new(0, 0, 0)]) + 468, 152, 2, Color.new(64, 64, 64), Color.new(176, 176, 176)]) + textpos.push([_INTL("ACCURACY"), 272, 184, 0, Color.new(248, 248, 248), Color.new(0, 0, 0)]) textpos.push([accuracy == 0 ? "---" : "#{accuracy}%", - 468, 172, 2, Color.new(64, 64, 64), Color.new(176, 176, 176)]) + 468, 184, 2, Color.new(64, 64, 64), Color.new(176, 176, 176)]) pbDrawTextPositions(overlay, textpos) imagepos.push(["Graphics/Pictures/category", 436, 116, 0, category * 28, 64, 28]) if @sprites["commands"].index < @moves.length - 1 @@ -104,7 +103,7 @@ class MoveRelearner_Scene imagepos.push(["Graphics/Pictures/reminderButtons", 134, 350, 76, 0, 76, 32]) end pbDrawImagePositions(overlay, imagepos) - drawTextEx(overlay, 272, 214, 230, 5, selMoveData.description, + drawTextEx(overlay, 272, 216, 230, 5, selMoveData.description, Color.new(64, 64, 64), Color.new(176, 176, 176)) end diff --git a/Data/Scripts/016_UI/022_UI_PurifyChamber.rb b/Data/Scripts/016_UI/022_UI_PurifyChamber.rb index ae35bcc02..d9cf8f174 100644 --- a/Data/Scripts/016_UI/022_UI_PurifyChamber.rb +++ b/Data/Scripts/016_UI/022_UI_PurifyChamber.rb @@ -655,11 +655,9 @@ class Window_PurifyChamberSets < Window_DrawableCommand textpos = [] rect = drawCursor(index, rect) if index == @switching - textpos.push([(index + 1).to_s, rect.x, - rect.y - 6, false, Color.new(248, 0, 0), self.shadowColor]) + textpos.push([(index + 1).to_s, rect.x, rect.y, false, Color.new(248, 0, 0), self.shadowColor]) else - textpos.push([(index + 1).to_s, rect.x, - rect.y - 6, false, self.baseColor, self.shadowColor]) + textpos.push([(index + 1).to_s, rect.x, rect.y, false, self.baseColor, self.shadowColor]) end if @chamber.setCount(index) > 0 pbDrawGauge(self.contents, Rect.new(rect.x + 16, rect.y + 6, 48, 8), @@ -949,14 +947,14 @@ class PurifyChamberSetView < SpriteWrapper if pkmn.types.length == 1 textpos.push([_INTL("{1} Lv.{2} {3}", pkmn.name, pkmn.level, GameData::Type.get(pkmn.types[0]).name), - 2, -6, 0, Color.new(248, 248, 248), Color.new(128, 128, 128)]) + 2, 6, 0, Color.new(248, 248, 248), Color.new(128, 128, 128)]) else textpos.push([_INTL("{1} Lv.{2} {3}/{4}", pkmn.name, pkmn.level, GameData::Type.get(pkmn.types[0]).name, GameData::Type.get(pkmn.types[1]).name), - 2, -6, 0, Color.new(248, 248, 248), Color.new(128, 128, 128)]) + 2, 6, 0, Color.new(248, 248, 248), Color.new(128, 128, 128)]) end - textpos.push([_INTL("FLOW"), 2 + (@info.bitmap.width / 2), 18, 0, + textpos.push([_INTL("FLOW"), 2 + (@info.bitmap.width / 2), 30, 0, Color.new(248, 248, 248), Color.new(128, 128, 128)]) # draw heart gauge pbDrawGauge(@info.bitmap, Rect.new(@info.bitmap.width * 3 / 4, 8, @info.bitmap.width * 1 / 4, 8), @@ -966,7 +964,7 @@ class PurifyChamberSetView < SpriteWrapper Color.new(0, 0, 248), @chamber.chamberFlow(@set), 6) end if @chamber.setCount(@set) > 0 - textpos.push([_INTL("TEMPO"), 2, 18, 0, + textpos.push([_INTL("TEMPO"), 2, 30, 0, Color.new(248, 248, 248), Color.new(128, 128, 128)]) # draw tempo gauge pbDrawGauge(@info.bitmap, Rect.new(@info.bitmap.width * 1 / 4, 24 + 8, @info.bitmap.width * 1 / 4, 8), diff --git a/Data/Scripts/016_UI/024_UI_TextEntry.rb b/Data/Scripts/016_UI/024_UI_TextEntry.rb index 947caba5f..d2022f5dd 100644 --- a/Data/Scripts/016_UI/024_UI_TextEntry.rb +++ b/Data/Scripts/016_UI/024_UI_TextEntry.rb @@ -151,9 +151,9 @@ class PokemonEntryScene pbSetSystemFont(@sprites["gender"].bitmap) textpos = [] if pokemon.male? - textpos.push([_INTL("♂"), 0, -6, false, Color.new(0, 128, 248), Color.new(168, 184, 184)]) + textpos.push([_INTL("♂"), 0, 6, false, Color.new(0, 128, 248), Color.new(168, 184, 184)]) elsif pokemon.female? - textpos.push([_INTL("♀"), 0, -6, false, Color.new(248, 24, 24), Color.new(168, 184, 184)]) + textpos.push([_INTL("♀"), 0, 6, false, Color.new(248, 24, 24), Color.new(168, 184, 184)]) end pbDrawTextPositions(@sprites["gender"].bitmap, textpos) end @@ -389,7 +389,7 @@ class PokemonEntryScene2 COLUMNS.times do |y| ROWS.times do |x| pos = (y * ROWS) + x - textPos.push([@@Characters[i][0][pos], 44 + (x * 32), 12 + (y * 38), 2, + textPos.push([@@Characters[i][0][pos], 44 + (x * 32), 24 + (y * 38), 2, Color.new(16, 24, 32), Color.new(160, 160, 160)]) end end @@ -436,9 +436,9 @@ class PokemonEntryScene2 pbSetSystemFont(@sprites["gender"].bitmap) textpos = [] if pokemon.male? - textpos.push([_INTL("♂"), 0, -6, false, Color.new(0, 128, 248), Color.new(168, 184, 184)]) + textpos.push([_INTL("♂"), 0, 6, false, Color.new(0, 128, 248), Color.new(168, 184, 184)]) elsif pokemon.female? - textpos.push([_INTL("♀"), 0, -6, false, Color.new(248, 24, 24), Color.new(168, 184, 184)]) + textpos.push([_INTL("♀"), 0, 6, false, Color.new(248, 24, 24), Color.new(168, 184, 184)]) end pbDrawTextPositions(@sprites["gender"].bitmap, textpos) end @@ -513,12 +513,12 @@ class PokemonEntryScene2 bgoverlay.clear pbSetSystemFont(bgoverlay) textPositions = [ - [@helptext, 160, 6, false, Color.new(16, 24, 32), Color.new(168, 184, 184)] + [@helptext, 160, 18, false, Color.new(16, 24, 32), Color.new(168, 184, 184)] ] chars = @helper.textChars x = 166 chars.each do |ch| - textPositions.push([ch, x, 42, false, Color.new(16, 24, 32), Color.new(168, 184, 184)]) + textPositions.push([ch, x, 54, false, Color.new(16, 24, 32), Color.new(168, 184, 184)]) x += 24 end pbDrawTextPositions(bgoverlay, textPositions) diff --git a/Data/Scripts/017_Minigames/002_Minigame_TripleTriad.rb b/Data/Scripts/017_Minigames/002_Minigame_TripleTriad.rb index 0289d46b0..b95a5d040 100644 --- a/Data/Scripts/017_Minigames/002_Minigame_TripleTriad.rb +++ b/Data/Scripts/017_Minigames/002_Minigame_TripleTriad.rb @@ -199,8 +199,8 @@ class TriadScene pbSetSystemFont(@sprites["overlay"].bitmap) pbDrawTextPositions( @sprites["overlay"].bitmap, - [[@battle.opponentName, 52, -2, 2, Color.new(248, 248, 248), Color.new(96, 96, 96)], - [@battle.playerName, Graphics.width - 52, -2, 2, Color.new(248, 248, 248), Color.new(96, 96, 96)]] + [[@battle.opponentName, 52, 10, 2, Color.new(248, 248, 248), Color.new(96, 96, 96)], + [@battle.playerName, Graphics.width - 52, 10, 2, Color.new(248, 248, 248), Color.new(96, 96, 96)]] ) @sprites["score"] = Sprite.new(@viewport) @sprites["score"].bitmap = BitmapWrapper.new(Graphics.width, Graphics.height) @@ -577,7 +577,7 @@ class TriadScene end pbDrawTextPositions( bitmap, - [[_INTL("{1}-{2}", oppscore, playerscore), Graphics.width / 2, -2, 2, Color.new(248, 248, 248), Color.new(96, 96, 96)]] + [[_INTL("{1}-{2}", oppscore, playerscore), Graphics.width / 2, 10, 2, Color.new(248, 248, 248), Color.new(96, 96, 96)]] ) end diff --git a/Data/Scripts/017_Minigames/004_Minigame_VoltorbFlip.rb b/Data/Scripts/017_Minigames/004_Minigame_VoltorbFlip.rb index a57accc4a..2ec32ba5c 100644 --- a/Data/Scripts/017_Minigames/004_Minigame_VoltorbFlip.rb +++ b/Data/Scripts/017_Minigames/004_Minigame_VoltorbFlip.rb @@ -83,12 +83,12 @@ class VoltorbFlip pbUpdateRowNumbers(0, 0, i) pbUpdateColumnNumbers(0, 0, i) end - pbDrawShadowText(@sprites["text"].bitmap, 8, 16, 118, 26, + pbDrawShadowText(@sprites["text"].bitmap, 8, 22, 118, 26, _INTL("Your coins"), Color.new(60, 60, 60), Color.new(150, 190, 170), 1) - pbDrawShadowText(@sprites["text"].bitmap, 8, 82, 118, 26, + pbDrawShadowText(@sprites["text"].bitmap, 8, 88, 118, 26, _INTL("Prize coins"), Color.new(60, 60, 60), Color.new(150, 190, 170), 1) # Draw current level - pbDrawShadowText(@sprites["level"].bitmap, 8, 148, 118, 28, + pbDrawShadowText(@sprites["level"].bitmap, 8, 154, 118, 28, _INTL("Level {1}", @level.to_s), Color.new(60, 60, 60), Color.new(150, 190, 170), 1) # Displays total and current coins pbUpdateCoins @@ -314,7 +314,7 @@ class VoltorbFlip end # Update level text @sprites["level"].bitmap.clear - pbDrawShadowText(@sprites["level"].bitmap, 8, 150, 118, 28, "Level " + @level.to_s, + pbDrawShadowText(@sprites["level"].bitmap, 8, 154, 118, 28, "Level " + @level.to_s, Color.new(60, 60, 60), Color.new(150, 190, 170), 1) @points = 0 pbUpdateCoins @@ -365,7 +365,7 @@ class VoltorbFlip pbMessage(_INTL("\\se[Voltorb Flip gain coins]{1} received {2} Coins!", $player.name, @points.to_s_formatted)) # Update level text @sprites["level"].bitmap.clear - pbDrawShadowText(@sprites["level"].bitmap, 8, 150, 118, 28, _INTL("Level {1}", @level.to_s), + pbDrawShadowText(@sprites["level"].bitmap, 8, 154, 118, 28, _INTL("Level {1}", @level.to_s), Color.new(60, 60, 60), Color.new(150, 190, 170), 1) old_coins = $player.coins $player.coins += @points diff --git a/Data/Scripts/020_Debug/001_Editor screens/002_EditorScreens_TerrainTags.rb b/Data/Scripts/020_Debug/001_Editor screens/002_EditorScreens_TerrainTags.rb index b903f0979..f0241fb17 100644 --- a/Data/Scripts/020_Debug/001_Editor screens/002_EditorScreens_TerrainTags.rb +++ b/Data/Scripts/020_Debug/001_Editor screens/002_EditorScreens_TerrainTags.rb @@ -88,7 +88,7 @@ class PokemonTilesetScene TILES_PER_ROW.times do |xx| tile_id = tile_ID_from_coordinates(xx, @top_y + yy) terr = @tileset.terrain_tags[tile_id] - textpos.push([terr.to_s, (xx * TILE_SIZE) + (TILE_SIZE / 2), (yy * TILE_SIZE) - 6, 2, TEXT_COLOR, TEXT_SHADOW_COLOR]) + textpos.push([terr.to_s, (xx * TILE_SIZE) + (TILE_SIZE / 2), (yy * TILE_SIZE) + 6, 2, TEXT_COLOR, TEXT_SHADOW_COLOR]) end end pbDrawTextPositions(@sprites["overlay"].bitmap, textpos) @@ -123,8 +123,8 @@ class PokemonTilesetScene terrain_tag_name = terrain_tag.to_s end textpos = [ - [_INTL("Terrain Tag:"), tile_x + TILE_SIZE, tile_y + (TILE_SIZE * 2) + 10, 2, Color.new(248, 248, 248), Color.new(40, 40, 40)], - [terrain_tag_name, tile_x + TILE_SIZE, tile_y + (TILE_SIZE * 2) + 42, 2, Color.new(248, 248, 248), Color.new(40, 40, 40)] + [_INTL("Terrain Tag:"), tile_x + TILE_SIZE, tile_y + (TILE_SIZE * 2) + 22, 2, Color.new(248, 248, 248), Color.new(40, 40, 40)], + [terrain_tag_name, tile_x + TILE_SIZE, tile_y + (TILE_SIZE * 2) + 54, 2, Color.new(248, 248, 248), Color.new(40, 40, 40)] ] # Draw all text pbDrawTextPositions(overlay, textpos) diff --git a/Data/Scripts/020_Debug/002_Animation editor/002_AnimEditor_ControlsButtons.rb b/Data/Scripts/020_Debug/002_Animation editor/002_AnimEditor_ControlsButtons.rb index ad8d1b682..a51e3167f 100644 --- a/Data/Scripts/020_Debug/002_Animation editor/002_AnimEditor_ControlsButtons.rb +++ b/Data/Scripts/020_Debug/002_Animation editor/002_AnimEditor_ControlsButtons.rb @@ -7,9 +7,9 @@ module ShadowText when 1 x += (w / 2) - (width / 2) end - pbDrawShadowText(bitmap, x, y, w, h, t, - disabled ? Color.new(26 * 8, 26 * 8, 25 * 8) : Color.new(12 * 8, 12 * 8, 12 * 8), - Color.new(26 * 8, 26 * 8, 25 * 8)) + pbDrawShadowText(bitmap, x, y + 6, w, h, t, + disabled ? Color.new(208, 208, 200) : Color.new(96, 96, 96), + Color.new(208, 208, 200)) end end diff --git a/Fonts/power green narrow.ttf b/Fonts/power green narrow.ttf index 6093f7f72eecf3bbc973bd69501083a038d32dc7..f2f2fe3102f132781c2d8c01a21db739746207e5 100644 GIT binary patch literal 24704 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 diff --git a/Fonts/power green small.ttf b/Fonts/power green small.ttf index 7c7eed6aa5b3ae25b0898a08161b3bf24cb0c1b4..3316e2bb7105682e62fa938e2cfa08c8473f20bb 100644 GIT binary patch literal 23480 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 literal 17072 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 VPQu0ktjjAuyzzD(%m1(8{{Ti+u5|za diff --git a/Fonts/power green.ttf b/Fonts/power green.ttf index d3b76c92fcc58420ebd3eeef86c4d141f6a94bac..c57e56c580499cf62da5a56b1d48167e33510890 100644 GIT binary patch literal 25864 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 literal 18648 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