From 05bb3f0d767c25a9502675a545737c74c3e78752 Mon Sep 17 00:00:00 2001 From: chardub Date: Sat, 19 Apr 2025 13:05:42 -0400 Subject: [PATCH] Updates tilemap renderer for extra autotiles --- Data/Actors.rxdata | Bin 1574 -> 1574 bytes Data/Animations.rxdata | Bin 20657 -> 20657 bytes Data/Armors.rxdata | Bin 222 -> 222 bytes Data/CommonEvents.rxdata | Bin 161100 -> 161100 bytes Data/Enemies.rxdata | Bin 541 -> 541 bytes Data/Items.rxdata | Bin 428 -> 428 bytes Data/Map528.rxdata | Bin 34085 -> 35425 bytes Data/MapInfos.rxdata | Bin 39148 -> 39148 bytes Data/Scripts/004_Game classes/004_Game_Map.rb | 4 + Data/Scripts/005_Sprites/007_Spriteset_Map.rb | 11 +- .../006_Map renderer/001_TilemapRenderer.rb | 142 ++++++++---- .../006_Map renderer/002_TilesetWrapper.rb | 35 +-- .../006_Map renderer/003_AutotileExpander.rb | 21 +- .../006_Map renderer/004_TileDrawingHelper.rb | 204 ++++++++++-------- Data/Skills.rxdata | Bin 377 -> 377 bytes Data/States.rxdata | Bin 431 -> 431 bytes Data/System.rxdata | Bin 31839 -> 31839 bytes Data/Tilesets.rxdata | Bin 410304 -> 410304 bytes Data/Weapons.rxdata | Bin 245 -> 245 bytes 19 files changed, 258 insertions(+), 159 deletions(-) diff --git a/Data/Actors.rxdata b/Data/Actors.rxdata index 7967a5432e745ce89c252788128efc799d8cd787..41edc8e26959a1891c0cc015aaa682e411768576 100644 GIT binary patch delta 322 zcmYk1%?`mp5XT)v1VPmk@B}TVJ9+w&^6>t!x){@(P~9-2-_StE0HhWajt( zxDW1w+jKhuw0U8dlJ?XRA&?Y=~Z zcu`i2Sud6;RjbGG*}jILs)HnxYIIZ>ntRRKbHSQJNHmt^d+9WIRO9~fjqb3d@`uHY yeT_*qRKCc#iJfkI4iP{~=G!W35=1N&{@oRzaP=2J*llqD delta 289 zcmX|+Jr06E5QQy_F-k;*%Ekmw09a9tjkS&SX2c~-vM#vbU*#3_67(L(yNJ6R>i53+ z-ZW0*y!?0IFHoHdwPtjrUNQoSCmxJ<0v}wxH~!Lv8^^McCij5fOGYviSW_Ws^*Mk0 z&nf5|5zFYlO(u{Etg1gSNL&-e26r`nz=|qbB^C<}W}A^|&ftJ`Ex2O&g}1|OcWt^e p$Vj4Kf?v6yecr})rCu-u?e-weQDItlSF9s6j(O+MPj`}7OMXQCVXpuH diff --git a/Data/Animations.rxdata b/Data/Animations.rxdata index a900929a9217ba316b022ab6026c9696aabff19a..71336e1f0d6f10bbf583f9918ae5826479ed9de9 100644 GIT binary patch delta 455 zcmY*VOG^S#6!wn8^-=2hcG7I51i{y;O_QPvA&^1}S|o&q5tmQ`m0ARCqLqkrplwOe zIyr5kRS^AyenH!67X+bo$8qECoR9BuzBA~PL7&`L1(!L;YK*SfaxGS8je};{fK6dU zC^M-NpO3{aA~Lfo!9IP(wCR(8V%au2m<8LGZzC-mR0p%-k?lvIY-TKJNKc}U&tlrU z&gC{PS1cKL^ab$EH{ytWjO4*1dod~71(7)>oRgprFN0Zu3-aI%dw7(Dv2aa*p7O^R zCw3zVp5@|MCLmcABw2*t#VS;mKA;rcCw=BZ3uRvZqQDVc1Wi<$m0vPCmk3uLlyE@yeiI60H; z7_&eo$7VhDcZ@8VoYwr4FUUGhj^z~HT*mo@nJtscnm?Lha{=!UCWtof&3OX5S=cgp zz~cI%zKoL_#6p2a@NT{$_MZ``+i9|-qzF)eZ?ldhKNC>ac5;oh7*K$J^F(QTCYDSA zuqC0JHRY0-*fIry260R_)U%&_R$<@fenoAj$roH4C;wMY1ZokQ9Ix`0B~uvcEPoY# zMuyD`RgVBo5dn%dh&fJPrXjKUkVY#|L=>#bX>zBw@a6^D5{9ihq1dI><&#Wz3FYh{D@OJZ@ZDH~g+B-mTU);$o1JJ?A8)k$p*x7*LimMIOE zlyQgxvSq;R8pi-;prK2FiexvJxb{N>Np7-$clPEIk7-c8{AK}fMqpqnfHjHxO<>{z L$AO}?U?u|qUwwX? diff --git a/Data/Armors.rxdata b/Data/Armors.rxdata index 2249bec1430f39674cda6b4301670e5af5bda0ed..901f2bb2bb9184a8fe2804568d83dd6531df25a3 100644 GIT binary patch literal 222 zcmXwzy$-@K41_x%C`D?8P{qy@FlRCoD`M>sMUAPfHa|*I#N*>aGx=nHcjryn?XFHV z&&OSeTQDxPq6V@_`e}|-h&|w2@vOjTe6eVNdS|6o1~1Ec6*Z`VvgrUmP>)QXK+Va? zm{dYZ`WNK?K`jik3VOXoOkKg%8b3Luf|2ZEIjfVjkWb_+|5XB) FZNGu5Mj-$I literal 222 zcmYL@y$-@K41_x%C`D?8P{qy@FlRCoD`M>sMUAN}nja-8;_-255aZeR-QB9}HfJZA z`|T>kB^Vc4u?2i7Dnt!rll0>hSyW(^!BZg`px#-TRRu=lgZ~FmQ*tsUl~9uA%MN^? z9=}0qpns5Gh!%!P1)Y(IsheA#WM{Yrjqe|F%uXE9AWvGnC2-AJ?AaOnKt7SPysw6s GLMA_Fghn9% diff --git a/Data/CommonEvents.rxdata b/Data/CommonEvents.rxdata index e631808ba7b2740ce453c47f5ee1487df137122b..73af1ea9e14b6b64842b5a3e6913b5460db69c1a 100644 GIT binary patch literal 161100 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 literal 161100 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 diff --git a/Data/Enemies.rxdata b/Data/Enemies.rxdata index 004ee903d43ce9b12af462584bf5b7d3c088f468..be622f513a4092bfe4cd8545a48325fbbbe0276f 100644 GIT binary patch delta 319 zcmYk1O-chn5QUu>1{3i&i3^v42QVVSxG6k=H)tw$nH1B1boa#B37$ZS+uX@pcmWS! z_Y8`wYO3G&UcK#bJA9kIOaKjQjBL%7V97hx2xyJn4AJx8YqvUrXF_L9|38MMRarO& zE$N9lJq&8P$S9l0x77rqCk%}z;k;cW$v$XogX6(>kpo)S@lIZL1|z^FC+-l?YwP=* z4p}AS=Jow^evh$EJ}0oi7!`T3YAAX9JAeLrzN9vJ9RNqt{caCZvvR}5$Mp;zt&yDj m3Po#DT&CDivr<`GCPz}F$wcAN)SsW delta 318 zcmYk2OG*Pl5I{`~gQFPHCWV!=)gXrc#T}Z z1K4A$xGSpaz4~ki+riuUO9>%*?(gHUJW1#6>>GC3k|sX1E?G*z1^;r(#NED% zA)wdRXYnb_Fh)gQE*r`~teMyE)5nV1ME+ZPnvnxYyBFdZIFin(vp>tvJtH7RnoN`) kO&yy1@%rO(GwE%vh7f92s^bcA0Z-Oc+s*zS;t$!ENc?*)X#*9T?elZ* z$62|(cnE5?`FK<6ozdN?IoRNH>&&jfPqhT&$r+~LA2n4}s1-Q!ZPu9$qt3|NLfrrf zq`h%?U#JNj4^waz?)844657yV(sk5H$l=Wf=Y+!!Js-ATK}=-(=?sFkCX29KZXq`R zH0LmG%u#+!A&y#Wh$e{@7PT12bC&rvIP|Uf4Qe^0eQ7HSuhd{EY!{l=A$>hh#J_kT zwl$HQvJJ6!vjA*RHt;d=>O_6aa|t!EP-6C1pT7tEq{gR1&;?YOZKBv$E21SxyXTU+ OGl`5JD)@_7OT-_!gN?TU literal 428 zcmZ9IKTpFj5XCbf2(*M&C5#Mw0$?=Dv4Gf61ycvhI9KJQ_>b&MB)&bDwxo#7XWhN` zd+(&&oZSait>0gjdSi6AY6ZrVGfcrhXlkfX3$VfG-kGlsKhyBXzrckvUIww0gpy$0<4GC=+FzGhxB)eiT2iM?MZ{=A*u-0TTmth7mksUV{ z(^ZZ#UPJ8ud0m1---~fjt6iGszM=3!9hRa$gsyi;pHHQLi!8BiiPQ~5lOzobP7LHZ zi})PkFU<_H4RHiGV&@5a3D}{y@*(b@<{tN9g>%y9@14*&w8Uavf^>VTme63fiQ?F| RupNW8W6%l)lgRk7gdcsUjkN#( diff --git a/Data/Map528.rxdata b/Data/Map528.rxdata index dfb47b9990df09a10ca80257122730ca830daaba..b3cd7cdf80e527b6137578ce07a67bb88056481d 100644 GIT binary patch literal 35425 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 w^X=rb{j9zmx~MQiWMzr@ABdmF@Bjb+ literal 34085 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 diff --git a/Data/Scripts/004_Game classes/004_Game_Map.rb b/Data/Scripts/004_Game classes/004_Game_Map.rb index 7e483653e..cdcbb68a4 100644 --- a/Data/Scripts/004_Game classes/004_Game_Map.rb +++ b/Data/Scripts/004_Game classes/004_Game_Map.rb @@ -126,6 +126,10 @@ class Game_Map return @map.data; end + def tileset_id; + return @map.tileset_id; + end + def name ret = pbGetMessage(MessageTypes::MapNames, @map_id) ret.gsub!(/\\PN/, $Trainer.name) if $Trainer diff --git a/Data/Scripts/005_Sprites/007_Spriteset_Map.rb b/Data/Scripts/005_Sprites/007_Spriteset_Map.rb index 01259d508..d03e9fe47 100644 --- a/Data/Scripts/005_Sprites/007_Spriteset_Map.rb +++ b/Data/Scripts/005_Sprites/007_Spriteset_Map.rb @@ -47,7 +47,11 @@ class Spriteset_Map def initialize(map=nil) @map = (map) ? map : $game_map $scene.map_renderer.add_tileset(@map.tileset_name) - @map.autotile_names.each { |filename| $scene.map_renderer.add_autotile(filename) } + @map.autotile_names.each do |filename| + $scene.map_renderer.add_autotile(filename) + $scene.map_renderer.add_extra_autotiles(@map.tileset_id) + end + @panorama = AnimatedPlane.new(@@viewport0) @fog = AnimatedPlane.new(@@viewport1) @fog.z = 3000 @@ -77,7 +81,10 @@ class Spriteset_Map def dispose if $scene.is_a?(Scene_Map) $scene.map_renderer.remove_tileset(@map.tileset_name) - @map.autotile_names.each { |filename| $scene.map_renderer.remove_autotile(filename) } + @map.autotile_names.each do |filename| + $scene.map_renderer.remove_autotile(filename) + $scene.map_renderer.remove_extra_autotiles(@map.tileset_id) + end end @panorama.dispose @fog.dispose diff --git a/Data/Scripts/006_Map renderer/001_TilemapRenderer.rb b/Data/Scripts/006_Map renderer/001_TilemapRenderer.rb index c641c5a69..9cf3f2a01 100644 --- a/Data/Scripts/006_Map renderer/001_TilemapRenderer.rb +++ b/Data/Scripts/006_Map renderer/001_TilemapRenderer.rb @@ -15,6 +15,8 @@ class TilemapRenderer DISPLAY_TILE_HEIGHT = Game_Map::TILE_HEIGHT rescue 32 SOURCE_TILE_WIDTH = 32 SOURCE_TILE_HEIGHT = 32 + ZOOM_X = DISPLAY_TILE_WIDTH / SOURCE_TILE_WIDTH + ZOOM_Y = DISPLAY_TILE_HEIGHT / SOURCE_TILE_HEIGHT TILESET_TILES_PER_ROW = 8 AUTOTILES_COUNT = 8 # Counting the blank tile as an autotile TILES_PER_AUTOTILE = 48 @@ -23,6 +25,30 @@ class TilemapRenderer # seconds instead. AUTOTILE_FRAME_DURATION = 5 # In 1/20ths of a second + # Filenames of extra autotiles for each tileset. Each tileset's entry is an + # array containing two other arrays (you can leave either of those empty, but + # they must be defined): + # - The first sub-array is for large autotiles, i.e. ones with 48 different + # tile layouts. For example, "Brick path" and "Sea". + # - The second is for single tile autotiles. For example, "Flowers1" and + # "Waterfall" + # The top tiles of the tileset will instead use these autotiles. Large + # autotiles come first, in the same 8x6 layout as you see when you double- + # click on a real autotile in RMXP. After that are the single tile autotiles. + # Extra autotiles are only useful if the tiles are animated, because otherwise + # you just have some tiles which belong in the tileset instead. + + # Examples: + # 1 => [["Sand shore"], ["Flowers2"]], + # 2 => [[], ["Flowers2", "Waterfall", "Waterfall crest", "Waterfall bottom"]], + # 6 => [["Water rock", "Sea deep"], []] + + EXTRA_AUTOTILES = { + # 23 => { + # 384 => "flowers_pink", + # } + } + #============================================================================= # #============================================================================= @@ -34,6 +60,7 @@ class TilemapRenderer @bitmaps = {} @bitmap_wraps = {} # Whether each tileset is a mega texture and has multiple columns @load_counts = {} + @bridge = 0 @changed = true end @@ -105,7 +132,7 @@ class TilemapRenderer @frame_counts = {} # Number of frames in each autotile @frame_durations = {} # How long each frame lasts per autotile @current_frames = {} # Which frame each autotile is currently showing - @timer = 0.0 + @timer = 0.0#System.uptime end def []=(filename, value) @@ -151,7 +178,7 @@ class TilemapRenderer bitmap = @bitmaps[filename] @frame_counts[filename] = [bitmap.width / SOURCE_TILE_WIDTH, 1].max if bitmap.height > SOURCE_TILE_HEIGHT && @bitmap_wraps[filename] - @frame_counts[filename] /= 2 if @bitmap_wraps[filename] + @frame_counts[filename] /= 2 end end return @frame_counts[filename] @@ -162,9 +189,7 @@ class TilemapRenderer end def current_frame(filename) - if !@current_frames[filename] - set_current_frame(filename) - end + set_current_frame(filename) if !@current_frames[filename] return @current_frames[filename] end @@ -180,7 +205,6 @@ class TilemapRenderer def set_src_rect(tile, tile_id) return if nil_or_empty?(tile.filename) return if !@bitmaps[tile.filename] - return if tile_id < TILES_PER_AUTOTILE # Blank tile frame = current_frame(tile.filename) if @bitmaps[tile.filename].height == SOURCE_TILE_HEIGHT tile.src_rect.x = frame * SOURCE_TILE_WIDTH @@ -202,7 +226,7 @@ class TilemapRenderer super @timer += Graphics.delta_s # Update the current frame for each autotile - @bitmaps.keys.each do |filename| + @bitmaps.each_key do |filename| next if !@bitmaps[filename] || @bitmaps[filename].disposed? old_frame = @current_frames[filename] set_current_frame(filename) @@ -216,6 +240,7 @@ class TilemapRenderer #============================================================================= class TileSprite < Sprite attr_accessor :filename + attr_accessor :tile_id attr_accessor :is_autotile attr_accessor :animated attr_accessor :priority @@ -223,10 +248,13 @@ class TilemapRenderer attr_accessor :bridge attr_accessor :need_refresh - def set_bitmap(filename, autotile, animated, priority, bitmap) + def set_bitmap(filename, tile_id, autotile, animated, priority, bitmap) self.bitmap = bitmap - self.src_rect = Rect.new(0, 0, DISPLAY_TILE_WIDTH, DISPLAY_TILE_HEIGHT) + self.src_rect = Rect.new(0, 0, SOURCE_TILE_WIDTH, SOURCE_TILE_HEIGHT) + self.zoom_x = ZOOM_X + self.zoom_y = ZOOM_Y @filename = filename + @tile_id = tile_id @is_autotile = autotile @animated = animated @priority = priority @@ -237,9 +265,8 @@ class TilemapRenderer end end - #============================================================================= - # - #============================================================================= + #----------------------------------------------------------------------------- + def initialize(viewport) @tilesets = TilesetBitmaps.new @autotiles = AutotileBitmaps.new @@ -260,7 +287,7 @@ class TilemapRenderer @tiles_horizontal_count.times do |i| @tiles[i] = [] @tiles_vertical_count.times do |j| - @tiles[i][j] = Array.new(3) { TileSprite.new(@viewport) } + @tiles[i][j] = Array.new(3) { TileSprite.new(@viewport) } end end @current_map_id = 0 @@ -297,7 +324,7 @@ class TilemapRenderer return @disposed end - #============================================================================= + #----------------------------------------------------------------------------- def add_tileset(filename) @tilesets.add(filename) @@ -315,28 +342,60 @@ class TilemapRenderer @autotiles.remove(filename) end - #============================================================================= + def add_extra_autotiles(tileset_id) + return if !EXTRA_AUTOTILES[tileset_id] + EXTRA_AUTOTILES[tileset_id].each do |arr| + arr.each { |filename| add_autotile(filename) } + end + end + + def remove_extra_autotiles(tileset_id) + return if !EXTRA_AUTOTILES[tileset_id] + EXTRA_AUTOTILES[tileset_id].each do |arr| + arr.each { |filename| remove_autotile(filename) } + end + end + + #----------------------------------------------------------------------------- def refresh @need_refresh = true end def refresh_tile_bitmap(tile, map, tile_id) + tile.tile_id = tile_id if tile_id < TILES_PER_AUTOTILE - tile.set_bitmap("", false, false, 0, nil) + tile.set_bitmap("", tile_id, false, false, 0, nil) tile.shows_reflection = false tile.bridge = false else terrain_tag = map.terrain_tags[tile_id] || 0 terrain_tag_data = GameData::TerrainTag.try_get(terrain_tag) priority = map.priorities[tile_id] || 0 - if tile_id < TILESET_START_ID - filename = map.autotile_names[tile_id / TILES_PER_AUTOTILE - 1] - tile.set_bitmap(filename, true, @autotiles.animated?(filename), - priority, @autotiles[filename]) + single_autotile_start_id = TILESET_START_ID + true_tileset_start_id = TILESET_START_ID + extra_autotile_arrays = EXTRA_AUTOTILES[map.tileset_id] + if extra_autotile_arrays + large_autotile_count = extra_autotile_arrays[0].length + single_autotile_count = extra_autotile_arrays[1].length + single_autotile_start_id += large_autotile_count * TILES_PER_AUTOTILE + true_tileset_start_id += large_autotile_count * TILES_PER_AUTOTILE + true_tileset_start_id += single_autotile_count + end + if tile_id < true_tileset_start_id + filename = "" + if tile_id < TILESET_START_ID # Real autotiles + filename = map.autotile_names[(tile_id / TILES_PER_AUTOTILE) - 1] + elsif tile_id < single_autotile_start_id # Large extra autotiles + filename = extra_autotile_arrays[0][(tile_id - TILESET_START_ID) / TILES_PER_AUTOTILE] + else # Single extra autotiles + filename = extra_autotile_arrays[1][tile_id - single_autotile_start_id] + end + tile.set_bitmap(filename, tile_id, true, @autotiles.animated?(filename), + priority, @autotiles[filename]) else filename = map.tileset_name - tile.set_bitmap(filename, false, false, priority, @tilesets[filename]) + tile.set_bitmap(filename, tile_id, false, false, priority, @tilesets[filename]) end tile.shows_reflection = terrain_tag_data&.shows_reflections tile.bridge = terrain_tag_data&.bridge @@ -345,7 +404,7 @@ class TilemapRenderer end def refresh_tile_src_rect(tile, tile_id) - if tile_id < TILESET_START_ID + if tile.is_autotile @autotiles.set_src_rect(tile, tile_id) else @tilesets.set_src_rect(tile, tile_id) @@ -360,8 +419,8 @@ class TilemapRenderer # x and y are the positions of tile within @tiles, not a map x/y def refresh_tile_coordinates(tile, x, y) - tile.x = x * DISPLAY_TILE_WIDTH - @pixel_offset_x - tile.y = y * DISPLAY_TILE_HEIGHT - @pixel_offset_y + tile.x = (x * DISPLAY_TILE_WIDTH) - @pixel_offset_x + tile.y = (y * DISPLAY_TILE_HEIGHT) - @pixel_offset_y end def refresh_tile_z(tile, map, y, layer, tile_id) @@ -382,7 +441,7 @@ class TilemapRenderer tile.need_refresh = false end - #============================================================================= + #----------------------------------------------------------------------------- def check_if_screen_moved ret = false @@ -391,20 +450,21 @@ class TilemapRenderer if MapFactoryHelper.hasConnections?(@current_map_id) offsets = $MapFactory.getRelativePos(@current_map_id, 0, 0, $game_map.map_id, 0, 0) if offsets - @tile_offset_x += offsets[0] - @tile_offset_y += offsets[1] + @tile_offset_x -= offsets[0] + @tile_offset_y -= offsets[1] else ret = true # Need a full refresh end + else + ret = true end @current_map_id = $game_map.map_id - ret = true end # Check for tile movement current_map_display_x = ($game_map.display_x.to_f / Game_Map::X_SUBPIXELS).round current_map_display_y = ($game_map.display_y.to_f / Game_Map::Y_SUBPIXELS).round - new_tile_offset_x = current_map_display_x / DISPLAY_TILE_WIDTH - new_tile_offset_y = current_map_display_y / DISPLAY_TILE_HEIGHT + new_tile_offset_x = (current_map_display_x / SOURCE_TILE_WIDTH) * ZOOM_X + new_tile_offset_y = (current_map_display_y / SOURCE_TILE_HEIGHT) * ZOOM_Y if new_tile_offset_x != @tile_offset_x if new_tile_offset_x > @tile_offset_x # Take tile stacks off the right and insert them at the beginning (left) @@ -453,8 +513,8 @@ class TilemapRenderer @tile_offset_y = new_tile_offset_y end # Check for pixel movement - new_pixel_offset_x = current_map_display_x % SOURCE_TILE_WIDTH - new_pixel_offset_y = current_map_display_y % SOURCE_TILE_HEIGHT + new_pixel_offset_x = (current_map_display_x % SOURCE_TILE_WIDTH) * ZOOM_X + new_pixel_offset_y = (current_map_display_y % SOURCE_TILE_HEIGHT) * ZOOM_Y if new_pixel_offset_x != @pixel_offset_x @screen_moved = true @pixel_offset_x = new_pixel_offset_x @@ -467,7 +527,7 @@ class TilemapRenderer return ret end - #============================================================================= + #----------------------------------------------------------------------------- def update # Update tone @@ -483,7 +543,7 @@ class TilemapRenderer if @old_color != @color @tiles.each do |col| col.each do |coord| - coord.each { |tile| tile.color = @tone } + coord.each { |tile| tile.color = @color } end end @old_color = @color.clone @@ -500,6 +560,10 @@ class TilemapRenderer # Check whether the screen has moved since the last update @screen_moved = false @screen_moved_vertically = false + if $PokemonGlobal.bridge != @bridge + @bridge = $PokemonGlobal.bridge + @screen_moved_vertically = true # To update bridge tiles' z values + end do_full_refresh = true if check_if_screen_moved # Update all tile sprites visited = [] @@ -510,7 +574,9 @@ class TilemapRenderer $MapFactory.maps.each do |map| # Calculate x/y ranges of tile sprites that represent them map_display_x = (map.display_x.to_f / Game_Map::X_SUBPIXELS).round + map_display_x = ((map_display_x + (Graphics.width / 2)) * ZOOM_X) - (Graphics.width / 2) if ZOOM_X != 1 map_display_y = (map.display_y.to_f / Game_Map::Y_SUBPIXELS).round + map_display_y = ((map_display_y + (Graphics.height / 2)) * ZOOM_Y) - (Graphics.height / 2) if ZOOM_Y != 1 map_display_x_tile = map_display_x / DISPLAY_TILE_WIDTH map_display_y_tile = map_display_y / DISPLAY_TILE_HEIGHT start_x = [-map_display_x_tile, 0].max @@ -521,13 +587,13 @@ class TilemapRenderer end_y = [end_y, map.height - map_display_y_tile - 1].min next if start_x > end_x || start_y > end_y || end_x < 0 || end_y < 0 # Update all tile sprites representing this map - for i in start_x..end_x + (start_x..end_x).each do |i| tile_x = i + map_display_x_tile - for j in start_y..end_y + (start_y..end_y).each do |j| tile_y = j + map_display_y_tile @tiles[i][j].each_with_index do |tile, layer| tile_id = map.data[tile_x, tile_y, layer] - if do_full_refresh || tile.need_refresh + if do_full_refresh || tile.need_refresh || tile.tile_id != tile_id refresh_tile(tile, i, j, map, layer, tile_id) else refresh_tile_frame(tile, tile_id) if tile.animated && @autotiles.changed @@ -547,7 +613,7 @@ class TilemapRenderer col.each_with_index do |coord, j| next if visited[i][j] coord.each do |tile| - tile.set_bitmap("", false, false, 0, nil) + tile.set_bitmap("", 0, false, false, 0, nil) tile.shows_reflection = false tile.bridge = false end diff --git a/Data/Scripts/006_Map renderer/002_TilesetWrapper.rb b/Data/Scripts/006_Map renderer/002_TilesetWrapper.rb index 76727a337..8873ccfbc 100644 --- a/Data/Scripts/006_Map renderer/002_TilesetWrapper.rb +++ b/Data/Scripts/006_Map renderer/002_TilesetWrapper.rb @@ -1,13 +1,13 @@ -#======================================================================= -# This module is a little fix that works around PC hardware limitations. -# Since Essentials isn't working with software rendering anymore, it now -# has to deal with the limits of the GPU. For the most part this is no -# big deal, but people do have some really big tilesets. +#=============================================================================== +# This module is a little fix that works around PC hardware limitations. Since +# Essentials isn't working with software rendering anymore, it now has to deal +# with the limits of the GPU. For the most part this is no big deal, but people +# do have some really big tilesets. # -# The fix is simple enough: If your tileset is too big, a new -# bitmap will be constructed with all the excess pixels sent to the -# image's right side. This basically means that you now have a limit -# far higher than you should ever actually need. +# The fix is simple enough: If your tileset is too big, a new bitmap will be +# constructed with all the excess pixels sent to the image's right side. This +# basically means that you now have a limit far higher than you should ever +# actually need. # # Hardware limit -> max tileset length: # 1024px -> 4096px @@ -15,15 +15,13 @@ # 4096px -> 65536px (enough to load pretty much any tileset) # 8192px -> 262144px # 16384px -> 1048576px (what most people have at this point) - -# ~Roza/Zoroark -#======================================================================= +#=============================================================================== class TilemapRenderer module TilesetWrapper TILESET_WIDTH = SOURCE_TILE_WIDTH * TILESET_TILES_PER_ROW # Looks useless, but covers weird numbers given to mkxp.json or a funky driver MAX_TEX_SIZE = (Bitmap.max_size / 1024) * 1024 - MAX_TEX_SIZE_BOOSTED = MAX_TEX_SIZE**2 / TILESET_WIDTH + MAX_TEX_SIZE_BOOSTED = (MAX_TEX_SIZE**2) / TILESET_WIDTH module_function @@ -37,6 +35,7 @@ class TilemapRenderer end bmp = Bitmap.new(TILESET_WIDTH * columns, MAX_TEX_SIZE) remainder = height % MAX_TEX_SIZE + remainder = MAX_TEX_SIZE if remainder == 0 columns.times do |col| srcrect = Rect.new(0, col * MAX_TEX_SIZE, width, (col + 1 == columns) ? remainder : MAX_TEX_SIZE) bmp.blt(col * TILESET_WIDTH, 0, originalbmp, srcrect) @@ -49,13 +48,15 @@ class TilemapRenderer def getWrappedRect(src_rect) ret = Rect.new(0, 0, 0, 0) col = (src_rect.y / MAX_TEX_SIZE.to_f).floor - ret.x = col * TILESET_WIDTH + src_rect.x.clamp(0, TILESET_WIDTH) + ret.x = (col * TILESET_WIDTH) + src_rect.x.clamp(0, TILESET_WIDTH) ret.y = src_rect.y % MAX_TEX_SIZE ret.width = src_rect.width.clamp(0, TILESET_WIDTH - src_rect.x) ret.height = src_rect.height.clamp(0, MAX_TEX_SIZE) return ret end + #--------------------------------------------------------------------------- + private def blitWrappedPixels(destX, destY, dest, src, srcrect) @@ -67,11 +68,11 @@ class TilemapRenderer merge = (srcrect.y % MAX_TEX_SIZE) > ((srcrect.y + srcrect.height) % MAX_TEX_SIZE) srcrect_mod = getWrappedRect(srcrect) if merge - # FIXME won't work on heights longer than two columns, but nobody should need + # FIXME: won't work on heights longer than two columns, but nobody should need # more than 32k pixels high at once anyway side = { - :a => MAX_TEX_SIZE - srcrect_mod.y, - :b => srcrect_mod.height - MAX_TEX_SIZE + srcrect_mod.y + :a => MAX_TEX_SIZE - srcrect_mod.y, + :b => srcrect_mod.height - MAX_TEX_SIZE + srcrect_mod.y } dest.blt(destX, destY, src, Rect.new(srcrect_mod.x, srcrect_mod.y, srcrect_mod.width, side[:a])) dest.blt(destX, destY + side[:a], src, Rect.new(srcrect_mod.x + TILESET_WIDTH, 0, srcrect_mod.width, side[:b])) diff --git a/Data/Scripts/006_Map renderer/003_AutotileExpander.rb b/Data/Scripts/006_Map renderer/003_AutotileExpander.rb index 26ded25af..2b0468a2b 100644 --- a/Data/Scripts/006_Map renderer/003_AutotileExpander.rb +++ b/Data/Scripts/006_Map renderer/003_AutotileExpander.rb @@ -1,6 +1,9 @@ +#=============================================================================== +# +#=============================================================================== class TilemapRenderer module AutotileExpander - MAX_TEXTURE_SIZE = (Bitmap.max_size / 1024) * 1024 + MAX_TEXTURE_SIZE = (Bitmap.max_size / 1024) * 1024 module_function @@ -32,20 +35,20 @@ class TilemapRenderer case id when 1 # Top left corner new_bitmap.blt(dest_x, dest_y, bitmap, - Rect.new(frame * SOURCE_TILE_WIDTH * 3, SOURCE_TILE_HEIGHT * 4, - SOURCE_TILE_WIDTH, SOURCE_TILE_HEIGHT)) + Rect.new(frame * SOURCE_TILE_WIDTH * 3, SOURCE_TILE_HEIGHT * 4, + SOURCE_TILE_WIDTH, SOURCE_TILE_HEIGHT)) when 2 # Top right corner new_bitmap.blt(dest_x, dest_y, bitmap, - Rect.new(SOURCE_TILE_WIDTH + frame * SOURCE_TILE_WIDTH * 3, SOURCE_TILE_HEIGHT * 4, - SOURCE_TILE_WIDTH, SOURCE_TILE_HEIGHT)) + Rect.new(SOURCE_TILE_WIDTH + (frame * SOURCE_TILE_WIDTH * 3), SOURCE_TILE_HEIGHT * 4, + SOURCE_TILE_WIDTH, SOURCE_TILE_HEIGHT)) when 4 # Bottom right corner new_bitmap.blt(dest_x, dest_y, bitmap, - Rect.new(SOURCE_TILE_WIDTH + frame * SOURCE_TILE_WIDTH * 3, SOURCE_TILE_HEIGHT * 5, - SOURCE_TILE_WIDTH, SOURCE_TILE_HEIGHT)) + Rect.new(SOURCE_TILE_WIDTH + (frame * SOURCE_TILE_WIDTH * 3), SOURCE_TILE_HEIGHT * 5, + SOURCE_TILE_WIDTH, SOURCE_TILE_HEIGHT)) when 8 # Bottom left corner new_bitmap.blt(dest_x, dest_y, bitmap, - Rect.new(frame * SOURCE_TILE_WIDTH * 3, SOURCE_TILE_HEIGHT * 5, - SOURCE_TILE_WIDTH, SOURCE_TILE_HEIGHT)) + Rect.new(frame * SOURCE_TILE_WIDTH * 3, SOURCE_TILE_HEIGHT * 5, + SOURCE_TILE_WIDTH, SOURCE_TILE_HEIGHT)) end next end diff --git a/Data/Scripts/006_Map renderer/004_TileDrawingHelper.rb b/Data/Scripts/006_Map renderer/004_TileDrawingHelper.rb index 91e51d0a2..cd5f94a44 100644 --- a/Data/Scripts/006_Map renderer/004_TileDrawingHelper.rb +++ b/Data/Scripts/006_Map renderer/004_TileDrawingHelper.rb @@ -1,20 +1,23 @@ +#=============================================================================== +# +#=============================================================================== class TileDrawingHelper attr_accessor :tileset attr_accessor :autotiles AUTOTILE_PATTERNS = [ - [ [27, 28, 33, 34], [ 5, 28, 33, 34], [27, 6, 33, 34], [ 5, 6, 33, 34], - [27, 28, 33, 12], [ 5, 28, 33, 12], [27, 6, 33, 12], [ 5, 6, 33, 12] ], - [ [27, 28, 11, 34], [ 5, 28, 11, 34], [27, 6, 11, 34], [ 5, 6, 11, 34], - [27, 28, 11, 12], [ 5, 28, 11, 12], [27, 6, 11, 12], [ 5, 6, 11, 12] ], - [ [25, 26, 31, 32], [25, 6, 31, 32], [25, 26, 31, 12], [25, 6, 31, 12], - [15, 16, 21, 22], [15, 16, 21, 12], [15, 16, 11, 22], [15, 16, 11, 12] ], - [ [29, 30, 35, 36], [29, 30, 11, 36], [ 5, 30, 35, 36], [ 5, 30, 11, 36], - [39, 40, 45, 46], [ 5, 40, 45, 46], [39, 6, 45, 46], [ 5, 6, 45, 46] ], - [ [25, 30, 31, 36], [15, 16, 45, 46], [13, 14, 19, 20], [13, 14, 19, 12], - [17, 18, 23, 24], [17, 18, 11, 24], [41, 42, 47, 48], [ 5, 42, 47, 48] ], - [ [37, 38, 43, 44], [37, 6, 43, 44], [13, 18, 19, 24], [13, 14, 43, 44], - [37, 42, 43, 48], [17, 18, 47, 48], [13, 18, 43, 48], [ 1, 2, 7, 8] ] + [[27, 28, 33, 34], [5, 28, 33, 34], [27, 6, 33, 34], [5, 6, 33, 34], + [27, 28, 33, 12], [5, 28, 33, 12], [27, 6, 33, 12], [5, 6, 33, 12]], + [[27, 28, 11, 34], [5, 28, 11, 34], [27, 6, 11, 34], [5, 6, 11, 34], + [27, 28, 11, 12], [5, 28, 11, 12], [27, 6, 11, 12], [5, 6, 11, 12]], + [[25, 26, 31, 32], [25, 6, 31, 32], [25, 26, 31, 12], [25, 6, 31, 12], + [15, 16, 21, 22], [15, 16, 21, 12], [15, 16, 11, 22], [15, 16, 11, 12]], + [[29, 30, 35, 36], [29, 30, 11, 36], [5, 30, 35, 36], [5, 30, 11, 36], + [39, 40, 45, 46], [5, 40, 45, 46], [39, 6, 45, 46], [5, 6, 45, 46]], + [[25, 30, 31, 36], [15, 16, 45, 46], [13, 14, 19, 20], [13, 14, 19, 12], + [17, 18, 23, 24], [17, 18, 11, 24], [41, 42, 47, 48], [5, 42, 47, 48]], + [[37, 38, 43, 44], [37, 6, 43, 44], [13, 18, 19, 24], [13, 14, 43, 44], + [37, 42, 43, 48], [17, 18, 47, 48], [13, 18, 43, 48], [1, 2, 7, 8]] ] # converts neighbors returned from tableNeighbors to tile indexes @@ -37,35 +40,52 @@ class TileDrawingHelper 36, 24, 36, 24, 21, 6, 21, 4, 36, 24, 36, 24, 20, 2, 20, 0 ] - def self.tableNeighbors(data,x,y) + def self.tableNeighbors(data, x, y, layer = nil) return 0 if x < 0 || x >= data.xsize return 0 if y < 0 || y >= data.ysize - t = data[x,y] + if layer.nil? + t = data[x, y] + else + t = data[x, y, layer] + end xp1 = [x + 1, data.xsize - 1].min yp1 = [y + 1, data.ysize - 1].min xm1 = [x - 1, 0].max ym1 = [y - 1, 0].max i = 0 - i |= 0x01 if data[ x, ym1] == t # N - i |= 0x02 if data[xp1, ym1] == t # NE - i |= 0x04 if data[xp1, y] == t # E - i |= 0x08 if data[xp1, yp1] == t # SE - i |= 0x10 if data[ x, yp1] == t # S - i |= 0x20 if data[xm1, yp1] == t # SW - i |= 0x40 if data[xm1, y] == t # W - i |= 0x80 if data[xm1, ym1] == t # NW + if layer.nil? + i |= 0x01 if data[ x, ym1] == t # N + i |= 0x02 if data[xp1, ym1] == t # NE + i |= 0x04 if data[xp1, y] == t # E + i |= 0x08 if data[xp1, yp1] == t # SE + i |= 0x10 if data[ x, yp1] == t # S + i |= 0x20 if data[xm1, yp1] == t # SW + i |= 0x40 if data[xm1, y] == t # W + i |= 0x80 if data[xm1, ym1] == t # NW + else + i |= 0x01 if data[ x, ym1, layer] == t # N + i |= 0x02 if data[xp1, ym1, layer] == t # NE + i |= 0x04 if data[xp1, y, layer] == t # E + i |= 0x08 if data[xp1, yp1, layer] == t # SE + i |= 0x10 if data[ x, yp1, layer] == t # S + i |= 0x20 if data[xm1, yp1, layer] == t # SW + i |= 0x40 if data[xm1, y, layer] == t # W + i |= 0x80 if data[xm1, ym1, layer] == t # NW + end return i end def self.fromTileset(tileset) - bmtileset=pbGetTileset(tileset.tileset_name) - bmautotiles=[] - for i in 0...7 + bmtileset = pbGetTileset(tileset.tileset_name) + bmautotiles = [] + 7.times do |i| bmautotiles.push(pbGetAutotile(tileset.autotile_names[i])) end - return self.new(bmtileset,bmautotiles) + return self.new(bmtileset, bmautotiles) end + #----------------------------------------------------------------------------- + def initialize(tileset, autotiles) if tileset.mega? @tileset = TilemapRenderer::TilesetWrapper.wrapTileset(tileset) @@ -79,17 +99,17 @@ class TileDrawingHelper end def dispose - @tileset.dispose if @tileset + @tileset&.dispose @tileset = nil - for i in 0...@autotiles.length - @autotiles[i].dispose + @autotiles.each_with_index do |autotile, i| + autotile.dispose @autotiles[i] = nil end end - def bltSmallAutotile(bitmap,x,y,cxTile,cyTile,id,frame) + def bltSmallAutotile(bitmap, x, y, cxTile, cyTile, id, frame) return if id >= 384 || frame < 0 || !@autotiles - autotile = @autotiles[id / 48 - 1] + autotile = @autotiles[(id / 48) - 1] return if !autotile || autotile.disposed? cxTile = [cxTile / 2, 1].max cyTile = [cyTile / 2, 1].max @@ -102,23 +122,23 @@ class TileDrawingHelper id %= 48 tiles = AUTOTILE_PATTERNS[id >> 3][id & 7] src = Rect.new(0, 0, 0, 0) - for i in 0...4 + 4.times do |i| tile_position = tiles[i] - 1 - src.set(tile_position % 6 * 16 + anim, tile_position / 6 * 16, 16, 16) - bitmap.stretch_blt(Rect.new(i % 2 * cxTile + x, i / 2 * cyTile + y, cxTile, cyTile), - autotile, src) + src.set(((tile_position % 6) * 16) + anim, (tile_position / 6) * 16, 16, 16) + bitmap.stretch_blt(Rect.new((i % 2 * cxTile) + x, (i / 2 * cyTile) + y, cxTile, cyTile), + autotile, src) end end end - def bltSmallRegularTile(bitmap,x,y,cxTile,cyTile,id) + def bltSmallRegularTile(bitmap, x, y, cxTile, cyTile, id) return if id < 384 || !@tileset || @tileset.disposed? - rect = Rect.new((id - 384) % 8 * 32, (id - 384) / 8 * 32, 32, 32) + rect = Rect.new(((id - 384) % 8) * 32, ((id - 384) / 8) * 32, 32, 32) rect = TilemapRenderer::TilesetWrapper.getWrappedRect(rect) if @shouldWrap bitmap.stretch_blt(Rect.new(x, y, cxTile, cyTile), @tileset, rect) end - def bltSmallTile(bitmap,x,y,cxTile,cyTile,id,frame=0) + def bltSmallTile(bitmap, x, y, cxTile, cyTile, id, frame = 0) if id >= 384 bltSmallRegularTile(bitmap, x, y, cxTile, cyTile, id) elsif id > 0 @@ -126,15 +146,15 @@ class TileDrawingHelper end end - def bltAutotile(bitmap,x,y,id,frame) + def bltAutotile(bitmap, x, y, id, frame) bltSmallAutotile(bitmap, x, y, 32, 32, id, frame) end - def bltRegularTile(bitmap,x,y,id) + def bltRegularTile(bitmap, x, y, id) bltSmallRegularTile(bitmap, x, y, 32, 32, id) end - def bltTile(bitmap,x,y,id,frame=0) + def bltTile(bitmap, x, y, id, frame = 0) if id >= 384 bltRegularTile(bitmap, x, y, id) elsif id > 0 @@ -147,82 +167,80 @@ 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) - black=Color.new(0,0,0) - tilesets=$data_tilesets - tileset=tilesets[map.tileset_id] + map = load_data(sprintf("Data/Map%03d.rxdata", mapid)) rescue nil + 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] return bitmap if !tileset - helper=TileDrawingHelper.fromTileset(tileset) - for y in 0...map.height - for x in 0...map.width - for z in 0..2 - id=map.data[x,y,z] - id=0 if !id - helper.bltSmallTile(bitmap,x*4,y*4,4,4,id) + helper = TileDrawingHelper.fromTileset(tileset) + map.height.times do |y| + map.width.times do |x| + 3.times do |z| + id = map.data[x, y, z] + id = 0 if !id + helper.bltSmallTile(bitmap, x * 4, y * 4, 4, 4, id) end end end - bitmap.fill_rect(0,0,bitmap.width,1,black) - bitmap.fill_rect(0,bitmap.height-1,bitmap.width,1,black) - bitmap.fill_rect(0,0,1,bitmap.height,black) - bitmap.fill_rect(bitmap.width-1,0,1,bitmap.height,black) + bitmap.fill_rect(0, 0, bitmap.width, 1, black) + bitmap.fill_rect(0, bitmap.height - 1, bitmap.width, 1, black) + bitmap.fill_rect(0, 0, 1, bitmap.height, black) + bitmap.fill_rect(bitmap.width - 1, 0, 1, bitmap.height, black) return bitmap end -def bltMinimapAutotile(dstBitmap,x,y,srcBitmap,id) - return if id>=48 || !srcBitmap || srcBitmap.disposed? - anim=0 - cxTile=3 - cyTile=3 - tiles = TileDrawingHelper::AUTOTILE_PATTERNS[id>>3][id&7] - src=Rect.new(0,0,0,0) - for i in 0...4 +def bltMinimapAutotile(dstBitmap, x, y, srcBitmap, id) + return if id >= 48 || !srcBitmap || srcBitmap.disposed? + anim = 0 + cxTile = 3 + cyTile = 3 + tiles = TileDrawingHelper::AUTOTILE_PATTERNS[id >> 3][id & 7] + src = Rect.new(0, 0, 0, 0) + 4.times do |i| tile_position = tiles[i] - 1 - src.set( - tile_position % 6 * cxTile + anim, - tile_position / 6 * cyTile, cxTile, cyTile) - dstBitmap.blt(i%2*cxTile+x,i/2*cyTile+y, srcBitmap, src) + src.set((tile_position % 6 * cxTile) + anim, + tile_position / 6 * cyTile, cxTile, cyTile) + dstBitmap.blt((i % 2 * cxTile) + x, (i / 2 * cyTile) + y, srcBitmap, src) end end -def passable?(passages,tile_id) - return false if tile_id == nil +def passable?(passages, tile_id) + return false if tile_id.nil? passage = passages[tile_id] - return (passage && passage<15) + return (passage && passage < 15) end # Unused def getPassabilityMinimap(mapid) - map = load_data(sprintf("Data/Map%03d.rxdata",mapid)) + map = load_data(sprintf("Data/Map%03d.rxdata", mapid)) tileset = $data_tilesets[map.tileset_id] - minimap = AnimatedBitmap.new("Graphics/Pictures/minimap_tiles") - ret = Bitmap.new(map.width*6,map.height*6) - passtable = Table.new(map.width,map.height) + minimap = AnimatedBitmap.new("Graphics/UI/minimap_tiles") + ret = Bitmap.new(map.width * 6, map.height * 6) + passtable = Table.new(map.width, map.height) passages = tileset.passages - for i in 0...map.width - for j in 0...map.height - pass=true - for z in [2,1,0] - if !passable?(passages,map.data[i,j,z]) - pass=false + map.width.times do |i| + map.height.times do |j| + pass = true + [2, 1, 0].each do |z| + if !passable?(passages, map.data[i, j, z]) + pass = false break end end - passtable[i,j]=pass ? 1 : 0 + passtable[i, j] = pass ? 1 : 0 end end - neighbors=TileDrawingHelper::NEIGHBORS_TO_AUTOTILE_INDEX - for i in 0...map.width - for j in 0...map.height - if passtable[i,j]==0 - nb=TileDrawingHelper.tableNeighbors(passtable,i,j) - tile=neighbors[nb] - bltMinimapAutotile(ret,i*6,j*6,minimap.bitmap,tile) - end + neighbors = TileDrawingHelper::NEIGHBORS_TO_AUTOTILE_INDEX + map.width.times do |i| + map.height.times do |j| + next if passtable[i, j] != 0 + nb = TileDrawingHelper.tableNeighbors(passtable, i, j) + tile = neighbors[nb] + bltMinimapAutotile(ret, i * 6, j * 6, minimap.bitmap, tile) end end - minimap.disposes + minimap.dispose return ret end diff --git a/Data/Skills.rxdata b/Data/Skills.rxdata index 61cba7ea20a63c0e9690c50c61f05185b5871497..a45219f5ef10c891f9d68fbf2dff723516dc2843 100644 GIT binary patch literal 377 zcmZXQJ5K{a41}*h;b4zMQIeK|UjUS*F%7f`M3rK-+H;7Ned%`Z;OAqOhlJ8u^7xw> zpS0W4>j;bIr$>O713PyK3ON+LV}=!)z}^&&;YM@M4Q$YJ7_-jB6w;Z>wh=u|M)VCV zkZlY)7*AIXoa4{Xq3>x|i5s-hd(qHDVp5q3%^TPIIYw(u7CWB78k0M6GUZT}9j0$& z0~hEijFKh7s@Aw4dyWt6sD%!v=tfWcdZ#3j!oJ}OCJwlR^UUm`gYR{86d y;yVqpIm11d|NprC&7R9pIZGjCJ8=5?mUy)&G_p{s z9e4^u(kYvaI$_>Vnq}{08%GpQLAKyKJQU^%*jkgsjuv8NzNnC7%BM1IA-aFaC3p;j z@L6q2_UEA^ej$goYGGtIc%;v#T9P&pDchrjZy}yNCox%$Sh{uiGaE+!#$L1=K!;+G x=K_B&@_3Ga1xLz)tU=l=TqNKjeU&dxWp zC-dFeV^GVN=O?9J3l_RpOX!0&x(vzlOq~OLqP$nobJ0l@%<2{#`yuN*ZRkv8HwmzO zRKX>DQwq9|TeSd>jvgjKE~yF{*kdV{bny1;O*N1$M{UqyM_Y9R(f+Y#|I5Ds3BtbP zg}MeGe4@;f#kaD12e}WeBq2+fNyilSl79sb#~dqv3C_@a{jH!yahIk>9HdFdb<}{E zm&9%1Fx_JV-GIqxad#v;hw>Z1p@e^#{Sh-BG1muXN5UQDPIF+xrvf)LR`?pwvy-a9 IYnje|0Q{Df%K!iX literal 431 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 Sxb86KrhIr0DV_E&b^ib-n$1uE diff --git a/Data/Weapons.rxdata b/Data/Weapons.rxdata index d9bd3526099d335d192e97c503f107f02c8aa2ea..c7ea19a7a791e601e24bbc538d8611eb1e1025b0 100644 GIT binary patch literal 245 zcmZ9Hy$-@K41_x%C?Ew8KM%kY0AnU^tcZo7LliXzSu{UNT#3ggRjCkc*4cOWc~n-D zgO|(eYxzqGeUbo!ufehcY|vuH>iedk`T0wC>gfa|j$fO> PR7VOOeKe=vRnGgMAO literal 245 zcmY+9y9&ZU5Jgjn#t5t8;{*HxwVY}?Td}c7u`Jn92D1;c8}Repn21_l=HA1ZQC?2= z4i=a53E)b~JG+GyD$7PicJ?4ya|Qz0M(OJ|q)?z$hISdukt=8AkP0-KZt1>3!?q1F zL={N}ie&~f^bJ?^MyWf0QNG`-v4j6j1ZsMIic?hak=9G3nhYhGp8KPE>{WA2#^Y4f Q6sm@O_eF9Q7-BQfUe5qdLI3~&