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

Project1

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

[已经解决] 敌人更加生动

[复制链接]

Lv2.观梦者

梦石
0
星屑
394
在线时间
20 小时
注册时间
2018-2-22
帖子
41
跳转到指定楼层
1
发表于 2018-2-26 22:08:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
除啦敌人呼吸脚本 还有没有办法能让敌人看起来 更加生动?   XP有个漂浮 va有没有类似的脚本?

Lv3.寻梦者

梦石
0
星屑
3646
在线时间
899 小时
注册时间
2017-10-30
帖子
347
2
发表于 2018-2-26 22:19:39 | 只看该作者
https://rpg.blue/thread-405235-1-1.html
里面的战斗系脚本可能会帮到你
啥都会,啥都不擅长
一个VA群:679174724 欢迎来玩
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2512
在线时间
215 小时
注册时间
2017-9-27
帖子
613
3
发表于 2018-2-26 22:36:37 | 只看该作者
MOG的功能比较多的
  1. #==============================================================================
  2. # +++ MOG - 战斗图动态效果 (v3.6) +++
  3. #==============================================================================
  4. # By Moghunter
  5. # https://atelierrgss.wordpress.com/
  6. #==============================================================================
  7. # 使战斗图动起来.
  8. # ● 出现效果.
  9. # ● 待机效果.
  10. # ● 行动效果.
  11. # ● 受伤效果.
  12. # ● 死亡效果.
  13. #==============================================================================

  14. #==============================================================================
  15. # ● Histórico (Version History)
  16. #==============================================================================
  17. # v3.6 - Melhoria na compatibilidade com MOG Battle Camera.
  18. # v3.5 - Possibilidade de desabilitar o efeito "blinking"
  19. #      - Melhoria no tempo de execução do efeito slice
  20. # v3.4 - Adição da função SLICE.
  21. #==============================================================================

  22. $imported = {} if $imported.nil?
  23. $imported[:mog_battler_motion] = true

  24. #==============================================================================
  25. # ● 设定介绍
  26. #==============================================================================
  27. # ■ 出现效果(进入战场时显示的效果)
  28. #==============================================================================
  29. # 在敌人或角色的备注栏中填入:
  30. #
  31. # <Motion Appear = X>
  32. #
  33. # X = 0
  34. # 横向滑动.
  35. #
  36. # X = 1
  37. # 纵向滑动.
  38. #
  39. # X = 2
  40. # 滚动效果.
  41. #
  42. # X = 3
  43. # 缩小
  44. #
  45. # X = 4
  46. # 放大
  47. #
  48. # X = 5
  49. # 从地底冒出的效果.
  50. #
  51. #==============================================================================
  52. # ■ 待机效果
  53. #==============================================================================
  54. # 在敌人或角色的备注栏中填入:
  55. #
  56. # <Motion Standby = X>
  57. #
  58. # X = 0
  59. # 呼吸.
  60. #
  61. # X = 1
  62. # 浮动.
  63. #
  64. # X = 2
  65. # 左右横移.
  66. #
  67. #==============================================================================
  68. # ■ 行动效果.
  69. #==============================================================================
  70. # 在物品或技能的备注栏中填入:
  71. #
  72. # <Motion Action = X>
  73. #
  74. # X = 0
  75. # 缩放.
  76. #
  77. # X = 1
  78. # 跳跃.
  79. #
  80. # X = 2
  81. # 向左旋转.
  82. #
  83. # X = 3
  84. # 向右旋转.
  85. #
  86. # X = 4
  87. # 震动.
  88. #
  89. # X = 5
  90. # 走上前.
  91. #
  92. # X = 6
  93. # 左走一步.
  94. #
  95. # X = 7
  96. # 右走一步.
  97. #
  98. #==============================================================================
  99. # ■ 死亡效果.
  100. #==============================================================================
  101. # 在敌人或角色的备注栏中填入:
  102. #
  103. # <Motion Collapse = X>
  104. #
  105. # X = 0
  106. # 垂直死亡.
  107. #
  108. # X = 1
  109. # 水平死亡.
  110. #
  111. # X = 2
  112. # 放大.
  113. #
  114. # X = 3
  115. # 缩小.
  116. #
  117. # X = 4
  118. # 缩小+放大.
  119. #
  120. # X = 5
  121. # Boss型死亡效果.
  122. #
  123. # X = 6
  124. # 不显示死亡效果.(什么都不做)
  125. #
  126. # X = 7
  127. # 化成碎片.
  128. #
  129. #==============================================================================
  130. # ■ 强制目标死亡时化成碎片
  131. #==============================================================================
  132. # 在技能的备注栏中填入:
  133. #
  134. # <Slice>
  135. #
  136. #==============================================================================
  137. # ■ 当敌人处于糟糕状态时,显示糟糕状态的动画效果
  138. #==============================================================================
  139. # 在情况(?好像也不是状态,测试没有效果)的备注栏中填入,以显示受伤的效果:
  140. #
  141. # <Bad State>
  142. #
  143. #==============================================================================
  144. # ■ 指定敌人在画面上的位置
  145. #==============================================================================
  146. # 在敌人的备注栏中填入:
  147. #
  148. # <Screen X Y = 150 - 400>
  149. #
  150. #==============================================================================
  151. module MOG_BATTLER_MOTION

  152.   #============================================================================
  153.   # 是否显示角色的战斗图动态效果
  154.   #============================================================================
  155.   ENABLE_ACTOR_MOTION = true
  156.   
  157.   #============================================================================
  158.   # 是否显示敌人的战斗图动态效果
  159.   #============================================================================
  160.   ENABLE_ENEMY_MOTION = true
  161.   
  162.   #============================================================================
  163.   # 呼吸效果的速度.
  164.   #============================================================================
  165.   BREATH_EFFECT_SPEED = 1  #默认为 1
  166.   
  167.   #============================================================================
  168.   # 设定呼吸效果的缩放范围.
  169.   #============================================================================
  170.   BREATH_EFFECT_RANGE = [0.92, 1.00] #默认为 [0.92, 1.00]
  171.   
  172.   #============================================================================
  173.   # 是否在敌方行动时激活镜像效果
  174.   #============================================================================
  175.   BATTLER_MIRROR_DIRECTION = true
  176.   
  177.   #============================================================================
  178.   # 受到攻击时是否闪烁
  179.   #============================================================================
  180.   ENABLE_DAMAGE_BLINK_EFFECT = false
  181. end

  182. #==============================================================================
  183. # ■ Game_Temp
  184. #==============================================================================
  185. class Game_Temp
  186.   
  187.   attr_accessor :battler_in_motion
  188.   attr_accessor :bact_wait_d
  189.   attr_accessor :bact_phase
  190.   
  191.   #--------------------------------------------------------------------------
  192.   # ● Initialize
  193.   #--------------------------------------------------------------------------      
  194.   alias mog_battler_motion_initialize initialize
  195.   def initialize
  196.       @battler_in_motion = false ; @bact_wait_d = 0 ; @bact_phase = [0,0]
  197.       mog_battler_motion_initialize
  198.   end  
  199.   
  200. end

  201. #==============================================================================
  202. # ■ Game_Battler
  203. #==============================================================================
  204. class Game_Battler < Game_BattlerBase
  205.   
  206.    attr_accessor :motion_start
  207.    attr_accessor :motion_stand
  208.    attr_accessor :motion_action
  209.    attr_accessor :motion_damage
  210.    attr_accessor :motion_collapse
  211.    attr_accessor :motion_slice
  212.    attr_accessor :motion_move
  213.    attr_accessor :motion_org_pos
  214.    attr_accessor :motion_bms
  215.    attr_accessor :bact_action
  216.    attr_accessor :bact_skill
  217.    attr_accessor :primary_target
  218.    
  219.   #--------------------------------------------------------------------------
  220.   # ● Initialize
  221.   #--------------------------------------------------------------------------      
  222.    alias mog_motion_animation_initialize initialize
  223.    def initialize
  224.        mog_motion_animation_initialize
  225.        @motion_start = -1
  226.        @motion_stand = [-1,0]
  227.        @motion_action = [-1,0]
  228.        @motion_collapse = [99,0]
  229.        @motion_damage = [0,0]
  230.        @motion_move = [false,0,0]
  231.        @motion_org_pos = [0,0]
  232.        @motion_bms = [0,false]
  233.        @motion_slice = [false,0,0]
  234.        bact_action_clear
  235.    end     

  236.   #--------------------------------------------------------------------------
  237.   # ● Bact Action Clear
  238.   #--------------------------------------------------------------------------      
  239.   def bact_action_clear
  240.       @bact_action = [false,0,0] ; @bact_skill = nil
  241.   end   

  242.   #--------------------------------------------------------------------------
  243.   # ● Added New State
  244.   #--------------------------------------------------------------------------  
  245.   alias mog_motion_animation_add_new_state add_new_state
  246.   def add_new_state(state_id)
  247.       mog_motion_animation_add_new_state(state_id)
  248.       self.motion_damage[0] = 1 if $data_states[state_id].note =~ /<Bad State>/
  249.   end   

  250.   #--------------------------------------------------------------------------
  251.   # ● Move To
  252.   #--------------------------------------------------------------------------  
  253.   def move_to(x,y)
  254.       return if self.dead?
  255.       @motion_move = [true,x,y]
  256.   end
  257.   
  258.   #--------------------------------------------------------------------------
  259.   # ● Set Original Position
  260.   #--------------------------------------------------------------------------  
  261.   def set_org_pos
  262.       scx = self.screen_x rescue 0
  263.       scy = self.screen_y rescue 0   
  264.       @motion_opos = [scx,scy]
  265.   end
  266.   
  267.   #--------------------------------------------------------------------------
  268.   # ● Return Org
  269.   #--------------------------------------------------------------------------  
  270.   def return_org
  271.       return if self.dead?
  272.       @motion_move = [true,@motion_opos[0],@motion_opos[1]]   
  273.   end
  274.    
  275.   #--------------------------------------------------------------------------
  276.   # ● Item Apply
  277.   #--------------------------------------------------------------------------  
  278.   alias mog_bactmotion_item_apply item_apply
  279.   def item_apply(user, item)
  280.       return if self.motion_slice[0]
  281.       mog_bactmotion_item_apply(user, item)
  282.       unless self.is_a?(Game_Actor)
  283.          self.motion_collapse[0] = 7 if self.dead? and item.note =~ /<Slice>/
  284.       end
  285.   end
  286.   
  287. end

  288. #==============================================================================
  289. # ■ Game_Enemy
  290. #==============================================================================
  291. class Game_Enemy < Game_Battler
  292.    
  293.   #--------------------------------------------------------------------------
  294.   # ● Initialize
  295.   #--------------------------------------------------------------------------
  296.   alias mog_motion_animation_enemy_initialize initialize
  297.   def initialize(index, enemy_id)
  298.       mog_motion_animation_enemy_initialize(index, enemy_id)
  299.       setup_motion_animation(enemy_id)
  300.   end
  301.   
  302.   #--------------------------------------------------------------------------
  303.   # ● Setup Motion Animation
  304.   #--------------------------------------------------------------------------  
  305.   def setup_motion_animation(enemy_id)
  306.       self.motion_stand[0] = $1.to_i if  enemy.note =~ /<Motion Standby = (\d+)>/i
  307.       self.motion_collapse[0] = $1.to_i if  enemy.note =~ /<Motion Collapse = (\d+)>/i
  308.       self.motion_start =  $1.to_i if  enemy.note =~ /<Motion Appear = (\d+)>/i
  309.   end
  310. end

  311. #==============================================================================
  312. # ■ Game Actor
  313. #==============================================================================
  314. class Game_Actor < Game_Battler

  315.   #--------------------------------------------------------------------------
  316.   # ● Setup
  317.   #--------------------------------------------------------------------------
  318.   alias mog_motion_animation_actor_setup setup
  319.   def setup(actor_id)
  320.       mog_motion_animation_actor_setup(actor_id)
  321.       self.motion_stand[0] = $1.to_i if  actor.note =~ /<Motion Standby = (\d+)>/i
  322.       self.motion_collapse[0] = $1.to_i if  actor.note =~ /<Motion Collapse = (\d+)>/i      
  323.       self.motion_start =  $1.to_i if  actor.note =~ /<Motion Appear = (\d+)>/i  
  324.   end

  325. end

  326. #==============================================================================
  327. # ■ Game_Battler
  328. #==============================================================================
  329. class Game_Battler < Game_BattlerBase
  330.   
  331.   #--------------------------------------------------------------------------
  332.   # ● Execute Damage
  333.   #--------------------------------------------------------------------------  
  334.   alias mog_battler_motion_execute_damage execute_damage
  335.   def execute_damage(user)
  336.       mog_battler_motion_execute_damage(user)
  337.       self.motion_damage[0] = 1 if @result.hp_damage > 0
  338.   end
  339.   
  340. end

  341. #==============================================================================
  342. # ■ Spriteset Battle
  343. #==============================================================================
  344. class Spriteset_Battle
  345.   
  346.   #--------------------------------------------------------------------------
  347.   # * Update
  348.   #--------------------------------------------------------------------------
  349.   alias mog_battler_motion_update update
  350.   def update
  351.       $game_temp.battler_in_motion = false
  352.       mog_battler_motion_update
  353.   end
  354.   
  355.   #--------------------------------------------------------------------------
  356.   # * Animation?
  357.   #--------------------------------------------------------------------------
  358.   alias mog_battler_motion_animation? animation?
  359.   def animation?
  360.       return true if $game_temp.battler_in_motion
  361.       mog_battler_motion_animation?
  362.   end
  363.   #--------------------------------------------------------------------------
  364.   # * Effect?
  365.   #--------------------------------------------------------------------------
  366.   alias mog_battler_motion_effect? effect?
  367.   def effect?
  368.       return true if $game_temp.battler_in_motion
  369.       mog_battler_motion_effect?
  370.   end
  371.   
  372. end


  373. #==============================================================================
  374. #==============================================================================
  375. # ● INITIAL ●
  376. #==============================================================================
  377. #==============================================================================

  378. #==============================================================================
  379. # ■ Sprite Battler
  380. #==============================================================================
  381. class Sprite_Battler < Sprite_Base

  382.   #--------------------------------------------------------------------------
  383.   # ● Update Bitmap
  384.   #--------------------------------------------------------------------------   
  385.   alias mog_bactmotion_update_bitmap update_bitmap
  386.   def update_bitmap
  387.       return if @battler.motion_slice[0]
  388.       mog_bactmotion_update_bitmap
  389.   end   
  390.       
  391.   #--------------------------------------------------------------------------
  392.   # ● Can Update Motion?
  393.   #--------------------------------------------------------------------------   
  394.   def can_update_motion?
  395.       return true
  396.   end   
  397.   
  398.   #--------------------------------------------------------------------------
  399.   # ● Update Position
  400.   #--------------------------------------------------------------------------  
  401.   alias mog_motion_animation_update_position update_position
  402.   def update_position
  403.       active_battler_motion      
  404.       if @battler_motion_active
  405.          update_motion_animation
  406.          self.z = @battler.screen_z rescue nil
  407.          self.z += 20 if @battler.bact_data[1] != nil and [email protected]_data[6]
  408.          return
  409.       end      
  410.       mog_motion_animation_update_position
  411.       self.z += 20 if @battler.bact_data[1] != nil and [email protected]_data[6]
  412.   end  
  413.   
  414.   #--------------------------------------------------------------------------
  415.   # ● Active Battler Motion
  416.   #--------------------------------------------------------------------------   
  417.   def active_battler_motion
  418.       return if @motion_initial_base != nil or bitmap == nil
  419.       return if @battler == nil
  420.       return if [email protected]?
  421.       @motion_initial_base = true
  422.       @battler_motion_active = true if can_update_battler_motion?
  423.   end  
  424.   
  425.   #--------------------------------------------------------------------------
  426.   # ● Can Update Battler Motion
  427.   #--------------------------------------------------------------------------      
  428.   def can_update_battler_motion?
  429.       return false if @battler.is_a?(Game_Actor)
  430.       return false if @battler == nil
  431.       return false if @battler.dead?
  432.       return false if [email protected]_sprite?
  433.       return false if @battler.screen_x == nil
  434.       return false if @battler.is_a?(Game_Actor) and !MOG_BATTLER_MOTION::ENABLE_ACTOR_MOTION
  435.       return false if @battler.is_a?(Game_Enemy) and !MOG_BATTLER_MOTION::ENABLE_ENEMY_MOTION
  436.       return false if $imported[:mog_sprite_actor] and @battler.is_a?(Game_Actor)
  437.       return true
  438.   end
  439.    
  440.   #--------------------------------------------------------------------------
  441.   # ● Update Motion Animation
  442.   #--------------------------------------------------------------------------   
  443.   def update_motion_animation
  444.       setup_initial_motion
  445.       execute_start_animation
  446.       return if @wait_motion_start
  447.       if can_execute_collapse?
  448.          execute_motion_collapse
  449.       else
  450.          if can_update_motion?
  451.             execute_motion_move_to if can_update_move_to?
  452.             execute_motion_damage
  453.             execute_motion_idle if can_update_idle?
  454.             execute_motion_action if can_update_action?
  455.          end
  456.       end
  457.   end
  458.   
  459.   #--------------------------------------------------------------------------
  460.   # ● Setup Initial Motion
  461.   #--------------------------------------------------------------------------      
  462.   def setup_initial_motion
  463.       return if @motion_initial != nil
  464.       @motion_initial = true
  465.       @collapse_done = false
  466.       @motion_speed = 0
  467.       @start_speed = [0,0]      
  468.       @battler.motion_collapse[1] = 0
  469.       self.x = @battler.screen_x rescue 0
  470.       self.y = @battler.screen_y rescue 0
  471.       self.z = @battler.screen_z rescue 100
  472.       @battler.motion_bms = [0,false]
  473.       @battler.set_org_pos      
  474.       setup_motion_stand
  475.       @original_set = [self.x, self.y, self.zoom_x,self.zoom_y,self.mirror,self.angle,255]
  476.       setup_motion_start
  477.       setup_motion_damage            
  478.       setup_motion_action
  479.   end  

  480.   #--------------------------------------------------------------------------
  481.   # ● Return Set
  482.   #--------------------------------------------------------------------------         
  483.   def return_set(value)
  484.       self.x = value[0]
  485.       self.y = value[1]
  486.       self.zoom_x = value[2]
  487.       self.zoom_y = value[3]
  488.       self.mirror = value[4]
  489.       self.angle = value[5]
  490.       self.opacity = value[6]      
  491.   end  

  492.   #--------------------------------------------------------------------------
  493.   # ● setup_motion_start
  494.   #--------------------------------------------------------------------------            
  495.   def setup_motion_start
  496.       @wait_motion_start = true
  497.       @scr_rect_speed = 1      
  498.       case @battler.motion_start
  499.          when 0  
  500.             self.x = 0 - (self.bitmap.width + rand(100))
  501.          when 1
  502.             self.y = 0 - (self.bitmap.height + rand(100))
  503.          when 2   
  504.             self.angle = 360
  505.             self.x = 0 - self.bitmap.width
  506.          when 3   
  507.             self.zoom_x = 1.5 + (rand(10) / 100.0)
  508.             self.zoom_y = self.zoom_x
  509.             self.opacity = 0
  510.          when 4
  511.             self.zoom_x = 0.2 + (rand(10) / 100.0)
  512.             self.zoom_y = self.zoom_x
  513.             self.opacity = 0
  514.          when 5   
  515.             self.src_rect.y = -self.bitmap.height
  516.             @scr_rect_speed = self.bitmap.height / 40
  517.             @scr_rect_speed = 1 if @scr_rect_speed <= 0
  518.          else   
  519.            @wait_motion_start = false
  520.       end   
  521.   end  
  522.   
  523.   #--------------------------------------------------------------------------
  524.   # ● Execute Start Animation
  525.   #--------------------------------------------------------------------------         
  526.   def execute_start_animation
  527.       return if !@wait_motion_start
  528.       $game_temp.battler_in_motion = true
  529.       s_x = 1 + ((self.x - @original_set[0]).abs / (20 + @start_speed[0]))
  530.       s_y = 1 + ((self.y - @original_set[1]).abs / (20 + @start_speed[1]))      
  531.       if self.x < @original_set[0]
  532.          self.x += s_x
  533.          self.x = @original_set[0] if self.x >= @original_set[0]
  534.       elsif self.x > @original_set[0]
  535.          self.x -= s_x
  536.          self.x = @original_set[0] if self.x <= @original_set[0]
  537.       end
  538.       if self.y < @original_set[1]
  539.          self.y += s_y
  540.          self.y = @original_set[1] if self.y > @original_set[1]
  541.       elsif self.y > @original_set[1]
  542.          self.y -= s_y
  543.          self.y = @original_set[1] if self.y < @original_set[1]
  544.       end
  545.       if self.zoom_x != @original_set[2]
  546.          if self.zoom_x > @original_set[2]
  547.             self.zoom_x -= 0.01
  548.             self.zoom_x = @original_set[2] if self.zoom_x < @original_set[2]
  549.          elsif self.zoom_x < @original_set[2]
  550.             self.zoom_x += 0.01
  551.             self.zoom_x = @original_set[2] if self.zoom_x > @original_set[2]
  552.          end         
  553.       end  
  554.       if self.zoom_y != @original_set[3]
  555.          if self.zoom_y > @original_set[3]
  556.             self.zoom_y -= 0.01
  557.             self.zoom_y = @original_set[3] if self.zoom_y < @original_set[3]
  558.          elsif self.zoom_y < @original_set[3]
  559.             self.zoom_y += 0.01
  560.             self.zoom_y = @original_set[3] if self.zoom_y > @original_set[3]
  561.          end         
  562.       end        
  563.       self.opacity += 10
  564.       if self.angle > 0
  565.          self.angle -= 5
  566.          self.angle = @original_set[5] if self.angle < @original_set[5]
  567.       end
  568.       if self.src_rect.y != 0
  569.          self.src_rect.y += @scr_rect_speed
  570.          self.src_rect.y = 0 if self.src_rect.y > 0
  571.       end
  572.       if sprite_original_set?  
  573.          @wait_motion_start = false
  574.          @battler.motion_bms[1] = true
  575.          self.src_rect.y = 0
  576.       end   
  577.   end  
  578.   
  579.   #--------------------------------------------------------------------------
  580.   # ● Sprite original Set?
  581.   #--------------------------------------------------------------------------         
  582.   def sprite_original_set?
  583.       return false if self.x != @original_set[0]
  584.       return false if self.y != @original_set[1]   
  585.       return false if self.zoom_x != @original_set[2]
  586.       return false if self.zoom_y != @original_set[3]        
  587.       return false if self.mirror != @original_set[4]
  588.       return false if self.angle != @original_set[5]
  589.       return false if self.opacity != @original_set[6]     
  590.       return false if self.src_rect.y != 0      
  591.       return true
  592.   end  
  593.    
  594. end

  595. #==============================================================================
  596. #==============================================================================
  597. # ● MOVE TO ●
  598. #==============================================================================
  599. #==============================================================================

  600. #==============================================================================
  601. # ■ Sprite Battler
  602. #==============================================================================
  603. class Sprite_Battler < Sprite_Base
  604.   
  605.   #--------------------------------------------------------------------------
  606.   # ● Can Update Move_to
  607.   #--------------------------------------------------------------------------   
  608.   def can_update_move_to?
  609.       return false if [email protected]_move[0]
  610.       return true
  611.   end  
  612.   
  613.   #--------------------------------------------------------------------------
  614.   # ● Execute Motion Move_to
  615.   #--------------------------------------------------------------------------        
  616.   def execute_motion_move_to      
  617.       $game_temp.battler_in_motion = true
  618.       execute_motion_mv(0,self.x,@battler.motion_move[1])
  619.       execute_motion_mv(1,self.y,@battler.motion_move[2])
  620.       mv_clear
  621.   end
  622.    
  623.   #--------------------------------------------------------------------------
  624.   # ● MV Clear
  625.   #--------------------------------------------------------------------------      
  626.   def mv_clear
  627.       return if self.x != @battler.motion_move[1]
  628.       return if self.y != @battler.motion_move[2]
  629.       @battler.motion_move[0] = false
  630.   end
  631.       
  632.   #--------------------------------------------------------------------------
  633.   # ● Execute Motion Mv
  634.   #--------------------------------------------------------------------------      
  635.   def execute_motion_mv(type,cp,np)
  636.       sp = 2 + ((cp - np).abs / 20)
  637.       if cp > np
  638.          cp -= sp
  639.          cp = np if cp < np
  640.       elsif cp < np
  641.          cp += sp
  642.          cp = np if cp > np
  643.       end     
  644.       self.x = cp if type == 0
  645.       self.y = cp if type == 1
  646.   end   
  647.   
  648. end

  649. #==============================================================================
  650. #==============================================================================
  651. # ● DAMAGE ●
  652. #==============================================================================
  653. #==============================================================================

  654. #==============================================================================
  655. # ■ Sprite Battler
  656. #==============================================================================
  657. class Sprite_Battler < Sprite_Base

  658.   #--------------------------------------------------------------------------
  659.   # ● Can Update Damage
  660.   #--------------------------------------------------------------------------   
  661.   def can_update_damage?
  662.       return false if @battler.motion_damage[1] == 0
  663.       return false if @battler.motion_move[0]
  664.       return false if $imported[:mog_battle_camera] and $game_temp.bc_wait_cp[0] > 0
  665.       return true
  666.   end   
  667.   
  668.   #--------------------------------------------------------------------------
  669.   # ● Setup Initial Motion
  670.   #--------------------------------------------------------------------------        
  671.   def execute_motion_damage
  672.       damage_refresh
  673.       update_motion_damage if can_update_damage?
  674.   end

  675.   #--------------------------------------------------------------------------
  676.   # ● Setup Motion Damage
  677.   #--------------------------------------------------------------------------        
  678.   def setup_motion_damage     
  679.       @battler.motion_damage = [0,0]
  680.       @damage_pre_set = [self.x, self.y, self.zoom_x,self.zoom_y,self.mirror,self.angle,self.opacity]
  681.   end  
  682.   
  683.   #--------------------------------------------------------------------------
  684.   # ● Damage Refresh
  685.   #--------------------------------------------------------------------------         
  686.   def damage_refresh
  687.       return if @battler.motion_damage[0] == 0
  688.       if @battler.motion_damage[1] == 0
  689.          @damage_pre_set = [self.x, self.y, self.zoom_x,self.zoom_y,self.mirror,self.angle,self.opacity]
  690.       end
  691.       @battler.motion_damage[0] = 0
  692.       @battler.motion_damage[1] = 45
  693.   end
  694.   
  695.   #--------------------------------------------------------------------------
  696.   # ● Update Motion Damage
  697.   #--------------------------------------------------------------------------            
  698.   def update_motion_damage
  699.       return if @damage_pre_set.nil?
  700.       self.x = @damage_pre_set[0] + rand(@battler.motion_damage[1])
  701.       @battler.motion_damage[1] -= 1
  702.       if @battler.motion_damage[1] == 0
  703.          if $imported[:mog_battle_hud_ex] != nil and @battler.is_a?(Game_Actor)
  704.             return_set(@original_set)
  705.          else  
  706.             return_set(@damage_pre_set)
  707.          end   
  708.       end  
  709.   end
  710.    
  711. end

  712. #==============================================================================
  713. #==============================================================================
  714. # ● IDLE ●
  715. #==============================================================================
  716. #==============================================================================


  717. #==============================================================================
  718. # ■ Sprite Battler
  719. #==============================================================================
  720. class Sprite_Battler < Sprite_Base
  721.   
  722.   #--------------------------------------------------------------------------
  723.   # ● Can Update idle
  724.   #--------------------------------------------------------------------------   
  725.   def can_update_idle?
  726.       return false if @old_motion_action != -1
  727.       return false if @battler.motion_damage[1] > 0
  728.       return false if @battler.motion_move[0]
  729.       return false if $imported[:mog_battle_camera] and $game_temp.bc_wait_cp[0] > 0
  730.       return true
  731.   end      

  732.   #--------------------------------------------------------------------------
  733.   # ● Setup Motion Stand
  734.   #--------------------------------------------------------------------------        
  735.   def setup_motion_stand
  736.       @breath_range = [MOG_BATTLER_MOTION::BREATH_EFFECT_RANGE[0],
  737.                        MOG_BATTLER_MOTION::BREATH_EFFECT_RANGE[1],0,
  738.                        MOG_BATTLER_MOTION::BREATH_EFFECT_SPEED]
  739.       @float_range = [@battler.screen_y - 10, @battler.screen_y + 10]
  740.       @side_range = [@battler.screen_x - 10, @battler.screen_x + 10]
  741.       @battler.motion_stand[1] = 0
  742.       case @battler.motion_stand[0]
  743.          when 0
  744.              self.zoom_y = @breath_range[0] + (rand(10) / 100.0)
  745.              @battler.motion_stand[1] = rand(2)
  746.          when 1
  747.              self.y += 10 - rand(20)
  748.              @battler.motion_stand[1] = rand(2)
  749.          when 2
  750.              self.x += 10 - rand(20)
  751.              @battler.motion_stand[1] = rand(2)            
  752.       end
  753.   end
  754.    
  755.   #--------------------------------------------------------------------------
  756.   # ● Execute Motion Animation
  757.   #--------------------------------------------------------------------------        
  758.   def execute_motion_idle
  759.       case @battler.motion_stand[0]
  760.          when 0
  761.              update_motion_breath
  762.          when 1  
  763.              update_motion_float
  764.          when 2
  765.              update_motion_side
  766.       end        
  767.   end  
  768.   
  769.   #--------------------------------------------------------------------------
  770.   # ● Update Motion Breath
  771.   #--------------------------------------------------------------------------         
  772.   def update_motion_breath  
  773.       @breath_range[2] += 1
  774.       return if @breath_range[2] < @breath_range[3]
  775.       @breath_range[2] = 0
  776.       case @battler.motion_stand[1]
  777.          when 0
  778.            self.zoom_y -= 0.002
  779.            if self.zoom_y <= @breath_range[0]
  780.               @battler.motion_stand[1] = 1
  781.               self.zoom_y = @breath_range[0]
  782.            end   
  783.          when 1  
  784.            self.zoom_y += 0.002
  785.            if self.zoom_y >= @breath_range[1]
  786.               @battler.motion_stand[1] = 0
  787.               self.zoom_y = @breath_range[1]
  788.            end   
  789.       end
  790.   end  
  791.   
  792.   #--------------------------------------------------------------------------
  793.   # ● Update Motion Float
  794.   #--------------------------------------------------------------------------         
  795.   def update_motion_float
  796.       @motion_speed += 1
  797.       return if @motion_speed < 5
  798.       @motion_speed = 0
  799.       case @battler.motion_stand[1]
  800.            when 0
  801.                 self.y -= 1
  802.                 @battler.motion_bms[0] -= 1
  803.                 if self.y < @float_range[0]
  804.                    self.y = @float_range[0]
  805.                    @battler.motion_bms[0] += 1
  806.                    @battler.motion_stand[1] = 1
  807.                 end   
  808.            when 1  
  809.                 self.y += 1
  810.                 @battler.motion_bms[0] += 1
  811.                 if self.y > @float_range[1]
  812.                    self.y = @float_range[1]
  813.                    @battler.motion_bms[0] -= 1
  814.                    @battler.motion_stand[1] = 0
  815.                 end                  
  816.       end
  817.   end   
  818.   
  819.   #--------------------------------------------------------------------------
  820.   # ● Update Motion Side
  821.   #--------------------------------------------------------------------------         
  822.   def update_motion_side
  823.       @motion_speed += 1
  824.       return if @motion_speed < 5
  825.       @motion_speed = 0
  826.       case @battler.motion_stand[1]
  827.            when 0
  828.                 self.x -= 1
  829.                 if self.x < @side_range[0]
  830.                    self.x = @side_range[0]
  831.                    @battler.motion_stand[1] = 1
  832.                 end   
  833.            when 1  
  834.                 self.x += 1
  835.                 if self.x > @side_range[1]
  836.                    self.x = @side_range[1]
  837.                    @battler.motion_stand[1] = 0
  838.                 end                  
  839.       end
  840.   end     
  841.   
  842. end

  843. #==============================================================================
  844. #==============================================================================
  845. # ● ACTION ●
  846. #==============================================================================
  847. #==============================================================================

  848. #==============================================================================
  849. # ■ Game Action
  850. #==============================================================================
  851. class Game_Action
  852.   
  853.   #--------------------------------------------------------------------------
  854.   # ● Prepare
  855.   #--------------------------------------------------------------------------                  
  856.   alias mog_motion_action_prepare prepare
  857.   def prepare
  858.       mog_motion_action_prepare   
  859.       set_motion_action
  860.   end
  861.    
  862.   #--------------------------------------------------------------------------
  863.   # ● Set Motion Action
  864.   #--------------------------------------------------------------------------                    
  865.   def set_motion_action
  866.       return if @item.object == nil or subject == nil
  867.       subject.motion_action[0] = $1.to_i if @item.object.note =~ /<Motion Action = (\d+)>/i
  868.   end
  869.   
  870. end

  871. #==============================================================================
  872. # ■ Sprite Battler
  873. #==============================================================================
  874. class Sprite_Battler < Sprite_Base
  875.   
  876.   #--------------------------------------------------------------------------
  877.   # ● Can Update Action
  878.   #--------------------------------------------------------------------------   
  879.   def can_update_action?
  880.       return false if @battler.motion_damage[1] > 0
  881.       return false if @battler.motion_move[0]
  882.       return false if $imported[:mog_battle_camera] and $game_temp.bc_wait_cp[0] > 0
  883.       return true
  884.   end      
  885.   
  886.   #--------------------------------------------------------------------------
  887.   # ● Setup Motion Action
  888.   #--------------------------------------------------------------------------        
  889.   def setup_motion_action
  890.       @battler.motion_action = [-1,0]
  891.       @old_motion_action = @battler.motion_action[0]
  892.       @pre_set = [self.x, self.y, self.zoom_x,self.zoom_y,self.mirror,self.angle,self.opacity]
  893.   end

  894.   #--------------------------------------------------------------------------
  895.   # ● Refresh Action
  896.   #--------------------------------------------------------------------------         
  897.   def refresh_action
  898.       return if @old_motion_action == @battler.motion_action[0]
  899.       if @old_motion_action == -1
  900.          @pre_set = [self.x, self.y, self.zoom_x,self.zoom_y,self.mirror,self.angle,self.opacity]
  901.       end
  902.       @battler.motion_action[1] = 0  
  903.       return_set(@pre_set)
  904.       @old_motion_action = @battler.motion_action[0]
  905.       self.src_rect.y =  0
  906.   end  
  907.   
  908.   #--------------------------------------------------------------------------
  909.   # ● Execute Motion Action
  910.   #--------------------------------------------------------------------------            
  911.   def execute_motion_action
  912.       refresh_action
  913.       update_motion_action
  914.   end  
  915.   
  916.   #--------------------------------------------------------------------------
  917.   # ● Update Motion Action
  918.   #--------------------------------------------------------------------------              
  919.   def update_motion_action
  920.       return if @battler.motion_action[0] == -1
  921.       $game_temp.battler_in_motion = true
  922.       @battler.motion_action[1] += 1
  923.       case @battler.motion_action[0]
  924.            when -2
  925.               end_action
  926.            when 0
  927.               update_motion_zoom
  928.            when 1
  929.               update_motion_jump
  930.            when 2  
  931.               update_motion_round_right
  932.            when 3
  933.               update_motion_round_left
  934.            when 4
  935.               update_motion_shake
  936.            when 5
  937.               update_motion_front
  938.            when 6   
  939.               update_motion_step_left
  940.            when 7
  941.               update_motion_step_right              
  942.       end
  943.   end
  944.   
  945.   #--------------------------------------------------------------------------
  946.   # ● Update Motion Step Left
  947.   #--------------------------------------------------------------------------                  
  948.   def update_motion_step_left
  949.       case @battler.motion_action[1]
  950.            when 1..20
  951.                 self.x -= 2
  952.            when 21..40  
  953.                 self.x += 2           
  954.            else
  955.            end_action
  956.       end   
  957.    
  958.   end  
  959.   
  960.   #--------------------------------------------------------------------------
  961.   # ● Update Motion Step Right
  962.   #--------------------------------------------------------------------------                  
  963.   def update_motion_step_right
  964.       case @battler.motion_action[1]
  965.            when 1..20
  966.                 self.x += 2
  967.            when 21..40  
  968.                 self.x -= 2           
  969.            else
  970.         end_action   
  971.       end   
  972.   end   
  973.   
  974.   #--------------------------------------------------------------------------
  975.   # ● Update Motion Shake
  976.   #--------------------------------------------------------------------------               
  977.   def update_motion_shake      
  978.       self.x = @pre_set[0] + rand(@battler.motion_action[1]) if can_update_motion_shake?
  979.       end_action if @battler.motion_action[1] > 40
  980.   end   
  981.   
  982.   #--------------------------------------------------------------------------
  983.   # ● Can Update Motion Shake?
  984.   #--------------------------------------------------------------------------                  
  985.   def can_update_motion_shake?
  986.       if $imported[:mog_battle_hud_ex] !=nil
  987.          return false if @battler.is_a?(Game_Actor)
  988.       end
  989.       return true  
  990.   end  
  991.   
  992.   #--------------------------------------------------------------------------
  993.   # ● Update Motion Zoom
  994.   #--------------------------------------------------------------------------               
  995.   def update_motion_zoom
  996.       case @battler.motion_action[1]
  997.         when 1..20
  998.            self.zoom_x += 0.01
  999.            self.zoom_y += 0.01
  1000.         when 21..40
  1001.            self.zoom_x -= 0.01
  1002.            self.zoom_y -= 0.01         
  1003.         else  
  1004.         end_action   
  1005.       end
  1006.   end
  1007.   
  1008.   #--------------------------------------------------------------------------
  1009.   # ● Update Motion Jump
  1010.   #--------------------------------------------------------------------------                  
  1011.   def update_motion_jump
  1012.       case @battler.motion_action[1]
  1013.         when 1..20
  1014.             self.y -= 9
  1015.             self.zoom_x += 0.01
  1016.             self.zoom_y += 0.01
  1017.             self.mirror = true
  1018.             self.angle += 9
  1019.         when 21..40
  1020.             self.y += 9
  1021.             self.zoom_x -= 0.01
  1022.             self.zoom_y -= 0.01            
  1023.             self.mirror = false
  1024.             self.angle += 9
  1025.         else  
  1026.         self.angle = 0
  1027.         end_action   
  1028.       end      
  1029.   end
  1030.   
  1031.   #--------------------------------------------------------------------------
  1032.   # ● Update Motion Front
  1033.   #--------------------------------------------------------------------------                  
  1034.   def update_motion_front
  1035.       case @battler.motion_action[1]
  1036.         when 1..20
  1037.             self.y += 3
  1038.             self.zoom_x += 0.02
  1039.             self.zoom_y += 0.02
  1040.         when 21..40
  1041.             self.y -= 3
  1042.             self.zoom_x -= 0.02
  1043.             self.zoom_y -= 0.02            
  1044.         else  
  1045.         end_action   
  1046.       end      
  1047.   end
  1048.   
  1049.   #--------------------------------------------------------------------------
  1050.   # ● Update Motion Round Left
  1051.   #--------------------------------------------------------------------------                    
  1052.   def update_motion_round_left
  1053.       case @battler.motion_action[1]
  1054.         when 1..15
  1055.             self.y += 3
  1056.             self.x -= 3
  1057.             self.mirror = false
  1058.         when 16..30
  1059.             self.x += 6
  1060.             self.mirror = true
  1061.         when 31..45
  1062.             self.y -= 3
  1063.             self.x -= 3
  1064.             self.mirror = false
  1065.         else  
  1066.         end_action  
  1067.       end        
  1068.   end
  1069.   
  1070.   #--------------------------------------------------------------------------
  1071.   # ● Update Motion Round Right
  1072.   #--------------------------------------------------------------------------                    
  1073.   def update_motion_round_right
  1074.       case @battler.motion_action[1]
  1075.         when 1..15
  1076.             self.y += 3
  1077.             self.x += 3
  1078.             self.mirror = true
  1079.         when 16..30
  1080.             self.x -= 6
  1081.              self.mirror = false
  1082.         when 31..45
  1083.             self.y -= 3
  1084.             self.x += 3
  1085.             self.mirror = true
  1086.         else  
  1087.         end_action   
  1088.       end   
  1089.   end  
  1090.   
  1091.   #--------------------------------------------------------------------------
  1092.   # ● End Action
  1093.   #--------------------------------------------------------------------------                     
  1094.   def end_action
  1095.       if $imported[:mog_battle_hud_ex] != nil and @battler.is_a?(Game_Actor)
  1096.          return_set(@original_set)
  1097.       else  
  1098.          return_set(@pre_set)  
  1099.       end
  1100.       @battler.motion_action = [-1,0]
  1101.   end  
  1102.   
  1103. end

  1104. #==============================================================================
  1105. #==============================================================================
  1106. # ● COLLAPSE ●
  1107. #==============================================================================
  1108. #==============================================================================

  1109. #==============================================================================
  1110. # ■ Sprite Battler
  1111. #==============================================================================
  1112. class Sprite_Battler < Sprite_Base

  1113.   #--------------------------------------------------------------------------
  1114.   # ● Dispose
  1115.   #--------------------------------------------------------------------------   
  1116.   alias mog_bact_motion_dispose dispose
  1117.   def dispose   
  1118.       @pre_image.dispose rescue nil if !@pre_image.nil?
  1119.       mog_bact_motion_dispose
  1120.   end   
  1121.   
  1122.   #--------------------------------------------------------------------------
  1123.   # ● Can Update Action
  1124.   #--------------------------------------------------------------------------   
  1125.   def can_update_collapse?
  1126.       return true
  1127.   end      
  1128.   
  1129.   #--------------------------------------------------------------------------
  1130.   # ● Update Blink
  1131.   #--------------------------------------------------------------------------      
  1132.   alias mog_motion_animation_update_blink update_blink
  1133.   def update_blink
  1134.       return if @battler.dead? or !MOG_BATTLER_MOTION::ENABLE_DAMAGE_BLINK_EFFECT
  1135.       mog_motion_animation_update_blink
  1136.   end
  1137.   
  1138.   #--------------------------------------------------------------------------
  1139.   # ● Update Collapse
  1140.   #--------------------------------------------------------------------------
  1141.   def update_collapse
  1142.   end
  1143.   
  1144.   #--------------------------------------------------------------------------
  1145.   # ● Execute Motion Collapse
  1146.   #--------------------------------------------------------------------------   
  1147.   def execute_motion_collapse
  1148.       collapse_end if self.opacity == 0
  1149.       @battler.motion_collapse[1] += 1      
  1150.       case @battler.motion_collapse[0]
  1151.            when 0;     update_collapse_vertical
  1152.            when 1;     update_collapse_horizontal
  1153.            when 2;     update_collapse_zoom_out
  1154.            when 3;     update_collapse_zoom_in
  1155.            when 4;     update_collapse_zoom_in_out
  1156.            when 5;     update_collapse_boss_2
  1157.            when 6;     update_collpase_do_nothing
  1158.            when 7;     update_collpase_slice
  1159.            else ;      update_collapse_normal
  1160.       end
  1161.         
  1162.   end
  1163.    
  1164.   #--------------------------------------------------------------------------
  1165.   # ● Can Execute Collapse
  1166.   #--------------------------------------------------------------------------      
  1167.   def can_execute_collapse?
  1168.       return false if [email protected]?
  1169.       return false if @collapse_done
  1170.       return true
  1171.   end
  1172.   
  1173.   #--------------------------------------------------------------------------
  1174.   # ● Update Collapse Vertical
  1175.   #--------------------------------------------------------------------------        
  1176.   def update_collapse_vertical
  1177.       self.zoom_y += 0.1
  1178.       self.zoom_x -= 0.02         
  1179.       self.opacity -= 3   
  1180.   end
  1181.   
  1182.   #--------------------------------------------------------------------------
  1183.   # ● Update Collapse Horizontal
  1184.   #--------------------------------------------------------------------------         
  1185.   def update_collapse_horizontal
  1186.       self.zoom_x += 0.1
  1187.       self.zoom_y -= 0.02      
  1188.       self.opacity -= 3      
  1189.   end
  1190.      
  1191.   #--------------------------------------------------------------------------
  1192.   # ● Update Collapse Zoom Out
  1193.   #--------------------------------------------------------------------------            
  1194.   def update_collapse_zoom_out     
  1195.       self.zoom_x += 0.02
  1196.       self.zoom_y += 0.02     
  1197.       self.opacity -= 4   
  1198.   end
  1199.       
  1200.   #--------------------------------------------------------------------------
  1201.   # ● Update Collapse Zoom IN
  1202.   #--------------------------------------------------------------------------              
  1203.   def update_collapse_zoom_in
  1204.       self.zoom_x -= 0.01
  1205.       self.zoom_y -= 0.01      
  1206.       self.opacity -= 4            
  1207.   end
  1208.   
  1209.   #--------------------------------------------------------------------------
  1210.   # ● Update Collapse Zoom IN OUT
  1211.   #--------------------------------------------------------------------------               
  1212.   def update_collapse_zoom_in_out
  1213.       case @battler.motion_collapse[1]
  1214.            when 0..30
  1215.                 self.zoom_x += 0.1
  1216.                 self.zoom_y -= 0.02
  1217.                 self.opacity -= 2
  1218.            else  
  1219.                 self.zoom_y += 0.5
  1220.                 self.zoom_x -= 0.2
  1221.                 self.opacity -= 10
  1222.       end      
  1223.   end
  1224.      
  1225.   #--------------------------------------------------------------------------
  1226.   # ● Update Collapse Boss 2
  1227.   #--------------------------------------------------------------------------                  
  1228.   def update_collapse_boss_2
  1229.       self.x = @original_set[0] + rand(10)
  1230.       self.src_rect.y -= 1
  1231.       self.opacity = 0 if self.src_rect.y < -self.bitmap.height
  1232.   end
  1233.       
  1234.   #--------------------------------------------------------------------------
  1235.   # ● Update Collapse do nothing
  1236.   #--------------------------------------------------------------------------                    
  1237.   def update_collpase_do_nothing
  1238.   end  
  1239.   
  1240.   #--------------------------------------------------------------------------
  1241.   # ● Update Collpase Slice
  1242.   #--------------------------------------------------------------------------      
  1243.   def update_collpase_slice   
  1244.       return if !self.visible
  1245.       if [email protected]_slice[0] ; @battler.motion_slice[0] = true
  1246.           @pre_image = self.bitmap
  1247.           @cw_2s = @pre_image.width ; @ch_2s = @pre_image.height
  1248.           self.bitmap = Bitmap.new(@pre_image.width * 2,@pre_image.height)
  1249.           self.ox = self.bitmap.width / 2
  1250.       end
  1251.       @battler.motion_slice[1] += 1
  1252.       @battler.motion_slice[2] += 1
  1253.       if @battler.motion_slice[2] < 60 and @battler.motion_slice[2] < @cw_2s / 2
  1254.          self.bitmap.clear
  1255.          scr_rect_1 = Rect.new(0,0,@cw_2s,@ch_2s / 2)
  1256.          self.bitmap.blt((@cw_2s / 2) - @battler.motion_slice[1],0,@pre_image,scr_rect_1)
  1257.          scr_rect_2 = Rect.new(0,@ch_2s / 2,@cw_2s,@ch_2s / 2)
  1258.          self.bitmap.blt((@cw_2s / 2) + @battler.motion_slice[1],@ch_2s / 2,@pre_image,scr_rect_2)   
  1259.       else
  1260.          self.opacity -= 3
  1261.          if self.opacity == 0 ; self.visible = false ; collapse_end ; end
  1262.       end   
  1263.   end  
  1264.   
  1265.   #--------------------------------------------------------------------------
  1266.   # ● Update Collapse Normal
  1267.   #--------------------------------------------------------------------------                    
  1268.   def update_collapse_normal
  1269.       self.opacity -= 3
  1270.       self.blend_type = 1
  1271.   end  
  1272.   
  1273.   #--------------------------------------------------------------------------
  1274.   # ● Collapse End
  1275.   #--------------------------------------------------------------------------      
  1276.   def collapse_end
  1277.       return if @battler.motion_slice[0]
  1278.       @collapse_done = true
  1279.       return_set(@original_set)
  1280.       self.src_rect.y = -self.bitmap.height unless @battler.motion_collapse[0] == 6
  1281.       if @battler.is_a?(Game_Enemy) and @battler.dead?
  1282.          self.visible = false ; self.opacity = 0
  1283.       end   
  1284.   end  

  1285.   #--------------------------------------------------------------------------
  1286.   # ● Revert to Normal
  1287.   #--------------------------------------------------------------------------        
  1288.   alias mog_battler_motion_revert_to_normal revert_to_normal
  1289.   def revert_to_normal
  1290.       return if @battler.motion_slice[0]
  1291.       if @collapse_done
  1292.          @collapse_done = false
  1293.          return_set(@original_set)
  1294.       end
  1295.       mog_battler_motion_revert_to_normal
  1296.   end  
  1297.   
  1298. end

  1299. #===============================================================================
  1300. # ■ Game Battler
  1301. #===============================================================================
  1302. class Game_Battler < Game_BattlerBase
  1303.   
  1304.   attr_accessor :bact_data
  1305.   attr_accessor :bact_sprite
  1306.   attr_accessor :pre_target
  1307.   
  1308.   #--------------------------------------------------------------------------
  1309.   # ● Initialize
  1310.   #--------------------------------------------------------------------------      
  1311.   alias mog_bact_data_motion_initialize initialize
  1312.   def initialize
  1313.       bact_clear
  1314.       mog_bact_data_motion_initialize
  1315.   end
  1316.   
  1317.   #--------------------------------------------------------------------------
  1318.   # ● Bact Clear
  1319.   #--------------------------------------------------------------------------      
  1320.   def bact_clear
  1321.       @bact_data = [0,nil,nil,nil,false,false,0,0] ; @pre_target = nil  
  1322.   end
  1323.   
  1324. end

  1325. #==============================================================================
  1326. # ■ Sprite Battler
  1327. #==============================================================================
  1328. class Sprite_Battler < Sprite_Base
  1329.   
  1330.   #--------------------------------------------------------------------------
  1331.   # ● Initialize
  1332.   #--------------------------------------------------------------------------      
  1333.   alias mog_bact_motion_initialize initialize
  1334.   def initialize(viewport, battler = nil)
  1335.       @jump_count = 0 ; @jump_peak = 0 ; @move_wait_d = 0 ; @battler_dir = [false,0]
  1336.       mog_bact_motion_initialize(viewport, battler)
  1337.       if @battler.is_a?(Game_Enemy) and @battler.enemy.note =~ /<Screen X Y = \s*(\-*\d+)\s* - \s*(\-*\d+)\s*>/
  1338.          @battler.screen_x = $1.to_i ; @battler.screen_y = $2.to_i
  1339.       end        
  1340.   end   
  1341.       
  1342.   #--------------------------------------------------------------------------
  1343.   # ● Update Position
  1344.   #--------------------------------------------------------------------------  
  1345.   alias mog_bact_motion_update_position update_position
  1346.   def update_position     
  1347.       if battler_in_motion? ; battler_in_motion ; return ; end
  1348.       if escape_phase? ; update_escape_phase ; return ; end
  1349.       mog_bact_motion_update_position   
  1350.   end
  1351.   
  1352.   #--------------------------------------------------------------------------
  1353.   # ● Battler In Motion
  1354.   #--------------------------------------------------------------------------      
  1355.   def battler_in_motion?
  1356.       return false if @battler == nil
  1357.       return false if @battler.bact_data[0] == 0
  1358.       return false if $imported[:mog_animation_plus] and $game_temp.ani_plus_wait
  1359.       return true
  1360.   end
  1361.   
  1362.   #--------------------------------------------------------------------------
  1363.   # ● Escape Phase
  1364.   #--------------------------------------------------------------------------  
  1365.   def escape_phase?
  1366.       return false if !$imported[:mog_sprite_actor]
  1367.       return false if !MOG_SPRITE_ACTOR::ESCAPE_ANIMATION
  1368.       return false if @battler == nil
  1369.       return false if @battler.is_a?(Game_Enemy)
  1370.       return false if @battler.dead?
  1371.       return false if $game_temp.bact_phase[0] != 1
  1372.       return true
  1373.   end  

  1374.   #--------------------------------------------------------------------------
  1375.   # ● Battler In Motion
  1376.   #--------------------------------------------------------------------------      
  1377.   def battler_in_motion
  1378.       old_x = self.x ; old_y = self.y
  1379.       np = [@battler.bact_data[1],@battler.bact_data[2]]
  1380.       set_move_duration(np) if @battler.bact_data[5]
  1381.       update_jump(np)
  1382.       if @pre_set != nil and @battler.is_a?(Game_Enemy) and @battler.bact_data[0] == 2
  1383.          self.zoom_x -= 0.01 if self.zoom_x > @pre_set[2]
  1384.          self.zoom_y -= 0.01 if self.zoom_y > @pre_set[3]   
  1385.       end   
  1386.       if @move_wait_d == 0
  1387.          end_bact_move(np) if self.x == np[0] and self.y == np[1]
  1388.          if $imported[:mog_sprite_actor] and [email protected]?
  1389.             @battler.step_animation if @battler.bact_data[6] if (old_x != self.x) or (old_y != self.y)
  1390.             @battler.bact_sprite[3] = 2 if @wp_index > 0
  1391.          end
  1392.       end
  1393.       self.z = @battler.screen_z
  1394.       self.z += 20 if [email protected]_data[6]
  1395.       update_in_motion_end
  1396.   end

  1397.   #--------------------------------------------------------------------------
  1398.   # ● Update In Motion End
  1399.   #--------------------------------------------------------------------------      
  1400.   def update_in_motion_end
  1401.       return if @move_wait_d == 0
  1402.       @move_wait_d -= 1
  1403.       return if @move_wait_d > 0
  1404.       @battler.bact_data[0] = 0      
  1405.   end
  1406.   
  1407.   #--------------------------------------------------------------------------
  1408.   # ● End Bact Move
  1409.   #--------------------------------------------------------------------------      
  1410.   def end_bact_move(np)   
  1411.       self.angle = 0 unless @battler.dead?
  1412.       @battler.screen_x = np[0] ; @battler.screen_y = np[1]
  1413.       if @battler.motion_damage[1] > 0
  1414.          @battler.motion_damage = [0,0] ; update_motion_damage               
  1415.       end  
  1416.       if @pre_set != nil
  1417.          @pre_set[0] = self.x ; @pre_set[1] = self.y
  1418.          end_action if @battler.bact_data[0] == 2
  1419.          self.angle = 0
  1420.       end   
  1421.       @move_wait_d = (@battler.bact_data[6] or @battler.bact_data[0] == 2) ? 10 : 1
  1422.       @battler.bact_sprite[3] = 0 if $imported[:mog_sprite_actor]
  1423.       if @battler.bact_data[0] == 1
  1424.          @battler.bact_action[0] = true
  1425.       elsif @battler.bact_data[0] == 2
  1426.          @battler.bact_action_clear
  1427.          self.mirror = @battler_dir[0]
  1428.          @battler.bact_sprite[0] = @battler_dir[1]
  1429.          @battler_dir = [false,4]
  1430.          @battler.bact_sprite_need_refresh = true if @battler.is_a?(Game_Actor)
  1431.       end         
  1432.   end
  1433.         
  1434.   #--------------------------------------------------------------------------
  1435.   # ● Set Move Duration
  1436.   #--------------------------------------------------------------------------      
  1437.   def set_move_duration(np)      
  1438.       set_bact_angle_m      
  1439.       self.mirror = false if @battler.bact_data[0] == 2
  1440.       if @battler.motion_damage[1] > 0
  1441.          @battler.motion_damage = [0,0] ; update_motion_damage   
  1442.       end
  1443.       @battler.motion_damage = [0,0]
  1444.       @battler.bact_data[5] = false
  1445.       x_plus = (self.x - np[0]).abs ; y_plus = (self.y - np[1]).abs
  1446.       p = 0
  1447.       p = @battler.is_a?(Game_Actor) ? 500 : 0 if $imported[:mog_sprite_actor]
  1448.       e = @battler.bact_data[6] ? 200 + p : 5
  1449.       distance = Math.sqrt(x_plus + y_plus + e).round
  1450.       @jump_peak = (distance * 80 / 100).truncate
  1451.       @jump_count = @jump_peak * 2
  1452.       if @pre_set != nil
  1453.          @pre_set[0] = self.x ; @pre_set[1] = self.y ; @pre_set[4] = self.mirror
  1454.       end   
  1455.       @battler.bact_sprite[3] = 2 if $imported[:mog_sprite_actor]  
  1456.       @battler.bact_action_clear if @battler.bact_data[0] == 2
  1457.       @move_wait_d = 0
  1458.       @wp_index = 0 if @battler.bact_data[0] == 1      
  1459.   end
  1460.   
  1461.   #--------------------------------------------------------------------------
  1462.   # ● Set Bact Angle M
  1463.   #--------------------------------------------------------------------------      
  1464.   def set_bact_angle_m
  1465.       @battler_dir = [self.mirror,@battler.bact_sprite[0]] if @battler.bact_data[0] == 1  
  1466.       return if @battler.bact_data[6] and [2,4].include?(@battler.bact_sprite[5])
  1467.       if @battler.bact_data[7] >= 0 ; else
  1468.          self.angle = @battler.bact_data[0] == 2 ? 350 : 5
  1469.          self.mirror = true if @battler.is_a?(Game_Enemy) and MOG_BATTLER_MOTION::BATTLER_MIRROR_DIRECTION
  1470.          @battler.bact_sprite[0] = 4 unless [2,8].include?( @battler.bact_sprite[0])
  1471.       end
  1472.   end
  1473.   
  1474.   #--------------------------------------------------------------------------
  1475.   # ● Update Jump
  1476.   #--------------------------------------------------------------------------      
  1477.   def update_jump(np)
  1478.       return if $game_temp.bc_target_dmg[1] > 0
  1479.       @jump_count -= 1 if @jump_count > 0
  1480.       self.x = (self.x * @jump_count + np[0]) / (@jump_count + 1.0)
  1481.       self.y = ((self.y * @jump_count + np[1]) / (@jump_count + 1.0)) - jump_height
  1482.   end
  1483.   
  1484.   #--------------------------------------------------------------------------
  1485.   # ● Jump Height
  1486.   #--------------------------------------------------------------------------      
  1487.   def jump_height
  1488.       return 0 if @battler.bact_data[6]
  1489.       return (@jump_peak * @jump_peak - (@jump_count - @jump_peak).abs ** 2) / 40
  1490.   end
  1491.   

  1492.   #--------------------------------------------------------------------------
  1493.   # ● Can Update Battler Motion
  1494.   #--------------------------------------------------------------------------      
  1495.   alias mog_bact_can_update_battler_motion? can_update_battler_motion?
  1496.   def can_update_battler_motion?
  1497.       return false if @battler.bact_data[0] != 0
  1498.       mog_bact_can_update_battler_motion?
  1499.   end
  1500.    
  1501.   #--------------------------------------------------------------------------
  1502.   # ● Can Update idle
  1503.   #--------------------------------------------------------------------------   
  1504.   alias mog_bact_can_update_idle? can_update_idle?
  1505.   def can_update_idle?
  1506.       return false if @battler.bact_data[1] != nil
  1507.       mog_bact_can_update_idle?
  1508.   end   

  1509. end  

  1510. #===============================================================================
  1511. # ■ Scene Battle
  1512. #===============================================================================
  1513. class Scene_Battle < Scene_Base
  1514.   
  1515.   #--------------------------------------------------------------------------
  1516.   # ● Execute Action
  1517.   #--------------------------------------------------------------------------      
  1518.   alias mog_bact_execute_action execute_action
  1519.   def execute_action
  1520.       @cp_members = []
  1521.       if @subject != nil
  1522.          @subject.bact_action_clear
  1523.          item = @subject.current_action.item rescue nil
  1524.          @subject.bact_skill = item if item != nil
  1525.          if $imported[:mog_atb_system] and execute_cooperation_skill?
  1526.             @cp_members = current_cp_members
  1527.             for battler in @cp_members
  1528.                 battler.bact_skill = item if item != nil
  1529.            end
  1530.          end         
  1531.       end
  1532.       execute_bact_move if execute_bact_move?
  1533.       if $imported[:mog_sprite_actor] and $imported[:mog_animation_plus]
  1534.          $game_temp.ani_plus_wait = false  ; execute_cast_animation
  1535.       end
  1536.       mog_bact_execute_action
  1537.   end
  1538.   
  1539.   #--------------------------------------------------------------------------
  1540.   # ● Execute Bact Move
  1541.   #--------------------------------------------------------------------------      
  1542.   def execute_bact_move?
  1543.       item = @subject.current_action.item rescue nil
  1544.       return false if item == nil
  1545.       return false if item.is_a?(RPG::Skill) and @subject.is_a?(Game_Actor) and item.id == @subject.guard_skill_id
  1546.       targets = @subject.current_action.make_targets.compact rescue nil
  1547.       @subject.pre_target = targets
  1548.       for battler in @cp_members ; battler.pre_target = targets ; end      
  1549.       scy = @subject.screen_x rescue nil ; scx = targets[0].screen_x rescue nil
  1550.       return false if scx == nil or scy == nil
  1551.       return false if $imported[:mog_battle_hud_ex] and SceneManager.face_battler?
  1552.       return false if @act_enabled != nil
  1553.       return true
  1554.   end

  1555.   #--------------------------------------------------------------------------
  1556.   # ● Long Range?
  1557.   #--------------------------------------------------------------------------      
  1558.   def long_range?(item)
  1559.       return false if item == nil
  1560.       if @subject.is_a?(Game_Actor) and item.is_a?(RPG::Skill) and
  1561.          item.id == @subject.attack_skill_id and  @subject.equips[0] != nil
  1562.       return true if @subject.equips[0].note =~ /<Icon Angle = (\d+)>/i
  1563.       end  
  1564.       return false if item.note =~ /<Move to Target>/
  1565.       return false if item.note =~ /<Move to Target x\s*(\-*\d+)\s* y\s*(\-*\d+)\s*>/
  1566.       return true if [2,8,10].include?(item.scope)      
  1567.       return true
  1568.   end

  1569.   #--------------------------------------------------------------------------
  1570.   # ● Set BC Skill Type
  1571.   #--------------------------------------------------------------------------   
  1572.   def set_bc_skill_type
  1573.       item = @subject.current_action.item rescue nil
  1574.       return if item == nil
  1575.       return if item.is_a?(RPG::Skill) and item.stype_id != 1
  1576.       return if item.is_a?(RPG::Item) and item.itype_id != 1
  1577.       targets = @subject.current_action.make_targets.compact
  1578.       set_battle_camera_animation(targets, item.animation_id)
  1579.   end
  1580.   #--------------------------------------------------------------------------
  1581.   # ● Execute Bact Move
  1582.   #--------------------------------------------------------------------------      
  1583.   def execute_bact_move
  1584.       return if @subject.bact_skill == nil
  1585.       @act_enabled = true
  1586.       item = @subject.bact_skill
  1587.       if $imported[:mog_sprite_actor] and @subject.is_a?(Game_Actor) and long_range?(item)
  1588.           execute_bact_move_sprite_actor
  1589.       else   
  1590.          unless @subject.is_a?(Game_Enemy) and long_range?(item)
  1591.          targets = @subject.current_action.make_targets.compact
  1592.          targets[0] = @subject.primary_target if [email protected]_target.nil?
  1593.          exy = [0,0]
  1594.          if item.note =~ /<Move to Target x\s*(\-*\d+)\s* y\s*(\-*\d+)\s*>/
  1595.             exy = [$1.to_i,$2.to_i]
  1596.          end
  1597.          @subject.bact_data = [1,targets[0].screen_x + exy[0],targets[0].screen_y + exy[1],@subject.screen_x,@subject.screen_y,0,0,0]
  1598.          @subject.bact_data[5] = true
  1599.          @subject.bact_data[6] = false
  1600.          @subject.bact_data[7] = targets[0].screen_x - @subject.screen_x
  1601.          if @cp_members != nil
  1602.          for battler in @cp_members            
  1603.              battler.bact_data = [1,targets[0].screen_x,targets[0].screen_y,battler.screen_x,battler.screen_y,0,0,0]
  1604.              battler.bact_data[5] = true
  1605.              battler.bact_data[6] = false
  1606.              battler.bact_data[7] = targets[0].screen_x - battler.screen_x
  1607.           end         
  1608.           end
  1609.           execute_action_bact
  1610.          end
  1611.       end      
  1612.   end   
  1613.   
  1614.   #--------------------------------------------------------------------------
  1615.   # ● Execute Bact Move Sprite Actor
  1616.   #--------------------------------------------------------------------------      
  1617.   def execute_bact_move_sprite_actor
  1618.       ns = $imported[:mog_sprite_actor] ? $game_party.battlers_m_steps : 32
  1619.       if @subject.is_a?(Game_Enemy)
  1620.          targets = @subject.pre_target rescue nil
  1621.          targets = @subject.current_action.make_targets.compact if targets == nil
  1622.          if [2,8].include?($game_party.battle_members[0].bact_sprite[0])
  1623.             if targets[0].screen_y >= @subject.screen_y ; @subject.bact_sprite[0] = 2; end
  1624.             if targets[0].screen_y < @subject.screen_y ; @subject.bact_sprite[0] = 8; end
  1625.          else  
  1626.             if targets[0].screen_x >= @subject.screen_x ; @subject.bact_sprite[0] = 6; end
  1627.             if targets[0].screen_x < @subject.screen_x ; @subject.bact_sprite[0] = 4; end
  1628.          end
  1629.       end
  1630.       case @subject.bact_sprite[0]
  1631.            when 2 ; x = @subject.screen_x ; y = @subject.screen_y + ns
  1632.            when 4 ; x = @subject.screen_x - ns ; y = @subject.screen_y            
  1633.            when 6 ; x = @subject.screen_x + ns ; y = @subject.screen_y            
  1634.            when 8 ; x = @subject.screen_x ; y = @subject.screen_y - ns
  1635.       end      
  1636.       @subject.bact_data = [1,x,y,@subject.screen_x,@subject.screen_y,0,0,0,0]
  1637.       @subject.bact_data[5] = true ; @subject.bact_data[6] = true  
  1638.       for battler in @cp_members
  1639.           case battler.bact_sprite[0]
  1640.                when 2 ; x = battler.screen_x ; y = battler.screen_y + ns
  1641.                when 4 ; x = battler.screen_x - ns ; y = battler.screen_y            
  1642.                when 6 ; x = battler.screen_x + ns ; y = battler.screen_y            
  1643.                when 8 ; x = battler.screen_x ; y = battler.screen_y - ns
  1644.           end         
  1645.           battler.bact_data = [1,x,y,battler.screen_x,battler.screen_y,0,0,0,0]
  1646.           battler.bact_data[5] = true
  1647.           battler.bact_data[6] = true   
  1648.       end
  1649.       execute_action_bact  
  1650.   end
  1651.          
  1652.   #--------------------------------------------------------------------------
  1653.   # ● Process Action End
  1654.   #--------------------------------------------------------------------------      
  1655.   alias mog_bact_f_use_item use_item
  1656.   def use_item
  1657.       mog_bact_f_use_item
  1658.       motion_move_to_origin if @act_enabled
  1659.   end
  1660.   
  1661.   #--------------------------------------------------------------------------
  1662.   # ● Process Turn End
  1663.   #--------------------------------------------------------------------------      
  1664.   alias mog_bact_f_turn_end turn_end
  1665.   def turn_end
  1666.       motion_move_to_origin if @act_enabled
  1667.       mog_bact_f_turn_end
  1668.   end
  1669.   
  1670.   #--------------------------------------------------------------------------
  1671.   # ● Motion Move to Origin
  1672.   #--------------------------------------------------------------------------      
  1673.   def motion_move_to_origin
  1674.       if $imported[:mog_battle_camera]         
  1675.          $game_temp.bc_in_action[3] = false
  1676.          $game_temp.bc_in_turn = false ; clear_target_camera
  1677.       end
  1678.       process_wait_end
  1679.       process_bact_end if @subject.bact_data[1] != nil
  1680.       @subject.bact_action_clear
  1681.       @subject.pre_target = nil
  1682.       if @cp_members != nil
  1683.       for battler in @cp_members
  1684.           battler.bact_action_clear
  1685.           battler.pre_target = nil
  1686.       end
  1687.       end
  1688.       @act_enabled = nil  
  1689.   end
  1690.       
  1691.   #--------------------------------------------------------------------------
  1692.   # ● Turn End
  1693.   #--------------------------------------------------------------------------
  1694.   alias mog_bact_turn_end turn_end
  1695.   def turn_end
  1696.       @subject.return_to_orign if @subject.is_a?(Game_Actor) and $imported[:mog_sprite_actor]
  1697.       if @cp_members != nil
  1698.       for battler in @cp_members
  1699.           battler.return_to_orign if $imported[:mog_sprite_actor]
  1700.       end
  1701.       end      
  1702.       mog_bact_turn_end
  1703.   end
  1704.   
  1705.   #--------------------------------------------------------------------------
  1706.   # ● Process Wait End
  1707.   #--------------------------------------------------------------------------      
  1708.   def process_wait_end
  1709.       return if $game_temp.bact_wait_d == 0
  1710.       loop do ; update_basic ; $game_temp.bact_wait_d -= 1 ; break if $game_temp.bact_wait_d == 0
  1711.       end   
  1712.   end
  1713.   
  1714.   #--------------------------------------------------------------------------
  1715.   # ● Process Bact End
  1716.   #--------------------------------------------------------------------------      
  1717.   def process_bact_end      
  1718.       $game_temp.bc_in_action[6] = false if $imported[:mog_battle_camera]
  1719.       @subject.bact_data[0] = 2
  1720.       @subject.bact_data[1] = @subject.bact_data[3]
  1721.       @subject.bact_data[2] = @subject.bact_data[4]
  1722.       @subject.bact_data[5] = true
  1723.       @subject.wp_animation = [false,false] if $imported[:mog_sprite_actor]
  1724.       if @cp_members != nil
  1725.       for battler in @cp_members
  1726.           battler.bact_data[0] = 2
  1727.           battler.bact_data[1] = battler.bact_data[3]
  1728.           battler.bact_data[2] = battler.bact_data[4]
  1729.           battler.bact_data[5] = true
  1730.           battler..wp_animation = [false,false] if $imported[:mog_sprite_actor]
  1731.           battler.bact_sprite_need_refresh = true
  1732.       end      
  1733.       end
  1734.       execute_action_bact unless @subject.is_a?(Game_Actor) and $game_party.all_dead?
  1735.       @subject.bact_clear
  1736.       if @cp_members != nil
  1737.       for battler in @cp_members ; battler.bact_clear ; end
  1738.       end
  1739.   end     
  1740.       
  1741.   #--------------------------------------------------------------------------
  1742.   # ● Execute Action Bact
  1743.   #--------------------------------------------------------------------------      
  1744.   def execute_action_bact
  1745.       return if @subject == nil      
  1746.       loop do ; update_basic ; break if @subject.bact_data[0] == 0 ; end
  1747.   end
  1748.   
  1749.   #--------------------------------------------------------------------------
  1750.   # ● Execute Cooperation Skill?
  1751.   #--------------------------------------------------------------------------  
  1752.   def execute_cooperation_skill?
  1753.       return false if [email protected]_a?(Game_Actor)
  1754.       item = @subject.bact_skill rescue nil
  1755.       return false if item == nil
  1756.       return false if !BattleManager.cskill_usable?(item.id,@subject.id)
  1757.       return true
  1758.   end  

  1759.   #--------------------------------------------------------------------------
  1760.   # ● Use Item
  1761.   #--------------------------------------------------------------------------  
  1762.   alias mog_bact2_use_item use_item
  1763.   def use_item
  1764.       if $imported[:mog_sprite_actor]
  1765.       target = @subject.pre_target[0] rescue nil
  1766.       if target != nil and target.dead?
  1767.          if @subject.is_a?(Game_Actor) ; return unless target.is_a?(Game_Actor)
  1768.          else ; return unless target.is_a?(Game_Enemy)
  1769.          end   
  1770.       end
  1771.       end
  1772.       mog_bact2_use_item
  1773.       @subject.wp_animation = [false,false] if $imported[:mog_sprite_actor]
  1774.   end  
  1775.   
  1776. end

  1777. #===============================================================================
  1778. # ■ Game Action
  1779. #===============================================================================
  1780. class Game_Action

  1781.   #--------------------------------------------------------------------------
  1782.   # ● Clear
  1783.   #--------------------------------------------------------------------------
  1784.   alias mog_bact_clear clear
  1785.   def clear
  1786.       @subject.pre_target = nil rescue nil
  1787.       mog_bact_clear
  1788.   end  
  1789.    
  1790.   #--------------------------------------------------------------------------
  1791.   # ● Make Targets
  1792.   #--------------------------------------------------------------------------
  1793.   alias mog_bact_make_targets make_targets
  1794.   def make_targets
  1795.       return @subject.pre_target if @subject != nil and @subject.pre_target != nil
  1796.       mog_bact_make_targets
  1797.   end

  1798. end
复制代码
浅尝辄止,宜乎众矣。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
394
在线时间
20 小时
注册时间
2018-2-22
帖子
41
4
 楼主| 发表于 2018-2-27 10:45:42 | 只看该作者

谢谢 只不过这脚本好像和横版有冲突 我已经用啦横版啦.
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
1
星屑
14790
在线时间
2106 小时
注册时间
2017-9-28
帖子
662
5
发表于 2018-2-27 13:45:40 | 只看该作者
Soulpour777也写过一个。

  1. #-------------------------------------------------------------------------------
  2. # Soulpour777 - 动态敌人
  3. # Euphoria    - EDIT TO SCRIPT
  4. # Script Date: 11:01AM, 6 / 14 / 2014
  5. # Web URL: www.infinitytears.wordpress.com
  6. # Credits and Special Thanks to:
  7. # - Moghunter for the Original Script Idea
  8. # - TheoAllen for the update_origin help and move sidewards fix
  9. #-------------------------------------------------------------------------------
  10. # 介绍:
  11. # 本脚本可以在战斗时让敌人做出一些动态效果——呼吸、漂浮、左右横移,让敌人更加生动。
  12. #-------------------------------------------------------------------------------
  13. module Soulpour
  14.   module AnimatedBattlers
  15.     # ---------------------- <可编辑区域> ------------------------------ #
  16.     # 在下边的"[]"中填入你想要使用动态效果的敌人的ID.
  17.     #------------------------<End of Editable Region>------------------------ #
  18.     BREATH_SPEED = 2                       # 呼吸速度
  19.     BREATH_EFFECT_ENEMY_ID = [4, 2, 3]  # 呼吸
  20.     FLOAT_EFFECT_ENEMY_ID = [5]  # 漂浮
  21.     MOVESIDE_EFFECT_ENEMY_ID = [1, 6] # 左右横移
  22.     STATES_CANCEL_EFFECT = [7] # 状态取消效果(?)
  23.   end
  24. end
  25.   
  26. class Game_Battler < Game_BattlerBase
  27.   include Soulpour::AnimatedBattlers
  28.   #--------------------------------------------------------------------------
  29.   # * Alias Listings
  30.   # Aliased Methods: add_state(state_id), remove_state(state_id)
  31.   #--------------------------------------------------------------------------  
  32.   alias :soulpour_battlerex_add_state                           :add_state
  33.   alias :soulpour_battlerex_remove_state                        :remove_state
  34.   #--------------------------------------------------------------------------
  35.   # * Add State
  36.   #--------------------------------------------------------------------------
  37.   def add_state(state_id)
  38.     soulpour_battlerex_add_state(state_id)
  39.     if self.is_a?(Game_Enemy)
  40.       for i in STATES_CANCEL_EFFECT
  41.         if @states.include?(i)
  42.           @breath_effect = false
  43.           @float_effect = false
  44.           @moveside_effect = false
  45.         end
  46.       end
  47.     end
  48.   end
  49.   #--------------------------------------------------------------------------
  50.   # * Remove State
  51.   #--------------------------------------------------------------------------
  52.   def remove_state(state_id)
  53.     soulpour_battlerex_remove_state(state_id)
  54.      if self.is_a?(Game_Enemy)     
  55.         sce = false
  56.         for i in STATES_CANCEL_EFFECT
  57.             sce = true if @states.include?(i)
  58.         end   
  59.         if sce == false   
  60.            @breath_effect = true if BREATH_EFFECT_ENEMY_ID.include?(@enemy_id)
  61.            @float_effect = true if FLOAT_EFFECT_ENEMY_ID.include?(@enemy_id)
  62.            @moveside_effect = true if MOVESIDE_EFFECT_ENEMY_ID.include?(@enemy_id)           
  63.         end   
  64.      end        
  65.   end  
  66. end

  67. class Game_Enemy
  68.   #--------------------------------------------------------------------------
  69.   # * Included Modules
  70.   #--------------------------------------------------------------------------  
  71.   include Soulpour::AnimatedBattlers
  72.   #--------------------------------------------------------------------------
  73.   # * Public Instance Variables
  74.   #--------------------------------------------------------------------------
  75.   attr_accessor :breath_effect                  # Breath Effect
  76.   attr_accessor :float_effect                   # Float Effect
  77.   attr_accessor :moveside_effect                # Move Side Effect
  78.   #--------------------------------------------------------------------------
  79.   # * Alias Listings
  80.   # Aliased Methods: initialize(index, enemy_id)
  81.   #--------------------------------------------------------------------------  
  82.   alias :soulpour_battlerex_initialize                            :initialize
  83.   #--------------------------------------------------------------------------
  84.   # * Object Initialization
  85.   #--------------------------------------------------------------------------
  86.   def initialize(index, enemy_id)
  87.     soulpour_battlerex_initialize(index, enemy_id)
  88.     @breath_effect = false
  89.     @float_effect = false
  90.     @moveside_effect = false
  91.     @breath_effect = true if BREATH_EFFECT_ENEMY_ID.include?(@enemy_id)
  92.     @float_effect = true if FLOAT_EFFECT_ENEMY_ID.include?(@enemy_id)
  93.     @moveside_effect = true if MOVESIDE_EFFECT_ENEMY_ID.include?(@enemy_id)     
  94.   end
  95. end

  96. class Sprite_Battler
  97.    include Soulpour::AnimatedBattlers
  98.    alias :soulpour_battlerex_initialize                           :initialize
  99.    alias :soulpour_battlerex_update                               :update
  100.    alias :soulpour_battlerex_update_origin                     :update_origin
  101.   #--------------------------------------------------------------------------
  102.   # * Object Initialization
  103.   #--------------------------------------------------------------------------
  104.   def initialize(viewport, battler = nil)
  105.     soulpour_battlerex_initialize(viewport, battler)
  106.     breath_effect_setup(battler)
  107.     float_effect_setup(battler)
  108.     modeside_effect_setup(battler)
  109.   end   
  110.   
  111.    #--------------------------------------------------------------------------
  112.    # ● Moveside Effect
  113.    #--------------------------------------------------------------------------                       
  114.    def modeside_effect_setup(battler)
  115.        @ox_offset = 5
  116.        @moveside_duration = rand(30)
  117.        @moveside_speed = 0
  118.    end  
  119.    
  120.    #--------------------------------------------------------------------------
  121.    # ● Float Effect Setup
  122.    #--------------------------------------------------------------------------                     
  123.    def float_effect_setup(battler)
  124.        @float_duration = rand(40)
  125.        @float_speed = rand(3)
  126.    end
  127.    
  128.    #--------------------------------------------------------------------------
  129.    # ● Breath Effect Setup
  130.    #--------------------------------------------------------------------------                     
  131.    def breath_effect_setup(battler)
  132.        @breath_phase = 0
  133.        @breath_effect = false
  134.        @breath_effect_speed = 0
  135.        if @battler.is_a?(Game_Enemy) and @battler.breath_effect
  136.           initial_breath = 1.00 + (@battler.screen_x * 0.001) - (@battler.screen_y * 0.001)     
  137.           initial_breath = 1.1 if initial_breath > 1.1
  138.           initial_breath = 0.9 if initial_breath < 0.9
  139.           self.zoom_y = initial_breath
  140.           ex_speed = [[BREATH_SPEED, 1].max, 9].min
  141.           speed = ex_speed * 0.001
  142.           @breath_effect_speed = speed + (rand(99) * 0.00001)
  143.        end   
  144.    end  

  145.   #--------------------------------------------------------------------------
  146.   # * Frame Update
  147.   #--------------------------------------------------------------------------
  148.   def update
  149.     soulpour_battlerex_update
  150.      if @battler.is_a?(Game_Enemy)
  151.         update_breath_effect
  152.         update_float_effect
  153.         update_move_side_effect
  154.      end      
  155.   end
  156.   
  157.   def update_move_side_effect
  158.     return if @battler == nil
  159.     return unless @battler.moveside_effect
  160.     @moveside_speed += 1
  161.     return if @moveside_speed < 4
  162.     @moveside_speed = 0
  163.     @moveside_duration += 1
  164.     case @moveside_duration
  165.       when 0..10
  166.         @ox_offset += 2
  167.       when 11..15
  168.         @ox_offset += 1
  169.       when 16..25
  170.         @ox_offset -= 2
  171.       when 26..30
  172.         @ox_offset -= 1
  173.       else  
  174.         @moveside_duration = 0
  175.     end
  176.     update_ox
  177.   end
  178.    
  179.   def update_ox
  180.     self.ox = width/2 + @ox_offset
  181.   end
  182.   
  183.   def update_oy
  184.     self.oy = height
  185.   end
  186.   
  187.    
  188.   def update_origin
  189.     return if battler.is_a?(Game_Enemy)
  190.     soulpour_battlerex_update_origin
  191.   end
  192.   
  193.    #--------------------------------------------------------------------------
  194.    # ● Update Float Effect
  195.    #--------------------------------------------------------------------------                  
  196.    def update_float_effect
  197.      update_ox
  198.      update_oy   
  199.        return if @battler == nil
  200.        return unless @battler.float_effect
  201.    #    @float_speed += 1
  202.    #    return if @float_speed < 2
  203.        @float_speed = 10
  204.        @float_duration += 1
  205.        case @float_duration
  206.           when 0..15
  207.             self.oy += 2
  208.           when 16..20  
  209.             self.oy += 2
  210.           when 21..35
  211.             self.oy -= 2
  212.           when 36..40  
  213.             self.oy -= 2
  214.           else  
  215.             @float_duration = 0
  216.        end
  217.    end
  218.    
  219.    #--------------------------------------------------------------------------
  220.    # ● Update Breath Effect
  221.    #--------------------------------------------------------------------------                 
  222.    def update_breath_effect
  223.        update_ox
  224.        update_oy   
  225.        return if @battler == nil
  226.        return unless @battler.breath_effect
  227.        if @breath_effect_speed == 0   
  228.           ex_speed = [[BREATH_SPEED, 1].max, 9].min
  229.           speed = ex_speed * 0.001      
  230.           @breath_effect_speed = speed + (rand(99) * 0.00001)
  231.           self.zoom_y = 1 + rand(10) * 0.01
  232.        end   
  233.        if @breath_phase == 0
  234.           self.zoom_y += @breath_effect_speed
  235.           @breath_phase = 1 if self.zoom_y >= 1.05
  236.        else
  237.           self.zoom_y -= @breath_effect_speed
  238.           @breath_phase = 0 if self.zoom_y <= 0.9
  239.        end            
  240.    end  
  241. end
复制代码
VA外站脚本汉化群:226308173   |    部分远古文件备份:https://wwzv.lanzoue.com/b02rac5pc  密码:acgm
回复 支持 1 反对 0

使用道具 举报

Lv2.观梦者

梦石
0
星屑
394
在线时间
20 小时
注册时间
2018-2-22
帖子
41
6
 楼主| 发表于 2018-2-28 09:28:48 | 只看该作者
Nil2018 发表于 2018-2-27 13:45
Soulpour777也写过一个。

这个可以兼容一些 就是呼吸好像没效果 也不报错
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
394
在线时间
20 小时
注册时间
2018-2-22
帖子
41
7
 楼主| 发表于 2018-2-28 09:45:03 | 只看该作者
Nil2018 发表于 2018-2-27 13:45
Soulpour777也写过一个。

结合动态呼吸 可以一起使用  请问你还有没有 那个独立的敌人死亡破碎脚本

点评

https://rpg.blue/thread-405820-1-1.html 战斗也可以使用  发表于 2018-2-28 10:39
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 09:55

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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