Advertisement
Guest User

Untitled

a guest
Jul 5th, 2014
251
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 33.48 KB | None | 0 0
  1. #==============================================================================
  2. # +++ MOG - DAMAGEPOPUP (v2.2) +++
  3. #==============================================================================
  4. # By Moghunter
  5. # [url]http://www.atelier-rgss.com/[/url]
  6. #==============================================================================
  7. # Apresenta danos dos alvos em imagens.
  8. #==============================================================================
  9. # Será necessário ter a imagem Damage_Number.png na pasta /GRAPHICS/SYSTEM/
  10. #==============================================================================
  11.  
  12. #==============================================================================
  13. # DAMAGE POPUP ON CHARACTERS (Events)
  14. #==============================================================================
  15. # Basta usar o código abaixo para apresentar o dano nos eventos.
  16. #
  17. # damage_popup(STRING)
  18. #
  19. # STRING = valor do dano (Texto).
  20. #
  21. # Para ativar o dano no jogador use o código abaixo
  22. #
  23. # $game_player.damage_popup(STRING)
  24. #
  25. #==============================================================================
  26.  
  27. #==============================================================================
  28. # ? Histórico (Version History)
  29. #==============================================================================
  30. # v 2.2 - Compatibilidade com o script Active Bonus Gauge.
  31. # v 2.0 - Apresentar o texto de recuperar nos efeitos de regenerar.
  32. # v 1.9 - Corrigido o erro de apresentar as condições sendo removidas quando a
  33. # batalha termina.
  34. # - Corrigido a centralização da string em danos do tipo texto.
  35. # - Corrigido o "erro" de apresentar a condição de Death.
  36. # v 1.8 - Corrigido o erro de apresentar os textos das condições (Status) quando
  37. # o battler estiver morto.
  38. # v 1.7 - Melhor codificação e compatibilidade.
  39. # v 1.6 - Corrigido o erro da opacidade do dano em EXP e GOLD.
  40. # v 1.5 - Possibilidade de ativar o dano nos eventos no mapa.
  41. # v 1.4 - Corrigido o erro do efeito drain.
  42. # v 1.3 - Corrigido o erro de crash randômico. (relativo a dispose de imagem.)
  43. # v 1.2 - Corrigido o limite do tamanho da string em palavras longas.
  44. # v 1.1 - Opção de definir a prioridade do dano.
  45. # v 1.0 - Primeiro lançamento.
  46. #==============================================================================
  47.  
  48. module MOG_DAMAGEPOP
  49. #Definição do espaço entre a palavra MP/TP e o numero de dano.
  50. MP_TP_STRING_SPACE = 32
  51. #Correção da posição do dano.
  52. DAMAGE_POSITION_CORRECTION = [0 ,0]
  53. #Apresentar a exp e ouro do inimigo.
  54. EXP_POPUP = true
  55. #Definição da prioridade do dano na tela.
  56. DAMAGE_Z = 60
  57. end
  58.  
  59. #==============================================================================
  60. # ¦ Game_Battler
  61. #==============================================================================
  62. class Game_Battler < Game_BattlerBase
  63.  
  64. attr_accessor :damage
  65.  
  66. #--------------------------------------------------------------------------
  67. # ? Initialize
  68. #--------------------------------------------------------------------------
  69. alias mog_damage_sprite_initialize initialize
  70. def initialize
  71. @damage = []
  72. mog_damage_sprite_initialize
  73. end
  74.  
  75. #--------------------------------------------------------------------------
  76. # ? Item Apply
  77. #--------------------------------------------------------------------------
  78. alias mog_damage_pop_item_apply item_apply
  79. def item_apply(user, item)
  80. mog_damage_pop_item_apply(user, item)
  81. if @result.missed
  82. self.damage.push(["Missed","Missed"]) if self.hp > 0
  83. elsif @result.evaded
  84. self.damage.push(["Evaded","Evaded"]) if self.hp > 0
  85. end
  86. end
  87.  
  88. #--------------------------------------------------------------------------
  89. # ? Regenerate HP
  90. #--------------------------------------------------------------------------
  91. alias mog_damage_pop_regenerate_hp regenerate_hp
  92. def regenerate_hp
  93. mog_damage_pop_regenerate_hp
  94. self.damage.push(["Regenerate",""]) if @result.hp_damage < 0
  95. self.damage.push([@result.hp_damage,"HP"]) if @result.hp_damage != 0
  96. end
  97.  
  98. #--------------------------------------------------------------------------
  99. # ? Regenerate MP
  100. #--------------------------------------------------------------------------
  101. alias mog_damage_pop_regenerate_mp regenerate_mp
  102. def regenerate_mp
  103. mog_damage_pop_regenerate_mp
  104. # self.damage.push(["Regenerate",""]) if @result.mp_damage < 0
  105. self.damage.push([@result.mp_damage,"MP"]) if @result.mp_damage != 0
  106. end
  107.  
  108. #--------------------------------------------------------------------------
  109. # ? Regenerate TP
  110. #--------------------------------------------------------------------------
  111. alias mog_damage_pop_regenerate_tp regenerate_tp
  112. def regenerate_tp
  113. mog_damage_pop_regenerate_tp
  114. tp_damage = 100 * trg
  115. self.damage.push([tp_damage,"TP"]) if tp_damage != 0
  116. end
  117.  
  118. #--------------------------------------------------------------------------
  119. # ? Added New State
  120. #--------------------------------------------------------------------------
  121. alias mog_damage_pop_add_new_state add_new_state
  122. def add_new_state(state_id)
  123. mog_damage_pop_add_new_state(state_id)
  124. # unless guard_feature?(state_id)
  125. st = $data_states[state_id]
  126. self.damage.push([st.name.to_s,"States Plus",false,st.icon_index]) if self.hp > 0
  127. # end
  128. end
  129.  
  130. #--------------------------------------------------------------------------
  131. # ? Guard Feature?
  132. #--------------------------------------------------------------------------
  133. def guard_feature?(state_id)
  134. st = $data_states[state_id]
  135. for i in st.features
  136. return true if i.code == 62 and i.data_id == 1
  137. end
  138. return false
  139. end
  140.  
  141. #--------------------------------------------------------------------------
  142. # ? Remove State
  143. #--------------------------------------------------------------------------
  144. alias mog_damage_pop_remove_state remove_state
  145. def remove_state(state_id)
  146. if state?(state_id)
  147. unless BattleManager.escape?
  148. st = $data_states[state_id]
  149. self.damage.push([st.name.to_s,"States Minus",false,st.icon_index]) if self.hp > 0
  150. end
  151. end
  152. mog_damage_pop_remove_state(state_id)
  153. end
  154.  
  155. #--------------------------------------------------------------------------
  156. # ? Update State Turns
  157. #--------------------------------------------------------------------------
  158. alias mog_damage_popup_update_state_turns update_state_turns
  159. def update_state_turns
  160. mog_damage_popup_update_state_turns
  161. states.each do |state|
  162. for features in state.features
  163. if features.data_id == 7 or features.data_id == 8 or
  164. features.data_id == 9
  165. # self.damage.push([state.name.to_s + " Effect","States Effect"]) if self.hp > 0
  166. end
  167. end
  168. end
  169. end
  170.  
  171. #--------------------------------------------------------------------------
  172. # ? Execute Damage
  173. #--------------------------------------------------------------------------
  174. alias mog_damage_pop_execute_damage execute_damage
  175. def execute_damage(user)
  176. mog_damage_pop_execute_damage(user)
  177. user.damage.push([-@result.hp_drain,"HP",@result.critical]) if @result.hp_drain != 0
  178. user.damage.push([-@result.mp_drain,"MP",@result.critical]) if @result.mp_drain != 0
  179. end
  180.  
  181. end
  182.  
  183. #==============================================================================
  184. # ¦ BattleManager
  185. #==============================================================================
  186. module BattleManager
  187.  
  188. #--------------------------------------------------------------------------
  189. # ? Escape?
  190. #--------------------------------------------------------------------------
  191. def self.escape?
  192. @phase == nil
  193. end
  194.  
  195. end
  196. #==============================================================================
  197. # ¦ Game_ActionResult
  198. #==============================================================================
  199. class Game_ActionResult
  200.  
  201. #--------------------------------------------------------------------------
  202. # ? HP Damage Text
  203. #--------------------------------------------------------------------------
  204. alias mog_damage_pop_hp_damage_text hp_damage_text
  205. def hp_damage_text
  206. if @hp_drain > 0
  207. @battler.damage.push([@hp_drain,"HP",@critical])
  208. elsif @hp_damage >= 0
  209. @battler.damage.push([@hp_damage,"HP",@critical])
  210. elsif @hp_damage < 0
  211. @battler.damage.push([@hp_damage,"HP",@critical])
  212. end
  213. mog_damage_pop_hp_damage_text
  214. end
  215.  
  216. #--------------------------------------------------------------------------
  217. # ? MP Damage Text
  218. #--------------------------------------------------------------------------
  219. alias mog_damage_pop_mp_damage_text mp_damage_text
  220. def mp_damage_text
  221. if @mp_drain > 0
  222. @battler.damage.push([@mp_drain,"MP",@critical])
  223. elsif @mp_damage > 0
  224. @battler.damage.push([@mp_damage,"MP",@critical])
  225. elsif @mp_damage < 0
  226. @battler.damage.push([@mp_damage,"MP",@critical])
  227. end
  228. mog_damage_pop_mp_damage_text
  229. end
  230.  
  231. #--------------------------------------------------------------------------
  232. # ? TP Damage Text
  233. #--------------------------------------------------------------------------
  234. alias mog_damage_pop_tp_damage_text tp_damage_text
  235. def tp_damage_text
  236. if @tp_damage > 0
  237. @battler.damage.push([@tp_damage,"TP",@critical])
  238. elsif @tp_damage < 0
  239. @battler.damage.push([@tp_damage,"TP",@critical])
  240. end
  241. mog_damage_pop_tp_damage_text
  242. end
  243. end
  244.  
  245. #==============================================================================
  246. # ¦ Game Actor
  247. #==============================================================================
  248. class Game_Actor < Game_Battler
  249.  
  250. #--------------------------------------------------------------------------
  251. # ? Level UP
  252. #--------------------------------------------------------------------------
  253. alias mog_damage_pop_level_up level_up
  254. def level_up
  255. mog_damage_pop_level_up
  256. @damage.push(["Level UP","Level_UP"])# unless @damage[0].include?("Level UP")#unless $mog_battle_result != nil
  257. end
  258. end
  259.  
  260. #==============================================================================
  261. # ¦ Scene_Battle
  262. #==============================================================================
  263. class Scene_Battle < Scene_Base
  264.  
  265. #--------------------------------------------------------------------------
  266. # ? Invoke Counter Attack
  267. #--------------------------------------------------------------------------
  268. alias mog_damage_popup_invoke_counter_attack invoke_counter_attack
  269. def invoke_counter_attack(target, item)
  270. mog_damage_popup_invoke_counter_attack(target, item)
  271. target.damage.push(["Counter","Counter"])
  272. end
  273.  
  274. #--------------------------------------------------------------------------
  275. # ? Invoke Counter Attack
  276. #--------------------------------------------------------------------------
  277. alias mog_damage_popup_invoke_magic_reflection invoke_magic_reflection
  278. def invoke_magic_reflection(target, item)
  279. mog_damage_popup_invoke_magic_reflection(target, item)
  280. target.damage.push(["Reflection","Reflection"])
  281. end
  282.  
  283. end
  284.  
  285. #==============================================================================
  286. # ¦ Damage Sprite
  287. #==============================================================================
  288. class Damage_Sprite < Sprite
  289. include MOG_DAMAGEPOP
  290. attr_accessor :duration
  291.  
  292. #--------------------------------------------------------------------------
  293. # ? Initialize
  294. #--------------------------------------------------------------------------
  295. def initialize(viewport = nil,x = 0,y = 0,value = 0,index)
  296. super(viewport)
  297. dispose
  298. @image = Cache.system("Damage_Number")
  299. @x = x
  300. @y = y
  301. @value = value[0]
  302. @type = value[1]
  303. @critical = (value[2] and @value.to_i >= 0) ? true : false
  304. @state_index = value[3]
  305. @duration = 80 + (10 * index)
  306. @cw = @image.width / 10
  307. @ch = @image.height / 7
  308. @center_x = 0
  309. @mp_space = (@type == "MP" or @type == "TP") ? MP_TP_STRING_SPACE : 0
  310. if @value.is_a?(Numeric)
  311. create_damage_number
  312. elsif @value == "Missed" or @value == "Evaded"
  313. create_damage_miss
  314. else
  315. create_damage_string
  316. end
  317. self.x = @x - (@center_x * (@cw / 2)) + DAMAGE_POSITION_CORRECTION[0]
  318. self.y = @y + DAMAGE_POSITION_CORRECTION[1]
  319. self.opacity = 1
  320. zx = self.viewport != nil ? self.viewport.z : 0
  321. self.z = DAMAGE_Z + zx
  322. self.visible = false
  323. damage_dir = rand(2)
  324. @speed_x = straight_pop? ? 0 : damage_dir == 1 ? -rand(2) : rand(2)
  325. @speed_y = 0
  326. end
  327.  
  328. #--------------------------------------------------------------------------
  329. # ? Straight Pop
  330. #--------------------------------------------------------------------------
  331. def straight_pop?
  332. case @type
  333. when "Gold"; return true
  334. when "Exp"; return true
  335. when "Level_UP"; return true
  336. end
  337. return false
  338. end
  339.  
  340. #--------------------------------------------------------------------------
  341. # ? Create Damage Number
  342. #--------------------------------------------------------------------------
  343. def create_damage_miss
  344. dam = @value == "Missed" ? 5 : 6
  345. self.bitmap = Bitmap.new(@cw * 5, @ch)
  346. src_rect = Rect.new(0, dam * @ch, @cw * 10, @ch)
  347. self.bitmap.blt(0, 0, @image, src_rect)
  348. @center_x += 5
  349. end
  350.  
  351. #--------------------------------------------------------------------------
  352. # ? Create Damage Number
  353. #--------------------------------------------------------------------------
  354. def create_damage_number
  355. dam = @critical ? @ch * 2 : @value >= 0 ? 0 : @ch
  356. f = @value >= 0 ? 0 : 1
  357. number_value = @value.to_s.split(//)
  358. self.bitmap = Bitmap.new(@mp_space + (@cw * number_value.size),@ch * 4)
  359. for r in f...number_value.size
  360. number_value_abs = number_value[r].to_i
  361. src_rect = Rect.new(@cw * number_value_abs, dam, @cw, @ch)
  362. self.bitmap.blt(@mp_space + (@cw * r), 0, @image, src_rect)
  363. @center_x += 1
  364. end
  365. if @type == "MP" or @type == "TP"
  366. ty = @type == "MP" ? 3 : 4
  367. src_rect = Rect.new(0, @ch * ty, @cw * 10, @ch)
  368. self.bitmap.blt(0, 0, @image, src_rect)
  369. @center_x += 2
  370. end
  371. @center_x += 1 if @value < 0
  372. end
  373.  
  374. #--------------------------------------------------------------------------
  375. # ? Create Damage String
  376. #--------------------------------------------------------------------------
  377. def create_damage_string
  378. string_size = @value.to_s.split(//)
  379. @stg_size = string_size.size > 0 ? ((1 + string_size.size) * 24) : 32
  380. self.bitmap = Bitmap.new(@stg_size,32)
  381. self.bitmap.font.size = 28
  382. self.bitmap.font.bold = true
  383. @center_x = 2 + (string_size.size / 2)
  384. if @state_index != nil
  385. draw_states
  386. else
  387. execute_font_color
  388. damage_string = @value.to_s
  389. self.bitmap.draw_text(0, 0, @stg_size, 32, damage_string,0)
  390. end
  391. end
  392.  
  393. #--------------------------------------------------------------------------
  394. # ? Execute Font Color
  395. #--------------------------------------------------------------------------
  396. def execute_font_color
  397. case @type
  398. when "Gold"
  399. @duration = 160
  400. self.bitmap.font.color = Color.new(255,255,100)
  401. when "Exp"
  402. @duration = 120
  403. self.bitmap.font.color = Color.new(0,255,100)
  404. when "Level_UP"
  405. self.bitmap.font.color = Color.new(50,155,255)
  406. else
  407. self.bitmap.font.color = Color.new(255,255,255)
  408. end
  409. end
  410.  
  411. #--------------------------------------------------------------------------
  412. # ? Draw States
  413. #--------------------------------------------------------------------------
  414. def draw_states
  415. icon_image = Cache.system("Iconset")
  416. if @type == "States Plus"
  417. self.bitmap.font.color = Color.new(200,150,50)
  418. damage_string = "+ " + @value.to_s
  419. elsif @type == "States Minus"
  420. self.bitmap.font.color = Color.new(100,100,100)
  421. damage_string = "- " + @value.to_s
  422. end
  423. rect = Rect.new(@state_index % 16 * 24, @state_index / 16 * 24, 24, 24)
  424. self.bitmap.blt(0, 0, icon_image, rect)
  425. self.bitmap.draw_text(26, 0, @stg_size - 24, 32, damage_string,0)
  426. @center_x += 5
  427. icon_image.dispose
  428. icon_image = nil
  429. end
  430.  
  431. #--------------------------------------------------------------------------
  432. # ? Dispose
  433. #--------------------------------------------------------------------------
  434. def dispose
  435. return if @image == nil
  436. @image.dispose
  437. @image = nil
  438. self.bitmap.dispose
  439. self.bitmap = nil
  440. @duration = -1
  441. end
  442.  
  443. #--------------------------------------------------------------------------
  444. # ? Update
  445. #--------------------------------------------------------------------------
  446. def update
  447. return if self.bitmap == nil
  448. @duration -= 1 if @duration > 0
  449. self.visible = @duration > 80 ? false : true
  450. case @duration
  451. when 65..80
  452. self.opacity += 5
  453. self.x += @speed_x
  454. self.y -= 5
  455. critical_effect(0.05)
  456. when 50..65
  457. self.opacity = 255
  458. self.y -= 3
  459. self.x += @speed_x
  460. critical_effect(0.05)
  461. when 35..50
  462. self.opacity = 255
  463. self.y += 3
  464. critical_effect(-0.05)
  465. when 0..35
  466. self.opacity -= 7
  467. self.y -= 1
  468. critical_effect(-0.05)
  469. end
  470. dispose if self.opacity <= 0
  471. end
  472.  
  473. #--------------------------------------------------------------------------
  474. # ? Critical Effect
  475. #--------------------------------------------------------------------------
  476. def critical_effect(value)
  477. return if !@critical
  478. self.zoom_x += value
  479. self.zoom_y = self.zoom_x
  480. end
  481.  
  482. end
  483.  
  484. #==============================================================================
  485. # ¦ Sprite Battle
  486. #==============================================================================
  487. class Sprite_Battler < Sprite_Base
  488.  
  489. #--------------------------------------------------------------------------
  490. # ? Initialize
  491. #--------------------------------------------------------------------------
  492. alias mog_damagepop_initialize initialize
  493. def initialize(viewport, battler = nil)
  494. mog_damagepop_initialize(viewport, battler)
  495. create_damage_sprite
  496. end
  497.  
  498. #--------------------------------------------------------------------------
  499. # ? Create Damage Sprite
  500. #--------------------------------------------------------------------------
  501. def create_damage_sprite
  502. dispose_damage_sprite
  503. @damage_sprites = []
  504. end
  505.  
  506. #--------------------------------------------------------------------------
  507. # ? Dispose
  508. #--------------------------------------------------------------------------
  509. alias mog_damge_sprite_dispose dispose
  510. def dispose
  511. mog_damge_sprite_dispose
  512. dispose_damage_sprite
  513. end
  514.  
  515. #--------------------------------------------------------------------------
  516. # ? Dispose Damage Sprite
  517. #--------------------------------------------------------------------------
  518. def dispose_damage_sprite
  519. return if @damage_sprites == nil
  520. @damage_sprites.each {|sprite| sprite.dispose }
  521. @damage_sprites.clear
  522. @battler.damage.clear if @battler != nil
  523. end
  524.  
  525. #--------------------------------------------------------------------------
  526. # ? Update
  527. #--------------------------------------------------------------------------
  528. alias mog_damage_sprite_update update
  529. def update
  530. mog_damage_sprite_update
  531. update_damage_sprite
  532. end
  533.  
  534. #--------------------------------------------------------------------------
  535. # ? Create Damage
  536. #--------------------------------------------------------------------------
  537. def create_damage
  538. return if !@battler.use_sprite?
  539. index = 0
  540. sx = @battler.screen_x != nil ? @battler.screen_x : self.x
  541. sy = @battler.screen_y != nil ? @battler.screen_y : self.y
  542. @damage_sprites = [] if @damage_sprites == nil
  543. for i in @battler.damage
  544. @damage_sprites.push(Damage_Sprite.new(nil,sx,sy,i,index))
  545. index += 1
  546. end
  547. @battler.damage.clear
  548. end
  549.  
  550. #--------------------------------------------------------------------------
  551. # ? Update Damage Sprite
  552. #--------------------------------------------------------------------------
  553. def update_damage_sprite
  554. return if @damage_sprites == nil or @battler == nil
  555. if @initial_damage == nil
  556. @initial_damage = true
  557. @battler.damage.clear
  558. return
  559. end
  560. create_damage if !@battler.damage.empty?
  561. if !@damage_sprites.empty?
  562. clear = 0
  563. for sprite in @damage_sprites
  564. sprite.update
  565. if sprite.duration == 0
  566. sprite.dispose
  567. end
  568. clear += 1 if sprite.duration > 0
  569. end
  570. clear_damage if clear == 0
  571. end
  572. end
  573.  
  574. #--------------------------------------------------------------------------
  575. # ? Update Damage Sprite
  576. #--------------------------------------------------------------------------
  577. def clear_damage
  578. @damage_sprites.each {|sprite| sprite.dispose }
  579. @damage_sprites.clear
  580. end
  581.  
  582. #--------------------------------------------------------------------------
  583. # ? Update Collapse
  584. #--------------------------------------------------------------------------
  585. alias mog_damage_pop_update_collapse update_collapse
  586. def update_collapse
  587. mog_damage_pop_update_collapse
  588. execute_exp_pop
  589. end
  590.  
  591. #--------------------------------------------------------------------------
  592. # ? Update Instant Collapse
  593. #--------------------------------------------------------------------------
  594. alias mog_damage_pop_update_instant_collapse update_instant_collapse
  595. def update_instant_collapse
  596. mog_damage_pop_update_instant_collapse
  597. execute_exp_pop
  598. end
  599.  
  600. #--------------------------------------------------------------------------
  601. # ? Update Boss Collapse
  602. #--------------------------------------------------------------------------
  603. alias mog_damage_pop_update_boss_collapse update_boss_collapse
  604. def update_boss_collapse
  605. mog_damage_pop_update_boss_collapse
  606. execute_exp_pop
  607. end
  608.  
  609. #--------------------------------------------------------------------------
  610. # ? Execute Exp Pop
  611. #--------------------------------------------------------------------------
  612. def execute_exp_pop
  613. return if @dam_exp != nil
  614. return if !MOG_DAMAGEPOP::EXP_POPUP
  615. return if @battler.is_a?(Game_Actor)
  616. @dam_exp = true
  617. if $mog_rgss3_active_bonus_gauge != nil
  618. if bonus_exp?
  619. real_exp = @battler.exp * 2
  620. else
  621. real_exp = @battler.exp
  622. end
  623. if bonus_gold?
  624. real_gold = @battler.gold * 2
  625. else
  626. real_gold = @battler.gold
  627. end
  628. else
  629. real_exp = @battler.exp
  630. real_gold = @battler.gold
  631. end
  632. @battler.damage.push(["EXP " + real_exp.to_s,"Exp"]) if @battler.exp > 0
  633. @battler.damage.push([Vocab::currency_unit + " " + real_gold.to_s,"Gold"]) if @battler.gold > 0
  634. end
  635.  
  636. if $mog_rgss3_active_bonus_gauge != nil
  637. #--------------------------------------------------------------------------
  638. # ? Bonus Gold
  639. #--------------------------------------------------------------------------
  640. def bonus_gold?
  641. $game_system.bonus_gauge[3] and $game_system.bonus_gauge[2] == 3
  642. end
  643.  
  644. #--------------------------------------------------------------------------
  645. # ? Bonus Exp
  646. #--------------------------------------------------------------------------
  647. def bonus_exp?
  648. $game_system.bonus_gauge[3] and $game_system.bonus_gauge[2] == 2
  649. end
  650. end
  651.  
  652. end
  653.  
  654.  
  655. #==============================================================================
  656. # ¦ Game Interpreter
  657. #==============================================================================
  658. class Game_Interpreter
  659.  
  660. #--------------------------------------------------------------------------
  661. # ? damage Popup
  662. #--------------------------------------------------------------------------
  663. def damage_popup(value,type = nil, critical = false)
  664. type = (type == nil and value.is_a?(Numeric)) ? "HP" : type
  665. $game_map.events[@event_id].damage.push([value,type,critical]) if same_map? && @event_id > 0
  666. end
  667.  
  668. end
  669.  
  670. #==============================================================================
  671. # ¦ Game Character
  672. #==============================================================================
  673. class Game_CharacterBase
  674.  
  675. attr_accessor :damage
  676.  
  677. #--------------------------------------------------------------------------
  678. # ? Initialize
  679. #--------------------------------------------------------------------------
  680. alias mog_damage_popup_initialize initialize
  681. def initialize
  682. @damage = []
  683. mog_damage_popup_initialize
  684. end
  685.  
  686. #--------------------------------------------------------------------------
  687. # ? damage Popup
  688. #--------------------------------------------------------------------------
  689. def damage_popup(value,type = nil, critical = false)
  690. type = (type == nil and value.is_a?(Numeric)) ? "HP" : type
  691. @damage.push([value,type,critical])
  692. end
  693.  
  694. end
  695.  
  696. #==============================================================================
  697. # ¦ Sprite Character
  698. #==============================================================================
  699. class Sprite_Character < Sprite_Base
  700.  
  701. #--------------------------------------------------------------------------
  702. # ? Initialize
  703. #--------------------------------------------------------------------------
  704. alias mog_damage_popup_initialize initialize
  705. def initialize(viewport, character = nil)
  706. mog_damage_popup_initialize(viewport, character)
  707. create_damage_sprite
  708. end
  709.  
  710. #--------------------------------------------------------------------------
  711. # ? Create Damage Sprite
  712. #--------------------------------------------------------------------------
  713. def create_damage_sprite
  714. dispose_damage_sprite
  715. @damage_sprites = []
  716. end
  717.  
  718. #--------------------------------------------------------------------------
  719. # ? Dispose
  720. #--------------------------------------------------------------------------
  721. alias mog_damage_popup_dispose dispose
  722. def dispose
  723. mog_damage_popup_dispose
  724. dispose_damage_sprite
  725. end
  726.  
  727. #--------------------------------------------------------------------------
  728. # ? Dispose Damage Sprite
  729. #--------------------------------------------------------------------------
  730. def dispose_damage_sprite
  731. return if @damage_sprites == nil
  732. @damage_sprites.each {|sprite| sprite.dispose }
  733. @damage_sprites.clear
  734. @character.damage.clear
  735. $game_temp.dispose_damage_sprite = false
  736. end
  737.  
  738. #--------------------------------------------------------------------------
  739. # ? Update
  740. #--------------------------------------------------------------------------
  741. alias mog_damage_popup_update update
  742. def update
  743. mog_damage_popup_update
  744. update_damage_sprite
  745. end
  746.  
  747. #--------------------------------------------------------------------------
  748. # ? Create Damage
  749. #--------------------------------------------------------------------------
  750. def create_damage
  751. index = 0
  752. sx = self.x
  753. sy = self.y + @ch
  754. @damage_sprites = [] if @damage_sprites == nil
  755. for i in @character.damage
  756. @damage_sprites.push(Damage_Sprite.new(nil,sx,sy,i,index))
  757. index += 1
  758. end
  759. @character.damage.clear
  760. end
  761.  
  762. #--------------------------------------------------------------------------
  763. # ? Update Damage Sprite
  764. #--------------------------------------------------------------------------
  765. def update_damage_sprite
  766. return if @damage_sprites == nil
  767. if @initial_damage == nil
  768. @initial_damage = true
  769. @character.damage.clear
  770. return
  771. end
  772. create_damage if !@character.damage.empty?
  773. if !@damage_sprites.empty?
  774. clear = 0
  775. for sprite in @damage_sprites
  776. sprite.update
  777. if sprite.duration == 0
  778. sprite.dispose
  779. end
  780. clear += 1 if sprite.duration > 0
  781. end
  782. clear_damage if clear == 0
  783. end
  784. end
  785.  
  786. #--------------------------------------------------------------------------
  787. # ? Update Damage Sprite
  788. #--------------------------------------------------------------------------
  789. def clear_damage
  790. @damage_sprites.each {|sprite| sprite.dispose }
  791. @damage_sprites.clear
  792. @character.damage.clear
  793. end
  794.  
  795. end
  796.  
  797. #=============================================================================
  798. # ¦ Game_Temp
  799. #=============================================================================
  800. class Game_Temp
  801.  
  802. attr_accessor :dispose_damage_sprite
  803.  
  804. #--------------------------------------------------------------------------
  805. # ? Initialize
  806. #--------------------------------------------------------------------------
  807. alias mog_dispose_damage_initialize initialize
  808. def initialize
  809. @dispose_damage_sprite = true
  810. mog_dispose_damage_initialize
  811. end
  812.  
  813. end
  814.  
  815. #=============================================================================
  816. # ¦ Scene Manager
  817. #=============================================================================
  818. class << SceneManager
  819.  
  820. #--------------------------------------------------------------------------
  821. # ? Call
  822. #--------------------------------------------------------------------------
  823. alias mog_damage_pop_call call
  824. def call(scene_class)
  825. $game_temp.dispose_damage_sprite = true
  826. mog_damage_pop_call(scene_class)
  827. end
  828.  
  829. end
  830.  
  831. #=============================================================================
  832. # ¦ Scene Map
  833. #=============================================================================
  834. class Scene_Map < Scene_Base
  835.  
  836. #--------------------------------------------------------------------------
  837. # ? Update Scene
  838. #--------------------------------------------------------------------------
  839. alias mog_dispose_damage_sprites_update update_scene
  840. def update_scene
  841. @spriteset.dispose_damage_sprites
  842. mog_dispose_damage_sprites_update
  843. end
  844.  
  845. end
  846.  
  847. #=============================================================================
  848. # ¦ Spriteset Map
  849. #=============================================================================
  850. class Spriteset_Map
  851.  
  852. #--------------------------------------------------------------------------
  853. # ? Dispose Damage Sprites
  854. #--------------------------------------------------------------------------
  855. def dispose_damage_sprites
  856. return if !$game_temp.dispose_damage_sprite
  857. return if @character_sprites == nil
  858. @character_sprites.each {|sprite| sprite.dispose_damage_sprite }
  859. $game_temp.dispose_damage_sprite = false
  860. end
  861.  
  862. end
  863.  
  864. #=============================================================================
  865. # ¦ Scene Battle
  866. #=============================================================================
  867. class Scene_Battle < Scene_Base
  868.  
  869. #--------------------------------------------------------------------------
  870. # ? Update
  871. #--------------------------------------------------------------------------
  872. alias mog_damage_popup_dispose_sprite_update update
  873. def update
  874. @spriteset.dispose_damage_sprites
  875. mog_damage_popup_dispose_sprite_update
  876. end
  877.  
  878. end
  879.  
  880. #=============================================================================
  881. # ¦ Spriteset Battle
  882. #=============================================================================
  883. class Spriteset_Battle
  884.  
  885. #--------------------------------------------------------------------------
  886. # ? Dispose Damage Sprites
  887. #--------------------------------------------------------------------------
  888. def dispose_damage_sprites
  889. return if !$game_temp.dispose_damage_sprite
  890. battler_sprites.each {|sprite| sprite.dispose_damage_sprite }
  891. $game_temp.dispose_damage_sprite = false
  892. end
  893.  
  894. end
  895.  
  896. $mog_rgss3_damage_pop = true
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement