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

Project1

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

[已经过期] 严重帮忙修改下怎么增加法术面向左右和增加张数问题

[复制链接]

Lv1.梦旅人

梦石
0
星屑
208
在线时间
152 小时
注册时间
2011-4-22
帖子
52
跳转到指定楼层
1
发表于 2015-10-29 23:05:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
  • =begin
    待机(面向左)    :00    01    02    03      共 4 张。
    待机(面向右)    :10    11    12    13      共 4 张。
    移动(面向左)    :20    21    22    23      共 4 张。
    移动(面向右)    :30    31    32    33      共 4 张。
    攻击(面向左)    :40    41    42    43      共 4 张。
    攻击(面向右)    :50    51    52    53      共 4 张.
    防御(面向左)    :80                              共 1 张.
    防御(面向右)    :90                              共 1 张.
    挨打(面向左)    :100                            共 1 张.
    挨打(面向右)    :110                            共 1 张.
    死亡(面向左)    :140  141                    共 2 张.
    死亡(面向右)    :150  151                    共 2 张.
    =end
    #==============================================================================
    ###############################################################################
    #==============================================================================
    # ★全图片单帧播放实现战斗动态效果★  
    #==============================================================================
    #  by -> 芯☆淡如水
    #==============================================================================
    ###############################################################################
    #==============================================================================
    module Cache
      def self.battler(name, filename, hue)
        self.load_bitmap("Graphics/Battlers/#{name}/", filename, hue)
      end
    end
    #==============================================================================
    class Sprite_Base < Sprite
      #--------------------------------------------------------------------------
      alias add_initialize_xdrs initialize
      def initialize(viewport = nil)
        add_initialize_xdrs(viewport)
        @damage_duration = 0
        @mp_damage_duration = 0
        @tip_duration = 0
      end
      #--------------------------------------------------------------------------
      alias add_dispose_xdrs dispose
      def dispose
        add_dispose_xdrs
        dispose_hp_damage
        dispose_mp_damage
        dispose_tip
      end
      #--------------------------------------------------------------------------
      def update
        super
        update_animation
        update_hp_damage
        update_mp_damage
        update_tip
        @@ani_checker.clear
        @@ani_spr_checker.clear
      end
      #--------------------------------------------------------------------------
      def hp_damage_show(value, critical)
        dispose_hp_damage
        if value.is_a?(Numeric)
          damage_string = value.abs.to_s
        else
          damage_string = value.to_s
        end
        bitmap = Bitmap.new(160, 48)
        bitmap.font.name = "黑体"
        bitmap.font.size = 32
        bitmap.font.color.set(0, 0, 0)
        bitmap.draw_text(-1, 12-1, 160, 36, damage_string, 1)
        bitmap.draw_text(+1, 12-1, 160, 36, damage_string, 1)
        bitmap.draw_text(-1, 12+1, 160, 36, damage_string, 1)
        bitmap.draw_text(+1, 12+1, 160, 36, damage_string, 1)
        if value.is_a?(Numeric) and value < 0
          bitmap.font.color.set(176, 255, 144)
        else
          bitmap.font.color.set(255, 255, 255)
        end
        bitmap.draw_text(0, 12, 160, 36, damage_string, 1)
        if critical
          bitmap.font.size = 20
          bitmap.font.color.set(0, 0, 0)
          bitmap.draw_text(-1, -1, 160, 20, "CRITICAL", 1)
          bitmap.draw_text(+1, -1, 160, 20, "CRITICAL", 1)
          bitmap.draw_text(-1, +1, 160, 20, "CRITICAL", 1)
          bitmap.draw_text(+1, +1, 160, 20, "CRITICAL", 1)
          bitmap.font.color.set(255, 255, 255)
          bitmap.draw_text(0, 0, 160, 20, "CRITICAL", 1)
        end
        @_damage_sprite = Sprite.new(self.viewport)
        @_damage_sprite.bitmap = bitmap
        @_damage_sprite.ox = 80
        @_damage_sprite.oy = 20
        @_damage_sprite.x = self.x
        @_damage_sprite.y = self.y - self.oy / 2
        @_damage_sprite.z = 3000
        @damage_duration = 40
      end
      #--------------------------------------------------------------------------
      def dispose_hp_damage
        if @_damage_sprite != nil
          @_damage_sprite.bitmap.dispose
          @_damage_sprite.dispose
          @_damage_sprite = nil
          @damage_duration = 0
        end
      end
      #--------------------------------------------------------------------------
      def update_hp_damage
        if @damage_duration > 0
          @damage_duration -= 1
          case @damage_duration
          when 38..39
            @_damage_sprite.y -= 4
          when 36..37
            @_damage_sprite.y -= 2
          when 34..35
            @_damage_sprite.y += 2
          when 28..33
            @_damage_sprite.y += 4
          end
          @_damage_sprite.opacity = 256 - (12 - @damage_duration) * 32
          if @damage_duration == 0
            dispose_hp_damage
          end
        end
      end
      #--------------------------------------------------------------------------
      def mp_damage_show(value, critical)
        dispose_mp_damage
        if value.is_a?(Numeric)
          damage_string = value.abs.to_s
        else
          damage_string = value.to_s
        end
        bitmap = Bitmap.new(160, 48)
        bitmap.font.name = "黑体"
        bitmap.font.size = 32
        bitmap.font.color.set(0, 0, 0)
        bitmap.draw_text(-1, 12-1, 160, 36, damage_string, 1)
        bitmap.draw_text(+1, 12-1, 160, 36, damage_string, 1)
        bitmap.draw_text(-1, 12+1, 160, 36, damage_string, 1)
        bitmap.draw_text(+1, 12+1, 160, 36, damage_string, 1)
        if value.is_a?(Numeric) and value < 0
          bitmap.font.color.set(0, 0, 255)
        else
          bitmap.font.color.set(0, 255, 255)
        end
        bitmap.draw_text(0, 12, 160, 36, damage_string, 1)
        if critical
          bitmap.font.size = 20
          bitmap.font.color.set(0, 0, 0)
          bitmap.draw_text(-1, -1, 160, 20, "CRITICAL", 1)
          bitmap.draw_text(+1, -1, 160, 20, "CRITICAL", 1)
          bitmap.draw_text(-1, +1, 160, 20, "CRITICAL", 1)
          bitmap.draw_text(+1, +1, 160, 20, "CRITICAL", 1)
          bitmap.font.color.set(255, 255, 255)
          bitmap.draw_text(0, 0, 160, 20, "CRITICAL", 1)
        end
        @_mp_damage_sprite = Sprite.new(self.viewport)
        @_mp_damage_sprite.bitmap = bitmap
        @_mp_damage_sprite.ox = 80
        @_mp_damage_sprite.oy = 20
        @_mp_damage_sprite.x = self.x
        @_mp_damage_sprite.y = self.y - self.oy / 2 - 40
        @_mp_damage_sprite.z = 3000
        @mp_damage_duration = 40
      end
      #--------------------------------------------------------------------------
      def dispose_mp_damage
        if @_mp_damage_sprite != nil
          @_mp_damage_sprite.bitmap.dispose
          @_mp_damage_sprite.dispose
          @_mp_damage_sprite = nil
          @mp_damage_duration = 0
        end
      end
      #--------------------------------------------------------------------------
      def update_mp_damage
        if @mp_damage_duration > 0
          @mp_damage_duration -= 1
          case @mp_damage_duration
          when 38..39
            @_mp_damage_sprite.y -= 4
          when 36..37
            @_mp_damage_sprite.y -= 2
          when 34..35
            @_mp_damage_sprite.y += 2
          when 28..33
            @_mp_damage_sprite.y += 4
          end
          @_mp_damage_sprite.opacity = 256 - (12 - @mp_damage_duration) * 32
          if @mp_damage_duration == 0
            dispose_mp_damage
          end
        end
      end
      #-----------------------------------------------------------
      def tip(txt, type)
        dispose_tip
        bitmap = Bitmap.new(240, 52)
        bitmap.font.name = (["黑体","宋体","Arial Black"])
        bitmap.font.size = 26
        bitmap.font.bold = true
        if type == 1
          bitmap.font.color.set(255, 0, 255)
          bitmap.draw_text(+1, 6+1, 220, 50, txt, 1)
          bitmap.font.color.set(0, 255, 120)
          bitmap.draw_text(0, 6, 220, 50, txt, 1)
        else
          bitmap.font.color.set(0, 255, 120)
          bitmap.draw_text(+1, 6+1, 220, 50, txt, 1)
          bitmap.font.color.set(255, 0, 255)
          bitmap.draw_text(0, 6, 220, 50, txt, 1)
        end
        @_tip_sprite = ::Sprite.new(self.viewport)
        @_tip_sprite.bitmap = bitmap
        @_tip_sprite.opacity = 0
        @_tip_sprite.ox = 100
        @_tip_sprite.oy = 20
        @_tip_sprite.x = self.x
        @_tip_sprite.y = self.y - self.oy
        @_tip_sprite.z = 3000
        @tip_duration = 60
      end
      #--------------------------------------------------------------------------
      def dispose_tip
        if @_tip_sprite != nil
          @_tip_sprite.bitmap.dispose
          @_tip_sprite.dispose
          @_tip_sprite = nil
          @tip_duration = 0
        end
      end
      #--------------------------------------------------------------------------
      def update_tip
        if @tip_duration > 0
          @tip_duration -= 1
          case @tip_duration
          when 38..39
            @_tip_sprite.y -= 4
          when 36..37
            @_tip_sprite.y -= 3
          when 34..35
            @_tip_sprite.y -= 2
          when 28..33
            @_tip_sprite.y -= 1
          end
          @_tip_sprite.opacity = 256 - (12 - @tip_duration) * 32
          if @tip_duration == 0
            dispose_tip
          end
        end
      end
    end
    #==============================================================================
    class Game_Temp
      #--------------------------------------------------------------------------
      attr_accessor :show_refresh
      #--------------------------------------------------------------------------
      alias add_initialize_xdrs initialize
      def initialize
        add_initialize_xdrs
        @show_refresh = false
      end
    end
    #==============================================================================
    class Scene_Battle < Scene_Base
      #--------------------------------------------------------------------------
      def command_guard
        BattleManager.actor.input.set_guard
        BattleManager.actor.guard = true
        next_command
      end
      #--------------------------------------------------------------------------
      def turn_end
        all_battle_members.each do |battler|
          battler.on_turn_end
          battler.guard = false
          refresh_status
          @log_window.display_auto_affected_status(battler)
          @log_window.wait_and_clear
        end
        BattleManager.turn_end
        process_event
        start_party_command_selection
      end
      #--------------------------------------------------------------------------
      # ● 执行战斗行动
      #--------------------------------------------------------------------------
      def execute_action
        @subject.sprite_effect_type = :whiten
        @subject.targets = @subject.current_action.make_targets.compact
        if @subject.current_action.item.is_a?(RPG::Skill)
          if @subject.current_action.item.id != 2
            if @subject.current_action.item.scope == 1 and
             @subject.current_action.item.hit_type != 2
              @subject.moveto_pop = true
              abs_wait_short
            else
              @subject.atk_pop = true
              @subject.tip_type = 0
              @subject.tip_message = @subject.current_action.item.name
              @subject.tip_pop = true
              @subject.atk_pop = true
            end
          end
        else
          @subject.tip_type = 1
          @subject.tip_message = @subject.current_action.item.name
          @subject.tip_pop = true
          @subject.atk_pop = true
        end
        use_item
        @log_window.wait_and_clear
      end
      #--------------------------------------------------------------------------
      # ● 使用技能/物品
      #--------------------------------------------------------------------------
      def use_item
        item = @subject.current_action.item
        @log_window.display_use_item(@subject, item)
        @subject.use_item(item)
        refresh_status
        targets = @subject.targets
        show_animation(targets, item.animation_id)
        targets.each {|target| item.repeats.times { invoke_item(target, item) } }
      end
    end
    #-----------------------------------------------------------------------------
    class Game_Battler < Game_BattlerBase
      #---------------------------------------------------------------------------
      attr_accessor :result
      attr_accessor :dead_one
      attr_accessor :hp_damage           
      attr_accessor :mp_damage
      attr_accessor :hp_damage_pop            
      attr_accessor :mp_damage_pop
      attr_accessor :moveto_pop
      attr_accessor :moveback_pop
      attr_accessor :atk_pop
      attr_accessor :int_pop
      attr_accessor :dead_pop
      attr_accessor :guard_pop
      attr_accessor :ad_pop
      attr_accessor :atk2_pop
      attr_accessor :targets
      attr_accessor :show_refresh
      attr_accessor :tip_pop
      attr_accessor :tip_type
      attr_accessor :tip_message
      attr_accessor :get_pop
      attr_accessor :an2_pop
      attr_accessor :guard
      #--------------------------------------------------------------------------
      alias old_initialize_xdrs initialize
      def initialize
        old_initialize_xdrs
        @hp_damage_pop = false
        @mp_damage_pop = false  
        @hp_damage = nil
        @mp_damage = nil
        @dead_one = false
        @show_refresh = true
        @targets = []
        @tip_pop = false
        @get_pop = false
        @tip_type = 0
        @tip_message = ""
        @guard = false
        off_pop
      end
      #---------------------------------------------------------------------------
      def off_pop
        @atk_pop = false
        @int_pop = false
        @dead_pop = false
        @guard_pop = false
        @ad_pop = false
        @moveto_pop = false
        @moveback_pop = false
        @atk2_pop = false
      end
      #---------------------------------------------------------------------------
      def moving?
        return (@atk_pop or @atk2_pop or @moveto_pop or @moveback_pop)
      end
      #--------------------------------------------------------------------------
      def erase_state(state_id)
        @states.delete(state_id)
        @state_turns.delete(state_id)
        @state_steps.delete(state_id)
        @dead_one = false if state_id == death_state_id
      end
      #--------------------------------------------------------------------------
      # ● 应用“恢复 HP”效果
      #--------------------------------------------------------------------------
      def item_effect_recover_hp(user, item, effect)
        value = (mhp * effect.value1 + effect.value2) * rec
        value *= user.pha if item.is_a?(RPG::Item)
        value = value.to_i
        @result.hp_damage -= value
        @result.success = true
        self.hp += value
        @hp_damage = value
        @hp_damage_pop = true
        @show_refresh = true if @hp_damage
      end
      #--------------------------------------------------------------------------
      # ● 应用“恢复 MP”效果
      #--------------------------------------------------------------------------
      def item_effect_recover_mp(user, item, effect)
        value = (mmp * effect.value1 + effect.value2) * rec
        value *= user.pha if item.is_a?(RPG::Item)
        value = value.to_i
        @result.mp_damage -= value
        @result.success = true if value != 0
        self.mp += value
        @mp_damage = value
        @mp_damage_pop = true
        @show_refresh = true if @mp_damage
      end
      #--------------------------------------------------------------------------
      def execute_damage(user)
        on_damage(@result.hp_damage) if @result.hp_damage > 0
        self.hp -= @result.hp_damage
        self.mp -= @result.mp_damage
        user.hp += @result.hp_drain
        user.mp += @result.mp_drain
        if @result.hp_damage > 0 or @result.mp_damage > 0
          dead? ? @dead_pop = true : (@guard ? @guard_pop = true : @ad_pop = true)
        end
        @hp_damage = @result.hp_damage  if @result.hp_damage > 0
        @hp_damage_pop = true if @hp_damage
        @mp_damage = @result.mp_damage if @result.mp_damage > 0
        @mp_damage_pop = true if @mp_damage
        @show_refresh = true
        user.hp_damage = @result.hp_drain  if @result.hp_drain > 0
        user.hp_damage_pop = true if user.hp_damage
        user.mp_damage = @result.mp_drain if @result.mp_drain > 0
        user.mp_damage_pop = true if user.mp_damage
        user.show_refresh = true
      end
    end
    #===============================================================================
    class Sprite_Battler < Sprite_Base
      #--------------------------------------------------------------------------
      def initialize(viewport, battler = nil)
        super(viewport)
        @battler = battler
        if @battler != nil
          @set = @battler.is_a?(Game_Enemy) ? 1 : 0
        else
          @set = 0
        end
        @battler_name = "00"
        @battler_visible = false
        @battler_visible = false
        @wait_time = @move_time = @atk_time = 0
        @int_time = @ad_time = @dead_time = @win_time = 0
        @show = Sprite.new(viewport)
        @show.bitmap = Bitmap.new(96, 32)
        @height = 0  
        @effect_type = nil
        @effect_duration = 0
        return if @battler.nil?
        @show.bitmap.font.color.set(0, 0, 0)
        @show.bitmap.fill_rect(0, 0, 62, 6, Color.new(0, 0, 0))
        @show.bitmap.fill_rect(0, 7, 62, 6, Color.new(0, 0, 0))
        w = 60 * @battler.hp / @battler.mhp
        for i in 1..w
          @show.bitmap.fill_rect(i, 1, 1, 4, Color.new(255, 0, 255-i*4))
        end
        w = 60 * @battler.mp / [@battler.mmp, 1].max
        for i in 1..w
          @show.bitmap.fill_rect(i, 8, 1, 4, Color.new(0, 255-i*4, 255))
        end
        @show.x = self.x-30
        @show.y = self.y - @height - 20
        @show.z = self.y
        @show.visible = @battler_visible
      end
      #--------------------------------------------------------------------------
      def dispose
        @battler.show_refresh = true if battler != nil
        @show.dispose
        bitmap.dispose if bitmap
        super
      end
      #--------------------------------------------------------------------------
      def tuch_range(target)
        b_name = @battler.name.gsub(/[A-Z]/, "")
        b_name = b_name.gsub(/[ ]/, "")
        bp = Cache.battler(b_name, "00", 0)
        r1 = bp.width / 2
        b_name = target.name.gsub(/[A-Z]/, "")
        b_name = b_name.gsub(/[ ]/, "")
        bp = Cache.battler(b_name, "01", 0)
        r2 = bp.width / 2
        return r1 + r2
      end
      #--------------------------------------------------------------------------
      def update
        super
        if @battler
          @use_sprite = @battler.use_sprite?
          if @use_sprite
            update_bitmap
            update_origin
            update_position
          end
          #setup_new_effect
          setup_new_animation
          setup_hp_damage
          setup_mp_damage
          setup_new_tip
          #update_effect
        else
          self.bitmap = nil
          @effect_type = nil
        end
      end
      #--------------------------------------------------------------------------
      def update_bitmap
        @wait_time += 1
        @wait_time = 0 if @wait_time >= 39
        @battler
        name = (0+@set).to_s + (@wait_time / 10).to_s
        #----------------------------------------------------------------------
        if @battler.moveto_pop
          @move_time += 1
          @move_time = 0 if @move_time >= 19
          targets = @battler.targets.uniq
          lx = targets.size == 1 ? targets[0].screen_x : 240
          name = self.x > lx ? "2" : "3"
          name += (@move_time / 5).to_s
          if targets.size == 1
            target = targets[0]
            if @battler == target
              @battler.atk_pop = true
              @battler.moveto_pop = false
              @move_time = 0
              return
            end
            tx = target.screen_x
            tx += @battler.screen_x > target.screen_x ? (tuch_range(target)) : -(tuch_range(target))
            ty = target.screen_y
          else
            tx = 240
            ty = 220
          end
          if self.x == tx and self.y == ty
            if @battler.current_action.item.is_a?(RPG::Skill) and
             @battler.current_action.item.id > 2 and
             @battler.current_action.item.hit_type != 2
              @battler.tip_type = 0
              @battler.tip_message = @battler.current_action.item.name
              @battler.tip_pop = true
            end
            @battler.atk_pop = true
            @battler.moveto_pop = false
            @move_time = 0
            return
          end
          rx = (self.x - tx).abs
          ry = (self.y - ty).abs
          lx = [Integer(20.0*rx / (rx+ry)), rx].min
          ly = [Integer(20.0*ry / (rx+ry)), ry].min
          self.x += self.x > tx ? -lx : (self.x < tx ? lx : 0)
          self.y += self.y > ty ? -ly : (self.y < ty ? ly : 0)
        end
        #---------------------------------------------------------------------
        if @battler.atk_pop
          n_time = [@atk_time, 39].min
          targets = @battler.targets.uniq
          if targets.size == 1
            nx = self.x > targets[0].screen_x ? "4" : "5"
            name = nx + (n_time / 10).to_s
          else
            name = (4+@set).to_s + (n_time / 10).to_s
          end
          @atk_time += 1
          if @atk_time >= 39
            @atk_time = 0
            @battler.atk_pop = false
            @battler.moveback_pop = true
          end
        end
        #---------------------------------------------------------------------
        if @battler.atk2_pop
          n_time = [@atk_time, 39].min
          if @battler.targets.size == 1
            nx = self.x > @battler.targets[0].screen_x ? "6" : "7"
            name = nx + (n_time / 10).to_s
          else
            name = (4+@set).to_s + (n_time / 10).to_s
          end
          @atk_time += 1
          if @atk_time >= 49
            @atk_time = 0
            @battler.atk2_pop = false
            @battler.moveback_pop = true
          end
        end
        #----------------------------------------------------------------------
        if @battler.moveback_pop
          @move_time += 1
          @move_time = 0 if @move_time >= 19
          name = self.x > @battler.screen_x ? "2" : "3"
          name += (@move_time / 5).to_s
          tx = @battler.screen_x
          ty = @battler.screen_y
          if self.x == tx and self.y == ty
            @battler.moveback_pop = false
            @move_time = 0
            return
          end
          rx = (self.x - tx).abs
          ry = (self.y - ty).abs
          lx = [Integer(20.0*rx / (rx+ry)), rx].min
          ly = [Integer(20.0*ry / (rx+ry)), ry].min
          self.x += self.x > tx ? -lx : (self.x < tx ? lx : 0)
          self.y += self.y > ty ? -ly : (self.y < ty ? ly : 0)
        end
        #----------------------------------------------------------------------
        if @battler.int_pop
          if @battler.targets.size == 1 and @battler != @battler.targets[0]
            nx = self.x > @battler.targets[0].screen_x ? "12" : "13"
            name = nx + (@int_time / 10).to_s
          else
            name = (12+@set).to_s + (@int_time / 10).to_s
          end
          @int_time += 1
          if @int_time >= 39
            @int_time = 0
            @battler.int_pop = false
          end
        end
        #----------------------------------------------------------------------
        if @battler.ad_pop
          name = (10+@set).to_s + (@ad_time / 40).to_s
          @ad_time += 1
          if @ad_time >= 39
            @ad_time = 0
            @battler.ad_pop = false
          end
        end
        #-----------------------------------------------------------------------
        if @battler.guard_pop and not @battler.dead?
          name = (8+@set).to_s + (@ad_time / 40).to_s
          @ad_time += 1
          if @ad_time >= 39
            @ad_time = 0
            @battler.guard_pop = false
          end
        end
        #----------------------------------------------------------------------
        if @battler.dead_pop
          name = (14+@set).to_s + (@dead_time / 20).to_s
          @dead_time += 1
          if @dead_time >= 39
            @dead_time = 0
            @battler.dead_one = true
            @battler.dead_pop = false
          end
        end
        #-----------------------------------------------------------------------
        if @battler.dead? and @battler.dead_one
          name = (14+@set).to_s + "1"
        end
        b_name = @battler.name.gsub(/[A-Z]/, "")
        b_name = b_name.gsub(/[ ]/, "")
        new_bitmap = Cache.battler(b_name, name, @battler.battler_hue)
        if bitmap != new_bitmap
          self.bitmap = new_bitmap
          init_visibility
        end
      end
      #--------------------------------------------------------------------------
      def init_visibility
        @battler_visible = @battler.exist?
        self.opacity = 0 unless @battler_visible
        if @battler != nil and @battler.show_refresh
          @show.bitmap.clear
          @show.bitmap.font.color.set(0, 0, 0)
          @show.bitmap.fill_rect(0, 0, 62, 6, Color.new(0, 0, 0))
          @show.bitmap.fill_rect(0, 7, 62, 6, Color.new(0, 0, 0))
          w = 60 * @battler.hp / @battler.mhp
          for i in 1..w
            @show.bitmap.fill_rect(i, 1, 1, 4, Color.new(255, 0, (255-i*4)))
          end
          w = 60 * @battler.mp / [@battler.mmp, 1].max
          for i in 1..w
            @show.bitmap.fill_rect(i, 8, 1, 4, Color.new(0, (255-i*4), 255))
          end
          @battler.show_refresh = false
        end
        @show.x = self.x-30
        @show.y = self.y - @height - 20
        @show.z = self.y + 30
        if @battler_visible
          @show.visible = @battler.dead? ? false : true
        else
          @show.visible = @battler_visible
        end
      end
      #--------------------------------------------------------------------------
      def update_position
        unless @battler.moving?
          self.x = @battler.screen_x
          self.y = @battler.screen_y
        end
        self.z = self.y
      end
      #--------------------------------------------------------------------------
      def setup_hp_damage
        if @battler.hp_damage_pop
          hp_damage_show(@battler.hp_damage, @battler.result.critical)
          @battler.hp_damage = nil
          @battler.result.critical = false
          @battler.hp_damage_pop = false
        end
      end
      #--------------------------------------------------------------------------
      def setup_mp_damage
        if @battler.mp_damage_pop
          mp_damage_show(@battler.mp_damage, @battler.result.critical)
          @battler.mp_damage = nil
          @battler.result.critical = false
          @battler.mp_damage_pop = false
        end
      end
      #--------------------------------------------------------------------------
      def setup_new_tip
        if @battler.tip_pop and @battler.tip_message != ""
          tip(@battler.tip_message, @battler.tip_type)
          @battler.tip_message = ""
          @battler.tip_pop = false
        end
      end
      #--------------------------------------------------------------------------
      def start_effect(effect_type)
        @effect_type = effect_type
        case @effect_type
        when :appear
          @effect_duration = 16
          @battler_visible = true
        when :disappear
          @effect_duration = 32
          #@battler_visible = false
        when :whiten
          @effect_duration = 16
          @battler_visible = true
        when :blink
          @effect_duration = 20
          @battler_visible = true
        when :collapse
          @effect_duration = 48
          #@battler_visible = false
        when :boss_collapse
          @effect_duration = bitmap.height
          #@battler_visible = false
        when :instant_collapse
          @effect_duration = 16
          #@battler_visible = false
        end
        revert_to_normal
      end
      #--------------------------------------------------------------------------
      # ● 更新白闪烁效果
      #--------------------------------------------------------------------------
      def update_whiten
        self.color.set(255, 255, 255, 0)
        self.color.alpha = 128 - (16 - @effect_duration) * 10
      end
      #--------------------------------------------------------------------------
      # ● 更新明灭效果
      #--------------------------------------------------------------------------
      def update_blink
      end
      #--------------------------------------------------------------------------
      # ● 更新出现效果
      #--------------------------------------------------------------------------
      def update_appear
        self.opacity = (16 - @effect_duration) * 16
      end
      #--------------------------------------------------------------------------
      # ● 更新消灭效果
      #--------------------------------------------------------------------------
      def update_disappear
      end
      #--------------------------------------------------------------------------
      # ● 更新击溃效果
      #--------------------------------------------------------------------------
      def update_collapse
        self.blend_type = 1
      end
      #--------------------------------------------------------------------------
      # ● 更新击溃首领效果
      #--------------------------------------------------------------------------
      def update_boss_collapse
        #alpha = @effect_duration * 120 / bitmap.height
        self.ox = bitmap.width / 2 + @effect_duration % 2 * 4 - 2
        self.blend_type = 1
        #self.color.set(255, 255, 255, 255 - alpha)
        #self.opacity = alpha
        #self.src_rect.y -= 1
        Sound.play_boss_collapse2 if @effect_duration % 20 == 19
      end
      #--------------------------------------------------------------------------
      # ● 更新瞬间消失效果
      #--------------------------------------------------------------------------
      def update_instant_collapse
        self.opacity = 0
      end
    end
    #==============================================================================
    class Game_Actor < Game_Battler
      #--------------------------------------------------------------------------
      def use_sprite?
        return true
      end
      #--------------------------------------------------------------------------
      # ● # 调 X 坐标。
      #--------------------------------------------------------------------------
    def screen_x
        if self.index != nil
          case self.index
          when 0         
            return 270
          when 1
            return 340
          when 2
            return 410
          when 3
            return 480
          end
        else
          return 0
        end
      end
      #--------------------------------------------------------------------------
      # ● 战斗者调 Y 坐标。
      #--------------------------------------------------------------------------
      def screen_y
        if self.index != nil
          case self.index
          when 0           
            return 400
          when 1
            return 360
          when 2
            return 320
          when 3
            return 280
          end
        else
          return 0
        end
      end
      #--------------------------------------------------------------------------
      # ● 取得战斗画面的 Z 坐标
      #--------------------------------------------------------------------------
      def screen_z
        if self.index != nil
          return screen_y
        else
          return 0
        end
      end
    end
    ###############################################################################
    #==============================================================================

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

本版积分规则

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

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

GMT+8, 2024-11-16 21:47

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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