Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #==============================================================================
- # PACOTE DE CORREÇÕES PARA RMVXACE DO YANFLY:
- # Pacote com algumas correções básicas para RMVXAce, tirando as modificações e
- # possibilidades de customização do script original. Essencial para corrigir
- # vários bugs do jogo já presentes na engine padrão do RGSS3;
- # Baseado no "Yanfly Engine Ace - Ace Core Engine v1.00 Versão Traduzida".
- #
- # Todos os créditos vão para:
- # - Yanfly (http://yanflychannel.wordpress.com/)
- # Tradução do cabeçalho para Português por:
- # - Tradutor (http://makercafe.blogspot.com/)
- # Edições e adaptações por:
- # - Rafael_Sol_Maker (http://www.condadobraveheart.com/)
- #
- #==============================================================================
- #==============================================================================
- # INSTRUÇÕES:
- # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
- # Para instalar este script, abra seu editor de scripts copie e cole este script
- # em um slot aberto abaixo de "Scripts Adicionais", mas acima de Main. Lembre-se
- # de salvar.
- #
- #==============================================================================
- # COMPATIBILIDADE:
- # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
- # Este script é feito estritamente para o RPG Maker VX Ace. É improvável que
- # seja executado com o RPG Maker VX sem que precise de ajustes.
- #
- #==============================================================================
- #==============================================================================
- # CONTEÚDOS DO SCRIPT:
- # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
- # Correção de Erro: Sobreposição da Animação
- # -----------------------------------------------------------------------------
- # - É o mesmo erro do VX. Quando uma animação de tela inteira é reproduzida
- # contra um grupo de inimigos, o bitmap da animação é na verdade reproduzido
- # várias vezes, causando uma extrema sobreposição quando há muitos inimigos na
- # tela. Essa correção fará com que a animação se reproduza apenas uma vez.
- #
- # -----------------------------------------------------------------------------
- # Correção de Erro: Correção da Ordem do Turno da Batalha
- # -----------------------------------------------------------------------------
- # - Mesmo erro do VX. Para aqueles que usam o sistema de batalha padrão, uma vez
- # que um turno começou, a ordem de ação se configura e é inalterada durante o
- # restante do turno. Quaisquer alterações na AGI do combatente não serão feitas,
- # mesmo que o combatente receba um acréscimo ou decréscimo na AGI.
- # Essa correção faz com que a AGI seja atualizada corretamente a cada ação.
- #
- # -----------------------------------------------------------------------------
- # Correção de Erro: Correção da Sobreposição dos Medidores
- # -----------------------------------------------------------------------------
- # - Mesmo erro do VX. Quando algumas variáveis excedem determinados valores, os
- # medidores podem extrapolar a largura para a qual eles foram originalmente
- # projetados. Essa correção irá evitar que os medidores passem da largura
- # máxima. (N.E.: E ainda coloca uma borda em volta deles!)
- #
- # -----------------------------------------------------------------------------
- # Correção de Erro: Rolagem do Menu Segurando L e R
- # -----------------------------------------------------------------------------
- # - Antes, no VX, você podia navegar através de menus rapidamente pressionando
- # os botões L e R (Q e W no teclado). Essa correção recupera a capacidade de
- # percorrer os menus dessa forma.
- #
- # -----------------------------------------------------------------------------
- # Correção de Erro: Rolagem no Mapa, Se Menor que a Tela
- # -----------------------------------------------------------------------------
- # - Uma pequena correção que permita que mapas menores que a tela (17x13, na
- # resolução padrão) apresentem erros na hora do movimento da tela , o "scroll".
- # É útil principalmente para quem utiliza a resolução de 640x480, e faz mapas
- # do tamanho mínimo que o editor permite.
- #
- #==============================================================================
- #==============================================================================
- # ¦ BattleManager
- #==============================================================================
- module BattleManager
- #--------------------------------------------------------------------------
- # overwrite method: turn_start
- #--------------------------------------------------------------------------
- def self.turn_start
- @phase = :turn
- clear_actor
- $game_troop.increase_turn
- @performed_battlers = []
- make_action_orders
- end
- #--------------------------------------------------------------------------
- # overwrite method: next_subject
- #--------------------------------------------------------------------------
- def self.next_subject
- @performed_battlers = [] if @performed_battlers.nil?
- loop do
- @action_battlers -= @performed_battlers
- battler = @action_battlers.shift
- return nil unless battler
- next unless battler.index && battler.alive?
- return battler
- end
- end
- end # BattleManager
- #==============================================================================
- # ¦ Game_Battler
- #==============================================================================
- class Game_Battler < Game_BattlerBase
- #--------------------------------------------------------------------------
- # public instance variables
- #--------------------------------------------------------------------------
- attr_accessor :pseudo_ani_id
- #--------------------------------------------------------------------------
- # alias method: clear_sprite_effects
- #--------------------------------------------------------------------------
- alias game_battler_clear_sprite_effects_ace clear_sprite_effects
- def clear_sprite_effects
- game_battler_clear_sprite_effects_ace
- @pseudo_ani_id = 0
- end
- end # Game_Battler
- #==============================================================================
- # ¦ Game_Troop
- #==============================================================================
- class Game_Troop < Game_Unit
- #--------------------------------------------------------------------------
- # overwrite method: setup
- #--------------------------------------------------------------------------
- def setup(troop_id)
- clear
- @troop_id = troop_id
- @enemies = []
- troop.members.each do |member|
- next unless $data_enemies[member.enemy_id]
- enemy = Game_Enemy.new(@enemies.size, member.enemy_id)
- enemy.hide if member.hidden
- enemy.screen_x = member.x + (Graphics.width - 544)/2
- enemy.screen_y = member.y + (Graphics.height - 416)
- @enemies.push(enemy)
- end
- init_screen_tone
- make_unique_names
- end
- end # Game_Troop
- #==============================================================================
- # ¦ Game_Map
- #==============================================================================
- class Game_Map
- #--------------------------------------------------------------------------
- # overwrite method: scroll_down
- #--------------------------------------------------------------------------
- def scroll_down(distance)
- if loop_vertical?
- @display_y += distance
- @display_y %= @map.height * 256
- @parallax_y += distance
- else
- last_y = @display_y
- dh = Graphics.height > height * 32 ? height : (Graphics.height / 32)
- @display_y = [@display_y + distance, (height - dh) * 256].min
- @parallax_y += @display_y - last_y
- end
- end
- #--------------------------------------------------------------------------
- # overwrite method: scroll_right
- #--------------------------------------------------------------------------
- def scroll_right(distance)
- if loop_horizontal?
- @display_x += distance
- @display_x %= @map.width * 256
- @parallax_x += distance
- else
- last_x = @display_x
- dw = Graphics.width > width * 32 ? width : (Graphics.width / 32)
- @display_x = [@display_x + distance, (width - dw) * 256].min
- @parallax_x += @display_x - last_x
- end
- end
- end # Game_Map
- #==============================================================================
- # ¦ Game_Event
- #==============================================================================
- class Game_Event < Game_Character
- #--------------------------------------------------------------------------
- # overwrite method: near_the_screen?
- #--------------------------------------------------------------------------
- def near_the_screen?(dx = nil, dy = nil)
- dx = [Graphics.width, $game_map.width * 256].min/32 - 5 if dx.nil?
- dy = [Graphics.height, $game_map.height * 256].min/32 - 5 if dy.nil?
- ax = $game_map.adjust_x(@real_x) - Graphics.width / 2 / 32
- ay = $game_map.adjust_y(@real_y) - Graphics.height / 2 / 32
- ax >= -dx && ax <= dx && ay >= -dy && ay <= dy
- end
- end # Game_Event
- #==============================================================================
- # ¦ Sprite_Base
- #==============================================================================
- class Sprite_Base < Sprite
- #--------------------------------------------------------------------------
- # new method: start_pseudo_animation
- #--------------------------------------------------------------------------
- def start_pseudo_animation(animation, mirror = false)
- dispose_animation
- @animation = animation
- return if @animation.nil?
- @ani_mirror = mirror
- set_animation_rate
- @ani_duration = @animation.frame_max * @ani_rate + 1
- @ani_sprites = []
- end
- end # Sprite_Base
- #==============================================================================
- # ¦ Sprite_Battler
- #==============================================================================
- class Sprite_Battler < Sprite_Base
- #--------------------------------------------------------------------------
- # alias method: setup_new_animation
- #--------------------------------------------------------------------------
- alias sprite_battler_setup_new_animation_ace setup_new_animation
- def setup_new_animation
- sprite_battler_setup_new_animation_ace
- return if @battler.pseudo_ani_id <= 0
- animation = $data_animations[@battler.pseudo_ani_id]
- mirror = @battler.animation_mirror
- start_pseudo_animation(animation, mirror)
- @battler.pseudo_ani_id = 0
- end
- end # Sprite_Battler
- #==============================================================================
- # ¦ Spriteset_Map
- #==============================================================================
- class Spriteset_Map
- #--------------------------------------------------------------------------
- # overwrite method: create_viewports
- #--------------------------------------------------------------------------
- def create_viewports
- if Graphics.width > $game_map.width * 32 and !$game_map.loop_horizontal?
- dx = (Graphics.width - $game_map.width * 32) / 2
- else
- dx = 0
- end
- dw = [Graphics.width, $game_map.width * 32].min
- dw = Graphics.width if $game_map.loop_horizontal?
- if Graphics.height > $game_map.height * 32 and !$game_map.loop_vertical?
- dy = (Graphics.height - $game_map.height * 32) / 2
- else
- dy = 0
- end
- dh = [Graphics.height, $game_map.height * 32].min
- dh = Graphics.height if $game_map.loop_vertical?
- @viewport1 = Viewport.new(dx, dy, dw, dh)
- @viewport2 = Viewport.new(dx, dy, dw, dh)
- @viewport3 = Viewport.new(dx, dy, dw, dh)
- @viewport2.z = 50
- @viewport3.z = 100
- end
- end # Spriteset_Map
- #==============================================================================
- # ¦ Window_Base
- #==============================================================================
- class Window_Base < Window
- #--------------------------------------------------------------------------
- # overwrite method: draw_gauge
- #--------------------------------------------------------------------------
- def draw_gauge(dx, dy, dw, rate, color1, color2)
- dw -= 2
- fill_w = [(dw * rate).to_i, dw].min
- gauge_h = 6
- gauge_y = dy + line_height - 2 - gauge_h
- outline_colour = gauge_back_color
- outline_colour.alpha = translucent_alpha
- contents.fill_rect(dx, gauge_y - 1, dw + 2, gauge_h + 2, outline_colour)
- dx += 1
- contents.fill_rect(dx, gauge_y, dw, gauge_h, gauge_back_color)
- contents.gradient_fill_rect(dx, gauge_y, fill_w, gauge_h, color1, color2)
- end
- end # Window_Base
- #==============================================================================
- # ¦ Window_Selectable
- #==============================================================================
- class Window_Selectable < Window_Base
- #--------------------------------------------------------------------------
- # overwrite method: process_cursor_move
- #--------------------------------------------------------------------------
- def process_cursor_move
- return unless cursor_movable?
- last_index = @index
- cursor_down (Input.trigger?(:DOWN)) if Input.repeat?(:DOWN)
- cursor_up (Input.trigger?(:UP)) if Input.repeat?(:UP)
- cursor_right(Input.trigger?(:RIGHT)) if Input.repeat?(:RIGHT)
- cursor_left (Input.trigger?(:LEFT)) if Input.repeat?(:LEFT)
- cursor_pagedown if !handle?(:pagedown) && Input.repeat?(:R)
- cursor_pageup if !handle?(:pageup) && Input.repeat?(:L)
- Sound.play_cursor if @index != last_index
- end
- end # Window_Selectable
- #==============================================================================
- # ¦ Scene_Battle
- #==============================================================================
- class Scene_Battle < Scene_Base
- #--------------------------------------------------------------------------
- # overwrite method: show_normal_animation
- #--------------------------------------------------------------------------
- def show_normal_animation(targets, animation_id, mirror = false)
- animation = $data_animations[animation_id]
- return if animation.nil?
- ani_check = false
- targets.each do |target|
- if ani_check
- target.pseudo_ani_id = animation_id
- else
- target.animation_id = animation_id
- end
- target.animation_mirror = mirror
- abs_wait_short unless animation.to_screen?
- ani_check = true if animation.to_screen?
- end
- abs_wait_short if animation.to_screen?
- end
- end # Scene_Battle
- #==============================================================================
- #
- # FIM DO ARQUIVO
- #
- #==============================================================================
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement