Advertisement
Raizen

Akea Battle Damage Popup

May 3rd, 2014
374
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 9.07 KB | None | 0 0
  1. #=======================================================
  2. #        Akea Battle Damage Pop-up
  3. # Autor: Raizen
  4. # Comunidade: http://www.centrorpg.com/
  5. # Compatibilidade: RMVXAce
  6. #
  7. # Plug n' Play, basta colocar o script acima do main e configurar
  8. # abaixo, o script permite exibição de dano nos inimigos e no personagem.
  9. #=======================================================
  10. # =========================Não modificar==============================
  11. $included ||= Hash.new
  12. $included[:akea_battledamage] = true
  13. module Akea_Damage
  14. # =========================Não modificar==============================
  15.  
  16.  
  17. # Número de casas de dano e cura
  18. Max = 4
  19. # Espaçamento dos números(em pixels)
  20. Spacing = 15
  21.  
  22. # Correção da posição do dano em X
  23. Correct_X = -50
  24. # Correção da posição do dano em Y
  25. Correct_Y = -60
  26.  
  27. # Tempo em frames que o pop-up fica exposto
  28. Time = 15
  29.  
  30. # Tempo que leva para subir os números
  31. Up_Time = 20
  32.  
  33. # Travar a batalha enquanto é exibido o dano
  34. # (true - normalmente bom para quando não tem battlers dos personagens)
  35. # true = sim, false = não
  36. Lock_Anime = true
  37.  
  38.  
  39. # Imagens dos números, uma imagem contendo números de 0-9
  40. # As imagens devem estar na pasta Graphics/Akea
  41. Dmg_Image = 'Numbers' #Imagem de dano
  42. Heal_Image = 'Numbers_H' # Imagem de cura
  43. end
  44.  
  45. #==============================================================================
  46. #------------------------------------------------------------------------------
  47. #------------------------ A PARTIR DAQUI COMEÇA O SCRIPT!!  -------------------
  48. #------------------------------------------------------------------------------
  49. #==============================================================================
  50.  
  51.  
  52. #==============================================================================
  53. # ** Scene_Battle
  54. #------------------------------------------------------------------------------
  55. #  Esta classe executa o processamento da tela de batalha.
  56. #==============================================================================
  57.  
  58. class Scene_Battle < Scene_Base
  59. alias :akea_adp_start :start
  60. alias :akea_adp_update :update
  61. alias :adp_use_item :use_item
  62.   #--------------------------------------------------------------------------
  63.   # * Inicialização do processo
  64.   #--------------------------------------------------------------------------
  65.   def start
  66.     start_popup_damage_config
  67.     akea_adp_start
  68.   end
  69.   #--------------------------------------------------------------------------
  70.   # * Inicialização da configuração de imagens e variáveis
  71.   #--------------------------------------------------------------------------
  72.   def start_popup_damage_config
  73.     @adp_pics = Array.new
  74.     @adp_damage_pop = Array.new
  75.     @adp_count = 0
  76.     for n in 0...Akea_Damage::Max
  77.       @adp_pics[n] = Sprite.new
  78.       @adp_pics[n].bitmap = Cache.akea(Akea_Damage::Dmg_Image)
  79.       @adp_pics[n].z = 800
  80.       @adp_pics[n].opacity = 0
  81.     end
  82.     for n in Akea_Damage::Max...Akea_Damage::Max*2
  83.       @adp_pics[n] = Sprite.new
  84.       @adp_pics[n].bitmap = Cache.akea(Akea_Damage::Heal_Image)
  85.       @adp_pics[n].z = 800
  86.       @adp_pics[n].opacity = 0
  87.     end
  88.     @adp_pw = @adp_pics[0].bitmap.width/10
  89.     @adp_ph = @adp_pics[0].bitmap.height
  90.   end
  91.   #--------------------------------------------------------------------------
  92.   # * Atualização do Processo
  93.   #--------------------------------------------------------------------------
  94.   def update(*args, &block)
  95.     unless @adp_damage_pop.empty?
  96.       perform_damage_popup
  97.       if Akea_Damage::Lock_Anime
  98.         super
  99.         return
  100.       end
  101.     end
  102.     akea_adp_update(*args, &block)
  103.   end
  104.   #--------------------------------------------------------------------------
  105.   # * Inicializar dano
  106.   #--------------------------------------------------------------------------
  107.   def perform_damage_popup
  108.     @adp_count += 1
  109.     if @adp_count == 1
  110.       @adp_damage_pop.first[1] > 0 ? @dmg_count = 0 : @dmg_count = Akea_Damage::Max
  111.        @adp_damage_pop.first[1] =  @adp_damage_pop.first[1].abs
  112.       for n in @dmg_count...Akea_Damage::Max + @dmg_count
  113.         frame = @adp_damage_pop.first[1] % 10
  114.         if  @adp_damage_pop.first[1] == 0
  115.           @adp_pics[n].src_rect.set(@adp_pw * 11, 0, @adp_pw, @adp_ph)
  116.         else
  117.           @adp_pics[n].src_rect.set(@adp_pw * frame, 0, @adp_pw, @adp_ph)
  118.           @adp_pics[n].x = all_battle_members[@adp_damage_pop.first[0]].screen_x + Akea_Damage::Correct_X + (Akea_Damage::Max - (n- @dmg_count)) * Akea_Damage::Spacing
  119.           @adp_pics[n].y = (n - @dmg_count)*4 + all_battle_members[@adp_damage_pop.first[0]].screen_y + Akea_Damage::Correct_Y
  120.         end
  121.         @adp_damage_pop.first[1] /= 10
  122.       end
  123.     elsif @adp_count < Akea_Damage::Up_Time + 4
  124.       for n in @dmg_count...Akea_Damage::Max + @dmg_count
  125.         @adp_pics[n].opacity += 20
  126.         @adp_pics[n].y -= 2 if (@adp_count - (n - @dmg_count)*2 + Akea_Damage::Max) < Akea_Damage::Up_Time + 2
  127.       end
  128.     elsif @adp_count < Akea_Damage::Up_Time + 4 + Akea_Damage::Time
  129.  
  130.     elsif @adp_count < Akea_Damage::Up_Time + 20 + Akea_Damage::Time
  131.       for n in @dmg_count...Akea_Damage::Max + @dmg_count
  132.         @adp_pics[n].opacity -= 20
  133.         @adp_pics[n].y += 1
  134.       end
  135.     else
  136.       @adp_damage_pop.shift
  137.       @adp_count = 0
  138.     end
  139.   end
  140.   #--------------------------------------------------------------------------
  141.   # * Uso de habilidades/itens
  142.   #--------------------------------------------------------------------------
  143.   def use_item
  144.     adp_use_item
  145.     @adp_count = 0
  146.     all_battle_members.each {|member|
  147.     if member.hp_popup_call != 0 && member.use_sprite?
  148.       @adp_damage_pop << [member.index, member.hp_popup_call]
  149.       @adp_damage_pop.last[0] += $game_party.battle_members.size if member.enemy?
  150.     end
  151.     member.hp_popup_call = 0
  152.     }
  153.   end
  154. end
  155. #==============================================================================
  156. # ** Window_BattleLog
  157. #------------------------------------------------------------------------------
  158. #  Esta janela exibe o progresso da luta. Não exibe o quadro da
  159. # janela, é tratado como uma janela por conveniência.
  160. #==============================================================================
  161.  
  162. class Window_BattleLog < Window_Selectable
  163. alias :adp_display_hp_damage :display_hp_damage
  164.     #--------------------------------------------------------------------------
  165.   # * Exibição de dano no HP
  166.   #     target : alvo
  167.   #     item   : habilidade/item
  168.   #--------------------------------------------------------------------------
  169.   def display_hp_damage(target, item)
  170.     return if target.result.hp_damage == 0 && item && !item.damage.to_hp?
  171.     if target.actor? && !target.use_sprite?
  172.       adp_display_hp_damage(target, item)
  173.     else
  174.       if target.result.hp_damage > 0 && target.result.hp_drain == 0
  175.         target.perform_damage_effect
  176.       end
  177.       Sound.play_recovery if target.result.hp_damage < 0
  178.     end
  179.   end
  180. end
  181.  
  182. #==============================================================================
  183. # ** Game_Battler
  184. #------------------------------------------------------------------------------
  185. #  Esta classe gerencia os battlers. Controla a adição de sprites e ações
  186. # dos lutadores durante o combate.
  187. # É usada como a superclasse das classes Game_Enemy e Game_Actor.
  188. #==============================================================================
  189.  
  190. class Game_Battler < Game_BattlerBase
  191. alias :adp_execute_damage :execute_damage
  192. alias :adp_initialize :initialize
  193. attr_accessor   :hp_popup_call
  194.   #--------------------------------------------------------------------------
  195.   # * Inicialização do objeto
  196.   #--------------------------------------------------------------------------
  197.   def initialize(*args, &block)
  198.     @hp_popup_call = 0
  199.     adp_initialize(*args, &block)
  200.   end
  201.   #--------------------------------------------------------------------------
  202.   # * Processamento do dano
  203.   #     user : usuário
  204.   #--------------------------------------------------------------------------
  205.   def execute_damage(user)
  206.     @hp_popup_call = @result.hp_damage unless @result.hp_damage == 0
  207.     adp_execute_damage(user)
  208.   end
  209. end
  210.  
  211.  
  212. #==============================================================================
  213. # ** Cache
  214. #------------------------------------------------------------------------------
  215. #  Este modulo carrega cada gráfico, cria um objeto de Bitmap e retém ele.
  216. # Para acelerar o carregamento e preservar memória, este módulo matém o
  217. # objeto de Bitmap em uma Hash interna, permitindo que retorne objetos
  218. # pré-existentes quando mesmo Bitmap é requerido novamente.
  219. #==============================================================================
  220.  
  221.  
  222. module Cache
  223.   #--------------------------------------------------------------------------
  224.   # * Carregamento dos gráficos de animação
  225.   #     filename : nome do arquivo
  226.   #     hue      : informações da alteração de tonalidade
  227.   #--------------------------------------------------------------------------
  228.   def self.akea(filename)
  229.     load_bitmap("Graphics/Akea/", filename)
  230.   end
  231. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement