From 48fb8dae73cbde69c2e82cbf90e409e152b12bb7 Mon Sep 17 00:00:00 2001 From: Maruno17 Date: Thu, 4 May 2023 21:28:00 +0100 Subject: [PATCH] Removed redundant "\r" from various messages, removed usages of BitmapWrapper, fixed Lure Ball error in battles started in the Debug menu, improved Terrain Tag editor, fixed some Compiler errors, enabled vsync, fixed event graphics frozen to the screen when using $game_player.moveto directly. --- .../001_Debugging/002_DebugConsole.rb | 2 +- .../001_Debugging/005_Deprecation.rb | 4 +- Data/Scripts/001_Technical/004_Input.rb | 2 +- .../001_Technical/005_PluginManager.rb | 2 +- .../004_Game classes/008_Game_Event.rb | 3 + .../005_Sprites/003_Sprite_Character.rb | 86 +++++++++-------- .../005_Sprites/004_Sprite_Reflection.rb | 59 ++++++------ .../005_Sprites/005_Sprite_SurfBase.rb | 84 ++++++++-------- .../006_Map renderer/004_TileDrawingHelper.rb | 4 +- .../005_SpriteWindow_text.rb | 2 +- ...7_SpriteWrapper.rb => 007_BitmapSprite.rb} | 90 ----------------- .../008_AnimatedBitmap.rb | 4 +- .../007_Objects and windows/011_Messages.rb | 2 +- .../001_Battle/002_Battle_StartAndEnd.rb | 4 +- .../003_Battle_ExpAndMoveLearning.rb | 2 +- .../004_Scene/004_Scene_PlayAnimations.rb | 4 +- .../004_Scene/006_Battle_Scene_Objects.rb | 4 +- .../010_Battle_PokeBallEffects.rb | 7 +- .../001_SafariBattle.rb | 2 +- .../002_Overworld_Overlays.rb | 2 +- .../012_Overworld/005_Overworld_Fishing.rb | 2 +- .../008_Overworld_RandomDungeons.rb | 4 +- Data/Scripts/013_Items/001_Item_Utilities.rb | 16 ++-- .../001_Non-interactive UI/002_UI_Controls.rb | 2 +- .../001_Non-interactive UI/005_UI_Trading.rb | 6 +- Data/Scripts/016_UI/008_UI_Pokegear.rb | 2 +- Data/Scripts/016_UI/009_UI_RegionMap.rb | 2 +- Data/Scripts/016_UI/013_UI_Load.rb | 2 +- Data/Scripts/016_UI/016_UI_ReadyMenu.rb | 2 +- Data/Scripts/016_UI/017_UI_PokemonStorage.rb | 4 +- Data/Scripts/016_UI/020_UI_PokeMart.rb | 2 +- Data/Scripts/016_UI/021_UI_BattlePointShop.rb | 2 +- Data/Scripts/016_UI/025_UI_TextEntry.rb | 2 +- .../017_Minigames/001_Minigame_Duel.rb | 2 +- .../017_Minigames/002_Minigame_TripleTriad.rb | 16 ++-- .../002_EditorScreens_TerrainTags.rb | 81 ++++++++++------ .../003_EditorScreens_MapConnections.rb | 14 +-- .../003_Debug menus/001_Debug_Menus.rb | 28 +++--- .../004_Debug_BattleCommands.rb | 10 +- .../005_Debug_BattlePkmnCommands.rb | 2 +- Data/Scripts/020_Debug/003_Editor_Listers.rb | 2 +- Data/Scripts/021_Compiler/001_Compiler.rb | 90 ++++++++--------- .../021_Compiler/002_Compiler_CompilePBS.rb | 96 +++++++++++-------- mkxp.json | 2 +- 44 files changed, 362 insertions(+), 398 deletions(-) rename Data/Scripts/007_Objects and windows/{007_SpriteWrapper.rb => 007_BitmapSprite.rb} (59%) diff --git a/Data/Scripts/001_Technical/001_Debugging/002_DebugConsole.rb b/Data/Scripts/001_Technical/001_Debugging/002_DebugConsole.rb index e5f181433..027d3e63e 100644 --- a/Data/Scripts/001_Technical/001_Debugging/002_DebugConsole.rb +++ b/Data/Scripts/001_Technical/001_Debugging/002_DebugConsole.rb @@ -41,7 +41,7 @@ module Kernel def echoln(string) echo string - echo "\r\n" + echo "\n" end end diff --git a/Data/Scripts/001_Technical/001_Debugging/005_Deprecation.rb b/Data/Scripts/001_Technical/001_Debugging/005_Deprecation.rb index ab7689d7b..b9df401d8 100644 --- a/Data/Scripts/001_Technical/001_Debugging/005_Deprecation.rb +++ b/Data/Scripts/001_Technical/001_Debugging/005_Deprecation.rb @@ -10,10 +10,10 @@ module Deprecation def warn_method(method_name, removal_version = nil, alternative = nil) text = _INTL('Usage of deprecated method "{1}" or its alias.', method_name) unless removal_version.nil? - text += "\r\n" + _INTL("The method is slated to be removed in Essentials {1}.", removal_version) + text += "\n" + _INTL("The method is slated to be removed in Essentials {1}.", removal_version) end unless alternative.nil? - text += "\r\n" + _INTL("Use \"{1}\" instead.", alternative) + text += "\n" + _INTL("Use \"{1}\" instead.", alternative) end Console.echo_warn text end diff --git a/Data/Scripts/001_Technical/004_Input.rb b/Data/Scripts/001_Technical/004_Input.rb index 87a162343..747ebf0aa 100644 --- a/Data/Scripts/001_Technical/004_Input.rb +++ b/Data/Scripts/001_Technical/004_Input.rb @@ -25,7 +25,7 @@ module Mouse # Returns the position of the mouse relative to the game window. def getMousePos(catch_anywhere = false) - return nil unless System.mouse_in_window || catch_anywhere + return nil unless Input.mouse_in_window || catch_anywhere return Input.mouse_x, Input.mouse_y end end diff --git a/Data/Scripts/001_Technical/005_PluginManager.rb b/Data/Scripts/001_Technical/005_PluginManager.rb index b0ac2956f..2cb8de226 100644 --- a/Data/Scripts/001_Technical/005_PluginManager.rb +++ b/Data/Scripts/001_Technical/005_PluginManager.rb @@ -413,7 +413,7 @@ module PluginManager Compiler.pbCompilerEachPreppedLine(filename) do |line, line_no| # split line up into property name and values if !line[/^\s*(\w+)\s*=\s*(.*)$/] - raise _INTL("Bad line syntax (expected syntax like XXX=YYY)\r\n{1}", FileLineData.linereport) + raise _INTL("Bad line syntax (expected syntax like XXX=YYY)\n{1}", FileLineData.linereport) end property = $~[1].upcase data = $~[2].split(",") diff --git a/Data/Scripts/004_Game classes/008_Game_Event.rb b/Data/Scripts/004_Game classes/008_Game_Event.rb index 0930bdd9a..05bc7c8d6 100644 --- a/Data/Scripts/004_Game classes/008_Game_Event.rb +++ b/Data/Scripts/004_Game classes/008_Game_Event.rb @@ -243,6 +243,7 @@ class Game_Event < Game_Character def should_update?(recalc = false) return @to_update if !recalc + return true if @updated_last_frame return true if @trigger && (@trigger == 3 || @trigger == 4) return true if @move_route_forcing || @moveto_happened return true if @event.name[/update/i] @@ -256,7 +257,9 @@ class Game_Event < Game_Character def update @to_update = should_update?(true) + @updated_last_frame = false return if !@to_update + @updated_last_frame = true @moveto_happened = false last_moving = moving? super diff --git a/Data/Scripts/005_Sprites/003_Sprite_Character.rb b/Data/Scripts/005_Sprites/003_Sprite_Character.rb index e99453b06..d28a9e6f1 100644 --- a/Data/Scripts/005_Sprites/003_Sprite_Character.rb +++ b/Data/Scripts/005_Sprites/003_Sprite_Character.rb @@ -68,9 +68,9 @@ class Sprite_Character < RPG::Sprite @oldbushdepth = 0 @spriteoffset = false if !character || character == $game_player || (character.name[/reflection/i] rescue false) - @reflection = Sprite_Reflection.new(self, character, viewport) + @reflection = Sprite_Reflection.new(self, viewport) end - @surfbase = Sprite_SurfBase.new(self, character, viewport) if character == $game_player + @surfbase = Sprite_SurfBase.new(self, viewport) if character == $game_player self.zoom_x = TilemapRenderer::ZOOM_X self.zoom_y = TilemapRenderer::ZOOM_Y update @@ -94,51 +94,55 @@ class Sprite_Character < RPG::Sprite @reflection = nil @surfbase&.dispose @surfbase = nil + @character = nil super end + def refresh_graphic + return if @tile_id == @character.tile_id && + @character_name == @character.character_name && + @character_hue == @character.character_hue && + @oldbushdepth == @character.bush_depth + @tile_id = @character.tile_id + @character_name = @character.character_name + @character_hue = @character.character_hue + @oldbushdepth = @character.bush_depth + @charbitmap&.dispose + @charbitmap = nil + @bushbitmap&.dispose + @bushbitmap = nil + if @tile_id >= 384 + @charbitmap = pbGetTileBitmap(@character.map.tileset_name, @tile_id, + @character_hue, @character.width, @character.height) + @charbitmapAnimated = false + @spriteoffset = false + @cw = Game_Map::TILE_WIDTH * @character.width + @ch = Game_Map::TILE_HEIGHT * @character.height + self.src_rect.set(0, 0, @cw, @ch) + self.ox = @cw / 2 + self.oy = @ch + elsif @character_name != "" + @charbitmap = AnimatedBitmap.new( + "Graphics/Characters/" + @character_name, @character_hue + ) + RPG::Cache.retain("Graphics/Characters/", @character_name, @character_hue) if @character == $game_player + @charbitmapAnimated = true + @spriteoffset = @character_name[/offset/i] + @cw = @charbitmap.width / 4 + @ch = @charbitmap.height / 4 + self.ox = @cw / 2 + else + self.bitmap = nil + @cw = 0 + @ch = 0 + end + @character.sprite_size = [@cw, @ch] + end + def update return if @character.is_a?(Game_Event) && !@character.should_update? super - if @tile_id != @character.tile_id || - @character_name != @character.character_name || - @character_hue != @character.character_hue || - @oldbushdepth != @character.bush_depth - @tile_id = @character.tile_id - @character_name = @character.character_name - @character_hue = @character.character_hue - @oldbushdepth = @character.bush_depth - @charbitmap&.dispose - @charbitmap = nil - @bushbitmap&.dispose - @bushbitmap = nil - if @tile_id >= 384 - @charbitmap = pbGetTileBitmap(@character.map.tileset_name, @tile_id, - @character_hue, @character.width, @character.height) - @charbitmapAnimated = false - @spriteoffset = false - @cw = Game_Map::TILE_WIDTH * @character.width - @ch = Game_Map::TILE_HEIGHT * @character.height - self.src_rect.set(0, 0, @cw, @ch) - self.ox = @cw / 2 - self.oy = @ch - elsif @character_name != "" - @charbitmap = AnimatedBitmap.new( - "Graphics/Characters/" + @character_name, @character_hue - ) - RPG::Cache.retain("Graphics/Characters/", @character_name, @character_hue) if @character == $game_player - @charbitmapAnimated = true - @spriteoffset = @character_name[/offset/i] - @cw = @charbitmap.width / 4 - @ch = @charbitmap.height / 4 - self.ox = @cw / 2 - else - self.bitmap = nil - @cw = 0 - @ch = 0 - end - @character.sprite_size = [@cw, @ch] - end + refresh_graphic return if !@charbitmap @charbitmap.update if @charbitmapAnimated bushdepth = @character.bush_depth diff --git a/Data/Scripts/005_Sprites/004_Sprite_Reflection.rb b/Data/Scripts/005_Sprites/004_Sprite_Reflection.rb index 71f638a2b..85255c24f 100644 --- a/Data/Scripts/005_Sprites/004_Sprite_Reflection.rb +++ b/Data/Scripts/005_Sprites/004_Sprite_Reflection.rb @@ -1,14 +1,13 @@ class Sprite_Reflection attr_reader :visible - attr_accessor :event - def initialize(sprite, event, viewport = nil) - @rsprite = sprite - @sprite = nil - @event = event - @height = 0 + def initialize(parent_sprite, viewport = nil) + @parent_sprite = parent_sprite + @sprite = nil + @height = 0 @fixedheight = false - if @event && @event != $game_player && @event.name[/reflection\((\d+)\)/i] + if @parent_sprite.character && @parent_sprite.character != $game_player && + @parent_sprite.character.name[/reflection\((\d+)\)/i] @height = $~[1].to_i || 0 @fixedheight = true end @@ -18,15 +17,19 @@ class Sprite_Reflection end def dispose - if !@disposed - @sprite&.dispose - @sprite = nil - @disposed = true - end + return if @disposed + @sprite&.dispose + @sprite = nil + @parent_sprite = nil + @disposed = true end def disposed? - @disposed + return @disposed + end + + def event + return @parent_sprite.character end def visible=(value) @@ -36,7 +39,7 @@ class Sprite_Reflection def update return if disposed? - shouldShow = @rsprite.visible + shouldShow = @parent_sprite.visible if !shouldShow # Just-in-time disposal of sprite if @sprite @@ -48,38 +51,38 @@ class Sprite_Reflection # Just-in-time creation of sprite @sprite = Sprite.new(@viewport) if !@sprite if @sprite - x = @rsprite.x - (@rsprite.ox * TilemapRenderer::ZOOM_X) - y = @rsprite.y - (@rsprite.oy * TilemapRenderer::ZOOM_Y) - y -= Game_Map::TILE_HEIGHT * TilemapRenderer::ZOOM_Y if @rsprite.character.character_name[/offset/i] + x = @parent_sprite.x - (@parent_sprite.ox * TilemapRenderer::ZOOM_X) + y = @parent_sprite.y - (@parent_sprite.oy * TilemapRenderer::ZOOM_Y) + y -= Game_Map::TILE_HEIGHT * TilemapRenderer::ZOOM_Y if event.character_name[/offset/i] @height = $PokemonGlobal.bridge if !@fixedheight y += @height * TilemapRenderer::ZOOM_Y * Game_Map::TILE_HEIGHT / 2 - width = @rsprite.src_rect.width - height = @rsprite.src_rect.height + width = @parent_sprite.src_rect.width + height = @parent_sprite.src_rect.height @sprite.x = x + ((width / 2) * TilemapRenderer::ZOOM_X) @sprite.y = y + ((height + (height / 2)) * TilemapRenderer::ZOOM_Y) @sprite.ox = width / 2 @sprite.oy = (height / 2) - 2 # Hard-coded 2 pixel shift up - @sprite.oy -= @rsprite.character.bob_height * 2 + @sprite.oy -= event.bob_height * 2 @sprite.z = -50 # Still water is -100, map is 0 and above - @sprite.z += 1 if @event == $game_player - @sprite.zoom_x = @rsprite.zoom_x - @sprite.zoom_y = @rsprite.zoom_y + @sprite.z += 1 if event == $game_player + @sprite.zoom_x = @parent_sprite.zoom_x + @sprite.zoom_y = @parent_sprite.zoom_y frame = (Graphics.frame_count % 40) / 10 @sprite.zoom_x *= [1.0, 0.95, 1.0, 1.05][frame] @sprite.angle = 180.0 @sprite.mirror = true - @sprite.bitmap = @rsprite.bitmap - @sprite.tone = @rsprite.tone + @sprite.bitmap = @parent_sprite.bitmap + @sprite.tone = @parent_sprite.tone if @height > 0 @sprite.color = Color.new(48, 96, 160, 255) # Dark still water - @sprite.opacity = @rsprite.opacity + @sprite.opacity = @parent_sprite.opacity @sprite.visible = !Settings::TIME_SHADING # Can't time-tone a colored sprite else @sprite.color = Color.new(224, 224, 224, 96) - @sprite.opacity = @rsprite.opacity * 3 / 4 + @sprite.opacity = @parent_sprite.opacity * 3 / 4 @sprite.visible = true end - @sprite.src_rect = @rsprite.src_rect + @sprite.src_rect = @parent_sprite.src_rect end end end diff --git a/Data/Scripts/005_Sprites/005_Sprite_SurfBase.rb b/Data/Scripts/005_Sprites/005_Sprite_SurfBase.rb index 33f6fb941..7051a0262 100644 --- a/Data/Scripts/005_Sprites/005_Sprite_SurfBase.rb +++ b/Data/Scripts/005_Sprites/005_Sprite_SurfBase.rb @@ -1,11 +1,9 @@ class Sprite_SurfBase attr_reader :visible - attr_accessor :event - def initialize(sprite, event, viewport = nil) - @rsprite = sprite - @sprite = nil - @event = event + def initialize(parent_sprite, viewport = nil) + @parent_sprite = parent_sprite + @sprite = nil @viewport = viewport @disposed = false @surfbitmap = AnimatedBitmap.new("Graphics/Characters/base_surf") @@ -23,13 +21,18 @@ class Sprite_SurfBase return if @disposed @sprite&.dispose @sprite = nil + @parent_sprite = nil @surfbitmap.dispose @divebitmap.dispose @disposed = true end def disposed? - @disposed + return @disposed + end + + def event + return @parent_sprite.character end def visible=(value) @@ -49,41 +52,40 @@ class Sprite_SurfBase end # Just-in-time creation of sprite @sprite = Sprite.new(@viewport) if !@sprite - if @sprite - if $PokemonGlobal.surfing - @sprite.bitmap = @surfbitmap.bitmap - cw = @cws - ch = @chs - elsif $PokemonGlobal.diving - @sprite.bitmap = @divebitmap.bitmap - cw = @cwd - ch = @chd - end - sx = @event.pattern_surf * cw - sy = ((@event.direction - 2) / 2) * ch - @sprite.src_rect.set(sx, sy, cw, ch) - if $game_temp.surf_base_coords - spr_x = ((($game_temp.surf_base_coords[0] * Game_Map::REAL_RES_X) - @event.map.display_x).to_f / Game_Map::X_SUBPIXELS).round - spr_x += (Game_Map::TILE_WIDTH / 2) - spr_x = ((spr_x - (Graphics.width / 2)) * TilemapRenderer::ZOOM_X) + (Graphics.width / 2) if TilemapRenderer::ZOOM_X != 1 - @sprite.x = spr_x - spr_y = ((($game_temp.surf_base_coords[1] * Game_Map::REAL_RES_Y) - @event.map.display_y).to_f / Game_Map::Y_SUBPIXELS).round - spr_y += (Game_Map::TILE_HEIGHT / 2) + 16 - spr_y = ((spr_y - (Graphics.height / 2)) * TilemapRenderer::ZOOM_Y) + (Graphics.height / 2) if TilemapRenderer::ZOOM_Y != 1 - @sprite.y = spr_y - else - @sprite.x = @rsprite.x - @sprite.y = @rsprite.y - end - @sprite.ox = cw / 2 - @sprite.oy = ch - 16 # Assume base needs offsetting - @sprite.oy -= @event.bob_height - @sprite.z = @event.screen_z(ch) - 1 - @sprite.zoom_x = @rsprite.zoom_x - @sprite.zoom_y = @rsprite.zoom_y - @sprite.tone = @rsprite.tone - @sprite.color = @rsprite.color - @sprite.opacity = @rsprite.opacity + return if !@sprite + if $PokemonGlobal.surfing + @sprite.bitmap = @surfbitmap.bitmap + cw = @cws + ch = @chs + elsif $PokemonGlobal.diving + @sprite.bitmap = @divebitmap.bitmap + cw = @cwd + ch = @chd end + sx = event.pattern_surf * cw + sy = ((event.direction - 2) / 2) * ch + @sprite.src_rect.set(sx, sy, cw, ch) + if $game_temp.surf_base_coords + spr_x = ((($game_temp.surf_base_coords[0] * Game_Map::REAL_RES_X) - event.map.display_x).to_f / Game_Map::X_SUBPIXELS).round + spr_x += (Game_Map::TILE_WIDTH / 2) + spr_x = ((spr_x - (Graphics.width / 2)) * TilemapRenderer::ZOOM_X) + (Graphics.width / 2) if TilemapRenderer::ZOOM_X != 1 + @sprite.x = spr_x + spr_y = ((($game_temp.surf_base_coords[1] * Game_Map::REAL_RES_Y) - event.map.display_y).to_f / Game_Map::Y_SUBPIXELS).round + spr_y += (Game_Map::TILE_HEIGHT / 2) + 16 + spr_y = ((spr_y - (Graphics.height / 2)) * TilemapRenderer::ZOOM_Y) + (Graphics.height / 2) if TilemapRenderer::ZOOM_Y != 1 + @sprite.y = spr_y + else + @sprite.x = @parent_sprite.x + @sprite.y = @parent_sprite.y + end + @sprite.ox = cw / 2 + @sprite.oy = ch - 16 # Assume base needs offsetting + @sprite.oy -= event.bob_height + @sprite.z = event.screen_z(ch) - 1 + @sprite.zoom_x = @parent_sprite.zoom_x + @sprite.zoom_y = @parent_sprite.zoom_y + @sprite.tone = @parent_sprite.tone + @sprite.color = @parent_sprite.color + @sprite.opacity = @parent_sprite.opacity end end diff --git a/Data/Scripts/006_Map renderer/004_TileDrawingHelper.rb b/Data/Scripts/006_Map renderer/004_TileDrawingHelper.rb index 2e60ab43e..5e0ebafa0 100644 --- a/Data/Scripts/006_Map renderer/004_TileDrawingHelper.rb +++ b/Data/Scripts/006_Map renderer/004_TileDrawingHelper.rb @@ -163,8 +163,8 @@ end #=============================================================================== def createMinimap(mapid) map = load_data(sprintf("Data/Map%03d.rxdata", mapid)) rescue nil - return BitmapWrapper.new(32, 32) if !map - bitmap = BitmapWrapper.new(map.width * 4, map.height * 4) + return Bitmap.new(32, 32) if !map + bitmap = Bitmap.new(map.width * 4, map.height * 4) black = Color.black tilesets = $data_tilesets tileset = tilesets[map.tileset_id] 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 d45eca479..4c44dbed8 100644 --- a/Data/Scripts/007_Objects and windows/005_SpriteWindow_text.rb +++ b/Data/Scripts/007_Objects and windows/005_SpriteWindow_text.rb @@ -1074,7 +1074,7 @@ class Window_DrawableCommand < SpriteWindow_SelectableEx windowheight += self.borderY if !width || width < 0 width = 0 - tmpbitmap = BitmapWrapper.new(1, 1) + tmpbitmap = Bitmap.new(1, 1) pbSetSystemFont(tmpbitmap) commands.each do |i| width = [width, tmpbitmap.text_size(i).width].max diff --git a/Data/Scripts/007_Objects and windows/007_SpriteWrapper.rb b/Data/Scripts/007_Objects and windows/007_BitmapSprite.rb similarity index 59% rename from Data/Scripts/007_Objects and windows/007_SpriteWrapper.rb rename to Data/Scripts/007_Objects and windows/007_BitmapSprite.rb index c3c656f4a..8a809329b 100644 --- a/Data/Scripts/007_Objects and windows/007_SpriteWrapper.rb +++ b/Data/Scripts/007_Objects and windows/007_BitmapSprite.rb @@ -1,93 +1,3 @@ -#=============================================================================== -# SpriteWrapper is a class which wraps (most of) Sprite's properties. -# (unused) Use class Sprite instead -#=============================================================================== -class SpriteWrapper - def initialize(viewport = nil) - @sprite = Sprite.new(viewport) - end - - def dispose; @sprite.dispose; end - def disposed?; return @sprite.disposed?; end - def viewport; return @sprite.viewport; end - def flash(color, duration); return @sprite.flash(color, duration); end - def update; return @sprite.update; end - def x; @sprite.x; end - def x=(value); @sprite.x = value; end - def y; @sprite.y; end - def y=(value); @sprite.y = value; end - def bitmap; @sprite.bitmap; end - def bitmap=(value); @sprite.bitmap = value; end - def src_rect; @sprite.src_rect; end - def src_rect=(value); @sprite.src_rect = value; end - def visible; @sprite.visible; end - def visible=(value); @sprite.visible = value; end - def z; @sprite.z; end - def z=(value); @sprite.z = value; end - def ox; @sprite.ox; end - def ox=(value); @sprite.ox = value; end - def oy; @sprite.oy; end - def oy=(value); @sprite.oy = value; end - def zoom_x; @sprite.zoom_x; end - def zoom_x=(value); @sprite.zoom_x = value; end - def zoom_y; @sprite.zoom_y; end - def zoom_y=(value); @sprite.zoom_y = value; end - def angle; @sprite.angle; end - def angle=(value); @sprite.angle = value; end - def mirror; @sprite.mirror; end - def mirror=(value); @sprite.mirror = value; end - def bush_depth; @sprite.bush_depth; end - def bush_depth=(value); @sprite.bush_depth = value; end - def opacity; @sprite.opacity; end - def opacity=(value); @sprite.opacity = value; end - def blend_type; @sprite.blend_type; end - def blend_type=(value); @sprite.blend_type = value; end - def color; @sprite.color; end - def color=(value); @sprite.color = value; end - def tone; @sprite.tone; end - def tone=(value); @sprite.tone = value; end - - def viewport=(value) - return if self.viewport == value - bitmap = @sprite.bitmap - src_rect = @sprite.src_rect - visible = @sprite.visible - x = @sprite.x - y = @sprite.y - z = @sprite.z - ox = @sprite.ox - oy = @sprite.oy - zoom_x = @sprite.zoom_x - zoom_y = @sprite.zoom_y - angle = @sprite.angle - mirror = @sprite.mirror - bush_depth = @sprite.bush_depth - opacity = @sprite.opacity - blend_type = @sprite.blend_type - color = @sprite.color - tone = @sprite.tone - @sprite.dispose - @sprite = Sprite.new(value) - @sprite.bitmap = bitmap - @sprite.src_rect = src_rect - @sprite.visible = visible - @sprite.x = x - @sprite.y = y - @sprite.z = z - @sprite.ox = ox - @sprite.oy = oy - @sprite.zoom_x = zoom_x - @sprite.zoom_y = zoom_y - @sprite.angle = angle - @sprite.mirror = mirror - @sprite.bush_depth = bush_depth - @sprite.opacity = opacity - @sprite.blend_type = blend_type - @sprite.color = color - @sprite.tone = tone - end -end - #=============================================================================== # Sprite class that maintains a bitmap of its own. # This bitmap can't be changed to a different one. diff --git a/Data/Scripts/007_Objects and windows/008_AnimatedBitmap.rb b/Data/Scripts/007_Objects and windows/008_AnimatedBitmap.rb index 7dd2081a1..cab09e8ef 100644 --- a/Data/Scripts/007_Objects and windows/008_AnimatedBitmap.rb +++ b/Data/Scripts/007_Objects and windows/008_AnimatedBitmap.rb @@ -58,7 +58,7 @@ class PngAnimatedBitmap @frameDelay = delay subWidth = panorama.width / numFrames numFrames.times do |i| - subBitmap = BitmapWrapper.new(subWidth, panorama.height) + subBitmap = Bitmap.new(subWidth, panorama.height) subBitmap.blt(0, 0, panorama, Rect.new(subWidth * i, 0, subWidth, panorama.height)) @frames.push(subBitmap) end @@ -155,7 +155,7 @@ class GifBitmap rescue @bitmap = nil end - @bitmap = BitmapWrapper.new(32, 32) if @bitmap.nil? + @bitmap = Bitmap.new(32, 32) if @bitmap.nil? @bitmap.play if @bitmap&.animated? end diff --git a/Data/Scripts/007_Objects and windows/011_Messages.rb b/Data/Scripts/007_Objects and windows/011_Messages.rb index f85369805..2b78de1c6 100644 --- a/Data/Scripts/007_Objects and windows/011_Messages.rb +++ b/Data/Scripts/007_Objects and windows/011_Messages.rb @@ -221,7 +221,7 @@ class FaceWindowVX < SpriteWindow_Base self.contents&.dispose @faceIndex = faceinfo[1].to_i @facebitmaptmp = AnimatedBitmap.new(facefile) - @facebitmap = BitmapWrapper.new(96, 96) + @facebitmap = Bitmap.new(96, 96) @facebitmap.blt(0, 0, @facebitmaptmp.bitmap, Rect.new((@faceIndex % 4) * 96, (@faceIndex / 4) * 96, 96, 96)) self.contents = @facebitmap diff --git a/Data/Scripts/011_Battle/001_Battle/002_Battle_StartAndEnd.rb b/Data/Scripts/011_Battle/001_Battle/002_Battle_StartAndEnd.rb index 73d285044..56fb1cd12 100644 --- a/Data/Scripts/011_Battle/001_Battle/002_Battle_StartAndEnd.rb +++ b/Data/Scripts/011_Battle/001_Battle/002_Battle_StartAndEnd.rb @@ -202,7 +202,7 @@ class Battle # Opposing trainers and partner trainers's messages about sending out Pokémon trainers.each_with_index do |t, i| next if side == 0 && i == 0 # The player's message is shown last - msg += "\r\n" if msg.length > 0 + msg += "\n" if msg.length > 0 sent = sendOuts[side][i] case sent.length when 1 @@ -218,7 +218,7 @@ class Battle end # The player's message about sending out Pokémon if side == 0 - msg += "\r\n" if msg.length > 0 + msg += "\n" if msg.length > 0 sent = sendOuts[side][0] case sent.length when 1 diff --git a/Data/Scripts/011_Battle/001_Battle/003_Battle_ExpAndMoveLearning.rb b/Data/Scripts/011_Battle/001_Battle/003_Battle_ExpAndMoveLearning.rb index b4d22d06b..afc8fed01 100644 --- a/Data/Scripts/011_Battle/001_Battle/003_Battle_ExpAndMoveLearning.rb +++ b/Data/Scripts/011_Battle/001_Battle/003_Battle_ExpAndMoveLearning.rb @@ -173,7 +173,7 @@ class Battle newLevel = growth_rate.level_from_exp(expFinal) if newLevel < curLevel debugInfo = "Levels: #{curLevel}->#{newLevel} | Exp: #{pkmn.exp}->#{expFinal} | gain: #{expGained}" - raise _INTL("{1}'s new level is less than its current level, which shouldn't happen.", pkmn.name) + "\r\n[#{debugInfo}]" + raise _INTL("{1}'s new level is less than its current level, which shouldn't happen.", pkmn.name) + "\n[#{debugInfo}]" end # Give Exp if pkmn.shadowPokemon? diff --git a/Data/Scripts/011_Battle/004_Scene/004_Scene_PlayAnimations.rb b/Data/Scripts/011_Battle/004_Scene/004_Scene_PlayAnimations.rb index d54f40f5c..73f02566c 100644 --- a/Data/Scripts/011_Battle/004_Scene/004_Scene_PlayAnimations.rb +++ b/Data/Scripts/011_Battle/004_Scene/004_Scene_PlayAnimations.rb @@ -297,12 +297,12 @@ class Battle::Scene #============================================================================= def pbLevelUp(pkmn, _battler, oldTotalHP, oldAttack, oldDefense, oldSpAtk, oldSpDef, oldSpeed) pbTopRightWindow( - _INTL("Max. HP+{1}\r\nAttack+{2}\r\nDefense+{3}\r\nSp. Atk+{4}\r\nSp. Def+{5}\r\nSpeed+{6}", + _INTL("Max. HP+{1}\nAttack+{2}\nDefense+{3}\nSp. Atk+{4}\nSp. Def+{5}\nSpeed+{6}", pkmn.totalhp - oldTotalHP, pkmn.attack - oldAttack, pkmn.defense - oldDefense, pkmn.spatk - oldSpAtk, pkmn.spdef - oldSpDef, pkmn.speed - oldSpeed) ) pbTopRightWindow( - _INTL("Max. HP{1}\r\nAttack{2}\r\nDefense{3}\r\nSp. Atk{4}\r\nSp. Def{5}\r\nSpeed{6}", + _INTL("Max. HP{1}\nAttack{2}\nDefense{3}\nSp. Atk{4}\nSp. Def{5}\nSpeed{6}", pkmn.totalhp, pkmn.attack, pkmn.defense, pkmn.spatk, pkmn.spdef, pkmn.speed) ) end 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 9ef2ec50f..0bbee48bb 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 @@ -93,7 +93,7 @@ class Battle::Scene::PokemonDataBox < Sprite @expBar.bitmap = @expBarBitmap.bitmap @sprites["expBar"] = @expBar # Create sprite wrapper that displays everything except the above - @contents = BitmapWrapper.new(@databoxBitmap.width, @databoxBitmap.height) + @contents = Bitmap.new(@databoxBitmap.width, @databoxBitmap.height) self.bitmap = @contents self.visible = false self.z = 150 + ((@battler.index / 2) * 5) @@ -420,7 +420,7 @@ class Battle::Scene::AbilitySplashBar < Sprite @bgSprite.src_rect.y = (side == 0) ? 0 : @bgBitmap.height / 2 @bgSprite.src_rect.height = @bgBitmap.height / 2 # Create bitmap that displays the text - @contents = BitmapWrapper.new(@bgBitmap.width, @bgBitmap.height / 2) + @contents = Bitmap.new(@bgBitmap.width, @bgBitmap.height / 2) self.bitmap = @contents pbSetSystemFont(self.bitmap) # Position the bar diff --git a/Data/Scripts/011_Battle/006_Other battle code/010_Battle_PokeBallEffects.rb b/Data/Scripts/011_Battle/006_Other battle code/010_Battle_PokeBallEffects.rb index 29ccd76cc..3deb95a4d 100644 --- a/Data/Scripts/011_Battle/006_Other battle code/010_Battle_PokeBallEffects.rb +++ b/Data/Scripts/011_Battle/006_Other battle code/010_Battle_PokeBallEffects.rb @@ -114,8 +114,11 @@ Battle::PokeBallEffects::ModifyCatchRate.add(:LEVELBALL, proc { |ball, catchRate }) Battle::PokeBallEffects::ModifyCatchRate.add(:LUREBALL, proc { |ball, catchRate, battle, battler| - multiplier = (Settings::NEW_POKE_BALL_CATCH_RATES) ? 5 : 3 - catchRate *= multiplier if GameData::EncounterType.get($game_temp.encounter_type).type == :fishing + if $game_temp.encounter_type && + GameData::EncounterType.get($game_temp.encounter_type).type == :fishing + multiplier = (Settings::NEW_POKE_BALL_CATCH_RATES) ? 5 : 3 + catchRate *= multiplier + end next [catchRate, 255].min }) 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 78e7538dc..0a767eb68 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 @@ -67,7 +67,7 @@ class Battle::Scene::SafariDataBox < Sprite @databox = AnimatedBitmap.new("Graphics/UI/Battle/databox_safari") self.x = Graphics.width - 232 self.y = Graphics.height - 184 - @contents = BitmapWrapper.new(@databox.width, @databox.height) + @contents = Bitmap.new(@databox.width, @databox.height) self.bitmap = @contents self.visible = false self.z = 50 diff --git a/Data/Scripts/012_Overworld/001_Overworld visuals/002_Overworld_Overlays.rb b/Data/Scripts/012_Overworld/001_Overworld visuals/002_Overworld_Overlays.rb index 13662849c..3bac753a2 100644 --- a/Data/Scripts/012_Overworld/001_Overworld visuals/002_Overworld_Overlays.rb +++ b/Data/Scripts/012_Overworld/001_Overworld visuals/002_Overworld_Overlays.rb @@ -46,7 +46,7 @@ class DarknessSprite < Sprite def initialize(viewport = nil) super(viewport) - @darkness = BitmapWrapper.new(Graphics.width, Graphics.height) + @darkness = Bitmap.new(Graphics.width, Graphics.height) @radius = radiusMin self.bitmap = @darkness self.z = 99998 diff --git a/Data/Scripts/012_Overworld/005_Overworld_Fishing.rb b/Data/Scripts/012_Overworld/005_Overworld_Fishing.rb index 04dc25792..285156020 100644 --- a/Data/Scripts/012_Overworld/005_Overworld_Fishing.rb +++ b/Data/Scripts/012_Overworld/005_Overworld_Fishing.rb @@ -56,7 +56,7 @@ def pbFishing(hasEncounter, rodType = 1) if hasEncounter && rand(100) < biteChance $scene.spriteset.addUserAnimation(Settings::EXCLAMATION_ANIMATION_ID, $game_player.x, $game_player.y, true, 3) frames = Graphics.frame_rate - rand(Graphics.frame_rate / 2) # 0.5-1 second - if !pbWaitForInput(msgWindow, message + "\r\n" + _INTL("Oh! A bite!"), frames) + if !pbWaitForInput(msgWindow, message + "\n" + _INTL("Oh! A bite!"), frames) pbFishingEnd { pbMessageDisplay(msgWindow, _INTL("The Pokémon got away...")) } break end diff --git a/Data/Scripts/012_Overworld/008_Overworld_RandomDungeons.rb b/Data/Scripts/012_Overworld/008_Overworld_RandomDungeons.rb index a790200a4..9f94dad37 100644 --- a/Data/Scripts/012_Overworld/008_Overworld_RandomDungeons.rb +++ b/Data/Scripts/012_Overworld/008_Overworld_RandomDungeons.rb @@ -306,7 +306,7 @@ module RandomDungeon @width.times do |x| ret += TEXT_SYMBOLS[value(x, y)] || "\e[30m\e[41m?\e[0m" end - ret += "\r\n" + ret += "\n" end return ret end @@ -1076,7 +1076,7 @@ EventHandlers.add(:on_game_map_setup, :random_dungeon, #=============================================================================== MenuHandlers.add(:debug_menu, :test_random_dungeon, { "name" => _INTL("Test Random Dungeon Generation"), - "parent" => :other_menu, + "parent" => :main, "description" => _INTL("Generates a random dungeon and echoes it to the console."), "effect" => proc { tileset = :cave # :forest # :cave diff --git a/Data/Scripts/013_Items/001_Item_Utilities.rb b/Data/Scripts/013_Items/001_Item_Utilities.rb index 1d3c75935..a8f1cc908 100644 --- a/Data/Scripts/013_Items/001_Item_Utilities.rb +++ b/Data/Scripts/013_Items/001_Item_Utilities.rb @@ -160,9 +160,9 @@ def pbChangeLevel(pkmn, new_level, scene) special_attack_diff = pkmn.spatk - old_special_attack special_defense_diff = pkmn.spdef - old_special_defense speed_diff = pkmn.speed - old_speed - pbTopRightWindow(_INTL("Max. HP{1}\r\nAttack{2}\r\nDefense{3}\r\nSp. Atk{4}\r\nSp. Def{5}\r\nSpeed{6}", + pbTopRightWindow(_INTL("Max. HP{1}\nAttack{2}\nDefense{3}\nSp. Atk{4}\nSp. Def{5}\nSpeed{6}", total_hp_diff, attack_diff, defense_diff, special_attack_diff, special_defense_diff, speed_diff), scene) - pbTopRightWindow(_INTL("Max. HP{1}\r\nAttack{2}\r\nDefense{3}\r\nSp. Atk{4}\r\nSp. Def{5}\r\nSpeed{6}", + pbTopRightWindow(_INTL("Max. HP{1}\nAttack{2}\nDefense{3}\nSp. Atk{4}\nSp. Def{5}\nSpeed{6}", pkmn.totalhp, pkmn.attack, pkmn.defense, pkmn.spatk, pkmn.spdef, pkmn.speed), scene) else pkmn.changeHappiness("vitamin") @@ -177,9 +177,9 @@ def pbChangeLevel(pkmn, new_level, scene) special_attack_diff = pkmn.spatk - old_special_attack special_defense_diff = pkmn.spdef - old_special_defense speed_diff = pkmn.speed - old_speed - pbTopRightWindow(_INTL("Max. HP+{1}\r\nAttack+{2}\r\nDefense+{3}\r\nSp. Atk+{4}\r\nSp. Def+{5}\r\nSpeed+{6}", + pbTopRightWindow(_INTL("Max. HP+{1}\nAttack+{2}\nDefense+{3}\nSp. Atk+{4}\nSp. Def+{5}\nSpeed+{6}", total_hp_diff, attack_diff, defense_diff, special_attack_diff, special_defense_diff, speed_diff), scene) - pbTopRightWindow(_INTL("Max. HP{1}\r\nAttack{2}\r\nDefense{3}\r\nSp. Atk{4}\r\nSp. Def{5}\r\nSpeed{6}", + pbTopRightWindow(_INTL("Max. HP{1}\nAttack{2}\nDefense{3}\nSp. Atk{4}\nSp. Def{5}\nSpeed{6}", pkmn.totalhp, pkmn.attack, pkmn.defense, pkmn.spatk, pkmn.spdef, pkmn.speed), scene) # Learn new moves upon level up movelist = pkmn.getMoveList @@ -258,9 +258,9 @@ def pbChangeExp(pkmn, new_exp, scene) special_attack_diff = pkmn.spatk - old_special_attack special_defense_diff = pkmn.spdef - old_special_defense speed_diff = pkmn.speed - old_speed - pbTopRightWindow(_INTL("Max. HP{1}\r\nAttack{2}\r\nDefense{3}\r\nSp. Atk{4}\r\nSp. Def{5}\r\nSpeed{6}", + pbTopRightWindow(_INTL("Max. HP{1}\nAttack{2}\nDefense{3}\nSp. Atk{4}\nSp. Def{5}\nSpeed{6}", total_hp_diff, attack_diff, defense_diff, special_attack_diff, special_defense_diff, speed_diff), scene) - pbTopRightWindow(_INTL("Max. HP{1}\r\nAttack{2}\r\nDefense{3}\r\nSp. Atk{4}\r\nSp. Def{5}\r\nSpeed{6}", + pbTopRightWindow(_INTL("Max. HP{1}\nAttack{2}\nDefense{3}\nSp. Atk{4}\nSp. Def{5}\nSpeed{6}", pkmn.totalhp, pkmn.attack, pkmn.defense, pkmn.spatk, pkmn.spdef, pkmn.speed), scene) else # Gains Exp difference = new_exp - pkmn.exp @@ -286,9 +286,9 @@ def pbChangeExp(pkmn, new_exp, scene) special_attack_diff = pkmn.spatk - old_special_attack special_defense_diff = pkmn.spdef - old_special_defense speed_diff = pkmn.speed - old_speed - pbTopRightWindow(_INTL("Max. HP+{1}\r\nAttack+{2}\r\nDefense+{3}\r\nSp. Atk+{4}\r\nSp. Def+{5}\r\nSpeed+{6}", + pbTopRightWindow(_INTL("Max. HP+{1}\nAttack+{2}\nDefense+{3}\nSp. Atk+{4}\nSp. Def+{5}\nSpeed+{6}", total_hp_diff, attack_diff, defense_diff, special_attack_diff, special_defense_diff, speed_diff), scene) - pbTopRightWindow(_INTL("Max. HP{1}\r\nAttack{2}\r\nDefense{3}\r\nSp. Atk{4}\r\nSp. Def{5}\r\nSpeed{6}", + pbTopRightWindow(_INTL("Max. HP{1}\nAttack{2}\nDefense{3}\nSp. Atk{4}\nSp. Def{5}\nSpeed{6}", pkmn.totalhp, pkmn.attack, pkmn.defense, pkmn.spatk, pkmn.spdef, pkmn.speed), scene) # Learn new moves upon level up movelist = pkmn.getMoveList diff --git a/Data/Scripts/016_UI/001_Non-interactive UI/002_UI_Controls.rb b/Data/Scripts/016_UI/001_Non-interactive UI/002_UI_Controls.rb index f98ff3477..4d4e8230f 100644 --- a/Data/Scripts/016_UI/001_Non-interactive UI/002_UI_Controls.rb +++ b/Data/Scripts/016_UI/001_Non-interactive UI/002_UI_Controls.rb @@ -22,7 +22,7 @@ class ButtonEventScene < EventScene addLabelForScreen(1, 134, 244, 352, _INTL("Take a screenshot. It is put in the same folder as the save file.")) addImageForScreen(2, 16, 158, "Graphics/UI/Controls help/help_arrows") - addLabelForScreen(2, 134, 100, 352, _INTL("Use the Arrow keys to move the main character.\r\n\r\nYou can also use the Arrow keys to select entries and navigate menus.")) + addLabelForScreen(2, 134, 100, 352, _INTL("Use the Arrow keys to move the main character.\n\nYou can also use the Arrow keys to select entries and navigate menus.")) addImageForScreen(3, 16, 90, "Graphics/UI/Controls help/help_usekey") addImageForScreen(3, 16, 236, "Graphics/UI/Controls help/help_backkey") diff --git a/Data/Scripts/016_UI/001_Non-interactive UI/005_UI_Trading.rb b/Data/Scripts/016_UI/001_Non-interactive UI/005_UI_Trading.rb index dbbca5f67..762c3bf79 100644 --- a/Data/Scripts/016_UI/001_Non-interactive UI/005_UI_Trading.rb +++ b/Data/Scripts/016_UI/001_Non-interactive UI/005_UI_Trading.rb @@ -175,18 +175,18 @@ class PokemonTrade_Scene speciesname1 = GameData::Species.get(@pokemon.species).name speciesname2 = GameData::Species.get(@pokemon2.species).name pbMessageDisplay(@sprites["msgwindow"], - _ISPRINTF("{1:s}\r\nID: {2:05d} OT: {3:s}", + _ISPRINTF("{1:s}\nID: {2:05d} OT: {3:s}", @pokemon.name, @pokemon.owner.public_id, @pokemon.owner.name) + "\\wtnp[0]") { pbUpdate } pbMessageWaitForInput(@sprites["msgwindow"], 50, true) { pbUpdate } pbPlayDecisionSE pbScene1 pbMessageDisplay(@sprites["msgwindow"], - _INTL("For {1}'s {2},\r\n{3} sends {4}.", @trader1, speciesname1, @trader2, speciesname2) + "\1") { pbUpdate } + _INTL("For {1}'s {2},\n{3} sends {4}.", @trader1, speciesname1, @trader2, speciesname2) + "\1") { pbUpdate } pbMessageDisplay(@sprites["msgwindow"], _INTL("{1} bids farewell to {2}.", @trader2, speciesname2)) { pbUpdate } pbScene2 pbMessageDisplay(@sprites["msgwindow"], - _ISPRINTF("{1:s}\r\nID: {2:05d} OT: {3:s}", + _ISPRINTF("{1:s}\nID: {2:05d} OT: {3:s}", @pokemon2.name, @pokemon2.owner.public_id, @pokemon2.owner.name) + "\1") { pbUpdate } pbMessageDisplay(@sprites["msgwindow"], _INTL("Take good care of {1}.", speciesname2)) { pbUpdate } diff --git a/Data/Scripts/016_UI/008_UI_Pokegear.rb b/Data/Scripts/016_UI/008_UI_Pokegear.rb index 041437d9b..d5a20cdfb 100644 --- a/Data/Scripts/016_UI/008_UI_Pokegear.rb +++ b/Data/Scripts/016_UI/008_UI_Pokegear.rb @@ -19,7 +19,7 @@ class PokegearButton < Sprite else @button = AnimatedBitmap.new("Graphics/UI/Pokegear/icon_button") end - @contents = BitmapWrapper.new(@button.width, @button.height) + @contents = Bitmap.new(@button.width, @button.height) self.bitmap = @contents self.x = x - (@button.width / 2) self.y = y diff --git a/Data/Scripts/016_UI/009_UI_RegionMap.rb b/Data/Scripts/016_UI/009_UI_RegionMap.rb index dbffedcac..d4e7e7bd3 100644 --- a/Data/Scripts/016_UI/009_UI_RegionMap.rb +++ b/Data/Scripts/016_UI/009_UI_RegionMap.rb @@ -12,7 +12,7 @@ class MapBottomSprite < Sprite @mapname = "" @maplocation = "" @mapdetails = "" - self.bitmap = BitmapWrapper.new(Graphics.width, Graphics.height) + self.bitmap = Bitmap.new(Graphics.width, Graphics.height) pbSetSystemFont(self.bitmap) refresh end diff --git a/Data/Scripts/016_UI/013_UI_Load.rb b/Data/Scripts/016_UI/013_UI_Load.rb index 93794abb1..4d8a7d5a4 100644 --- a/Data/Scripts/016_UI/013_UI_Load.rb +++ b/Data/Scripts/016_UI/013_UI_Load.rb @@ -49,7 +49,7 @@ class PokemonLoadPanel < Sprite return if disposed? @refreshing = true if !self.bitmap || self.bitmap.disposed? - self.bitmap = BitmapWrapper.new(@bgbitmap.width, 222) + self.bitmap = Bitmap.new(@bgbitmap.width, 222) pbSetSystemFont(self.bitmap) end if @refreshBitmap diff --git a/Data/Scripts/016_UI/016_UI_ReadyMenu.rb b/Data/Scripts/016_UI/016_UI_ReadyMenu.rb index bc5b56963..76ec996ad 100644 --- a/Data/Scripts/016_UI/016_UI_ReadyMenu.rb +++ b/Data/Scripts/016_UI/016_UI_ReadyMenu.rb @@ -17,7 +17,7 @@ class ReadyMenuButton < Sprite else @button = AnimatedBitmap.new("Graphics/UI/Ready Menu/icon_itembutton") end - @contents = BitmapWrapper.new(@button.width, @button.height / 2) + @contents = Bitmap.new(@button.width, @button.height / 2) self.bitmap = @contents pbSetSystemFont(self.bitmap) if @command[2] diff --git a/Data/Scripts/016_UI/017_UI_PokemonStorage.rb b/Data/Scripts/016_UI/017_UI_PokemonStorage.rb index f83856990..1dabe2a5d 100644 --- a/Data/Scripts/016_UI/017_UI_PokemonStorage.rb +++ b/Data/Scripts/016_UI/017_UI_PokemonStorage.rb @@ -304,7 +304,7 @@ class PokemonBoxSprite < Sprite pokemon = @storage[boxnumber, i] @pokemonsprites[i] = PokemonBoxIcon.new(pokemon, viewport) end - @contents = BitmapWrapper.new(324, 296) + @contents = Bitmap.new(324, 296) self.bitmap = @contents self.x = 184 self.y = 18 @@ -454,7 +454,7 @@ class PokemonBoxPartySprite < Sprite pokemon = @party[i] @pokemonsprites[i] = PokemonBoxIcon.new(pokemon, viewport) if pokemon end - @contents = BitmapWrapper.new(172, 352) + @contents = Bitmap.new(172, 352) self.bitmap = @contents self.x = 182 self.y = Graphics.height - 352 diff --git a/Data/Scripts/016_UI/020_UI_PokeMart.rb b/Data/Scripts/016_UI/020_UI_PokeMart.rb index d608c0d8f..498ce8530 100644 --- a/Data/Scripts/016_UI/020_UI_PokeMart.rb +++ b/Data/Scripts/016_UI/020_UI_PokeMart.rb @@ -236,7 +236,7 @@ class PokemonMart_Scene @sprites["qtywindow"].y = Graphics.height - 102 - @sprites["qtywindow"].height itemwindow.refresh end - @sprites["moneywindow"].text = _INTL("Money:\r\n{1}", @adapter.getMoneyString) + @sprites["moneywindow"].text = _INTL("Money:\n{1}", @adapter.getMoneyString) end def pbStartBuyOrSellScene(buying, stock, adapter) diff --git a/Data/Scripts/016_UI/021_UI_BattlePointShop.rb b/Data/Scripts/016_UI/021_UI_BattlePointShop.rb index 7fdb5a0ea..5026a45a0 100644 --- a/Data/Scripts/016_UI/021_UI_BattlePointShop.rb +++ b/Data/Scripts/016_UI/021_UI_BattlePointShop.rb @@ -151,7 +151,7 @@ class BattlePointShop_Scene @sprites["qtywindow"].y = Graphics.height - 102 - @sprites["qtywindow"].height itemwindow.refresh end - @sprites["battlepointwindow"].text = _INTL("Battle Points:\r\n{1}", @adapter.getBPString) + @sprites["battlepointwindow"].text = _INTL("Battle Points:\n{1}", @adapter.getBPString) end def pbStartScene(stock, adapter) diff --git a/Data/Scripts/016_UI/025_UI_TextEntry.rb b/Data/Scripts/016_UI/025_UI_TextEntry.rb index c1deb82ff..d6a17f700 100644 --- a/Data/Scripts/016_UI/025_UI_TextEntry.rb +++ b/Data/Scripts/016_UI/025_UI_TextEntry.rb @@ -390,7 +390,7 @@ class PokemonEntryScene2 pbDrawTextPositions(b, textPos) @bitmaps[@@Characters.length + i] = b end - underline_bitmap = BitmapWrapper.new(24, 6) + underline_bitmap = Bitmap.new(24, 6) underline_bitmap.fill_rect(2, 2, 22, 4, Color.new(168, 184, 184)) underline_bitmap.fill_rect(0, 0, 22, 4, Color.new(16, 24, 32)) @bitmaps.push(underline_bitmap) diff --git a/Data/Scripts/017_Minigames/001_Minigame_Duel.rb b/Data/Scripts/017_Minigames/001_Minigame_Duel.rb index 0655a7c8d..819ae802a 100644 --- a/Data/Scripts/017_Minigames/001_Minigame_Duel.rb +++ b/Data/Scripts/017_Minigames/001_Minigame_Duel.rb @@ -46,7 +46,7 @@ class DuelWindow < Window_AdvancedTextPokemon name_tag = shadowc3tag(PLAYER_TEXT_BASE, PLAYER_TEXT_SHADOW) end hp_tag = shadowc3tag(HP_TEXT_BASE, HP_TEXT_SHADOW) - self.text = name_tag + fmtescape(@name) + "\r\n" + hp_tag + _INTL("HP: {1}", @hp) + self.text = name_tag + fmtescape(@name) + "\n" + hp_tag + _INTL("HP: {1}", @hp) end end diff --git a/Data/Scripts/017_Minigames/002_Minigame_TripleTriad.rb b/Data/Scripts/017_Minigames/002_Minigame_TripleTriad.rb index 2155cb8d2..6735c5d60 100644 --- a/Data/Scripts/017_Minigames/002_Minigame_TripleTriad.rb +++ b/Data/Scripts/017_Minigames/002_Minigame_TripleTriad.rb @@ -85,7 +85,7 @@ class TriadCard end def self.createBack(type = nil, noback = false) - bitmap = BitmapWrapper.new(80, 96) + bitmap = Bitmap.new(80, 96) if !noback cardbitmap = AnimatedBitmap.new("Graphics/UI/Triple Triad/card_opponent") bitmap.blt(0, 0, cardbitmap.bitmap, Rect.new(0, 0, cardbitmap.width, cardbitmap.height)) @@ -103,7 +103,7 @@ class TriadCard def createBitmap(owner) return TriadCard.createBack if owner == 0 - bitmap = BitmapWrapper.new(80, 96) + bitmap = Bitmap.new(80, 96) if owner == 2 # Opponent cardbitmap = AnimatedBitmap.new("Graphics/UI/Triple Triad/card_opponent") else # Player @@ -196,7 +196,7 @@ class TriadScene @cardIndexes.push(i) end @sprites["overlay"] = Sprite.new(@viewport) - @sprites["overlay"].bitmap = BitmapWrapper.new(Graphics.width, Graphics.height) + @sprites["overlay"].bitmap = Bitmap.new(Graphics.width, Graphics.height) pbSetSystemFont(@sprites["overlay"].bitmap) pbDrawTextPositions( @sprites["overlay"].bitmap, @@ -204,7 +204,7 @@ class TriadScene [@battle.playerName, Graphics.width - 52, 10, :center, Color.new(248, 248, 248), Color.new(96, 96, 96)]] ) @sprites["score"] = Sprite.new(@viewport) - @sprites["score"].bitmap = BitmapWrapper.new(Graphics.width, Graphics.height) + @sprites["score"].bitmap = Bitmap.new(Graphics.width, Graphics.height) pbSetSystemFont(@sprites["score"].bitmap) pbBGMPlay("Triple Triad") # Fade in all sprites @@ -1067,7 +1067,7 @@ def pbBuyTriads cmdwindow = Window_CommandPokemonEx.newWithSize(realcommands, 0, 0, Graphics.width / 2, Graphics.height) cmdwindow.z = 99999 goldwindow = Window_UnformattedTextPokemon.newWithSize( - _INTL("Money:\r\n{1}", pbGetGoldString), 0, 0, 32, 32 + _INTL("Money:\n{1}", pbGetGoldString), 0, 0, 32, 32 ) goldwindow.resizeToFit(goldwindow.text, Graphics.width) goldwindow.x = Graphics.width - goldwindow.width @@ -1125,7 +1125,7 @@ def pbBuyTriads end $PokemonGlobal.triads.add(item, quantity) $player.money -= price - goldwindow.text = _INTL("Money:\r\n{1}", pbGetGoldString) + goldwindow.text = _INTL("Money:\n{1}", pbGetGoldString) pbMessage(_INTL("Here you are! Thank you!") + "\\se[Mart buy item]") end end @@ -1157,7 +1157,7 @@ def pbSellTriads cmdwindow = Window_CommandPokemonEx.newWithSize(commands, 0, 0, Graphics.width / 2, Graphics.height) cmdwindow.z = 99999 goldwindow = Window_UnformattedTextPokemon.newWithSize( - _INTL("Money:\r\n{1}", pbGetGoldString), 0, 0, 32, 32 + _INTL("Money:\n{1}", pbGetGoldString), 0, 0, 32, 32 ) goldwindow.resizeToFit(goldwindow.text, Graphics.width) goldwindow.x = Graphics.width - goldwindow.width @@ -1218,7 +1218,7 @@ def pbSellTriads price *= quantity if pbConfirmMessage(_INTL("I can pay ${1}. Would that be OK?", price.to_s_formatted)) $player.money += price - goldwindow.text = _INTL("Money:\r\n{1}", pbGetGoldString) + goldwindow.text = _INTL("Money:\n{1}", pbGetGoldString) $PokemonGlobal.triads.remove(item, quantity) pbMessage(_INTL("Turned over the {1} card and received ${2}.", itemname, price.to_s_formatted) + "\\se[Mart buy item]") commands = [] 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 cd221e7de..573ac726d 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 @@ -2,14 +2,16 @@ # Edits the terrain tags of tiles in tilesets. #=============================================================================== class PokemonTilesetScene - TILE_SIZE = 32 # in pixels - TILES_PER_ROW = 8 - TILESET_WIDTH = TILES_PER_ROW * TILE_SIZE - TILES_PER_AUTOTILE = 48 - TILESET_START_ID = TILES_PER_ROW * TILES_PER_AUTOTILE - CURSOR_COLOR = Color.new(255, 0, 0) - TEXT_COLOR = Color.new(80, 80, 80) - TEXT_SHADOW_COLOR = Color.new(192, 192, 192) + TILE_SIZE = 32 # in pixels + TILES_PER_ROW = 8 + TILESET_WIDTH = TILES_PER_ROW * TILE_SIZE + TILES_PER_AUTOTILE = 48 + TILESET_START_ID = TILES_PER_ROW * TILES_PER_AUTOTILE + TILE_BACKGROUND = Color.magenta + CURSOR_COLOR = Color.new(255, 0, 0) # Red + CURSOR_OUTLINE_COLOR = Color.white + TEXT_COLOR = Color.white + TEXT_SHADOW_COLOR = Color.black def initialize @tilesets_data = load_data("Data/Tilesets.rxdata") @@ -17,11 +19,14 @@ class PokemonTilesetScene @viewport.z = 99999 @sprites = {} @sprites["title"] = Window_UnformattedTextPokemon.newWithSize( - _INTL("Tileset Editor\r\nA/S: SCROLL\r\nZ: MENU"), + _INTL("Tileset Editor\nA/S: SCROLL\nZ: MENU"), TILESET_WIDTH, 0, Graphics.width - TILESET_WIDTH, 128, @viewport ) + @sprites["background"] = BitmapSprite.new(Graphics.width, Graphics.height, @viewport) @sprites["tileset"] = BitmapSprite.new(TILESET_WIDTH, Graphics.height, @viewport) + @sprites["tileset"].z = 10 @sprites["overlay"] = BitmapSprite.new(Graphics.width, Graphics.height, @viewport) + @sprites["overlay"].z = 20 pbSetSystemFont(@sprites["overlay"].bitmap) @visible_height = @sprites["tileset"].bitmap.height / TILE_SIZE load_tileset(1) @@ -68,11 +73,14 @@ class PokemonTilesetScene end def draw_tiles + @sprites["background"].bitmap.clear @sprites["tileset"].bitmap.clear @visible_height.times do |yy| autotile_row = (@top_y == 0 && yy == 0) # Autotiles id_y_offset = (autotile_row) ? 0 : TILESET_START_ID + ((@top_y + yy - 1) * TILES_PER_ROW) + break if @top_y + yy >= @height TILES_PER_ROW.times do |xx| + @sprites["background"].bitmap.fill_rect(xx * TILE_SIZE, yy * TILE_SIZE, TILE_SIZE, TILE_SIZE, TILE_BACKGROUND) id_x_offset = (autotile_row) ? xx * TILES_PER_AUTOTILE : xx @tilehelper.bltTile(@sprites["tileset"].bitmap, xx * TILE_SIZE, yy * TILE_SIZE, id_y_offset + id_x_offset) @@ -88,33 +96,48 @@ 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, :center, TEXT_COLOR, TEXT_SHADOW_COLOR]) + next if terr == 0 + textpos.push([terr.to_s, (xx * TILE_SIZE) + (TILE_SIZE / 2), (yy * TILE_SIZE) + 6, + :center, TEXT_COLOR, TEXT_SHADOW_COLOR, :outline]) end end pbDrawTextPositions(@sprites["overlay"].bitmap, textpos) # Draw cursor - cursor_x = @x * TILE_SIZE - cursor_y = (@y - @top_y) * TILE_SIZE - @sprites["overlay"].bitmap.fill_rect(cursor_x, cursor_y, TILE_SIZE, 4, CURSOR_COLOR) - @sprites["overlay"].bitmap.fill_rect(cursor_x, cursor_y, 4, TILE_SIZE, CURSOR_COLOR) - @sprites["overlay"].bitmap.fill_rect(cursor_x, cursor_y + TILE_SIZE - 4, TILE_SIZE, 4, CURSOR_COLOR) - @sprites["overlay"].bitmap.fill_rect(cursor_x + TILE_SIZE - 4, cursor_y, 4, TILE_SIZE, CURSOR_COLOR) + draw_cursor # Draw information about selected tile on right side draw_tile_details end + def draw_cursor + cursor_x = @x * TILE_SIZE + cursor_y = (@y - @top_y) * TILE_SIZE + cursor_width = TILE_SIZE + cursor_height = TILE_SIZE + bitmap = @sprites["overlay"].bitmap + bitmap.fill_rect(cursor_x - 2, cursor_y - 2, cursor_width + 4, 8, CURSOR_OUTLINE_COLOR) + bitmap.fill_rect(cursor_x - 2, cursor_y - 2, 8, cursor_height + 4, CURSOR_OUTLINE_COLOR) + bitmap.fill_rect(cursor_x - 2, cursor_y + cursor_height - 6, cursor_width + 4, 8, CURSOR_OUTLINE_COLOR) + bitmap.fill_rect(cursor_x + cursor_width - 6, cursor_y - 2, 8, cursor_height + 4, CURSOR_OUTLINE_COLOR) + bitmap.fill_rect(cursor_x, cursor_y, cursor_width, 4, CURSOR_COLOR) + bitmap.fill_rect(cursor_x, cursor_y, 4, cursor_height, CURSOR_COLOR) + bitmap.fill_rect(cursor_x, cursor_y + cursor_height - 4, cursor_width, 4, CURSOR_COLOR) + bitmap.fill_rect(cursor_x + cursor_width - 4, cursor_y, 4, cursor_height, CURSOR_COLOR) + end + def draw_tile_details overlay = @sprites["overlay"].bitmap - tile_x = (Graphics.width * 3 / 4) - TILE_SIZE - tile_y = (Graphics.height / 2) - TILE_SIZE + tile_size = 4 # Size multiplier + tile_x = (Graphics.width * 3 / 4) - (TILE_SIZE * tile_size / 2) + tile_y = (Graphics.height / 2) - (TILE_SIZE * tile_size / 2) tile_id = tile_ID_from_coordinates(@x, @y) || 0 - # Draw tile (at 200% size) - @tilehelper.bltSmallTile(overlay, tile_x, tile_y, TILE_SIZE * 2, TILE_SIZE * 2, tile_id) + # Draw tile (at 400% size) + @sprites["background"].bitmap.fill_rect(tile_x, tile_y, TILE_SIZE * tile_size, TILE_SIZE * tile_size, TILE_BACKGROUND) + @tilehelper.bltSmallTile(overlay, tile_x, tile_y, TILE_SIZE * tile_size, TILE_SIZE * tile_size, tile_id) # Draw box around tile image - overlay.fill_rect(tile_x - 1, tile_y - 1, (TILE_SIZE * 2) + 2, 1, Color.white) - overlay.fill_rect(tile_x - 1, tile_y - 1, 1, (TILE_SIZE * 2) + 2, Color.white) - overlay.fill_rect(tile_x - 1, tile_y + (TILE_SIZE * 2), (TILE_SIZE * 2) + 2, 1, Color.white) - overlay.fill_rect(tile_x + (TILE_SIZE * 2), tile_y - 1, 1, (TILE_SIZE * 2) + 2, Color.white) + overlay.fill_rect(tile_x - 1, tile_y - 1, (TILE_SIZE * tile_size) + 2, 1, Color.white) + overlay.fill_rect(tile_x - 1, tile_y - 1, 1, (TILE_SIZE * tile_size) + 2, Color.white) + overlay.fill_rect(tile_x - 1, tile_y + (TILE_SIZE * tile_size), (TILE_SIZE * tile_size) + 2, 1, Color.white) + overlay.fill_rect(tile_x + (TILE_SIZE * tile_size), tile_y - 1, 1, (TILE_SIZE * tile_size) + 2, Color.white) # Write terrain tag info about selected tile terrain_tag = @tileset.terrain_tags[tile_id] || 0 if GameData::TerrainTag.exists?(terrain_tag) @@ -123,8 +146,10 @@ class PokemonTilesetScene terrain_tag_name = terrain_tag.to_s end textpos = [ - [_INTL("Terrain Tag:"), tile_x + TILE_SIZE, tile_y + (TILE_SIZE * 2) + 22, :center, Color.new(248, 248, 248), Color.new(40, 40, 40)], - [terrain_tag_name, tile_x + TILE_SIZE, tile_y + (TILE_SIZE * 2) + 54, :center, Color.new(248, 248, 248), Color.new(40, 40, 40)] + [_INTL("Terrain Tag:"), Graphics.width * 3 / 4, tile_y + (TILE_SIZE * tile_size) + 22, + :center, Color.new(248, 248, 248), Color.new(40, 40, 40)], + [terrain_tag_name, Graphics.width * 3 / 4, tile_y + (TILE_SIZE * tile_size) + 54, + :center, Color.new(248, 248, 248), Color.new(40, 40, 40)] ] # Draw all text pbDrawTextPositions(overlay, textpos) @@ -176,9 +201,9 @@ class PokemonTilesetScene elsif Input.repeat?(Input::RIGHT) update_cursor_position(1, 0) elsif Input.repeat?(Input::JUMPUP) - update_cursor_position(0, -@visible_height) + update_cursor_position(0, -@visible_height / 2) elsif Input.repeat?(Input::JUMPDOWN) - update_cursor_position(0, @visible_height) + update_cursor_position(0, @visible_height / 2) elsif Input.trigger?(Input::ACTION) commands = [ _INTL("Go to bottom"), diff --git a/Data/Scripts/020_Debug/001_Editor screens/003_EditorScreens_MapConnections.rb b/Data/Scripts/020_Debug/001_Editor screens/003_EditorScreens_MapConnections.rb index ae9679532..21ceb54a9 100644 --- a/Data/Scripts/020_Debug/001_Editor screens/003_EditorScreens_MapConnections.rb +++ b/Data/Scripts/020_Debug/001_Editor screens/003_EditorScreens_MapConnections.rb @@ -107,7 +107,7 @@ class RegionMapSprite def createRegionMap(map) town_map = GameData::TownMap.get(map) bitmap = AnimatedBitmap.new("Graphics/UI/Town Map/#{town_map.filename}").deanimate - retbitmap = BitmapWrapper.new(bitmap.width / 2, bitmap.height / 2) + retbitmap = Bitmap.new(bitmap.width / 2, bitmap.height / 2) retbitmap.stretch_blt( Rect.new(0, 0, bitmap.width / 2, bitmap.height / 2), bitmap, @@ -350,12 +350,12 @@ class MapScreenScene end def helpWindow - helptext = _INTL("A: Add map to canvas") + "\r\n" - helptext += _INTL("DEL: Delete map from canvas") + "\r\n" - helptext += _INTL("S: Go to another map") + "\r\n" - helptext += _INTL("Click to select a map") + "\r\n" - helptext += _INTL("Double-click: Edit map's metadata") + "\r\n" - helptext += _INTL("Drag map to move it") + "\r\n" + helptext = _INTL("A: Add map to canvas") + "\n" + helptext += _INTL("DEL: Delete map from canvas") + "\n" + helptext += _INTL("S: Go to another map") + "\n" + helptext += _INTL("Click to select a map") + "\n" + helptext += _INTL("Double-click: Edit map's metadata") + "\n" + helptext += _INTL("Drag map to move it") + "\n" helptext += _INTL("Arrow keys/drag canvas: Move around canvas") title = Window_UnformattedTextPokemon.newWithSize( helptext, 0, 0, Graphics.width * 8 / 10, Graphics.height, @viewport diff --git a/Data/Scripts/020_Debug/003_Debug menus/001_Debug_Menus.rb b/Data/Scripts/020_Debug/003_Debug menus/001_Debug_Menus.rb index 7b9dbc773..2f6b3f522 100644 --- a/Data/Scripts/020_Debug/003_Debug menus/001_Debug_Menus.rb +++ b/Data/Scripts/020_Debug/003_Debug menus/001_Debug_Menus.rb @@ -262,21 +262,21 @@ module Battle::DebugMixin return ret if battler.nil? # Battler index, name ret += sprintf("[%d] %s", battler.index, battler.pbThis) - ret += "\r\n" + ret += "\n" # Species ret += _INTL("Species: {1}", GameData::Species.get(battler.species).name) - ret += "\r\n" + ret += "\n" # Form number ret += _INTL("Form: {1}", battler.form) - ret += "\r\n" + ret += "\n" # Level, gender, shininess ret += _INTL("Level {1}, {2}", battler.level, (battler.pokemon.male?) ? "♂" : (battler.pokemon.female?) ? "♀" : _INTL("genderless")) ret += ", " + _INTL("shiny") if battler.pokemon.shiny? - ret += "\r\n" + ret += "\n" # HP ret += _INTL("HP: {1}/{2} ({3}%)", battler.hp, battler.totalhp, (100.0 * battler.hp / battler.totalhp).to_i) - ret += "\r\n" + ret += "\n" # Status ret += _INTL("Status: {1}", GameData::Status.get(battler.status).name) case battler.status @@ -287,7 +287,7 @@ module Battle::DebugMixin ret += " " + _INTL("(toxic, {1}/16)", battler.effects[PBEffects::Toxic]) end end - ret += "\r\n" + ret += "\n" # Stat stages stages = [] GameData::Stat.each_battle do |stat| @@ -299,10 +299,10 @@ module Battle::DebugMixin stages.push(stage_text) end ret += _INTL("Stat stages: {1}", (stages.empty?) ? "-" : stages.join(", ")) - ret += "\r\n" + ret += "\n" # Ability ret += _INTL("Ability: {1}", (battler.ability) ? battler.abilityName : "-") - ret += "\r\n" + ret += "\n" # Held item ret += _INTL("Item: {1}", (battler.item) ? battler.itemName : "-") return ret @@ -314,18 +314,18 @@ module Battle::DebugMixin sp_data = pkmn.species_data # Name, species ret += sprintf("%s (%s)", pkmn.name, sp_data.name) - ret += "\r\n" + ret += "\n" # Form number ret += _INTL("Form: {1}", sp_data.form) - ret += "\r\n" + ret += "\n" # Level, gender, shininess ret += _INTL("Level {1}, {2}", pkmn.level, (pkmn.male?) ? "♂" : (pkmn.female?) ? "♀" : _INTL("genderless")) ret += ", " + _INTL("shiny") if pkmn.shiny? - ret += "\r\n" + ret += "\n" # HP ret += _INTL("HP: {1}/{2} ({3}%)", pkmn.hp, pkmn.totalhp, (100.0 * pkmn.hp / pkmn.totalhp).to_i) - ret += "\r\n" + ret += "\n" # Status ret += _INTL("Status: {1}", GameData::Status.get(pkmn.status).name) case pkmn.status @@ -334,10 +334,10 @@ module Battle::DebugMixin when :POISON ret += " " + _INTL("(toxic)") if pkmn.statusCount > 0 end - ret += "\r\n" + ret += "\n" # Ability ret += _INTL("Ability: {1}", pkmn.ability&.name || "-") - ret += "\r\n" + ret += "\n" # Held item ret += _INTL("Item: {1}", pkmn.item&.name || "-") return ret diff --git a/Data/Scripts/020_Debug/003_Debug menus/004_Debug_BattleCommands.rb b/Data/Scripts/020_Debug/003_Debug menus/004_Debug_BattleCommands.rb index 184783eb9..788c06fea 100644 --- a/Data/Scripts/020_Debug/003_Debug menus/004_Debug_BattleCommands.rb +++ b/Data/Scripts/020_Debug/003_Debug menus/004_Debug_BattleCommands.rb @@ -252,10 +252,10 @@ MenuHandlers.add(:battle_debug_menu, :weather, { msg = _INTL("Current weather: {1}", weather_data.name || _INTL("Unknown")) if weather_data.id != :None if battle.field.weatherDuration > 0 - msg += "\r\n" + msg += "\n" msg += _INTL("Duration : {1} more round(s)", battle.field.weatherDuration) elsif battle.field.weatherDuration < 0 - msg += "\r\n" + msg += "\n" msg += _INTL("Duration : Infinite") end end @@ -314,10 +314,10 @@ MenuHandlers.add(:battle_debug_menu, :terrain, { msg = _INTL("Current terrain: {1}", terrain_data.name || _INTL("Unknown")) if terrain_data.id != :None if battle.field.terrainDuration > 0 - msg += "\r\n" + msg += "\n" msg += _INTL("Duration : {1} more round(s)", battle.field.terrainDuration) elsif battle.field.terrainDuration < 0 - msg += "\r\n" + msg += "\n" msg += _INTL("Duration : Infinite") end end @@ -373,7 +373,7 @@ MenuHandlers.add(:battle_debug_menu, :environment_time, { loop do environment_data = GameData::Environment.try_get(battle.environment) msg = _INTL("Environment: {1}", environment_data.name || _INTL("Unknown")) - msg += "\r\n" + msg += "\n" msg += _INTL("Time of day: {1}", [_INTL("Day"), _INTL("Evening"), _INTL("Night")][battle.time]) cmd = pbMessage("\\ts[]" + msg, [_INTL("Change environment"), _INTL("Change time of day")], -1, nil, cmd) diff --git a/Data/Scripts/020_Debug/003_Debug menus/005_Debug_BattlePkmnCommands.rb b/Data/Scripts/020_Debug/003_Debug menus/005_Debug_BattlePkmnCommands.rb index bf00bff07..07d95c927 100644 --- a/Data/Scripts/020_Debug/003_Debug menus/005_Debug_BattlePkmnCommands.rb +++ b/Data/Scripts/020_Debug/003_Debug menus/005_Debug_BattlePkmnCommands.rb @@ -431,7 +431,7 @@ MenuHandlers.add(:battle_pokemon_debug_menu, :set_types, { commands.push(_INTL("Extra type: {1}", extra_type_name)) types.push(extra_type) msg = _INTL("Effective types: {1}", battler.pbTypes(true).map { |t| GameData::Type.get(t).name }.join("/")) - msg += "\r\n" + _INTL("(Change a type to itself to remove it.)") + msg += "\n" + _INTL("(Change a type to itself to remove it.)") cmd = pbMessage("\\ts[]" + msg, commands, -1, nil, cmd) break if cmd < 0 old_type = types[cmd] diff --git a/Data/Scripts/020_Debug/003_Editor_Listers.rb b/Data/Scripts/020_Debug/003_Editor_Listers.rb index 4c86c61b8..35b5e92fe 100644 --- a/Data/Scripts/020_Debug/003_Editor_Listers.rb +++ b/Data/Scripts/020_Debug/003_Editor_Listers.rb @@ -632,7 +632,7 @@ class TrainerBattleLister tr_data = GameData::Trainer.get(@ids[index][0], @ids[index][1], @ids[index][2]) if tr_data tr_data.pokemon.each_with_index do |pkmn, i| - text += "\r\n" if i > 0 + text += "\n" if i > 0 text += sprintf("%s Lv.%d", GameData::Species.get(pkmn[:species]).real_name, pkmn[:level]) end end diff --git a/Data/Scripts/021_Compiler/001_Compiler.rb b/Data/Scripts/021_Compiler/001_Compiler.rb index 0a35080c2..c937d8d6e 100644 --- a/Data/Scripts/021_Compiler/001_Compiler.rb +++ b/Data/Scripts/021_Compiler/001_Compiler.rb @@ -40,12 +40,12 @@ module FileLineData def self.linereport if @section if @key.nil? - return _INTL("File {1}, section {2}\r\n{3}", @file, @section, @value) + "\r\n\r\n" + return _INTL("File {1}, section {2}\n{3}", @file, @section, @value) + "\n\n" else - return _INTL("File {1}, section {2}, key {3}\r\n{4}", @file, @section, @key, @value) + "\r\n\r\n" + return _INTL("File {1}, section {2}, key {3}\n{4}", @file, @section, @key, @value) + "\n\n" end else - return _INTL("File {1}, line {2}\r\n{3}", @file, @lineno, @linedata) + "\r\n\r\n" + return _INTL("File {1}, line {2}\n{3}", @file, @lineno, @linedata) + "\n\n" end end end @@ -112,11 +112,11 @@ module Compiler else if sectionname.nil? FileLineData.setLine(line, lineno) - raise _INTL("Expected a section at the beginning of the file. This error may also occur if the file was not saved in UTF-8.\r\n{1}", FileLineData.linereport) + raise _INTL("Expected a section at the beginning of the file. This error may also occur if the file was not saved in UTF-8.\n{1}", FileLineData.linereport) end if !line[/^\s*(\w+)\s*=\s*(.*)$/] FileLineData.setSection(sectionname, nil, line) - raise _INTL("Bad line syntax (expected syntax like XXX=YYY)\r\n{1}", FileLineData.linereport) + raise _INTL("Bad line syntax (expected syntax like XXX=YYY)\n{1}", FileLineData.linereport) end r1 = $~[1] r2 = $~[2] @@ -316,7 +316,7 @@ module Compiler end str[0, fieldbytes] = "" if !str[/^\s*,/] && !str[/^\s*$/] - raise _INTL("Invalid quoted field (in: {1})\r\n{2}", str, FileLineData.linereport) + raise _INTL("Invalid quoted field (in: {1})\n{2}", str, FileLineData.linereport) end str[0, str.length] = $~.post_match else @@ -337,14 +337,14 @@ module Compiler field = csvfield!(str) return true if field[/^(?:1|TRUE|YES|Y)$/i] return false if field[/^(?:0|FALSE|NO|N)$/i] - raise _INTL("Field {1} is not a Boolean value (true, false, 1, 0)\r\n{2}", field, FileLineData.linereport) + raise _INTL("Field {1} is not a Boolean value (true, false, 1, 0)\n{2}", field, FileLineData.linereport) end # Unused def csvInt!(str, _line = -1) ret = csvfield!(str) if !ret[/^\-?\d+$/] - raise _INTL("Field {1} is not an integer\r\n{2}", ret, FileLineData.linereport) + raise _INTL("Field {1} is not an integer\n{2}", ret, FileLineData.linereport) end return ret.to_i end @@ -353,7 +353,7 @@ module Compiler def csvPosInt!(str, _line = -1) ret = csvfield!(str) if !ret[/^\d+$/] - raise _INTL("Field {1} is not a positive integer\r\n{2}", ret, FileLineData.linereport) + raise _INTL("Field {1} is not a positive integer\n{2}", ret, FileLineData.linereport) end return ret.to_i end @@ -361,7 +361,7 @@ module Compiler # Unused def csvFloat!(str, _line = -1) ret = csvfield!(str) - return Float(ret) rescue raise _INTL("Field {1} is not a number\r\n{2}", ret, FileLineData.linereport) + return Float(ret) rescue raise _INTL("Field {1} is not a number\n{2}", ret, FileLineData.linereport) end # Unused @@ -385,45 +385,45 @@ module Compiler case schema.downcase when "i" # Integer if !value[/^\-?\d+$/] - raise _INTL("Field {1} is not an integer\r\n{2}", value, FileLineData.linereport) + raise _INTL("Field {1} is not an integer\n{2}", value, FileLineData.linereport) end return value.to_i when "u" # Positive integer or zero if !value[/^\d+$/] - raise _INTL("Field {1} is not a positive integer or 0\r\n{2}", value, FileLineData.linereport) + raise _INTL("Field {1} is not a positive integer or 0\n{2}", value, FileLineData.linereport) end return value.to_i when "v" # Positive integer if !value[/^\d+$/] - raise _INTL("Field {1} is not a positive integer\r\n{2}", value, FileLineData.linereport) + raise _INTL("Field {1} is not a positive integer\n{2}", value, FileLineData.linereport) end if value.to_i == 0 - raise _INTL("Field '{1}' must be greater than 0\r\n{2}", value, FileLineData.linereport) + raise _INTL("Field '{1}' must be greater than 0\n{2}", value, FileLineData.linereport) end return value.to_i when "x" # Hexadecimal number if !value[/^[A-F0-9]+$/i] - raise _INTL("Field '{1}' is not a hexadecimal number\r\n{2}", value, FileLineData.linereport) + raise _INTL("Field '{1}' is not a hexadecimal number\n{2}", value, FileLineData.linereport) end return value.hex when "f" # Floating point number if !value[/^\-?^\d*\.?\d*$/] - raise _INTL("Field {1} is not a number\r\n{2}", value, FileLineData.linereport) + raise _INTL("Field {1} is not a number\n{2}", value, FileLineData.linereport) end return value.to_f when "b" # Boolean return true if value[/^(?:1|TRUE|YES|Y)$/i] return false if value[/^(?:0|FALSE|NO|N)$/i] - raise _INTL("Field {1} is not a Boolean value (true, false, 1, 0)\r\n{2}", value, FileLineData.linereport) + raise _INTL("Field {1} is not a Boolean value (true, false, 1, 0)\n{2}", value, FileLineData.linereport) when "n" # Name if !value[/^(?![0-9])\w+$/] - raise _INTL("Field '{1}' must contain only letters, digits, and\r\nunderscores and can't begin with a number.\r\n{2}", value, FileLineData.linereport) + raise _INTL("Field '{1}' must contain only letters, digits, and\nunderscores and can't begin with a number.\n{2}", value, FileLineData.linereport) end when "s" # String when "q" # Unformatted text when "m" # Symbol if !value[/^(?![0-9])\w+$/] - raise _INTL("Field '{1}' must contain only letters, digits, and\r\nunderscores and can't begin with a number.\r\n{2}", value, FileLineData.linereport) + raise _INTL("Field '{1}' must contain only letters, digits, and\nunderscores and can't begin with a number.\n{2}", value, FileLineData.linereport) end return value.to_sym when "e" # Enumerable @@ -440,10 +440,10 @@ module Compiler when Module begin if nil_or_empty?(ret) || !enumer.const_defined?(ret) - raise _INTL("Undefined value {1} in {2}\r\n{3}", ret, enumer.name, FileLineData.linereport) + raise _INTL("Undefined value {1} in {2}\n{3}", ret, enumer.name, FileLineData.linereport) end rescue NameError - raise _INTL("Incorrect value {1} in {2}\r\n{3}", ret, enumer.name, FileLineData.linereport) + raise _INTL("Incorrect value {1} in {2}\n{3}", ret, enumer.name, FileLineData.linereport) end return enumer.const_get(ret.to_sym) when Symbol, String @@ -451,36 +451,36 @@ module Compiler enumer = GameData.const_get(enumer.to_sym) begin if nil_or_empty?(ret) || !enumer.exists?(ret.to_sym) - raise _INTL("Undefined value {1} in {2}\r\n{3}", ret, enumer.name, FileLineData.linereport) + raise _INTL("Undefined value {1} in {2}\n{3}", ret, enumer.name, FileLineData.linereport) end rescue NameError - raise _INTL("Incorrect value {1} in {2}\r\n{3}", ret, enumer.name, FileLineData.linereport) + raise _INTL("Incorrect value {1} in {2}\n{3}", ret, enumer.name, FileLineData.linereport) end return ret.to_sym end enumer = Object.const_get(enumer.to_sym) begin if nil_or_empty?(ret) || !enumer.const_defined?(ret) - raise _INTL("Undefined value {1} in {2}\r\n{3}", ret, enumer.name, FileLineData.linereport) + raise _INTL("Undefined value {1} in {2}\n{3}", ret, enumer.name, FileLineData.linereport) end rescue NameError - raise _INTL("Incorrect value {1} in {2}\r\n{3}", ret, enumer.name, FileLineData.linereport) + raise _INTL("Incorrect value {1} in {2}\n{3}", ret, enumer.name, FileLineData.linereport) end return enumer.const_get(ret.to_sym) when Array idx = findIndex(enumer) { |item| ret == item } if idx < 0 - raise _INTL("Undefined value {1} (expected one of: {2})\r\n{3}", ret, enumer.inspect, FileLineData.linereport) + raise _INTL("Undefined value {1} (expected one of: {2})\n{3}", ret, enumer.inspect, FileLineData.linereport) end return idx when Hash value = enumer[ret] if value.nil? - raise _INTL("Undefined value {1} (expected one of: {2})\r\n{3}", ret, enumer.keys.inspect, FileLineData.linereport) + raise _INTL("Undefined value {1} (expected one of: {2})\n{3}", ret, enumer.keys.inspect, FileLineData.linereport) end return value end - raise _INTL("Enumeration not defined\r\n{1}", FileLineData.linereport) + raise _INTL("Enumeration not defined\n{1}", FileLineData.linereport) end # Unused @@ -540,7 +540,7 @@ module Compiler if nil_or_empty?(field) subrecord.push(nil) elsif !field[/^\-?\d+$/] - raise _INTL("Field {1} is not an integer\r\n{2}", field, FileLineData.linereport) + raise _INTL("Field {1} is not an integer\n{2}", field, FileLineData.linereport) else subrecord.push(field.to_i) end @@ -551,29 +551,29 @@ module Compiler if nil_or_empty?(field) subrecord.push(nil) elsif !field[/^\d+$/] - raise _INTL("Field '{1}' must be 0 or greater\r\n{2}", field, FileLineData.linereport) + raise _INTL("Field '{1}' must be 0 or greater\n{2}", field, FileLineData.linereport) else subrecord.push(field.to_i) end when "v" # Positive integer field = csvPosInt!(rec, lineno) - raise _INTL("Field '{1}' must be greater than 0\r\n{2}", field, FileLineData.linereport) if field == 0 + raise _INTL("Field '{1}' must be greater than 0\n{2}", field, FileLineData.linereport) if field == 0 subrecord.push(field) when "V" # Optional positive integer field = csvfield!(rec) if nil_or_empty?(field) subrecord.push(nil) elsif !field[/^\d+$/] - raise _INTL("Field '{1}' must be greater than 0\r\n{2}", field, FileLineData.linereport) + raise _INTL("Field '{1}' must be greater than 0\n{2}", field, FileLineData.linereport) elsif field.to_i == 0 - raise _INTL("Field '{1}' must be greater than 0\r\n{2}", field, FileLineData.linereport) + raise _INTL("Field '{1}' must be greater than 0\n{2}", field, FileLineData.linereport) else subrecord.push(field.to_i) end when "x" # Hexadecimal number field = csvfield!(rec) if !field[/^[A-Fa-f0-9]+$/] - raise _INTL("Field '{1}' is not a hexadecimal number\r\n{2}", field, FileLineData.linereport) + raise _INTL("Field '{1}' is not a hexadecimal number\n{2}", field, FileLineData.linereport) end subrecord.push(field.hex) when "X" # Optional hexadecimal number @@ -581,7 +581,7 @@ module Compiler if nil_or_empty?(field) subrecord.push(nil) elsif !field[/^[A-Fa-f0-9]+$/] - raise _INTL("Field '{1}' is not a hexadecimal number\r\n{2}", field, FileLineData.linereport) + raise _INTL("Field '{1}' is not a hexadecimal number\n{2}", field, FileLineData.linereport) else subrecord.push(field.hex) end @@ -592,7 +592,7 @@ module Compiler if nil_or_empty?(field) subrecord.push(nil) elsif !field[/^\-?^\d*\.?\d*$/] - raise _INTL("Field {1} is not a floating point number\r\n{2}", field, FileLineData.linereport) + raise _INTL("Field {1} is not a floating point number\n{2}", field, FileLineData.linereport) else subrecord.push(field.to_f) end @@ -610,7 +610,7 @@ module Compiler when "n" # Name field = csvfield!(rec) if !field[/^(?![0-9])\w+$/] - raise _INTL("Field '{1}' must contain only letters, digits, and\r\nunderscores and can't begin with a number.\r\n{2}", field, FileLineData.linereport) + raise _INTL("Field '{1}' must contain only letters, digits, and\nunderscores and can't begin with a number.\n{2}", field, FileLineData.linereport) end subrecord.push(field) when "N" # Optional name @@ -618,7 +618,7 @@ module Compiler if nil_or_empty?(field) subrecord.push(nil) elsif !field[/^(?![0-9])\w+$/] - raise _INTL("Field '{1}' must contain only letters, digits, and\r\nunderscores and can't begin with a number.\r\n{2}", field, FileLineData.linereport) + raise _INTL("Field '{1}' must contain only letters, digits, and\nunderscores and can't begin with a number.\n{2}", field, FileLineData.linereport) else subrecord.push(field) end @@ -640,7 +640,7 @@ module Compiler when "m" # Symbol field = csvfield!(rec) if !field[/^(?![0-9])\w+$/] - raise _INTL("Field '{1}' must contain only letters, digits, and\r\nunderscores and can't begin with a number.\r\n{2}", field, FileLineData.linereport) + raise _INTL("Field '{1}' must contain only letters, digits, and\nunderscores and can't begin with a number.\n{2}", field, FileLineData.linereport) end subrecord.push(field.to_sym) when "M" # Optional symbol @@ -648,7 +648,7 @@ module Compiler if nil_or_empty?(field) subrecord.push(nil) elsif !field[/^(?![0-9])\w+$/] - raise _INTL("Field '{1}' must contain only letters, digits, and\r\nunderscores and can't begin with a number.\r\n{2}", field, FileLineData.linereport) + raise _INTL("Field '{1}' must contain only letters, digits, and\nunderscores and can't begin with a number.\n{2}", field, FileLineData.linereport) else subrecord.push(field.to_sym) end @@ -851,7 +851,7 @@ module Compiler clonitem.sub!(/\s*$/, "") itm = GameData::Item.try_get(clonitem) if !itm - raise _INTL("Undefined item constant name: {1}\r\nMake sure the item is defined in PBS/items.txt.\r\n{2}", item, FileLineData.linereport) + raise _INTL("Undefined item constant name: {1}\nMake sure the item is defined in PBS/items.txt.\n{2}", item, FileLineData.linereport) end return itm.id end @@ -864,7 +864,7 @@ module Compiler clonspecies = "NIDORANfE" if clonspecies == "NIDORANFE" spec = GameData::Species.try_get(clonspecies) if !spec - raise _INTL("Undefined species constant name: {1}\r\nMake sure the species is defined in PBS/pokemon.txt.\r\n{2}", species, FileLineData.linereport) + raise _INTL("Undefined species constant name: {1}\nMake sure the species is defined in PBS/pokemon.txt.\n{2}", species, FileLineData.linereport) end return spec.id end @@ -876,7 +876,7 @@ module Compiler mov = GameData::Move.try_get(clonmove) if !mov return nil if skip_unknown - raise _INTL("Undefined move constant name: {1}\r\nMake sure the move is defined in PBS/moves.txt.\r\n{2}", move, FileLineData.linereport) + raise _INTL("Undefined move constant name: {1}\nMake sure the move is defined in PBS/moves.txt.\n{2}", move, FileLineData.linereport) end return mov.id end @@ -888,7 +888,7 @@ module Compiler clonnature.sub!(/\s*$/, "") nat = GameData::Nature.try_get(clonnature) if !nat - raise _INTL("Undefined nature constant name: {1}\r\nMake sure the nature is defined in the scripts.\r\n{2}", nature, FileLineData.linereport) + raise _INTL("Undefined nature constant name: {1}\nMake sure the nature is defined in the scripts.\n{2}", nature, FileLineData.linereport) end return nat.id end @@ -900,7 +900,7 @@ module Compiler clontype.sub!(/\s*$/, "") typ = GameData::TrainerType.try_get(clontype) if !typ - raise _INTL("Undefined Trainer type constant name: {1}\r\nMake sure the trainer type is defined in PBS/trainer_types.txt.\r\n{2}", type, FileLineData.linereport) + raise _INTL("Undefined Trainer type constant name: {1}\nMake sure the trainer type is defined in PBS/trainer_types.txt.\n{2}", type, FileLineData.linereport) end return typ.id end diff --git a/Data/Scripts/021_Compiler/002_Compiler_CompilePBS.rb b/Data/Scripts/021_Compiler/002_Compiler_CompilePBS.rb index fabd11de5..1af0182df 100644 --- a/Data/Scripts/021_Compiler/002_Compiler_CompilePBS.rb +++ b/Data/Scripts/021_Compiler/002_Compiler_CompilePBS.rb @@ -54,7 +54,7 @@ module Compiler # Validate and modify the compiled data yield false, data_hash if block_given? if game_data.exists?(data_hash[:id]) - raise _INTL("Section name '{1}' is used twice.\r\n{2}", data_hash[:id], FileLineData.linereport) + raise _INTL("Section name '{1}' is used twice.\n{2}", data_hash[:id], FileLineData.linereport) end # Add section's data to records game_data.register(data_hash) @@ -116,19 +116,19 @@ module Compiler FileLineData.setLine(line, lineno) record = get_csv_record(line, schema) if !pbRgssExists?(sprintf("Data/Map%03d.rxdata", record[0])) - print _INTL("Warning: Map {1}, as mentioned in the map connection data, was not found.\r\n{2}", record[0], FileLineData.linereport) + print _INTL("Warning: Map {1}, as mentioned in the map connection data, was not found.\n{2}", record[0], FileLineData.linereport) elsif !pbRgssExists?(sprintf("Data/Map%03d.rxdata", record[3])) - print _INTL("Warning: Map {1}, as mentioned in the map connection data, was not found.\r\n{2}", record[3], FileLineData.linereport) + print _INTL("Warning: Map {1}, as mentioned in the map connection data, was not found.\n{2}", record[3], FileLineData.linereport) end case record[1] when "N" - raise _INTL("North side of first map must connect with south side of second map\r\n{1}", FileLineData.linereport) if record[4] != "S" + raise _INTL("North side of first map must connect with south side of second map\n{1}", FileLineData.linereport) if record[4] != "S" when "S" - raise _INTL("South side of first map must connect with north side of second map\r\n{1}", FileLineData.linereport) if record[4] != "N" + raise _INTL("South side of first map must connect with north side of second map\n{1}", FileLineData.linereport) if record[4] != "N" when "E" - raise _INTL("East side of first map must connect with west side of second map\r\n{1}", FileLineData.linereport) if record[4] != "W" + raise _INTL("East side of first map must connect with west side of second map\n{1}", FileLineData.linereport) if record[4] != "W" when "W" - raise _INTL("West side of first map must connect with east side of second map\r\n{1}", FileLineData.linereport) if record[4] != "E" + raise _INTL("West side of first map must connect with east side of second map\n{1}", FileLineData.linereport) if record[4] != "E" end records.push(record) end @@ -210,10 +210,10 @@ module Compiler def validate_compiled_move(hash) if (hash[:category] || 2) == 2 && (hash[:power] || 0) != 0 - raise _INTL("Move {1} is defined as a Status move with a non-zero base damage.\r\n{2}", + raise _INTL("Move {1} is defined as a Status move with a non-zero base damage.\n{2}", hash[:real_name], FileLineData.linereport) elsif (hash[:category] || 2) != 2 && (hash[:power] || 0) == 0 - print _INTL("Warning: Move {1} is defined as Physical or Special but has a base damage of 0. Changing it to a Status move.\r\n{2}", + print _INTL("Warning: Move {1} is defined as Physical or Special but has a base damage of 0. Changing it to a Status move.\n{2}", hash[:real_name], FileLineData.linereport) hash[:category] = 2 end @@ -424,7 +424,7 @@ module Compiler # Validate and modify the compiled data validate_compiled_pokemon_form(data_hash) if GameData::Species.exists?(data_hash[:id]) - raise _INTL("Section name '{1}' is used twice.\r\n{2}", data_hash[:id], FileLineData.linereport) + raise _INTL("Section name '{1}' is used twice.\n{2}", data_hash[:id], FileLineData.linereport) end # Add section's data to records GameData::Species.register(data_hash) @@ -443,9 +443,9 @@ module Compiler hash[:form] = hash[:id][1] hash[:id] = sprintf("%s_%d", hash[:species].to_s, hash[:form]).to_sym if !GameData::Species.exists?(hash[:species]) - raise _INTL("Undefined species ID '{1}'.\r\n{3}", hash[:species], FileLineData.linereport) + raise _INTL("Undefined species ID '{1}'.\n{3}", hash[:species], FileLineData.linereport) elsif GameData::Species.exists?(hash[:id]) - raise _INTL("Form {1} for species ID {2} is defined twice.\r\n{3}", hash[:form], hash[:species], FileLineData.linereport) + raise _INTL("Form {1} for species ID {2} is defined twice.\n{3}", hash[:form], hash[:species], FileLineData.linereport) end # Perform the same validations on this form as for a regular species validate_compiled_pokemon(hash) @@ -477,6 +477,20 @@ module Compiler end def validate_all_compiled_pokemon_forms + # Enumerate all evolution parameters (this couldn't be done earlier) + GameData::Species.each do |species| + FileLineData.setSection(species.id.to_s, "Evolutions", nil) # For error reporting + species.evolutions.each do |evo| + param_type = GameData::Evolution.get(evo[1]).parameter + if param_type.nil? + evo[2] = nil + elsif param_type == Integer + evo[2] = cast_csv_value(evo[2], "u") if evo[2].is_a?(String) + elsif param_type != String + evo[2] = cast_csv_value(evo[2], "e", param_type) if evo[2].is_a?(String) + end + end + end # Add prevolution "evolution" entry for all evolved species all_evos = {} GameData::Species.each do |species| # Build a hash of prevolutions for each species @@ -573,11 +587,11 @@ module Compiler if line[/^\s*\[\s*(\d+)\s*\]\s*$/] section = $~[1].to_i if dex_lists[section] - raise _INTL("Dex list number {1} is defined at least twice.\r\n{2}", section, FileLineData.linereport) + raise _INTL("Dex list number {1} is defined at least twice.\n{2}", section, FileLineData.linereport) end dex_lists[section] = [] else - raise _INTL("Expected a section at the beginning of the file.\r\n{1}", FileLineData.linereport) if !section + raise _INTL("Expected a section at the beginning of the file.\n{1}", FileLineData.linereport) if !section species_list = line.split(",") species_list.each do |species| next if !species || species.empty? @@ -594,7 +608,7 @@ module Compiler next if list == unique_list list.each_with_index do |s, i| next if unique_list[i] == s - raise _INTL("Dex list number {1} has species {2} listed twice.\r\n{3}", index, s, FileLineData.linereport) + raise _INTL("Dex list number {1} has species {2} listed twice.\n{3}", index, s, FileLineData.linereport) end end # Save all data @@ -646,17 +660,17 @@ module Compiler if current_type && line[/^\d+,/] # Species line values = line.split(",").collect! { |v| v.strip } if !values || values.length < 3 - raise _INTL("Expected a species entry line for encounter type {1} for map '{2}', got \"{3}\" instead.\r\n{4}", + raise _INTL("Expected a species entry line for encounter type {1} for map '{2}', got \"{3}\" instead.\n{4}", GameData::EncounterType.get(current_type).real_name, encounter_hash[:map], line, FileLineData.linereport) end values = get_csv_record(line, [nil, "vevV", nil, :Species]) values[3] = values[2] if !values[3] if values[2] > max_level - raise _INTL("Level number {1} is not valid (max. {2}).\r\n{3}", values[2], max_level, FileLineData.linereport) + raise _INTL("Level number {1} is not valid (max. {2}).\n{3}", values[2], max_level, FileLineData.linereport) elsif values[3] > max_level - raise _INTL("Level number {1} is not valid (max. {2}).\r\n{3}", values[3], max_level, FileLineData.linereport) + raise _INTL("Level number {1} is not valid (max. {2}).\n{3}", values[3], max_level, FileLineData.linereport) elsif values[2] > values[3] - raise _INTL("Minimum level is greater than maximum level: {1}\r\n{2}", line, FileLineData.linereport) + raise _INTL("Minimum level is greater than maximum level: {1}\n{2}", line, FileLineData.linereport) end encounter_hash[:types][current_type].push(values) elsif line[/^\[\s*(.+)\s*\]$/] # Map ID line @@ -685,7 +699,7 @@ module Compiler # Raise an error if a map/version combo is used twice key = sprintf("%s_%d", map_number, map_version).to_sym if GameData::Encounter::DATA[key] - raise _INTL("Encounters for map '{1}' are defined twice.\r\n{2}", map_number, FileLineData.linereport) + raise _INTL("Encounters for map '{1}' are defined twice.\n{2}", map_number, FileLineData.linereport) end step_chances = {} # Construct encounter hash @@ -699,7 +713,7 @@ module Compiler } current_type = nil elsif !encounter_hash # File began with something other than a map ID line - raise _INTL("Expected a map number, got \"{1}\" instead.\r\n{2}", line, FileLineData.linereport) + raise _INTL("Expected a map number, got \"{1}\" instead.\n{2}", line, FileLineData.linereport) else # Check if line is an encounter method name or not values = line.split(",").collect! { |v| v.strip } @@ -709,7 +723,7 @@ module Compiler step_chances[current_type] ||= GameData::EncounterType.get(current_type).trigger_chance encounter_hash[:types][current_type] = [] else - raise _INTL("Undefined encounter type \"{1}\" for map '{2}'.\r\n{3}", + raise _INTL("Undefined encounter type \"{1}\" for map '{2}'.\n{3}", line, encounter_hash[:map], FileLineData.linereport) end end @@ -800,7 +814,7 @@ module Compiler elsif line[/^\s*(\w+)\s*=\s*(.*)$/] # XXX=YYY lines if !data_hash - raise _INTL("Expected a section at the beginning of the file.\r\n{1}", FileLineData.linereport) + raise _INTL("Expected a section at the beginning of the file.\n{1}", FileLineData.linereport) end key = $~[1] if schema[key] # Property of the trainer @@ -816,7 +830,7 @@ module Compiler end elsif sub_schema[key] # Property of a Pokémon if !current_pkmn - raise _INTL("Pokémon hasn't been defined yet!\r\n{1}", FileLineData.linereport) + raise _INTL("Pokémon hasn't been defined yet!\n{1}", FileLineData.linereport) end current_pkmn[sub_schema[key][0]] = get_csv_record($~[2], sub_schema[key]) end @@ -843,18 +857,18 @@ module Compiler hash[:version] = hash[:id][2] # Ensure the trainer has at least one Pokémon if hash[:pokemon].empty? - raise _INTL("Trainer with ID {1} has no Pokémon.\r\n{2}", hash[:id], FileLineData.linereport) + raise _INTL("Trainer with ID {1} has no Pokémon.\n{2}", hash[:id], FileLineData.linereport) end max_level = GameData::GrowthRate.max_level hash[:pokemon].each do |pkmn| # Ensure valid level if pkmn[:level] > max_level - raise _INTL("Invalid Pokémon level {1} (must be 1-{2}).\r\n{3}", + raise _INTL("Invalid Pokémon level {1} (must be 1-{2}).\n{3}", pkmn[:level], max_level, FileLineData.linereport) end # Ensure valid name length if pkmn[:real_name] && pkmn[:real_name].length > Pokemon::MAX_NAME_SIZE - raise _INTL("Invalid Pokémon nickname: {1} (must be 1-{2} characters).\r\n{3}", + raise _INTL("Invalid Pokémon nickname: {1} (must be 1-{2} characters).\n{3}", pkmn[:real_name], Pokemon::MAX_NAME_SIZE, FileLineData.linereport) end # Ensure no duplicate moves @@ -866,7 +880,7 @@ module Compiler next if s.pbs_order < 0 iv_hash[s.id] = pkmn[:iv][s.pbs_order] || pkmn[:iv][0] if iv_hash[s.id] > Pokemon::IV_STAT_LIMIT - raise _INTL("Invalid IV: {1} (must be 0-{2}).\r\n{3}", + raise _INTL("Invalid IV: {1} (must be 0-{2}).\n{3}", iv_hash[s.id], Pokemon::IV_STAT_LIMIT, FileLineData.linereport) end end @@ -881,26 +895,26 @@ module Compiler ev_hash[s.id] = pkmn[:ev][s.pbs_order] || pkmn[:ev][0] ev_total += ev_hash[s.id] if ev_hash[s.id] > Pokemon::EV_STAT_LIMIT - raise _INTL("Invalid EV: {1} (must be 0-{2}).\r\n{3}", + raise _INTL("Invalid EV: {1} (must be 0-{2}).\n{3}", ev_hash[s.id], Pokemon::EV_STAT_LIMIT, FileLineData.linereport) end end pkmn[:ev] = ev_hash if ev_total > Pokemon::EV_LIMIT - raise _INTL("Invalid EV set (must sum to {1} or less).\r\n{2}", + raise _INTL("Invalid EV set (must sum to {1} or less).\n{2}", Pokemon::EV_LIMIT, FileLineData.linereport) end end # Ensure valid happiness if pkmn[:happiness] if pkmn[:happiness] > 255 - raise _INTL("Bad happiness: {1} (must be 0-255).\r\n{2}", pkmn[:happiness], FileLineData.linereport) + raise _INTL("Bad happiness: {1} (must be 0-255).\n{2}", pkmn[:happiness], FileLineData.linereport) end end # Ensure valid Poké Ball if pkmn[:poke_ball] if !GameData::Item.get(pkmn[:poke_ball]).is_poke_ball? - raise _INTL("Value {1} isn't a defined Poké Ball.\r\n{2}", pkmn[:poke_ball], FileLineData.linereport) + raise _INTL("Value {1} isn't a defined Poké Ball.\n{2}", pkmn[:poke_ball], FileLineData.linereport) end end end @@ -965,10 +979,10 @@ module Compiler rsection[schema[0]] = record end if !rsection[0] - raise _INTL("No trainer data file given in section {1}.\r\n{2}", name, FileLineData.linereport) + raise _INTL("No trainer data file given in section {1}.\n{2}", name, FileLineData.linereport) end if !rsection[1] - raise _INTL("No trainer data file given in section {1}.\r\n{2}", name, FileLineData.linereport) + raise _INTL("No trainer data file given in section {1}.\n{2}", name, FileLineData.linereport) end rsection[3] = rsection[0] rsection[4] = rsection[1] @@ -1097,12 +1111,12 @@ module Compiler if data_hash[:id] == 0 validate_compiled_global_metadata(data_hash) if GameData::Metadata.exists?(data_hash[:id]) - raise _INTL("Global metadata ID '{1}' is used twice.\r\n{2}", data_hash[:id], FileLineData.linereport) + raise _INTL("Global metadata ID '{1}' is used twice.\n{2}", data_hash[:id], FileLineData.linereport) end else validate_compiled_player_metadata(data_hash) if GameData::PlayerMetadata.exists?(data_hash[:id]) - raise _INTL("Player metadata ID '{1}' is used twice.\r\n{2}", data_hash[:id], FileLineData.linereport) + raise _INTL("Player metadata ID '{1}' is used twice.\n{2}", data_hash[:id], FileLineData.linereport) end end # Add section's data to records @@ -1123,7 +1137,7 @@ module Compiler def validate_compiled_global_metadata(hash) if hash[:home].nil? - raise _INTL("The entry 'Home' is required in metadata.txt section 0.\r\n{1}", FileLineData.linereport) + raise _INTL("The entry 'Home' is required in metadata.txt section 0.\n{1}", FileLineData.linereport) end end @@ -1134,11 +1148,11 @@ module Compiler def validate_all_compiled_metadata # Ensure global metadata is defined if !GameData::Metadata.exists?(0) - raise _INTL("Global metadata is not defined in metadata.txt but should be.\r\n{1}", FileLineData.linereport) + raise _INTL("Global metadata is not defined in metadata.txt but should be.\n{1}", FileLineData.linereport) end # Ensure player character 1's metadata is defined if !GameData::PlayerMetadata.exists?(1) - raise _INTL("Metadata for player character 1 is not defined in metadata.txt but should be.\r\n{1}", FileLineData.linereport) + raise _INTL("Metadata for player character 1 is not defined in metadata.txt but should be.\n{1}", FileLineData.linereport) end # Get storage creator's name for translating storage_creator = [GameData::Metadata.get.real_storage_creator] @@ -1157,7 +1171,7 @@ module Compiler def validate_compiled_map_metadata(hash) # Give the map its RMXP map name if it doesn't define its own if nil_or_empty?(hash[:real_name]) - hash[:real_name] = pbLoadMapInfos[id].name + hash[:real_name] = pbLoadMapInfos[hash[:id]].name end end @@ -1202,7 +1216,7 @@ module Compiler hash[:id] = sprintf("%s_%d", hash[:area].to_s, hash[:version]).to_sym end if GameData::DungeonParameters.exists?(hash[:id]) - raise _INTL("Version {1} of dungeon area {2} is defined twice.\r\n{3}", hash[:version], hash[:area], FileLineData.linereport) + raise _INTL("Version {1} of dungeon area {2} is defined twice.\n{3}", hash[:version], hash[:area], FileLineData.linereport) end end diff --git a/mkxp.json b/mkxp.json index dabfba40a..eefccdc76 100644 --- a/mkxp.json +++ b/mkxp.json @@ -72,7 +72,7 @@ // Sync screen redraws to the monitor refresh rate // (default: disabled) // - // "vsync": false, + "vsync": true, // Specify the window width on startup. If set to 0,