Project1

标题: 秘奥义 - 写轮眼(复制敌特技的特技) - [打印本页]

作者: 恐惧剑刃    时间: 2014-2-16 18:46
标题: 秘奥义 - 写轮眼(复制敌特技的特技) -

PS 如果不希望某些角色或某些敌人的技能被复制
可以再添加一个变量 如果该 变量怎么样 直接 跳过复制处理即可

# --------------------------------------------
# ·秘奥义· 写轮眼(复制敌特技的特技)
# --------------------------------------------




# 增加一个变量 记录 最近一次敌人使用的 特技
class Game_Enemy < Game_Battler
  attr_accessor :skill
end
# 增加一个变量 记录 最近一次同伴使用的 特技
class Game_Actor < Game_Battler
  attr_accessor :skill
end
#==============================================================================
# ■ Scene_Battle (分割定义 4)
#------------------------------------------------------------------------------
#  处理战斗画面的类。
#==============================================================================
class Scene_Battle
  #--------------------------------------------------------------------------
  # ● 生成特技行动结果
  #--------------------------------------------------------------------------
  def make_skill_action_result
   
    # 获取特技
    @skill = $data_skills[@active_battler.current_action.skill_id]
   
    # ------------------------------------
    # 设置id
    # ------------------------------------
   
    写轮眼 = 100 # 写轮眼特技id
    敌方使用 = true # 敌人可以使用?
    重复复制 = true # 就是复制一次技能后 “目标” skill 不清除 可以反复复制该技能
   
    if @skill.id == 写轮眼 # 特技判断
      set_target_battlers(@skill.scope) # 取得“复制”目标
      if !@target_battlers[0].skill.nil? # 判断目标最近是否使用过技能
      
        @active_battler.sp -= @skill.sp_cost # 扣除使用写轮眼消耗的sp
        
        @skill = @target_battlers[0].skill # “技能替代”
        
        @target_battlers = [] # 清空目标数组
        set_target_battlers(@skill.scope) # 设置新的效果范围
        
        if 重复复制 == false
          @target_battlers[0].skill = nil # 目标“技能清除”
        end
        @active_battler.sp -= @skill.sp_cost # 扣除sp(mp)
        @status_window.refresh # 刷新状态窗口
        @help_window.set_text(@skill.name, 1) # 刷新帮助窗口
        @animation1_id = @skill.animation1_id # 设置发动方动画
        @animation2_id = @skill.animation2_id # 设置对象方动画
        @common_event_id = @skill.common_event_id # 设置公共事件
        for target in @target_battlers # 循环目标
          target.skill_effect(@active_battler, @skill) # 特技效果
        end
        return
      end
    end
   
   
    # 如果不是强制行动
    unless @active_battler.current_action.forcing
      # 因为 SP 耗尽而无法使用的情况下
      unless @active_battler.skill_can_use?(@skill.id)
        # 清除强制行动对像的战斗者
        $game_temp.forcing_battler = nil
        # 移至步骤 1
        @phase4_step = 1
        return
      end
    end
   
    # 消耗 SP
    @active_battler.sp -= @skill.sp_cost
    # 刷新状态窗口
    @status_window.refresh
    # 在帮助窗口显示特技名
    @help_window.set_text(@skill.name, 1)
    # 设置动画 ID
    @animation1_id = @skill.animation1_id
    @animation2_id = @skill.animation2_id
    # 设置公共事件 ID
    @common_event_id = @skill.common_event_id
    # 设置对像侧战斗者
    set_target_battlers(@skill.scope)
    # 应用特技效果
    for target in @target_battlers
      target.skill_effect(@active_battler, @skill)
    end
   
   
    # ------------------------------------
    # 记录 施放的特技与施放特技的战斗者
    # ------------------------------------
    return if 敌方使用 == false and @active_battler.is_a? Game_Enemy
    @active_battler.skill = @skill
   
  end
end

作者: 罪恶ぺ殇痕    时间: 2014-2-16 23:57
请问有效果截图和测试工程吗?
作者: 冰枫o鲍辰    时间: 2015-1-12 19:09
斑竹大大 能不能设置成使用技能后,作用方显示的动画不变,而使用方换成另一个动画?(我横版每个技能动画专属一个角色QAQ)




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1