Advertisement
Raizen

Akea Special Skill

Mar 8th, 2015
360
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 9.74 KB | None | 0 0
  1. #=======================================================
  2. #        Akea Special Skill
  3. # Autor: Raizen
  4. # Comunidade: http://www.centrorpg.com/
  5. # Compatibilidade: RMVXAce
  6. # Permite uma tela exclusiva para certos skills,
  7. # esse script faz com que personagens que não participem da ação
  8. # não apareçam na tela, além de colocar um fundo atrás animado
  9. #=======================================================
  10.  
  11. # =========================Não modificar==============================
  12. $imported ||= Hash.new
  13. $imported[:akea_special_skill] = true
  14. module Akea_Special_Skill
  15. Special_Back = []
  16.  
  17.  
  18. #=====================================================================
  19. #---------------- Configure o fundo de batalha --------------------------
  20. #=====================================================================
  21.  
  22. # Basta adicionar desse modo
  23. # Special_Back[id] = { NAO REPETIR o ID
  24. #'X' => 3, #velocidade da tela em X
  25. #'Y' => 2, #velocidade da tela em Y
  26. #'bitmap' => 'Skill_Special_Back', #Nome da Imagem
  27. #}
  28.  
  29. # Para chamar um skill como skill especial basta adicionar no bloco de notas
  30. # do skill o seguinte.
  31. #<a_special id>
  32. # Aonde id é o id configurado abaixo
  33. #=====================================================================
  34. Special_Back[0] = {
  35. 'X' => 3, #velocidade da tela em X
  36. 'Y' => 2, #velocidade da tela em Y
  37. 'bitmap' => 'Skill_Special_Back', #Nome da Imagem
  38. }
  39. #=====================================================================
  40. Special_Back[1] = {
  41. 'X' => 3, #velocidade da tela em X
  42. 'Y' => 2, #velocidade da tela em Y
  43. 'bitmap' => 'Skill_Special_Back', #Nome da Imagem
  44. }
  45.  
  46.  
  47. end
  48. # =========================Não modificar==============================
  49.  
  50. #==============================================================================
  51. # ** Spriteset_Battle
  52. #------------------------------------------------------------------------------
  53. #  Esta classe reune os sprites da tela de batalha. Esta classe é usada
  54. # internamente pela classe Scene_Battle.
  55. #==============================================================================
  56.  
  57. class Spriteset_Battle
  58. alias :akea_special_initialize :initialize
  59.   #--------------------------------------------------------------------------
  60.   # * Inicialização do objeto
  61.   #--------------------------------------------------------------------------
  62.   def initialize(*args, &block)
  63.     akea_special_initialize(*args, &block)
  64.     create_special_battleback
  65.   end
  66.   #--------------------------------------------------------------------------
  67.   # * Criação do sprite de fundo de batalha (piso)
  68.   #--------------------------------------------------------------------------
  69.   def create_special_battleback
  70.     @akea_back_plane = Plane.new(@viewport1)
  71.     @akea_back_plane.bitmap = Cache.akea('')
  72.     @akea_back_plane.z = 0
  73.     @akea_back_plane_move_x = 0
  74.     @akea_back_plane_move_y = 0
  75.     #@back1_sprite.opacity = 0
  76.   end
  77.   #--------------------------------------------------------------------------
  78.   # * Modificar opacidade do inimigo
  79.   #--------------------------------------------------------------------------
  80.   def enemy_opacity(id, opacity)
  81.     return unless id
  82.     id = @enemy_sprites.size - id - 1
  83.     @enemy_sprites[id].opacity = opacity
  84.   end
  85.   def actor_opacity(id, opacity)
  86.     return unless id
  87.     @actor_sprites[id].opacity = opacity
  88.   end
  89.   #--------------------------------------------------------------------------
  90.   # * Mostrar todos os battlers
  91.   #--------------------------------------------------------------------------
  92.   def show_all_battlers
  93.     @actor_sprites.each{|actor| actor.opacity = 255}
  94.     for n in 0...@enemy_sprites.size
  95.       @enemy_sprites[n].opacity = 255 unless $game_troop.members[@enemy_sprites.size - n - 1].dead?
  96.     end
  97.   end
  98.   #--------------------------------------------------------------------------
  99.   # * Movimento de fundo
  100.   #--------------------------------------------------------------------------
  101.   def special_plane_move
  102.     @akea_back_plane.ox += @akea_back_plane_move_x
  103.     @akea_back_plane.oy += @akea_back_plane_move_y
  104.   end
  105.   #--------------------------------------------------------------------------
  106.   # * Adicionar opacidade no fundo
  107.   #--------------------------------------------------------------------------
  108.   def add_back_opacity
  109.     return if @back1_sprite.opacity >= 255
  110.     @back1_sprite.opacity += 25
  111.     @back2_sprite.opacity += 25
  112.   end
  113.   #--------------------------------------------------------------------------
  114.   # * Retirar opacidade no fundo
  115.   #--------------------------------------------------------------------------
  116.   def add_special_opacity
  117.     return if @back1_sprite.opacity <= 0
  118.     @back1_sprite.opacity -= 25
  119.     @back2_sprite.opacity -= 25
  120.   end
  121.   #--------------------------------------------------------------------------
  122.   # * Disposição do fundo de batalha (piso)
  123.   #--------------------------------------------------------------------------
  124.   def dispose_battleback1
  125.     @akea_back_plane.bitmap.dispose
  126.     @akea_back_plane.dispose
  127.     @back1_sprite.bitmap.dispose
  128.     @back1_sprite.dispose
  129.   end
  130.   #--------------------------------------------------------------------------
  131.   # * Setar configurações do fundo
  132.   #--------------------------------------------------------------------------
  133.   def set_special_configuration(n)
  134.     @akea_back_plane.bitmap.dispose
  135.     @akea_back_plane.bitmap = Cache.akea(Akea_Special_Skill::Special_Back[n]['bitmap'])
  136.     @akea_back_plane_move_x = Akea_Special_Skill::Special_Back[n]['X']
  137.     @akea_back_plane_move_y = Akea_Special_Skill::Special_Back[n]['Y']
  138.   end
  139. end
  140. #==============================================================================
  141. # ** Scene_Battle
  142. #------------------------------------------------------------------------------
  143. #  Esta classe executa o processamento da tela de batalha.
  144. #==============================================================================
  145.  
  146. class Scene_Battle < Scene_Base
  147. alias :akea_special_update :update
  148. alias :akea_special_process_action :process_action
  149. alias :akea_special_process_action_end :process_action_end
  150. alias :akea_special_use_item :use_item
  151.   #--------------------------------------------------------------------------
  152.   # * Uso de habilidades/itens
  153.   #--------------------------------------------------------------------------
  154.   def use_item
  155.     akea_special_use_item
  156.     @spriteset.show_all_battlers if @on_akea_special
  157.   end
  158.   #--------------------------------------------------------------------------
  159.   # * Processamento do fim da ação
  160.   #--------------------------------------------------------------------------
  161.   def process_action_end
  162.     akea_special_process_action_end
  163.     stop_akea_special
  164.   end
  165.   #--------------------------------------------------------------------------
  166.   # * Processamento de ações
  167.   #--------------------------------------------------------------------------
  168.   def process_action
  169.     if $imported[:lune_animated_battle]
  170.       akea_special_process_action
  171.       return
  172.     end
  173.     if !@subject || !@subject.current_action
  174.       @atbs_actions = []
  175.       @subject = BattleManager.next_subject
  176.       @reuse_targets = @subject.current_action.make_targets.compact if @subject && @subject.current_action
  177.       if @subject && @subject.current_action
  178.         battle_notes = @subject.current_action.item.note
  179.         if @subject.current_action.item.id == 1 && @subject.actor? && @subject.equips[0]
  180.           battle_notes = @subject.equips[0].note
  181.         end
  182.         for n in 0...battle_notes.size - 11
  183.           if battle_notes[n..n+10] == "<a_special "
  184.             msgbox("Requires Akea Special Skill!!") unless $imported[:akea_special_skill]
  185.             y = 0
  186.             y += 1 until battle_notes[n+11+y] == '>'
  187.             insert_akea_special(battle_notes[n+11..n+11+y].to_i)
  188.           end
  189.         end
  190.       end
  191.     end
  192.     akea_special_process_action
  193.   end  
  194.   #--------------------------------------------------------------------------
  195.   # * Parar habilidade especial
  196.   #--------------------------------------------------------------------------
  197.   def stop_akea_special(n=1)
  198.     @on_akea_special = false
  199.   end
  200.   #--------------------------------------------------------------------------
  201.   # * Inserir habilidade especial
  202.   #--------------------------------------------------------------------------
  203.   def insert_akea_special(n)
  204.     @on_akea_special = true
  205.     @spriteset.set_special_configuration(n)
  206.   end
  207.   #--------------------------------------------------------------------------
  208.   # * Inicialização do processo
  209.   #--------------------------------------------------------------------------
  210.   def update(*args, &block)
  211.     if @on_akea_special
  212.       @spriteset.add_special_opacity
  213.     else
  214.       @spriteset.add_back_opacity
  215.     end
  216.     @spriteset.special_plane_move
  217.     akea_special_update(*args, &block)
  218.   end
  219. end
  220.  
  221. #==============================================================================
  222. # ** Cache
  223. #------------------------------------------------------------------------------
  224. #  Este modulo carrega cada gráfico, cria um objeto de Bitmap e retém ele.
  225. # Para acelerar o carregamento e preservar memória, este módulo matém o
  226. # objeto de Bitmap em uma Hash interna, permitindo que retorne objetos
  227. # pré-existentes quando mesmo Bitmap é requerido novamente.
  228. #==============================================================================
  229.  
  230.  
  231. module Cache
  232.   #--------------------------------------------------------------------------
  233.   # * Carregamento dos gráficos de animação
  234.   #     filename : nome do arquivo
  235.   #     hue      : informações da alteração de tonalidade
  236.   #--------------------------------------------------------------------------
  237.   def self.akea(filename)
  238.     load_bitmap("Graphics/Akea/", filename)
  239.   end
  240. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement