设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 823|回复: 1
打印 上一主题 下一主题

[已经过期] pop伤害显示问题(大佬求救)

[复制链接]

Lv1.梦旅人

梦石
0
星屑
180
在线时间
14 小时
注册时间
2017-6-9
帖子
29
跳转到指定楼层
1
发表于 2019-6-2 15:41:31 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 qq294094539 于 2019-6-2 15:44 编辑

如图所示:
1,造成伤害的同时,显示了evaded问题(多余)
2,当造成致命一击时,显示致命一击的漂浮伤害(图上没有显示致命一击的漂浮伤害)
3,怪物回血时,显示回血的漂浮值

QQ图片20190602153326.png (161.03 KB, 下载次数: 16)

QQ图片20190602153326.png

Lv1.梦旅人

梦石
0
星屑
180
在线时间
14 小时
注册时间
2017-6-9
帖子
29
2
 楼主| 发表于 2019-6-2 15:42:10 | 只看该作者
本帖最后由 VIPArcher 于 2022-6-8 17:14 编辑

RUBY 代码复制
  1. #==============================================================================
  2. # +++ MOG - DAMAGEPOPUP  (v4.5) +++
  3. #==============================================================================
  4. # By Moghunter
  5. # [url]https://atelierrgss.wordpress.com/[/url]
  6. #==============================================================================
  7. # Apresenta danos dos alvos em imagens.
  8. #==============================================================================
  9. # Ser?o necessários as imagems
  10. #
  11. # Critical
  12. # Evaded
  13. # Exp
  14. # Gold
  15. # Level Up
  16. # Missed
  17. # MP
  18. # Number
  19. # TP
  20. #
  21. # As imagens devem ficar na pasta /GRAPHICS/DAMAGE/
  22. #==============================================================================
  23.  
  24. #==============================================================================
  25. # DAMAGE POPUP FOR CHARACTERS (Events)
  26. #==============================================================================
  27. # Caso desejar ativar manualmente os danos nos characters, basta usar os códigos
  28. # abaixo.
  29. #
  30. # damage_popup(TARGET_ID,VALUE,"TYPE")
  31. #
  32. # TARGET_ID
  33. #      1...999 - Define a ID  do evento no mapa
  34. #      0 - Define a ID sendo do jogador.(Player)
  35. #      -1...-3 - Define  a ID dos aliados (Followers).
  36. #
  37. # VALUE
  38. #       Define o valor em dano (Pode ser valores negativos) ou um texto.
  39. #       No caso das codi??es defina a ID da condi??o. (Valore negativos
  40. #       é apresentado a condi??o sendo removida.)
  41. #
  42. # TYPE (Opcional)
  43. #      So use está op??o para ativar srtings especiais.
  44. #
  45. #      "Exp" - Valor da string se torna em EXP.
  46. #      "Gold" - Valor da string se torna em GOLD.
  47. #      "States" - é apresentado o ícone e o nome da condi??o da condi??o.
  48. #
  49. #==============================================================================
  50. #
  51. # damage_popup(1,999)
  52. # damage_popup(4,"Save Point.")
  53. # damage_popup(0,"I'm hungry!!!")            <- (Player)
  54. # damage_popup(-1,"Booo!")                   <- (Follower ID1)
  55. # damage_popup(0,2000,"Exp")                 <- Popup 2000 Exp
  56. # damage_popup(0,5000,"Gold")                <- Popup 5000 Gold
  57. #
  58. #==============================================================================
  59. # Use o código abaixo se desejar fazer o dano aparecer em todos os personagens.
  60. #
  61. # damage_popup_party(TARGET_ID,STRING,"TYPE")
  62. #
  63. #==============================================================================
  64. # ATIVAR OU DESATIVAR OS DANOS NO MAPA.
  65. #==============================================================================
  66. # é possível usar o código abaixo para ativar ou desativar a dano no mapa
  67. # no meio do jogo, útil se você n?o quiser que alguma string de item ou
  68. # dano apare?a no meio de algum evento ou cena.
  69. #
  70. # damage_popup_map(true)        -> or (false)
  71. #  
  72. #==============================================================================
  73. # ● Histórico (Version History)
  74. #==============================================================================
  75. # v 4.5 - Corre??o de ativar o dano quando o alvo é morto e o dano é zero.
  76. #==============================================================================
  77.  
  78. $imported = {} if $imported.nil?
  79. $imported[:mog_damage_popup] = true
  80.  
  81. module MOG_DAMAGEPOPUP
  82.   #Ativar as strings de dano no mapa. (Default / Inicial)
  83.   DAMAGE_POPUP_MAP = false
  84.   #Apresentar o item ao ganhar. (Apenas no mapa).
  85.   ITEM_POPUP_MAP = true
  86.   #Apresentar a exp e ouro do inimigo.
  87.   EXP_GOLD_POPUP_BATTLE = true
  88.   EXP_GOLD_POPUP_MAP = true
  89.   #Ativar a string de Level UP
  90.   LEVEL_POPUP_BATTLE = true
  91.   LEVEL_POPUP_MAP = true
  92.   #Ativar as strings nas condi??es.
  93.   STATES_POPUP_BATTLE = true
  94.   STATES_POPUP_MAP = true
  95.   #Defini??o da fonte (Nome de itens/ condi??es / etc...).
  96.   FONT_SIZE = 28
  97.   FONT_BOLD = true
  98.   FONT_ITALIC = false
  99.   FONT_COLOR = Color.new(255,255,255)
  100.   FONT_COLOR_ITEM = Color.new(255,255,255)
  101.   FONT_COLOR_STATUS_PLUS = Color.new(155,155,255)
  102.   FONT_COLOR_STATUS_MINUS = Color.new(255,150,150)
  103.   #Defini??o do espa?o entre os danos.
  104.   Y_SPACE = 28
  105.   #Defini??o da posi??o Z do srpite.
  106.   DAMAGE_Z = 151
  107. end
  108.  
  109. #==============================================================================
  110. # ■ Game_System
  111. #==============================================================================
  112. class Game_System
  113.   attr_accessor :damage_popup_map
  114.  
  115.   #--------------------------------------------------------------------------
  116.   # ● Initialize
  117.   #--------------------------------------------------------------------------         
  118.   alias mog_damage_popup_initialize initialize
  119.   def initialize
  120.       @damage_popup_map = MOG_DAMAGEPOPUP::DAMAGE_POPUP_MAP
  121.       mog_damage_popup_initialize
  122.   end
  123.  
  124.   #--------------------------------------------------------------------------
  125.   # ● Damage Popup Clear
  126.   #--------------------------------------------------------------------------         
  127.   def damage_popup_clear
  128.       $game_party.character_members.each {|t|
  129.       t.actor.damage.clear; t.actor.skip_dmg_popup = false ;
  130.       t.damage.clear; t.skip_dmg_popup = false} rescue nil
  131.       $game_map.events.values.each {|t| t.damage.clear ;
  132.       t.skip_dmg_popup = false} rescue nil
  133.   end
  134.  
  135. end  
  136.  
  137. #==============================================================================
  138. # ■ Game Temp
  139. #==============================================================================
  140. class Game_Temp
  141.  
  142.   attr_accessor :battle_end
  143.  
  144.   #--------------------------------------------------------------------------
  145.   # ● Initialize
  146.   #--------------------------------------------------------------------------   
  147.   alias mog_damage_temp_opup_initialize initialize
  148.   def initialize
  149.       @battle_end = false
  150.       mog_damage_temp_opup_initialize
  151.   end
  152.  
  153.   #--------------------------------------------------------------------------
  154.   # ● Sprite Visible
  155.   #--------------------------------------------------------------------------   
  156.   def sprite_visible
  157.       return false if $game_message.visible
  158.       return false if $game_temp.battle_end
  159.       return true
  160.   end
  161.  
  162. end
  163. #==============================================================================
  164. # ■ Game CharacterBase
  165. #==============================================================================
  166. class Game_CharacterBase
  167.  
  168.   attr_accessor :damage ,:battler ,:skip_dmg_popup
  169.  
  170.   #--------------------------------------------------------------------------
  171.   # ● Ini Public Members
  172.   #--------------------------------------------------------------------------         
  173.   alias mog_damage_popup_init_public_members init_public_members
  174.   def init_public_members
  175.       @damage = [] ; @skip_dmg_popup = false
  176.       mog_damage_popup_init_public_members
  177.   end
  178.  
  179.   #--------------------------------------------------------------------------
  180.   # ● Damage Popup
  181.   #--------------------------------------------------------------------------         
  182.   def damage_popup(value,type = "String")      
  183.       @damage.push([value,type])
  184.   end  
  185.  
  186. end
  187.  
  188. #==============================================================================
  189. # ■ Scene Map
  190. #==============================================================================
  191. class Scene_Map < Scene_Base  
  192.   #--------------------------------------------------------------------------
  193.   # ● Start
  194.   #--------------------------------------------------------------------------
  195.   alias mog_damage_popup_start start
  196.   def start
  197.       $game_system.damage_popup_clear ; $game_temp.battle_end = false
  198.       mog_damage_popup_start
  199.   end  
  200. end
  201.  
  202. #==============================================================================
  203. # ■ Game Player
  204. #==============================================================================
  205. class Game_Player < Game_Character   
  206.   #--------------------------------------------------------------------------
  207.   # ● Battler
  208.   #--------------------------------------------------------------------------
  209.   def battler
  210.       actor
  211.   end   
  212. end
  213.  
  214. #==============================================================================
  215. # ■ Game Follower
  216. #==============================================================================
  217. class Game_Follower < Game_Character  
  218.   #--------------------------------------------------------------------------
  219.   # ● Battler
  220.   #--------------------------------------------------------------------------
  221.   def battler
  222.       actor
  223.   end   
  224. end
  225.  
  226. #==============================================================================
  227. # ■ Game_BattlerBase
  228. #==============================================================================
  229. class Game_BattlerBase  
  230.   #--------------------------------------------------------------------------
  231.   # ● Change HP
  232.   #--------------------------------------------------------------------------         
  233.   alias mog_damage_popup_change_hp change_hp
  234.   def change_hp(value, enable_death)
  235.       mog_damage_popup_change_hp(value, enable_death)
  236.       self.damage.push([-value,"Hp"])
  237.   end   
  238. end
  239.  
  240. #==============================================================================
  241. # ■ Game_Battler
  242. #==============================================================================
  243. class Game_Battler < Game_BattlerBase  
  244.   include MOG_DAMAGEPOPUP
  245.   attr_accessor :damage , :skip_dmg_popup
  246.  
  247.   #--------------------------------------------------------------------------
  248.   # ● Initialize
  249.   #--------------------------------------------------------------------------         
  250.   alias mog_damage_sprite_initialize initialize
  251.   def initialize      
  252.       @damage = [] ; @skip_dmg_popup = false
  253.       mog_damage_sprite_initialize
  254.   end  
  255.  
  256.   #--------------------------------------------------------------------------
  257.   # ● Item Apply
  258.   #--------------------------------------------------------------------------  
  259.    alias mog_damage_pop_item_apply item_apply
  260.    def item_apply(user, item)
  261.        mog_damage_pop_item_apply(user, item)
  262.        execute_damage_popup(user,item)
  263.   end
  264.  
  265.   #--------------------------------------------------------------------------
  266.   # ● Execute Damage Popup
  267.   #--------------------------------------------------------------------------
  268.   def execute_damage_popup(user,item)
  269.       if !@result.missed and !@result.evaded and @result.hit?
  270.         self.damage.push([@result.hp_damage,"HP",@result.critical]) if item.damage.to_hp? or @result.hp_damage != 0
  271.         user.damage.push([-@result.hp_drain,"HP",@result.critical]) if item.damage.type == 5
  272.         self.damage.push([@result.mp_damage,"MP",@result.critical]) if item.damage.to_mp? or @result.mp_damage != 0
  273.         user.damage.push([-@result.mp_drain,"MP",@result.critical]) if item.damage.type == 6
  274.         self.damage.push([@result.tp_damage,"TP",@result.critical]) if @result.tp_damage != 0
  275.      elsif !self.dead?
  276.         if @result.missed ; self.damage.push(["Missed","Missed"])
  277.         elsif @result.evaded ; self.damage.push(["Missed","Missed"])
  278.         #if @result.critica ; self.damage.push(["baoji","baoji"])
  279.         #end        
  280.       end
  281.     end
  282.   end
  283.  
  284.   #--------------------------------------------------------------------------
  285.   # ● Regenerate HP
  286.   #--------------------------------------------------------------------------
  287.   #alias mog_damage_pop_regenerate_hp regenerate_hp
  288.   #def regenerate_hp
  289.       #mog_damage_pop_regenerate_hp
  290.       #self.damage.push(["Regenerate",""]) if @result.hp_damage < 0  
  291.       #self.damage.push([@result.hp_damage,"HP"]) if @result.hp_damage != 0
  292.   #end
  293.  
  294.   #--------------------------------------------------------------------------
  295.   # ● Regenerate MP
  296.   #--------------------------------------------------------------------------
  297.   #alias mog_damage_pop_regenerate_mp regenerate_mp
  298.   #def regenerate_mp
  299.       #mog_damage_pop_regenerate_mp
  300.       #self.damage.push(["Regenerate",""])
  301.       #self.damage.push([@result.mp_damage,"MP"]) if @result.mp_damage != 0
  302.   #end
  303.  
  304.   #--------------------------------------------------------------------------
  305.   # ● Regenerate TP
  306.   #--------------------------------------------------------------------------
  307.   #alias mog_damage_pop_regenerate_tp regenerate_tp
  308.   #def regenerate_tp
  309.       #mog_damage_pop_regenerate_tp
  310.       #tp_damage = 100 * trg
  311.       #self.damage.push([tp_damage,"TP"]) if tp_damage != 0
  312.   #end
  313.  
  314.   #--------------------------------------------------------------------------
  315.   # ● Added New State
  316.   #--------------------------------------------------------------------------  
  317.   alias mog_damage_pop_add_new_state add_new_state
  318.   def add_new_state(state_id)
  319.       mog_damage_pop_add_new_state(state_id)
  320.       execute_popup_add_new_state(state_id)
  321.   end
  322.  
  323.   #--------------------------------------------------------------------------
  324.   # ● Execute Popup Add New State
  325.   #--------------------------------------------------------------------------  
  326. def execute_popup_add_new_state(state_id)
  327.       st = $data_states[state_id]
  328.       if self.hp > 0
  329.          unless (SceneManager.scene_is?(Scene_Battle) and !STATES_POPUP_BATTLE) or
  330.                 (SceneManager.scene_is?(Scene_Map) and !STATES_POPUP_MAP)
  331.                 self.damage.push([st.name.to_s,"States Plus",false,st.icon_index])
  332.          end
  333.       end
  334.   end
  335.  
  336.   #--------------------------------------------------------------------------
  337.   # ● Remove State
  338.   #--------------------------------------------------------------------------  
  339.   alias mog_damage_pop_remove_state remove_state
  340.   def remove_state(state_id)
  341.       execute_popup_remove_state(state_id)  
  342.       mog_damage_pop_remove_state(state_id)
  343.   end      
  344.  
  345.   #--------------------------------------------------------------------------
  346.   # ● Execute Popup Remove State
  347.   #--------------------------------------------------------------------------  
  348.   def execute_popup_remove_state(state_id)  
  349.       if state?(state_id) and self.hp > 0
  350.          st = $data_states[state_id]
  351.          unless (SceneManager.scene_is?(Scene_Battle) and !STATES_POPUP_BATTLE) or
  352.                 (SceneManager.scene_is?(Scene_Map) and !STATES_POPUP_MAP)
  353.                 self.damage.push([st.name.to_s,"States Minus",false,st.icon_index]) unless BattleManager.escape?
  354.          end
  355.       end
  356.   end     
  357.  
  358. end
  359.  
  360. #==============================================================================
  361. # ■ BattleManager
  362. #==============================================================================
  363. module BattleManager
  364.   #--------------------------------------------------------------------------
  365.   # ● Escape?
  366.   #--------------------------------------------------------------------------
  367.   def self.escape?
  368.       @phase == nil
  369.   end  
  370. end
  371.  
  372. #==============================================================================
  373. # ■ Game_Temp
  374. #==============================================================================
  375. class Game_Temp
  376.   attr_accessor :dmg_battle_mode
  377.  
  378.   #--------------------------------------------------------------------------
  379.   # ● Initialize
  380.   #--------------------------------------------------------------------------         
  381.   alias mog_damage_popup_initialize initialize
  382.   def initialize
  383.       @dmg_battle_mode = false
  384.       mog_damage_popup_initialize
  385.   end
  386.  
  387. end
  388.  
  389. #==============================================================================
  390. # ■ Scene Battle
  391. #==============================================================================
  392. class Scene_Battle < Scene_Base
  393.  
  394.   #--------------------------------------------------------------------------
  395.   # ● Start
  396.   #--------------------------------------------------------------------------         
  397.   alias mog_damage_popup_start start
  398.   def start
  399.       $game_temp.dmg_battle_mode = true
  400.       mog_damage_popup_start
  401.   end
  402.  
  403.   #--------------------------------------------------------------------------
  404.   # ● Terminate
  405.   #--------------------------------------------------------------------------         
  406.   alias mog_damage_popup_terminate terminate
  407.   def terminate
  408.       mog_damage_popup_terminate
  409.       $game_temp.dmg_battle_mode = false
  410.   end
  411.  
  412. end
  413.  
  414. #==============================================================================
  415. # ■ Game Party
  416. #==============================================================================
  417. class Game_Party < Game_Unit
  418.  
  419.   #--------------------------------------------------------------------------
  420.   # ● Character Members
  421.   #--------------------------------------------------------------------------         
  422.   def character_members
  423.       char_m = [] ; char_m.push($game_player)
  424.       $game_player.followers.each do |f| char_m.push(f) end
  425.       return char_m
  426.   end
  427.  
  428.   #--------------------------------------------------------------------------
  429.   # ● Gain Gold
  430.   #--------------------------------------------------------------------------         
  431.   #alias mog_damage_popup_gain_gold gain_gold
  432.   #def gain_gold(amount)
  433.      # mog_damage_popup_gain_gold(amount)
  434.       #$game_party.members[0].damage.push([amount,"Gold"]) if can_damage_popup_gold?
  435.   #end  
  436.  
  437.   #--------------------------------------------------------------------------
  438.   # ● Can Damage Popup Gold
  439.   #--------------------------------------------------------------------------         
  440.   def can_damage_popup_gold?
  441.       return false if !SceneManager.scene_is?(Scene_Map)
  442.       return false if $game_temp.dmg_battle_mode
  443.       return false if !MOG_DAMAGEPOPUP::EXP_GOLD_POPUP_MAP
  444.       return false if !$game_system.damage_popup_map
  445.       return false if !$game_party.members[0]
  446.       return true
  447.   end
  448.  
  449. #--------------------------------------------------------------------------
  450. # ● Gain Item
  451. #--------------------------------------------------------------------------
  452. alias mog_damage_popup_gain_item gain_item
  453. def gain_item(item, amount, include_equip = false)
  454.      mog_damage_popup_gain_item(item, amount, include_equip)
  455.      execute_item_popup(item) if can_damage_popup_item?(item)
  456. end
  457.  
  458. #--------------------------------------------------------------------------
  459. # ● Can Damage Poupup Item
  460. #--------------------------------------------------------------------------
  461. def can_damage_popup_item?(item)
  462.      return false if item == nil
  463.      return false if !MOG_DAMAGEPOPUP::ITEM_POPUP_MAP
  464.      return false if !$game_system.damage_popup_map
  465.      return false if SceneManager.scene_is?(Scene_Battle)
  466.      return false if !$game_party.members[0]
  467.      return false if $game_temp.dmg_battle_mode
  468.      return true     
  469. end
  470.  
  471. #--------------------------------------------------------------------------
  472. # ● Execute Item Popup
  473. #--------------------------------------------------------------------------
  474. def execute_item_popup(item)
  475.      it = $data_items[item.id] if item.is_a?(RPG::Item)
  476.      it = $data_weapons[item.id] if item.is_a?(RPG::Weapon)
  477.      it = $data_armors[item.id] if item.is_a?(RPG::Armor)   
  478.      $game_party.members[0].damage.push([it.name.to_s,"Item",false,it.icon_index])
  479. end
  480.  
  481. end
  482.  
  483. #==============================================================================
  484. # ■ Game Interpreter
  485. #==============================================================================
  486. class Game_Interpreter
  487.  
  488. #--------------------------------------------------------------------------
  489. # ● Damage Popup Map
  490. #--------------------------------------------------------------------------
  491.   def damage_popup_map(value)
  492.       $game_system.damage_popup_map = value
  493.   end   
  494.  
  495.   #--------------------------------------------------------------------------
  496.   # ● Damage Popup
  497.   #--------------------------------------------------------------------------
  498.   def damage_popup(target_id, value,type = "")
  499.       return if !$game_system.damage_popup_map
  500.       target = set_target_dmg(target_id) rescue nil
  501.       target.damage.push([value,type]) if target
  502.   end
  503.  
  504.   #--------------------------------------------------------------------------
  505.   # ● Set Target Dmg
  506.   #--------------------------------------------------------------------------
  507.   def set_target_dmg(target)
  508.       return $game_player.battler if target == 0
  509.       return $game_player.followers.battler[(target_id + 1).abs] if target < 0
  510.       $game_map.events.values.each do |event|
  511.       return event.battler if event.id == target_id and event.battler
  512.       return event if event.id == target_id
  513.       end
  514.   end
  515.  
  516.   #--------------------------------------------------------------------------
  517.   # * Change MP
  518.   #--------------------------------------------------------------------------
  519.   alias mog_damage_popup_command_312 command_312
  520.   def command_312
  521.       value = operate_value(@params[2], @params[3], @params[4])
  522.       iterate_actor_var(@params[0], @params[1]) do |actor|
  523.       actor.damage.push([-value,"MP"])
  524.       end   
  525.       mog_damage_popup_command_312
  526.   end  
  527.  
  528. end
  529.  
  530. #==============================================================================
  531. # ■ Game Actor
  532. #==============================================================================
  533. class Game_Actor < Game_Battler
  534.   include MOG_DAMAGEPOPUP
  535.   #--------------------------------------------------------------------------
  536.   # ● Level UP
  537.   #--------------------------------------------------------------------------         
  538.    alias mog_damage_pop_level_up level_up
  539.    def level_up
  540.        mog_damage_pop_level_up      
  541.        execute_level_popup
  542.    end
  543.  
  544.   #--------------------------------------------------------------------------
  545.   # ● Execute Level Popup
  546.   #--------------------------------------------------------------------------         
  547.    def execute_level_popup
  548.        if (SceneManager.scene_is?(Scene_Battle) and LEVEL_POPUP_BATTLE) or
  549.           (SceneManager.scene_is?(Scene_Map) and LEVEL_POPUP_MAP)
  550.           @damage.push(["Level UP","Level_UP"]) unless @skip_dmg_popup
  551.           @skip_dmg_popup = true
  552.        end     
  553.    end
  554.  
  555.   #--------------------------------------------------------------------------
  556.   # ● Change Exp
  557.   #--------------------------------------------------------------------------         
  558.   #alias mog_damage_popup_change_exp change_exp
  559.   #def change_exp(exp, show)
  560.       #n_exp = self.exp
  561.       #mog_damage_popup_change_exp(exp, show)
  562.       #c_exp = n_exp - self.exp
  563.       #@damage.push([c_exp.abs,"Exp"]) if can_popup_exp?(exp)
  564.   #end   
  565.  
  566.   #--------------------------------------------------------------------------
  567.   # ● Can Popup EXP
  568.   #--------------------------------------------------------------------------         
  569.   def can_popup_exp?(exp)
  570.       return false if !EXP_GOLD_POPUP_MAP
  571.       return false if exp <= 0
  572.       return false if self.skip_dmg_popup
  573.       return false if self.max_level?
  574.       return true
  575.   end
  576.  
  577. end
  578.  
  579. #==============================================================================
  580. # ■ Scene_Battle
  581. #==============================================================================
  582. class Scene_Battle < Scene_Base
  583.  
  584.   #--------------------------------------------------------------------------
  585.   # ● Invoke Counter Attack
  586.   #--------------------------------------------------------------------------        
  587.   alias mog_damage_popup_invoke_counter_attack invoke_counter_attack
  588.   def invoke_counter_attack(target, item)
  589.       mog_damage_popup_invoke_counter_attack(target, item)
  590.       #target.damage.push(["Counter","Counter"])
  591.   end  
  592.  
  593.   #--------------------------------------------------------------------------
  594.   # ● Invoke Counter Attack
  595.   #--------------------------------------------------------------------------        
  596.   alias mog_damage_popup_invoke_magic_reflection invoke_magic_reflection
  597.   def invoke_magic_reflection(target, item)
  598.       mog_damage_popup_invoke_magic_reflection(target, item)
  599.       #target.damage.push(["Reflection","Reflection"])
  600.   end  
  601.  
  602. end
  603.  
  604. #==============================================================================
  605. # ■ Cache
  606. #==============================================================================
  607. module Cache
  608.  
  609.   #--------------------------------------------------------------------------
  610.   # * Damage
  611.   #--------------------------------------------------------------------------
  612.   def self.damage(filename)
  613.       load_bitmap("Graphics/Damage/", filename)
  614.   end
  615.  
  616. end
  617.  
  618. #==============================================================================
  619. # ■ Game Temp
  620. #==============================================================================
  621. class Game_Temp
  622.  
  623.   attr_accessor :pre_cache_damage
  624.  
  625.   #--------------------------------------------------------------------------
  626.   # ● Initialize
  627.   #--------------------------------------------------------------------------  
  628.   alias mog_damage_pop_initialize initialize
  629.   def initialize
  630.       mog_damage_pop_initialize
  631.       pre_cache_damage_temp
  632.   end
  633.  
  634.   #--------------------------------------------------------------------------
  635.   # ● Pre Cache Damage Temp
  636.   #--------------------------------------------------------------------------   
  637.   def pre_cache_damage_temp
  638.       return if @pre_cache_damage != nil
  639.       @pre_cache_damage = []
  640.       @pre_cache_damage.push(Cache.damage("HP_Number"))
  641.       @pre_cache_damage.push(Cache.damage("MP"))
  642.       @pre_cache_damage.push(Cache.damage("TP"))
  643.       @pre_cache_damage.push(Cache.damage("Missed"))
  644.       @pre_cache_damage.push(Cache.damage("baoji"))
  645.       @pre_cache_damage.push(Cache.damage("Evaded"))
  646.       #@pre_cache_damage.push(Cache.damage("Critical"))
  647.       #@pre_cache_damage.push(Cache.damage("Exp"))
  648.       #@pre_cache_damage.push(Cache.damage("Gold"))
  649.       @pre_cache_damage.push(Cache.damage("Level UP"))
  650.       @pre_cache_damage.push(Cache.damage("Counter"))
  651.       @pre_cache_damage.push(Cache.damage("Reflection"))
  652.       @pre_cache_damage.push(Cache.damage("MP_Number"))
  653.       @pre_cache_damage.push(Cache.damage("TP_Number"))
  654.       @pre_cache_damage.push(Cache.damage("EG_Number"))
  655.       @pre_cache_damage.push(Cache.system("Iconset"))
  656.   end
  657.  
  658. end
  659.  
  660. #==============================================================================
  661. # ■ Sprite Base
  662. #==============================================================================
  663. class Sprite_Base < Sprite
  664.  
  665.   #--------------------------------------------------------------------------
  666.   # ● Initialize
  667.   #--------------------------------------------------------------------------  
  668.   alias mog_damage_popup_sprite_initialize initialize
  669.   def initialize(viewport = nil)
  670.       mog_damage_popup_sprite_initialize(viewport)
  671.       damage_popup_setup
  672.   end
  673.  
  674.   #--------------------------------------------------------------------------
  675.   # ● Damage Popup Setup
  676.   #--------------------------------------------------------------------------  
  677.   def damage_popup_setup      
  678.       $game_temp.pre_cache_damage_temp ; @damage_sprites = []
  679.       $game_system.damage_popup_clear
  680.   end
  681.  
  682.   #--------------------------------------------------------------------------
  683.   # ● Dispose
  684.   #--------------------------------------------------------------------------  
  685.   alias mog_damage_popup_sprite_dispose dispose
  686.   def dispose      
  687.       mog_damage_popup_sprite_dispose
  688.       dispose_damage_sprites
  689.   end
  690.  
  691.   #--------------------------------------------------------------------------
  692.   # ● Dispose Damage Sprites
  693.   #--------------------------------------------------------------------------   
  694.   def dispose_damage_sprites
  695.       return if @damage_sprites == nil
  696.       @damage_sprites.each {|sprite| sprite.dispose_damage }
  697.   end  
  698.  
  699.   #--------------------------------------------------------------------------
  700.   # ● Update
  701.   #--------------------------------------------------------------------------  
  702.   alias mog_damage_popup_sprite_update update
  703.   def update
  704.       mog_damage_popup_sprite_update
  705.       update_damage_popup
  706.   end  
  707.  
  708.   #--------------------------------------------------------------------------
  709.   # ● Update Damage Popup
  710.   #--------------------------------------------------------------------------   
  711.   def update_damage_popup
  712.       return if @damage_sprites == nil
  713.       create_damage_sprite if can_create_damage?
  714.       update_damage_sprite if !@damage_sprites.empty?
  715.   end  
  716.  
  717.   #--------------------------------------------------------------------------
  718.   # ● Can Create Damage?
  719.   #--------------------------------------------------------------------------     
  720.   def can_create_damage?      
  721.       return false if $game_message.visible
  722.       if @battler
  723.          return false if @battler.damage == nil
  724.          return false if @battler.damage.empty?
  725.          if $game_temp.battle_end and @battler.is_a?(Game_Actor)
  726.             return false if $game_message.visible
  727.             return false if $imported[:mog_battler_result] and $game_temp.result
  728.          end
  729.       elsif @character
  730.          return false if !$game_system.damage_popup_map
  731.          if @character.battler
  732.             return false if @character.battler.damage == nil
  733.             return false if @character.battler.damage.empty?
  734.          else
  735.             return false if @character.damage == nil
  736.             return false if @character.damage.empty?            
  737.          end  
  738.       end
  739.       return false if @battler == nil and @character == nil      
  740.       return true
  741.   end
  742.  
  743.   #--------------------------------------------------------------------------
  744.   # ● Create Damage Sprite
  745.   #--------------------------------------------------------------------------     
  746.   def create_damage_sprite
  747.       target = @battler ? @battler : @character
  748.       screen_x_available = target.screen_x rescue nil
  749.       return if screen_x_available == nil
  750.       sx = target.screen_x != nil ? target.screen_x : self.x
  751.       sy = target.screen_y != nil ? target.screen_y : self.y
  752.       @damage_sprites = [] if @damage_sprites == nil  
  753.       target = @character.battler if @character and @character.battler
  754.       target.damage.each_with_index do |i, index|
  755.       @damage_sprites.push(Damage_Sprite.new(nil,sx,sy,i,index,@damage_sprites.size,self)) end
  756.       if SceneManager.scene_is?(Scene_Battle)
  757.       @damage_sprites.each_with_index do |i, index| i.set_duration(index) end
  758.       end
  759.       target.damage.clear ; target.skip_dmg_popup = false
  760.   end  
  761.  
  762.   #--------------------------------------------------------------------------
  763.   # ● Update Damage Sprite
  764.   #--------------------------------------------------------------------------     
  765.   def update_damage_sprite
  766.       clear = true
  767.       @damage_sprites.each_with_index do |sprite, i|
  768.           sprite.update_damage(@damage_sprites.size,i,@battler)
  769.           sprite.dispose_damage if sprite.duration <= 0
  770.           clear = false if sprite.duration > 0
  771.       end   
  772.       @damage_sprites.clear if clear
  773.   end  
  774.  
  775. end
  776.  
  777. #==============================================================================
  778. # ■ Damage Sprite
  779. #==============================================================================
  780. class Damage_Sprite < Sprite
  781.    include MOG_DAMAGEPOPUP
  782.    attr_accessor :duration
  783.  
  784.   #--------------------------------------------------------------------------
  785.   # ● Initialize
  786.   #--------------------------------------------------------------------------      
  787.   def initialize(viewport = nil , x,y, value ,index,index_max,target)
  788.       super(viewport)
  789.       dispose_damage ; setup_base(value,x,y,index,index_max,target) ; create_sprites
  790.   end   
  791.  
  792.   #--------------------------------------------------------------------------
  793.   # ● Setup Base
  794.   #--------------------------------------------------------------------------      
  795.   def setup_base(value,x,y,index,index_max,target)
  796.       @target = target ; y2 = 0
  797.       if @target.bitmap != nil ; y2 = SceneManager.scene_is?(Scene_Battle) ? @target.bitmap.height / 2 : 0 ; end
  798.       @animation_type = 0 ; @index = index ; @index_max = index_max + 1
  799.       @image = $game_temp.pre_cache_damage ; self.z = index + DAMAGE_Z
  800.       @cw = @image[0].width / 10 ; @ch = @image[0].height ; @cw2 = 0
  801.       @x = x ; @y = y - y2 ; @value = value[0] ; @type = value[1] ; @ch2 = 0
  802.       @critical = (value[2] and @value.to_i >= 0) ? true : false; self.opacity = 0
  803.       @state_index = value[3] ; @oxy = [0,0,0,0] ; @org_xy = [0,0] ; @spxy = [0,0]
  804.       @duration = 92 ; @org_oxy = [0,0,0,0]
  805.       self.visible = false ;set_initial_position(index,nil)
  806.   end
  807.  
  808.   #--------------------------------------------------------------------------
  809.   # ● Set Duration
  810.   #--------------------------------------------------------------------------      
  811.   def set_duration(index,pre_index = nil)
  812.       return if @duration != 0
  813.       @duration = 82 + (2 * index) if @animation_type == 0
  814.   end
  815.  
  816.   #--------------------------------------------------------------------------
  817.   # ● Set Initial Position
  818.   #--------------------------------------------------------------------------      
  819.   def set_initial_position(index,old_duration)
  820.       @org_xy = [@x,@y]
  821.       self.zoom_y = self.zoom_x
  822.   end
  823.  
  824.   #--------------------------------------------------------------------------
  825.   # ● Dispose Damage
  826.   #--------------------------------------------------------------------------      
  827.   def dispose_damage
  828.       (self.bitmap.dispose ; self.bitmap = nil) if self.bitmap
  829.       (@sup_sprite.bitmap.dispose ; @sup_sprite.dispose) if @sup_sprite  
  830.       @duration = -1
  831.   end
  832.  
  833.   #--------------------------------------------------------------------------
  834.   # ● Create Sprites
  835.   #--------------------------------------------------------------------------      
  836.   def create_sprites
  837.       if @value.is_a?(Numeric)
  838.          create_number         
  839.       elsif ["Missed","Level UP","Counter","Reflection"].include?(@value.to_s)
  840.          create_miss
  841.       else
  842.          create_string
  843.       end      
  844.       set_damage_position
  845.   end
  846.  
  847.   #--------------------------------------------------------------------------
  848.   # ● Set Damage Position
  849.   #--------------------------------------------------------------------------      
  850.   def set_damage_position
  851.       return if self.bitmap == nil
  852.       self.ox = (self.bitmap.width - @cw2) / 2
  853.       self.oy = self.bitmap.height / 2 ; self.x = @x ; self.y = @y
  854.       @org_oxy[0] = self.ox
  855.       @org_oxy[1] = self.oy
  856.       set_animation_type
  857.       if @sup_sprite
  858.          @sup_sprite.ox = self.bitmap.width / 2 ;
  859.          @sup_sprite.oy = self.bitmap.height / 2
  860.          @org_oxy[2] = @sup_sprite.ox
  861.          @org_oxy[3] = @sup_sprite.oy
  862.          if @critical
  863.             @sup_sprite.x = @x - (@sup_sprite.bitmap.width / 2) + ((@cw / 2) * @number_value.size)
  864.             @sup_sprite.y = self.y
  865.          end   
  866.          update_sup_position(@index_max - @index)
  867.       end
  868.   end     
  869.  
  870.   #--------------------------------------------------------------------------
  871.   # ● Set Damage Position
  872.   #--------------------------------------------------------------------------      
  873.   def set_animation_type
  874.       s = rand(2) ; s2 = (rand(10) * 0.1).round(2)
  875.       @oxy[2] = s == 1 ? s2 : -s2
  876.   end
  877.  
  878.   #--------------------------------------------------------------------------
  879.   # ● Create Number
  880.   #--------------------------------------------------------------------------      
  881.   def create_number
  882.       case @type
  883.       when "MP"
  884.       number_image = @image[11] ;h = @value >= 0 ? 0 : @ch ; create_sup_sprite
  885.       when "TP"
  886.       #number_image = @image[12] ;h = @value >= 0 ? 0 : @ch ; create_sup_sprite
  887.       #when "Exp"
  888.       #number_image = @image[13] ;h = 0 ; create_sup_sprite
  889.       #when "Gold"
  890.       number_image = @image[13] ;h = @ch ; create_sup_sprite            
  891.       else
  892.       number_image = @image[0] ; h = @value >= 0 ? 0 : @ch
  893.       end
  894.       @number_value = @value.abs.truncate.to_s.split(//)
  895.       self.bitmap = Bitmap.new(@cw * @number_value.size, @ch)
  896.       for r in 0...@number_value.size        
  897.           number_value_abs = @number_value[r].to_i
  898.           src_rect = Rect.new(@cw * number_value_abs, h, @cw, @ch)
  899.           self.bitmap.blt(@cw *  r, 0, number_image, src_rect)
  900.       end   
  901.       create_sup_sprite if @critical
  902.   end
  903.  
  904.   #--------------------------------------------------------------------------
  905.   # ● Create Sup Sprite
  906.   #--------------------------------------------------------------------------      
  907.   def create_sup_sprite
  908.       return if @sup_sprite != nil
  909.       @sup_sprite = Sprite.new ; @sup_sprite.visible = false ; fy = 0 ; sp = [0,0]
  910.       if @type == "MP" ; @sup_sprite.bitmap = @image[1].dup
  911.       elsif @type == "TP" ; @sup_sprite.bitmap = @image[2].dup
  912.       elsif @critical
  913.          @sup_sprite.bitmap = @image[5].dup
  914.          @cw2 = 0 ; @ch2 = @sup_sprite.bitmap.height  
  915.          return
  916.       elsif @type == "Exp"
  917.          @sup_sprite.bitmap = @image[6].dup ; fy = @ch ; sp[1] = 1.0
  918.       elsif @type == "Gold"
  919.          @sup_sprite.bitmap = @image[7].dup ; fy = (@ch * 2) ; sp[1] = 0.5
  920.      end  
  921.      fy = 0 if !SceneManager.scene_is?(Scene_Battle)
  922.      @y += fy ; @org_xy[1] += 0
  923.      @cw2 = @sup_sprite.bitmap.width + @cw
  924.      @spxy = [sp[0],sp[1]]
  925.   end
  926.  
  927.   #--------------------------------------------------------------------------
  928.   # ● Update Sup Position
  929.   #--------------------------------------------------------------------------      
  930.   def update_sup_position(dif_y)
  931.       @sup_sprite.x = self.x - @cw unless @critical
  932.       @sup_sprite.y = @critical ? self.y - @ch2 : self.y
  933.       @sup_sprite.opacity = self.opacity ; @sup_sprite.angle = self.angle
  934.       @sup_sprite.zoom_x = self.zoom_x ; @sup_sprite.zoom_y = self.zoom_y
  935.       @sup_sprite.z = self.z ; @sup_sprite.viewport = self.viewport
  936.       @sup_sprite.visible = self.visible
  937.   end  
  938.  
  939.   #--------------------------------------------------------------------------
  940.   # ● Create Miss
  941.   #--------------------------------------------------------------------------      
  942.   def create_miss
  943.       self.bitmap = @image[3].dup if @value == "Missed"
  944.       #self.bitmap = @image[3].dup if @value == "Missed"
  945.       self.bitmap = @image[8].dup if @value == "Level UP"
  946.       self.bitmap = @image[9].dup if @value == "Counter"
  947.       self.bitmap = @image[10].dup if @value == "Reflection"
  948.   end
  949.  
  950.   #--------------------------------------------------------------------------
  951.   # ● Create Spring
  952.   #--------------------------------------------------------------------------               
  953.   def create_string
  954.       string_size = @value.to_s.split(//) ; fsize = FONT_SIZE > 10 ? FONT_SIZE : 10
  955.       @stg_size = string_size.size > 0 ? ((1 + string_size.size ) * ((fsize / 2) - 2)) : 32      
  956.       self.bitmap = Bitmap.new(@stg_size,32)
  957.       self.bitmap.font.color = FONT_COLOR
  958.       self.bitmap.font.size = fsize ; self.bitmap.font.bold = FONT_BOLD
  959.       self.bitmap.font.italic = FONT_ITALIC
  960.       if @type == "Item"
  961.          self.bitmap.font.color = FONT_COLOR_ITEM
  962.       elsif @type == "States Plus"
  963.          self.bitmap.font.color = FONT_COLOR_STATUS_PLUS
  964.       elsif @type == "States Minus"
  965.          self.bitmap.font.color = FONT_COLOR_STATUS_MINUS
  966.       end      
  967.       self.bitmap.draw_text(0, 0, self.bitmap.width, self.bitmap.height, @value.to_s,0)
  968.       draw_states if @state_index != nil
  969.   end
  970.  
  971.   #--------------------------------------------------------------------------
  972.   # ● Draw States
  973.   #--------------------------------------------------------------------------               
  974.   def draw_states
  975.       @sup_sprite = Sprite.new ; @sup_sprite.bitmap = Bitmap.new(24,24)
  976.       rect = Rect.new(@state_index % 16 * 24, @state_index / 16 * 24, 24, 24)
  977.       @image[14] = Cache.system("Iconset") if @image[14]== nil or @image[14].disposed?
  978.       @sup_sprite.bitmap.blt(0, 0, @image[14].dup, rect)
  979.       (@org_xy[1] += (@ch + 5) ; @y += (@ch + 5)) unless !SceneManager.is_a?(Scene_Battle)
  980.       @cw2 = @sup_sprite.bitmap.width + @cw / 2 ; @sup_sprite.visible = false
  981.   end  
  982.  
  983.   #--------------------------------------------------------------------------
  984.   # ● Update Damage
  985.   #--------------------------------------------------------------------------               
  986.   def update_damage(index_max,index,battler)
  987.       @index_max = index_max ; @index = index
  988.       return if self.bitmap == nil or self.bitmap.disposed?
  989.       @duration -= 1
  990.       self.visible = @duration > 90 ? false : true
  991.       return if !self.visible
  992.       dif_y = (@index_max - @index)
  993.       update_animation(dif_y)
  994.       update_sprite_position(dif_y,battler)
  995.       update_sup_position(dif_y) if @sup_sprite
  996.       dispose_damage if @duration <= 0
  997.   end
  998.  
  999.   #--------------------------------------------------------------------------
  1000.   # ● Update Sprite Position
  1001.   #--------------------------------------------------------------------------               
  1002.   def update_sprite_position(dif_y,battler)
  1003.       execute_move(0,self,@org_xy[0] + @oxy[0])
  1004.       execute_move(1,self,@org_xy[1] + @oxy[1] - (dif_y * Y_SPACE))
  1005.       self.zoom_y = self.zoom_x
  1006.       update_battle_camera if oxy_camera?(battler)
  1007.   end   
  1008.  
  1009.   #--------------------------------------------------------------------------
  1010.   # ● Update Battle Camera
  1011.   #--------------------------------------------------------------------------               
  1012.   def update_battle_camera
  1013.       self.ox = $game_temp.viewport_oxy[0] + @org_oxy[0]
  1014.       self.oy = $game_temp.viewport_oxy[1] + @org_oxy[1]
  1015.       @sup_sprite.ox = $game_temp.viewport_oxy[0] + @org_oxy[2] if @sup_sprite != nil
  1016.       @sup_sprite.oy = $game_temp.viewport_oxy[1] + @org_oxy[3] if @sup_sprite != nil
  1017.   end  
  1018.  
  1019.   #--------------------------------------------------------------------------
  1020.   # ● OXY_CAMERA
  1021.   #--------------------------------------------------------------------------               
  1022.   def oxy_camera?(battler)
  1023.       return false if $imported[:mog_battle_camera] == nil
  1024.       if battler.is_a?(Game_Actor)
  1025.          return false if $imported[:mog_battle_hud_ex] and SceneManager.face_battler?
  1026.       end
  1027.       return true
  1028.   end
  1029.  
  1030.   #--------------------------------------------------------------------------
  1031.   # ● Execute Move
  1032.   #--------------------------------------------------------------------------      
  1033.   def execute_move(type,sprite,np)
  1034.       cp = type == 0 ? sprite.x : sprite.y
  1035.       sp = 1 + ((cp - np).abs / 10)
  1036.       sp = 1 if @duration < 60
  1037.       if cp > np ;    cp -= sp ; cp = np if cp < np
  1038.       elsif cp < np ; cp += sp ; cp = np if cp > np
  1039.       end     
  1040.       sprite.x = cp if type == 0 ; sprite.y = cp if type == 1
  1041.   end   
  1042.  
  1043.   #--------------------------------------------------------------------------
  1044.   # ● Update Animation
  1045.   #--------------------------------------------------------------------------               
  1046.   def update_animation(dif_y)
  1047.      @oxy[1] -= 1
  1048.      case @duration
  1049.      when 60..90 ; self.opacity += 15
  1050.      when 30..60 ; self.opacity = 255
  1051.      when 0..30  ; self.opacity -= 9
  1052.      end
  1053.   end
  1054.  
  1055. end
  1056.  
  1057. #==============================================================================
  1058. # ■ Sprite Battler
  1059. #==============================================================================
  1060. class Sprite_Battler < Sprite_Base
  1061.  
  1062.   #--------------------------------------------------------------------------
  1063.   # ● Update Collapse
  1064.   #--------------------------------------------------------------------------  
  1065.   alias mog_damage_pop_update_collapse update_collapse
  1066.   def update_collapse
  1067.       mog_damage_pop_update_collapse
  1068.       execute_exp_pop
  1069.   end
  1070.  
  1071.   #--------------------------------------------------------------------------
  1072.   # ● Update Instant Collapse
  1073.   #--------------------------------------------------------------------------  
  1074.   alias mog_damage_pop_update_instant_collapse update_instant_collapse
  1075.   def update_instant_collapse
  1076.       mog_damage_pop_update_instant_collapse
  1077.       execute_exp_pop
  1078.   end   
  1079.  
  1080.   #--------------------------------------------------------------------------
  1081.   # ● Update Boss Collapse
  1082.   #--------------------------------------------------------------------------  
  1083.   alias mog_damage_pop_update_boss_collapse update_boss_collapse
  1084.   def update_boss_collapse
  1085.       mog_damage_pop_update_boss_collapse
  1086.       execute_exp_pop
  1087.   end
  1088.  
  1089.   #--------------------------------------------------------------------------
  1090.   # ● Execute Exp Pop
  1091.   #--------------------------------------------------------------------------  
  1092.   def execute_exp_pop
  1093.       return if !MOG_DAMAGEPOPUP::EXP_GOLD_POPUP_BATTLE or @dam_exp != nil
  1094.       return if @battler == nil or @battler.is_a?(Game_Actor)
  1095.       @dam_exp = true
  1096.       if $imported[:mog_active_bonus_gauge] != nil
  1097.          real_exp = $game_troop.bonus_exp? ? @battler.exp * 2 : @battler.exp
  1098.          real_gold = $game_troop.bonus_gold? ? @battler.gold * 2 : @battler.gold
  1099.       else
  1100.          real_exp = @battler.exp ;  real_gold = @battler.gold
  1101.       end
  1102.       #@battler.damage.push([real_exp,"Exp"]) if @battler.exp > 0
  1103.       #@battler.damage.push([real_gold,"Gold"]) if @battler.gold > 0
  1104.   end   
  1105.  
  1106. end
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-6-1 04:50

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表