Advertisement
Raizen

Akea Advanced Battle Pop-up

Apr 7th, 2015
436
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 28.03 KB | None | 0 0
  1. #=======================================================
  2. #        Akea Advanced Battle Pop-up
  3. # Author: Raizen
  4. # Community: http://www.centrorpg.com/
  5. # Compatibility: RMVXAce
  6. #
  7. #=======================================================
  8. # Instruções e Funcionalidades:
  9. # O script adiciona a função de pop-up de estados/dano/buffs,
  10. # O script permite TOTAL configuração das animações
  11. # =========================Don't Modify==============================
  12. $included ||= Hash.new
  13. $included[:akea_battlepopup] = true
  14. module Akea_BattlePop
  15. # =========================Don't Modify==============================
  16.  
  17. # Instancias de imagens abertas, coloque quantas achar necessário, isso
  18. # significa o máximo de imagens de pop-up que serão exibidas simultaneamente
  19. Instances = 4
  20.  
  21. # Mostrar o Log?
  22. Show_log = false
  23.  
  24. # Tamanho total da imagem [largura, altura]
  25. Popup_Size = [100, 50]
  26.  
  27. # Espaço entre os números por imagens SE utilizar numeração por imagens
  28. Popup_Spacing = 12
  29.  
  30. # Tempo entre um pop-up e outro
  31. # (Time_Pop = 60 é igual a 1 segundo)
  32. Time_Pop = 18
  33. BattlePop = []
  34.  
  35. # Mostrar ganho de experiência e gold ao derrotar inimigos?
  36. Show_Gold_Exp = true
  37. # Nomenclatura de gold
  38. Gold = " G"
  39. # Nomenclatura de Exp
  40. Exp = " Exp"
  41.  
  42. # Pop-up que subirá caso se recupere de um estado
  43. Recover_Name = 'Recuperado'
  44. # Estados que não serão considerados como "recuperado"
  45. States_No_Pop = ['Defendendo']
  46.  
  47. # Aqui será configurado o padrão de Battle Pop-ups,
  48. # LEIA ATENTAMENTE, é possível adicionar TUDO por imagens,
  49. # mas deve se atentar a alguns pontos.
  50. # 6 palavras estão RESERVADAS,
  51. # num_dmg é para a numeração de dano CASO queira utilizar
  52. # num_rec é para a numeração de recuperação CASO queira utilizar
  53. # num_mp_dmg é para a numeração de dano mágico CASO queira utilizar
  54. # num_mp_rec é para a numeração de recuperação de mana CASO queira utilizar
  55. # num_tp_dmg é para a numeração de dano TP CASO queira utilizar
  56. # num_tp_rec é para a numeração de recuperação de TP CASO queira utilizar
  57.  
  58. # Todos seguem o seguinte padrão
  59. # 'num_dmg' => ['nome_da_imagem', id_do_Pop],
  60. # id_do_pop segue o padrão configurado abaixo, você pode optar por usar
  61. # uma imagem no lugar de 'nome_da_imagem' só colocar o gráfico na pasta
  62. # Graphics/Akea
  63. # Se optar por usar o desenho padrão do RPG Maker, basta colocar '' no
  64. # lugar do nome da imagem.
  65. # Para os outros que não sejam a numeração coloque
  66. # 'texto' => ['nome_da_imagem', id_do_Pop],
  67. # Por exemplo o estado envenenado
  68.  
  69. #Ex: 'Envenenado' => ['Poison', 9],
  70. # O exemplo acima faria toda vez que o texto for Envenenado(o nome do estado),
  71. # ele chamaria a configuração do pop-up 9 e a imagem seria a "Poison.png"
  72. BattlePic = {
  73. 'num_dmg' => ['', 0],
  74. 'num_rec' => ['', 1],
  75. 'num_mp_dmg' => ['', 2],
  76. 'num_mp_rec' => ['', 3],
  77. 'num_tp_dmg' => ['', 2],
  78. 'num_tp_rec' => ['', 3],
  79. 'evaded' => ['', 5],
  80. 'Envenenado' => ['', 9],
  81. }
  82.  
  83. #--------------------------------------------------------------------------
  84. # * BattlePop[id] -> Pode adicionar quantas achar necessário
  85. #--------------------------------------------------------------------------
  86. # Instruções, aqui é configurado TODOS os movimentos de pop-ups e suas
  87. # configurações, PRESTE bastante atenção na configuração.
  88.  
  89. #:base_set aqui não é necessário modificar:
  90. #:movement => aqui é configurado TODOS os movimentos do pop-up, os
  91. # movimentos são sequenciais e configurados da seguinte maneira.
  92. # [movimento em x, movimento em y, opacidade]
  93. # sendo que o primeiro é em relação a posição do ALVO do pop-up
  94.  
  95. # Pode adicionar quando quiser, separados por vírgulas
  96.  
  97. # :color => [R, G, B] sendo 255 o valor máximo
  98. # :font => nome da fonte('' usa a fonte padrão do RPG Maker)
  99. # :size => tamanho da fonte
  100. # :bold => true/false
  101. # :italic => true/false
  102. # :text => texto do pop-up, fará efeito em algumas situações apenas
  103.  
  104.  
  105. #--------------------------------------------------------------------------
  106. # * BattlePop[0] => Pop up padrão de dano
  107. #--------------------------------------------------------------------------
  108. BattlePop[0] = {
  109. :base_set => 'subject',
  110. :movement => [[-10, -50, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  111. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  112. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  113. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  114. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  115. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  116. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  117. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  118. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  119. [0, -1, 255], [0, -1, 255], [0, -1, 200], [0, -1, 150], [0, -1, 50],
  120. [0, -1, 0]],
  121. :color => [255, 0, 0],
  122. :font => '',
  123. :size => 24,
  124. :bold => false,
  125. :italic => false,
  126. :text => '',
  127. }
  128. #--------------------------------------------------------------------------
  129. # * BattlePop[1] => Pop up padrão de recuperação de vida
  130. #--------------------------------------------------------------------------
  131. BattlePop[1] = {
  132. :base_set => 'subject',
  133. :movement => [[-10, -50, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  134. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  135. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  136. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  137. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  138. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  139. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  140. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  141. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  142. [0, -1, 255], [0, -1, 255], [0, -1, 200], [0, -1, 150], [0, -1, 50],
  143. [0, -1, 0]],
  144. :color => [0, 255, 0],
  145. :font => '',
  146. :size => 24,
  147. :bold => false,
  148. :italic => false,
  149. :text => '',
  150. }
  151. #--------------------------------------------------------------------------
  152. # * BattlePop[2] => Pop up padrão de dano(mana)
  153. #--------------------------------------------------------------------------
  154. BattlePop[2] = {
  155. :base_set => 'subject',
  156. :movement => [[-10, -50, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  157. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  158. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  159. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  160. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  161. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  162. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  163. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  164. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  165. [0, -1, 255], [0, -1, 255], [0, -1, 200], [0, -1, 150], [0, -1, 50],
  166. [0, -1, 0]],
  167. :color => [0, 0, 255],
  168. :font => '',
  169. :size => 24,
  170. :bold => false,
  171. :italic => false,
  172. :text => '',
  173. }
  174. #--------------------------------------------------------------------------
  175. # * BattlePop[3] => Pop up padrão de recuperação de mana
  176. #--------------------------------------------------------------------------
  177. BattlePop[3] = {
  178. :base_set => 'subject',
  179. :movement => [[-10, -50, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  180. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  181. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  182. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  183. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  184. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  185. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  186. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  187. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  188. [0, -1, 255], [0, -1, 255], [0, -1, 200], [0, -1, 150], [0, -1, 50],
  189. [0, -1, 0]],
  190. :color => [0, 255, 255],
  191. :font => '',
  192. :size => 24,
  193. :bold => false,
  194. :italic => false,
  195. :text => '',
  196. }
  197. #--------------------------------------------------------------------------
  198. # * BattlePop[0] => Pop up padrão de erro(miss)
  199. #--------------------------------------------------------------------------
  200. BattlePop[4] = {
  201. :base_set => 'subject',
  202. :movement => [[-10, -50, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  203. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  204. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  205. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  206. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  207. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  208. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  209. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  210. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  211. [0, -1, 255], [0, -1, 255], [0, -1, 200], [0, -1, 150], [0, -1, 50],
  212. [0, -1, 0]],
  213. :color => [255, 0, 255],
  214. :font => '',
  215. :size => 24,
  216. :bold => false,
  217. :italic => false,
  218. :text => 'miss',
  219. }
  220. #--------------------------------------------------------------------------
  221. # * BattlePop[0] => Pop up padrão de desvio(evade)
  222. #--------------------------------------------------------------------------
  223. BattlePop[5] = {
  224. :base_set => 'subject',
  225. :movement => [[-10, -50, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  226. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  227. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  228. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  229. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  230. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  231. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  232. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  233. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  234. [0, -1, 255], [0, -1, 255], [0, -1, 200], [0, -1, 150], [0, -1, 50],
  235. [0, -1, 0]],
  236. :color => [255, 0, 255],
  237. :font => '',
  238. :size => 24,
  239. :bold => false,
  240. :italic => false,
  241. :text => 'evaded',
  242. }
  243. #--------------------------------------------------------------------------
  244. # * BattlePop[0] => Pop up padrão para os estados
  245. #--------------------------------------------------------------------------
  246. BattlePop[6] = {
  247. :base_set => 'subject',
  248. :movement => [[-10, -50, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  249. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  250. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  251. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  252. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  253. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  254. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  255. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  256. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  257. [0, -1, 255], [0, -1, 255], [0, -1, 200], [0, -1, 150], [0, -1, 50],
  258. [0, -1, 0]],
  259. :color => [255, 0, 255],
  260. :font => '',
  261. :size => 24,
  262. :bold => false,
  263. :italic => false,
  264. :text => '',
  265. }
  266. #--------------------------------------------------------------------------
  267. # * BattlePop[0] => Pop up padrão de experiencia
  268. #--------------------------------------------------------------------------
  269. BattlePop[7] = {
  270. :base_set => 'subject',
  271. :movement => [[-10, -50, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  272. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  273. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  274. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  275. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  276. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  277. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  278. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  279. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  280. [0, -1, 255], [0, -1, 255], [0, -1, 200], [0, -1, 150], [0, -1, 50],
  281. [0, -1, 0]],
  282. :color => [54, 128, 255],
  283. :font => '',
  284. :size => 24,
  285. :bold => false,
  286. :italic => false,
  287. :text => 'exp',
  288. }
  289. #--------------------------------------------------------------------------
  290. # * BattlePop[0] => Pop up padrão de gold
  291. #--------------------------------------------------------------------------
  292. BattlePop[8] = {
  293. :base_set => 'subject',
  294. :movement => [[-10, -50, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  295. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  296. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  297. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  298. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  299. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  300. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  301. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  302. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  303. [0, -1, 255], [0, -1, 255], [0, -1, 200], [0, -1, 150], [0, -1, 50],
  304. [0, -1, 0]],
  305. :color => [204, 204, 0],
  306. :font => '',
  307. :size => 24,
  308. :bold => false,
  309. :italic => false,
  310. :text => 'gold',
  311. }
  312. #--------------------------------------------------------------------------
  313. # * BattlePop[0] => Pop up customizado de envenenamento
  314. #--------------------------------------------------------------------------
  315. BattlePop[9] = {
  316. :base_set => 'subject',
  317. :movement => [[-10, -50, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  318. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  319. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  320. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  321. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  322. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  323. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  324. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  325. [0, -1, 255], [0, -1, 255], [0, -1, 255], [0, -1, 255],
  326. [0, -1, 255], [0, -1, 255], [0, -1, 200], [0, -1, 150], [0, -1, 50],
  327. [0, -1, 0]],
  328. :color => [20, 255, 30],
  329. :font => '',
  330. :size => 24,
  331. :bold => false,
  332. :italic => false,
  333. :text => '',
  334. }
  335. end
  336. #==============================================================================
  337. #------------------------------------------------------------------------------
  338. #  AQUI COMEÇA O SCRIPT
  339. #------------------------------------------------------------------------------
  340. #==============================================================================
  341. #==============================================================================
  342. # ** Scene_Battle
  343. #------------------------------------------------------------------------------
  344. #  Esta classe executa o processamento da tela de batalha.
  345. #==============================================================================
  346.  
  347. class Scene_Battle < Scene_Base
  348. alias :akea_abp_start :start
  349. alias :akea_abp_update_basic :update_basic
  350. alias :akea_abp_terminate :terminate
  351.   #--------------------------------------------------------------------------
  352.   # * Inicialização do processo
  353.   #--------------------------------------------------------------------------
  354.   def start
  355.     akea_abp_start
  356.     create_popup_sprites
  357.   end
  358.   #--------------------------------------------------------------------------
  359.   # * Atualização do pop_up
  360.   #--------------------------------------------------------------------------
  361.   def update_akea_popup
  362.     for n in 0...@abp_sprite_movement.size
  363.       next if @abp_sprite_movement[n].empty?
  364.       update_abp_movement(n)
  365.     end
  366.   end
  367.   #--------------------------------------------------------------------------
  368.   # * Atualização do movimento do pop-up
  369.   #--------------------------------------------------------------------------
  370.   def update_abp_movement(n)
  371.     @abp_sprite[n].x += @abp_sprite_movement[n].first[0]
  372.     @abp_sprite[n].y += @abp_sprite_movement[n].first[1]
  373.     @abp_sprite[n].opacity = @abp_sprite_movement[n].first[2]
  374.     @abp_sprite_movement[n].shift
  375.   end
  376.   #--------------------------------------------------------------------------
  377.   # * Atualização geral da tela
  378.   #--------------------------------------------------------------------------
  379.   def update_basic
  380.     update_akea_popup
  381.     akea_abp_update_basic
  382.   end
  383.   #--------------------------------------------------------------------------
  384.   # * Criação da tela de pop-ups
  385.   #--------------------------------------------------------------------------
  386.   def create_popup_sprites
  387.     @abp_sprite = Array.new
  388.     @abp_sprite_movement = Array.new(Akea_BattlePop::Instances, [])
  389.     @abp_instance = 0
  390.     for n in 0...Akea_BattlePop::Instances
  391.       @abp_sprite[n] = Sprite.new
  392.       @abp_sprite[n].bitmap = Bitmap.new(Akea_BattlePop::Popup_Size[0], Akea_BattlePop::Popup_Size[1])
  393.     end
  394.   end
  395.   #--------------------------------------------------------------------------
  396.   # * Rotacionar as instancias
  397.   #--------------------------------------------------------------------------
  398.   def rotate_abp_instances
  399.     if @abp_instance < Akea_BattlePop::Instances - 1
  400.       @abp_instance += 1
  401.     else
  402.       @abp_instance = 0
  403.     end
  404.     return @abp_instance
  405.   end
  406.   #--------------------------------------------------------------------------
  407.   # * Desenhar a imagem de pop-up
  408.   #--------------------------------------------------------------------------
  409.   def draw_akea_popup(id, text, subject = false, type = '')
  410.     n = rotate_abp_instances
  411.     @abp_sprite[n].bitmap.dispose
  412.     @abp_sprite[n].bitmap = Bitmap.new(Akea_BattlePop::Popup_Size[0], Akea_BattlePop::Popup_Size[1])
  413.     text = text.to_s if type == '' || Akea_BattlePop::BattlePic[type][0] == ''
  414.     if type != ''
  415.       id = Akea_BattlePop::BattlePic[type][1] if Akea_BattlePop::BattlePic[type]
  416.     end
  417.     if text.is_a?(Integer)
  418.       var = Cache.akea(Akea_BattlePop::BattlePic[type][0])
  419.       hp = text
  420.       spacing_num = 0
  421.       hp_array = []
  422.       until hp == 0
  423.         rest = hp % 10
  424.         hp = hp/10
  425.         hp_array.unshift(rest)
  426.       end
  427.       for i in 0...hp_array.size
  428.         @abp_sprite[n].bitmap.rect.set((@abp_sprite[n].bitmap.width*hp_array[i])/10, 0, @abp_sprite[n].bitmap.width/10, @abp_sprite[n].bitmap.height)
  429.         rect = Rect.new((@abp_sprite[n].bitmap.width*hp_array[i])/10, 0, @abp_sprite[n].bitmap.width/10, @abp_sprite[n].bitmap.height)
  430.         @abp_sprite[n].bitmap.blt(spacing_num, 0, var, rect, 255)
  431.         spacing_num += Akea_BattlePop::Popup_Spacing
  432.       end
  433.     elsif Akea_BattlePop::BattlePic[text] && Akea_BattlePop::BattlePic[text][0] != ''
  434.       @abp_sprite[n].bitmap = Cache.akea(Akea_BattlePop::BattlePic[text][0])
  435.     else
  436.       if Akea_BattlePop::BattlePic[text]
  437.         id = Akea_BattlePop::BattlePic[text][1]
  438.       end
  439.       if Akea_BattlePop::BattlePop[id][:font] == ''
  440.         @abp_sprite[n].bitmap.font.name = Font.default_name
  441.       else
  442.         @abp_sprite[n].bitmap.font.name = Akea_BattlePop::BattlePop[id][:font]
  443.       end
  444.       @abp_sprite[n].bitmap.font.color.set(*Akea_BattlePop::BattlePop[id][:color])
  445.       @abp_sprite[n].bitmap.font.size = Akea_BattlePop::BattlePop[id][:size]
  446.       @abp_sprite[n].bitmap.font.bold = Akea_BattlePop::BattlePop[id][:bold]
  447.       @abp_sprite[n].bitmap.font.italic = Akea_BattlePop::BattlePop[id][:italic]
  448.       @abp_sprite[n].bitmap.draw_text(0, 0, Akea_BattlePop::Popup_Size[0], Akea_BattlePop::Popup_Size[1], text)
  449.     end
  450.     @abp_sprite_movement[n] = Akea_BattlePop::BattlePop[id][:movement].dup
  451.     @abp_sprite[n].x = subject.screen_x
  452.     @abp_sprite[n].y = subject.screen_y
  453.   end
  454.   #--------------------------------------------------------------------------
  455.   # * Retorna o tipo de popup
  456.   #--------------------------------------------------------------------------
  457.   def get_abp_type(target, item = nil, text = '', id = false)
  458.     if text != ''
  459.       id ? draw_akea_popup(id, text, target) : draw_akea_popup(6, text, target)
  460.     elsif target.result.hp_damage > 0
  461.       value = target.result.hp_damage
  462.       draw_akea_popup(0, value.to_i, target, 'num_dmg')
  463.       target.perform_damage_effect
  464.       Sound.play_actor_damage
  465.     elsif target.result.hp_damage < 0
  466.       value = target.result.hp_damage
  467.       draw_akea_popup(1, value.to_i.abs, target, 'num_rec')
  468.       Sound.play_recovery
  469.     elsif target.result.mp_damage > 0
  470.       value = target.result.mp_damage
  471.       draw_akea_popup(2, value.to_i, target, 'num_mp_dmg')
  472.     elsif target.result.mp_damage < 0
  473.       value = target.result.mp_damage
  474.       draw_akea_popup(3, value.to_i.abs, target, 'num_mp_rec')
  475.       Sound.play_recovery
  476.     elsif target.result.tp_damage > 0
  477.       value = target.result.tp_damage
  478.       draw_akea_popup(2, value.to_i, target, 'num_tp_dmg')
  479.     elsif target.result.tp_damage < 0
  480.       value = target.result.tp_damage
  481.       draw_akea_popup(3, value.to_i.abs, target, 'num_tp_rec')
  482.       Sound.play_recovery
  483.     elsif target.result.missed
  484.       value = Akea_BattlePop::BattlePop[4][:text]
  485.       draw_akea_popup(4, value, target)
  486.       Sound.play_miss
  487.     elsif target.result.evaded
  488.       value = Akea_BattlePop::BattlePop[5][:text]
  489.       draw_akea_popup(5, value, target)
  490.       Sound.play_evasion
  491.     end
  492.   end
  493.   #--------------------------------------------------------------------------
  494.   # * Dispoe as imagens
  495.   #--------------------------------------------------------------------------
  496.   def dispose_akea_popup
  497.     @abp_sprite.each{|sprt| sprt.bitmap.dispose; sprt.dispose}
  498.   end
  499.   #--------------------------------------------------------------------------
  500.   # * Finalização de Scene
  501.   #--------------------------------------------------------------------------
  502.   def terminate
  503.     dispose_akea_popup
  504.     akea_abp_terminate
  505.   end
  506. end
  507.  
  508.  
  509. #==============================================================================
  510. # ** Window_BattleLog
  511. #------------------------------------------------------------------------------
  512. #  Esta janela exibe o progresso da luta. Não exibe o quadro da
  513. # janela, é tratado como uma janela por conveniência.
  514. #==============================================================================
  515.  
  516. class Window_BattleLog < Window_Selectable
  517. alias :akea_abp_display_use_item :display_use_item
  518. alias :akea_abp_display_action_results :display_action_results
  519. alias :akea_abp_display_damage :display_damage
  520. alias :akea_abp_display_added_states :display_added_states
  521. alias :akea_abp_display_removed_states :display_removed_states
  522. alias :akea_abp_display_buffs :display_buffs
  523. alias :akea_abp_display_critical :display_critical
  524. alias :akea_abp_display_failure :display_failure
  525.   #--------------------------------------------------------------------------
  526.   # * Exibição de uso de habilidade/item
  527.   #     subject : lutador
  528.   #     item    : habilidade/item
  529.   #--------------------------------------------------------------------------
  530.   def display_use_item(subject, item)
  531.     akea_abp_display_use_item(subject, item)
  532.   end
  533.   #--------------------------------------------------------------------------
  534.   # * Exibição de dano
  535.   #     target : alvo
  536.   #     item   : habilidade/item
  537.   #--------------------------------------------------------------------------
  538.   def display_damage(target, item)
  539.     SceneManager.scene.get_abp_type(target, item)
  540.     unless Akea_BattlePop::Show_log
  541.       @num_wait += 1
  542.       @get_all_pop_wait = (Akea_BattlePop::BattlePop[0][:movement].size - Akea_BattlePop::Time_Pop)
  543.       @method_wait.call(Akea_BattlePop::Time_Pop) if @method_wait
  544.       return
  545.     end
  546.     akea_abp_display_damage(target, item)
  547.   end
  548.   #--------------------------------------------------------------------------
  549.   # * Exibição de resultados da ação
  550.   #     target : alvo
  551.   #     item   : habilidade/item
  552.   #--------------------------------------------------------------------------
  553.   def display_action_results(target, item)
  554.     @get_all_pop_wait = 0
  555.     akea_abp_display_action_results(target, item)
  556.     @num_wait += 1
  557.     @method_wait.call(@get_all_pop_wait)
  558.   end
  559.   #--------------------------------------------------------------------------
  560.   # * Exibição de estados adicionados
  561.   #     target : alvo
  562.   #--------------------------------------------------------------------------
  563.   def display_added_states(target)
  564.     target.result.added_state_objects.each do |state|
  565.       target.perform_collapse_effect if state.id == target.death_state_id
  566.       SceneManager.scene.get_abp_type(target, nil, state.name)
  567.       @method_wait.call(Akea_BattlePop::Time_Pop)
  568.       @get_all_pop_wait = (Akea_BattlePop::BattlePop[6][:movement].size - Akea_BattlePop::Time_Pop)
  569.       if Akea_BattlePop::Show_Gold_Exp && target.enemy? && state.id == target.death_state_id
  570.         SceneManager.scene.get_abp_type(target, nil, target.gold.to_s + Akea_BattlePop::Gold, 8)
  571.         @method_wait.call(Akea_BattlePop::Time_Pop)
  572.         @get_all_pop_wait = (Akea_BattlePop::BattlePop[6][:movement].size - Akea_BattlePop::Time_Pop)
  573.         SceneManager.scene.get_abp_type(target, nil, target.exp.to_s + Akea_BattlePop::Exp, 7)
  574.         @method_wait.call(Akea_BattlePop::Time_Pop)
  575.         @get_all_pop_wait = (Akea_BattlePop::BattlePop[6][:movement].size - Akea_BattlePop::Time_Pop)
  576.       end
  577.     end
  578.     akea_abp_display_added_states(target) if Akea_BattlePop::Show_log
  579.   end
  580.   #--------------------------------------------------------------------------
  581.   # * Exibição de estados removidos
  582.   #     target : alvo
  583.   #--------------------------------------------------------------------------
  584.   def display_removed_states(target)
  585.     target.result.removed_state_objects.each do |state|
  586.       next if Akea_BattlePop::States_No_Pop.include?(state.name)
  587.       SceneManager.scene.get_abp_type(target, nil, Akea_BattlePop::Recover_Name)
  588.       @method_wait.call(Akea_BattlePop::Time_Pop)
  589.       @get_all_pop_wait = (Akea_BattlePop::BattlePop[6][:movement].size - Akea_BattlePop::Time_Pop)
  590.     end
  591.     akea_abp_display_removed_states(target) if Akea_BattlePop::Show_log
  592.   end
  593.   #--------------------------------------------------------------------------
  594.   # * Exibição de fortalecimentos/enfraquecimentos(individual)
  595.   #     target : alvo
  596.   #     buffs  : lista de enfraquicimentos/fortalecimentos
  597.   #     fmt    : mensagem
  598.   #--------------------------------------------------------------------------
  599.   def display_buffs(target, buffs, fmt)
  600.     buffs.each do |param_id|
  601.       SceneManager.scene.get_abp_type(target, nil, Vocab::param(param_id))
  602.       @method_wait.call(Akea_BattlePop::Time_Pop)
  603.       @get_all_pop_wait = (Akea_BattlePop::BattlePop[6][:movement].size - Akea_BattlePop::Time_Pop)
  604.     end
  605.     akea_abp_display_buffs(target, buffs, fmt) if Akea_BattlePop::Show_log
  606.   end
  607.   #--------------------------------------------------------------------------
  608.   # * Exibição de acerto crítico
  609.   #     target : alvo
  610.   #     item   : habilidade/item
  611.   #--------------------------------------------------------------------------
  612.   def display_critical(target, item)
  613.     if target.result.critical
  614.       text = target.actor? ? Vocab::CriticalToActor : Vocab::CriticalToEnemy
  615.       SceneManager.scene.get_abp_type(target, item, text)
  616.       @method_wait.call(Akea_BattlePop::Time_Pop)
  617.       @get_all_pop_wait = (Akea_BattlePop::BattlePop[6][:movement].size - Akea_BattlePop::Time_Pop)
  618.     end
  619.     akea_abp_display_critical(target, item) if Akea_BattlePop::Show_log
  620.   end
  621.   #--------------------------------------------------------------------------
  622.   # * Exibição de falha
  623.   #     target : alvo
  624.   #     item   : habilidade/item
  625.   #--------------------------------------------------------------------------
  626.   def display_failure(target, item)
  627.     if target.result.hit? && !target.result.success
  628.       SceneManager.scene.get_abp_type(target, item, Vocab::ActionFailure)
  629.       @method_wait.call(Akea_BattlePop::Time_Pop)
  630.       @get_all_pop_wait = (Akea_BattlePop::BattlePop[6][:movement].size - Akea_BattlePop::Time_Pop)
  631.     end
  632.     akea_abp_display_failure(target, item) if Akea_BattlePop::Show_log
  633.   end
  634. end
  635. #==============================================================================
  636. # ** Cache
  637. #------------------------------------------------------------------------------
  638. #  Este modulo carrega cada gráfico, cria um objeto de Bitmap e retém ele.
  639. # Para acelerar o carregamento e preservar memória, este módulo matém o
  640. # objeto de Bitmap em uma Hash interna, permitindo que retorne objetos
  641. # pré-existentes quando mesmo Bitmap é requerido novamente.
  642. #==============================================================================
  643.  
  644.  
  645. module Cache
  646.   #--------------------------------------------------------------------------
  647.   # * Carregamento dos gráficos de animação
  648.   #     filename : nome do arquivo
  649.   #     hue      : informações da alteração de tonalidade
  650.   #--------------------------------------------------------------------------
  651.   def self.akea(filename)
  652.     load_bitmap("Graphics/Akea/", filename)
  653.   end
  654. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement