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,