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

Project1

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

[已经解决] 请教在状态50下使用攻击技能100结束后几率使用技能101再次...

[复制链接]

Lv4.逐梦者

梦石
0
星屑
9128
在线时间
463 小时
注册时间
2015-5-8
帖子
865
跳转到指定楼层
1
发表于 2019-6-29 20:08:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
我是这么想的:

条件1:装备第50号状态
条件2:已经学会第100号技能和第101号技能

结果:
当使用第100号技能攻击结束时自动触发第101号技能再次攻击


然后我发现我不知道要在哪个phase或者哪个step下写了。。。

求大神指点下思路,感激不尽!

Lv5.捕梦者

梦石
0
星屑
33173
在线时间
10489 小时
注册时间
2009-3-15
帖子
4756
2
发表于 2019-6-29 20:22:05 | 只看该作者
技能调用公共事件强制行动就可以了吧?

评分

参与人数 1+1 收起 理由
taeckle + 1 我很赞同

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9128
在线时间
463 小时
注册时间
2015-5-8
帖子
865
3
 楼主| 发表于 2019-7-17 10:50:00 | 只看该作者
soulsaga 发表于 2019-6-29 20:22
技能调用公共事件强制行动就可以了吧?

那要是用下面猫大的连击脚本该怎么改呢?

这个是猫大的连击脚本:

# ===================================================================
# 连击效果(完美版) v1.2 by SailCat
# ===================================================================
# 数据库设定(特技):
#   名称:技能名称,连击次数(要用半角逗号)
#   例如:超究舞神霸斩,11
#         狮子心,16
#         陨石,9
# 注意这是连击次数,实际攻击的回数是这个回数+1回。
# 省略逗号连同后面的参数的话,连击次数默认为零。
# 连击次数是负数的话,将取绝对值处理。
# 视觉效果是发动动画只放1回,击中动画放N回,伤害值显示N次,
# 所以,如使用了齐时战斗的话,要修改倒数第四行,该行内容为:
#     @phase4_step = 4
# 改为@phase4_step = 3
# 其他:RTAB不适用
# ===================================================================
module RPG
class Skill
   def name
     name = @name.split(/,/)[0]
     return name != nil ? name : ""
   end
   def hit_count
     name = @name.split(/,/)[1]
     return name != nil ? name.to_i.abs : 0
   end
end
class Sprite < ::Sprite
   def effect?
     @_whiten_duration > 0 or
     @_appear_duration > 0 or
     @_escape_duration > 0 or
     @_animation_duration > 0
   end
   def damage_effect?
     @_damage_duration > 0 or
     @_collapse_duration > 0
   end
end
end
class Spriteset_Battle
def damage_effect?
   for sprite in @enemy_sprites + @actor_sprites
     return true if sprite.damage_effect?
   end
   return false
end
end  
class Scene_Battle
alias sailcat_update_phase4_step1 update_phase4_step1
alias sailcat_make_skill_action_result make_skill_action_result
alias sailcat_update_phase4_step5 update_phase4_step5
def update_phase4_step1
   @hit_count = 0
   sailcat_update_phase4_step1
end
def make_skill_action_result
   sailcat_make_skill_action_result
   @hit_count = @skill.hit_count
end
def update_phase4_step5
   sailcat_update_phase4_step5
   if @hit_count > 0
     for target in @target_battlers.clone
       if target.dead?
         if @target_battlers.size > 1
           @target_battlers.delete(target)
         else
           @target_battlers.delete(target)
           if target.is_a?(Game_Enemy)
             target = $game_troop.smooth_target_enemy(target.index)
           else
             target = $game_party.smooth_target_actor(target.index)
           end
           if target.is_a?(Game_Battler)
             @target_battlers.push(target)
           end
         end
       end
     end
     if @target_battlers.size == 0
       return
     end
     for target in @target_battlers
       if target.damage != nil
         @phase4_step = 5
         return
       end
       target.skill_effect(@active_battler, @skill)
     end
     # 如果你应用了23种战斗特效的公共事件版脚本请去掉下面几行的注释
      if @common_event_id > 0
        common_event = $data_common_events[@common_event_id]
        $game_system.battle_interpreter.setup(common_event.list, 0)
      end
     @hit_count -= 1
     @phase4_step = 3
   end
end
end
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33173
在线时间
10489 小时
注册时间
2009-3-15
帖子
4756
4
发表于 2019-7-17 11:39:39 | 只看该作者
taeckle 发表于 2019-7-17 10:50
那要是用下面猫大的连击脚本该怎么改呢?

这个是猫大的连击脚本:

这个脚本只是单个技能的连击数..和你要求的无关..建议换脚本...

评分

参与人数 1+1 收起 理由
taeckle + 1 大神的指点!

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9128
在线时间
463 小时
注册时间
2015-5-8
帖子
865
5
 楼主| 发表于 2019-7-17 16:19:09 | 只看该作者
本帖最后由 taeckle 于 2019-7-17 16:20 编辑
soulsaga 发表于 2019-7-17 11:39
这个脚本只是单个技能的连击数..和你要求的无关..建议换脚本...


这是默认的phase4:

  # ● 刷新画面 (主回合步骤 2 : 开始行动)
  #--------------------------------------------------------------------------
  def update_phase4_step2
    # 如果不是强制行动
    unless @active_battler.current_action.forcing
      # 限制为 [敌人为普通攻击] 或 [我方为普通攻击] 的情况下
      if @active_battler.restriction == 2 or @active_battler.restriction == 3
        # 设置行动为攻击
        @active_battler.current_action.kind = 0
        @active_battler.current_action.basic = 0
      end
      # 限制为 [不能行动] 的情况下
      if @active_battler.restriction == 4
        # 清除行动强制对像的战斗者
        $game_temp.forcing_battler = nil
        # 移至步骤 1
        @phase4_step = 1
        return
      end
    end
    # 清除对像战斗者
    @target_battlers = []
    # 行动种类分支
    case @active_battler.current_action.kind
    when 0  # 基本
      make_basic_action_result
    when 1  # 特技
      make_skill_action_result
    when 2  # 物品
      make_item_action_result
    end
    # 移至步骤 3
    if @phase4_step == 2
      @phase4_step = 3
    end
  end
  #--------------------------------------------------------------------------
  # ● 生成基本行动结果
  #--------------------------------------------------------------------------
  def make_basic_action_result
    # 攻击的情况下
    if @active_battler.current_action.basic == 0
      # 设置攻击 ID
      @animation1_id = @active_battler.animation1_id
      @animation2_id = @active_battler.animation2_id
      # 行动方的战斗者是敌人的情况下
      if @active_battler.is_a?(Game_Enemy)
        if @active_battler.restriction == 3
          target = $game_troop.random_target_enemy
        elsif @active_battler.restriction == 2
          target = $game_party.random_target_actor
        else
          index = @active_battler.current_action.target_index
          target = $game_party.smooth_target_actor(index)
        end
      end
      # 行动方的战斗者是角色的情况下
      if @active_battler.is_a?(Game_Actor)
        if @active_battler.restriction == 3
          target = $game_party.random_target_actor
        elsif @active_battler.restriction == 2
          target = $game_troop.random_target_enemy
        else
          index = @active_battler.current_action.target_index
          target = $game_troop.smooth_target_enemy(index)
        end
      end
      # 设置对像方的战斗者序列
      @target_battlers = [target]
      # 应用通常攻击效果
      for target in @target_battlers
        target.attack_effect(@active_battler)
      end
      return
    end
    # 防御的情况下
    if @active_battler.current_action.basic == 1
      # 帮助窗口显示"防御"
      @help_window.set_text($data_system.words.guard, 1)
      return
    end
    # 逃跑的情况下
    if @active_battler.is_a?(Game_Enemy) and
       @active_battler.current_action.basic == 2
      #  帮助窗口显示"逃跑"
      @help_window.set_text("逃跑", 1)
      # 逃跑
      @active_battler.escape
      return
    end
    # 什么也不做的情况下
    if @active_battler.current_action.basic == 3
      # 清除强制行动对像的战斗者
      $game_temp.forcing_battler = nil
      # 移至步骤 1
      @phase4_step = 1
      return
    end
  end
  #--------------------------------------------------------------------------
  # ● 设置物品或特技对像方的战斗者
  #     scope : 特技或者是物品的范围
  #--------------------------------------------------------------------------
  def set_target_battlers(scope)
    # 行动方的战斗者是敌人的情况下
    if @active_battler.is_a?(Game_Enemy)
      # 效果范围分支
      case scope
      when 1  # 敌单体
        index = @active_battler.current_action.target_index
        @target_battlers.push($game_party.smooth_target_actor(index))
      when 2  # 敌全体
        for actor in $game_party.actors
          if actor.exist?
            @target_battlers.push(actor)
          end
        end
      when 3  # 我方单体
        index = @active_battler.current_action.target_index
        @target_battlers.push($game_troop.smooth_target_enemy(index))
      when 4  # 我方全体
        for enemy in $game_troop.enemies
          if enemy.exist?
            @target_battlers.push(enemy)
          end
        end
      when 5  # 我方单体 (HP 0)
        index = @active_battler.current_action.target_index
        enemy = $game_troop.enemies[index]
        if enemy != nil and enemy.hp0?
          @target_battlers.push(enemy)
        end
      when 6  # 我方全体 (HP 0)
        for enemy in $game_troop.enemies
          if enemy != nil and enemy.hp0?
            @target_battlers.push(enemy)
          end
        end
      when 7  # 使用者
        @target_battlers.push(@active_battler)
      end
    end
    # 行动方的战斗者是角色的情况下
    if @active_battler.is_a?(Game_Actor)
      # 效果范围分支
      case scope
      when 1  # 敌单体
        index = @active_battler.current_action.target_index
        @target_battlers.push($game_troop.smooth_target_enemy(index))
      when 2  # 敌全体
        for enemy in $game_troop.enemies
          if enemy.exist?
            @target_battlers.push(enemy)
          end
        end
      when 3  # 我方单体
        index = @active_battler.current_action.target_index
        @target_battlers.push($game_party.smooth_target_actor(index))
      when 4  # 我方全体
        for actor in $game_party.actors
          if actor.exist?
            @target_battlers.push(actor)
          end
        end
      when 5  # 我方单体 (HP 0)
        index = @active_battler.current_action.target_index
        actor = $game_party.actors[index]
        if actor != nil and actor.hp0?
          @target_battlers.push(actor)
        end
      when 6  # 我方全体 (HP 0)
        for actor in $game_party.actors
          if actor != nil and actor.hp0?
            @target_battlers.push(actor)
          end
        end
      when 7  # 使用者
        @target_battlers.push(@active_battler)
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 生成特技行动结果
  #--------------------------------------------------------------------------
  def make_skill_action_result
    # 获取特技
    @skill = $data_skills[@active_battler.current_action.skill_id]
    # 如果不是强制行动
    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
  end
  #--------------------------------------------------------------------------
  # ● 生成物品行动结果
  #--------------------------------------------------------------------------
  def make_item_action_result
    # 获取物品
    @item = $data_items[@active_battler.current_action.item_id]
    # 因为物品耗尽而无法使用的情况下
    unless $game_party.item_can_use?(@item.id)
      # 移至步骤 1
      @phase4_step = 1
      return
    end
    # 消耗品的情况下
    if @item.consumable
      # 使用的物品减 1
      $game_party.lose_item(@item.id, 1)
    end
    # 在帮助窗口显示物品名
    @help_window.set_text(@item.name, 1)
    # 设置动画 ID
    @animation1_id = @item.animation1_id
    @animation2_id = @item.animation2_id
    # 设置公共事件 ID
    @common_event_id = @item.common_event_id
    # 确定对像
    index = @active_battler.current_action.target_index
    target = $game_party.smooth_target_actor(index)
    # 设置对像侧战斗者
    set_target_battlers(@item.scope)
    # 应用物品效果
    for target in @target_battlers
      target.item_effect(@item)
    end
  end
  #--------------------------------------------------------------------------
  # ● 刷新画面 (主回合步骤 3 : 行动方动画)
  #--------------------------------------------------------------------------
  def update_phase4_step3
    # 行动方动画 (ID 为 0 的情况下是白色闪烁)
    if @animation1_id == 0
      @active_battler.white_flash = true
    else
      @active_battler.animation_id = @animation1_id
      @active_battler.animation_hit = true
    end
    # 移至步骤 4
    @phase4_step = 4
  end
  #--------------------------------------------------------------------------
  # ● 刷新画面 (主回合步骤 4 : 对像方动画)
  #--------------------------------------------------------------------------
  def update_phase4_step4
    # 对像方动画
    for target in @target_battlers
      target.animation_id = @animation2_id
      target.animation_hit = (target.damage != "Miss")
    end
    # 限制动画长度、最低 8 帧
    @wait_count = 8
    # 移至步骤 5
    @phase4_step = 5
  end
  #--------------------------------------------------------------------------
  # ● 刷新画面 (主回合步骤 5 : 显示伤害)
  #--------------------------------------------------------------------------
  def update_phase4_step5
    # 隐藏帮助窗口
    @help_window.visible = false
    # 刷新状态窗口
    @status_window.refresh
    # 显示伤害
    for target in @target_battlers
      if target.damage != nil
        target.damage_pop = true
      end
    end
    # 移至步骤 6
    @phase4_step = 6
  end
  #--------------------------------------------------------------------------
  # ● 刷新画面 (主回合步骤 6 : 刷新)
  #--------------------------------------------------------------------------
  def update_phase4_step6
    # 清除强制行动对像的战斗者
    $game_temp.forcing_battler = nil
    # 公共事件 ID 有效的情况下
    if @common_event_id > 0
      # 设置事件
      common_event = $data_common_events[@common_event_id]
      $game_system.battle_interpreter.setup(common_event.list, 0)
    end
    # 移至步骤 1
    @phase4_step = 1
  end
end
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33173
在线时间
10489 小时
注册时间
2009-3-15
帖子
4756
6
发表于 2019-7-17 16:32:56 | 只看该作者
RUBY 代码复制
  1. #==============================================================================
  2. # ■ XP-RGSS-13 スキル連撃 [Ver.3.3.0]    by Claimh
  3. #------------------------------------------------------------------------------
  4. # ・スキル攻撃時にタイミング良くキーを入力することで、追加攻撃が発動する。
  5. # ・オート発動、連続追加攻撃回数も設定可能
  6. # ・追加攻撃を発動させるキー入力のタイミング
  7. #      対象側のアニメーションが表示される直前
  8. # ・スキルアップデートと併用することで、スキルレベル制が導入できる。
  9. #   その際、連続回数は設定した連続回数+スキルレベルとなる
  10. #==============================================================================
  11.  
  12. module ExtraSkill
  13.   SKILL_CHASE = []
  14. #==============================================================================
  15. # □ カスタマイズSTART
  16. #==============================================================================
  17.   # 追加攻撃発動キー
  18.   SKILL_CHASE_KEY = Input::C
  19.  
  20.   # スキルレベル制を導入する
  21.   USE_SKILL_LEVEL = false      # 不要ならfalse
  22.  
  23.   # ダメージ一括表示
  24.   SKILL_CHASE_DMG_ALL = true          # 不要ならfalse
  25.   # 対象側アニメーションの間にウェイトを入れる
  26.   SKILL_CHASE_WAIT = 4                # 数値はフレーム数、不要ならnil
  27.  
  28.   # ミスなら追加攻撃しない
  29.   SKILL_CHASE_MISS = true               # 不要ならfalse
  30.   # クリティカル発生時にアニメーションを変化させる
  31.   SKILL_CHASE_CRITICAL = true           # 不要ならfalse
  32.  
  33.   # 物理攻撃系スキルの属性ID
  34.   CHASE_WEAPON = 19
  35.   # 魔法攻撃系スキルの属性ID
  36.   CHASE_MAGIC = 20
  37.  
  38.   # 成功時に鳴らすSE
  39.   SKILL_CHASE_SE = "020-Teleport03"     # 不要ならnil
  40.  
  41.   # 設定例
  42.   # SKILL_CHASE[スキルID] = [追加攻撃の攻撃力(%), 連鎖アニメID, オート発動フラグ,
  43.   #  成功率, 連続回数,クリティカル時アニメ]]
  44.   SKILL_CHASE[57] = [100, 31, false, 100, 5, 32]
  45.   SKILL_CHASE[61] = [100, 42, false, 100, 4, 43]
  46.  
  47. #==============================================================================
  48. # □ カスタマイズEND
  49. #==============================================================================
  50. end
  51.  
  52. class Scene_Battle
  53.   include ExtraSkill
  54.   attr_accessor   :skill_chase_exercise       # 追加攻撃実行中
  55.   attr_accessor   :skill_chase_end            # 追加攻撃終了
  56.   attr_accessor   :skill_chase_first          # 追加攻撃 第1攻撃[スキル]
  57.   attr_accessor   :skill_chase_set            # 追加攻撃 設定値
  58.   attr_accessor   :skill_atk_f                # 追加攻撃 威力
  59.   attr_accessor   :chase_skill_type           # 追加攻撃 スキルタイプ
  60.   #--------------------------------------------------------------------------
  61.   # ● 追尾判定用データ初期化
  62.   #--------------------------------------------------------------------------
  63.   def init_chase
  64.     @skill_chase_flg = false          # 追加攻撃開始
  65.     self.skill_chase_exercise = false # 追加攻撃実行中
  66.     self.skill_chase_end = false      # 追加攻撃終了
  67.     @skill_chase_check_key = false    # 追加攻撃判定実行中
  68.     @skill_chase_success = false      # 追加攻撃成功
  69.     @skill_chase_count = 0            # 追加攻撃数カウント
  70.     self.skill_chase_first = true     # 初期フラグ
  71.     self.skill_chase_set = []
  72.     self.skill_atk_f = 0
  73.     self.chase_skill_type = 0
  74.   end
  75.   #--------------------------------------------------------------------------
  76.   # ● フレーム更新 (メインフェーズ ステップ 1 : アクション準備)
  77.   #--------------------------------------------------------------------------
  78.   alias update_phase4_step1_skill_chase update_phase4_step1
  79.   def update_phase4_step1
  80.     update_phase4_step1_skill_chase
  81.     init_chase
  82.   end
  83.  
  84.   #--------------------------------------------------------------------------
  85.   # ● フレーム更新 (メインフェーズ ステップ 3 : 行動側アニメーション)
  86.   #--------------------------------------------------------------------------
  87.   alias update_phase4_step3_skill_chase update_phase4_step3
  88.   def update_phase4_step3
  89.     # 追加攻撃実行中ならステップ4に強制移行
  90.     if self.skill_chase_exercise
  91.       # ステップ 4 に移行
  92.       @phase4_step = 4
  93.       return
  94.     elsif @active_battler.current_action.kind == 1
  95.       if @active_battler.is_a?(Game_Actor)
  96.         # 追加攻撃チェック
  97.         skill_chase_check(@skill)
  98.       end
  99.     end
  100.     update_phase4_step3_skill_chase       # 原物
  101.   end
  102.  
  103.  
  104.   #--------------------------------------------------------------------------
  105.   # ● 判定・設定
  106.   #--------------------------------------------------------------------------
  107.   def skill_chase_check(skill)
  108.     unless SKILL_CHASE[skill.id].nil?
  109.       self.skill_chase_set = SKILL_CHASE[skill.id]
  110.       @skill_chase_flg = true
  111.     end
  112.   end
  113.  
  114.   #--------------------------------------------------------------------------
  115.   # ● フレーム更新 (メインフェーズ ステップ 4 : 対象側アニメーション)
  116.   #--------------------------------------------------------------------------
  117.   alias update_phase4_step4_skill_chase update_phase4_step4
  118.   def update_phase4_step4
  119.     # 追加攻撃
  120.     if @skill_chase_flg
  121.       # キーチェックを開始する
  122.       @skill_chase_check_key = true
  123.       # 追加攻撃実行中ならアニメーション再セット
  124.       if self.skill_chase_exercise
  125.         @animation2_id = self.skill_chase_set[1]
  126.       end
  127.       # 対象側アニメーション
  128.       for target in @target_battlers
  129.         # クリティカルでアニメーション変化
  130.         if SKILL_CHASE_CRITICAL and target.critical and self.skill_chase_first
  131.           target.animation_id = self.skill_chase_set[5]
  132.         else
  133.           # 一度でもクリティカルがあった
  134.           if target.once_critical and SKILL_CHASE_DMG_ALL
  135.             target.critical = true
  136.           end
  137.           target.animation_id = @animation2_id
  138.         end
  139.         target.animation_hit = (target.damage != "Miss")
  140.       end
  141.       # ウェイトを入れる
  142.       if SKILL_CHASE_WAIT != nil
  143.         @wait_count = SKILL_CHASE_WAIT
  144.       end
  145.       # ステップ 5 に移行
  146.       @phase4_step = 5
  147.       return
  148.     end
  149.     update_phase4_step4_skill_chase     # 原物
  150.   end
  151.  
  152.   #--------------------------------------------------------------------------
  153.   # ● 追加攻撃力設定
  154.   #--------------------------------------------------------------------------
  155.   def skill_chase_atk
  156.     # 物理攻撃系
  157.     if @skill.element_set.include?(CHASE_WEAPON)
  158.       self.chase_skill_type = 1
  159.       self.skill_atk_f = @skill.atk_f/100
  160.     # 魔法攻撃系
  161.     elsif @skill.element_set.include?(CHASE_MAGIC)
  162.       self.chase_skill_type = 2
  163.       self.skill_atk_f = @skill.int_f/100
  164.     else
  165.       p "設定ミス"
  166.     end
  167.     self.skill_chase_set[0] = @skill.power * self.skill_chase_set[0]/100
  168.   end
  169.  
  170.   #--------------------------------------------------------------------------
  171.   # ● フレーム更新 (メインフェーズ ステップ 5 : ダメージ表示)
  172.   #--------------------------------------------------------------------------
  173.   alias update_phase4_step5_skill_chase update_phase4_step5
  174.   def update_phase4_step5
  175.     # キーチェック終了
  176.     @skill_chase_check_key = false
  177.     # 追加攻撃成功
  178.     if @skill_chase_success
  179.       skill_chase_atk
  180.       # 追加攻撃実行中に移行
  181.       self.skill_chase_exercise = true
  182.     end
  183.     # ダメージ一括表示
  184.     if SKILL_CHASE_DMG_ALL and self.skill_chase_exercise
  185.       # 追加攻撃終了or追加攻撃失敗
  186.       if self.skill_chase_end or !@skill_chase_success
  187.         self.skill_chase_exercise = false
  188.         @skill_chase_flg = false
  189.         self.skill_chase_end = false
  190.         # ヘルプウィンドウを隠す
  191.         @help_window.visible = false
  192.         # ステータスウィンドウをリフレッシュ
  193.         @status_window.refresh
  194.         # 積算ダメージの描写
  195.         for target in @target_battlers
  196.           if target.skill_chase_all_dmg != nil
  197.             target.damage = target.skill_chase_all_dmg
  198.             target.damage_pop = true
  199.             target.skill_chase_all_dmg = nil
  200.             # 途中で死んでたらトドメをさす
  201.             if target.skill_chase_dead_end
  202.               target.hp = 0
  203.               target.skill_chase_dead_end = false
  204.             end
  205.             # クリティカルが発生している
  206.             if target.once_critical
  207.               target.critical = true
  208.               target.once_critical = false
  209.             end
  210.           end
  211.         end
  212.         # ステップ 6 に移行
  213.         @phase4_step = 6
  214.         return
  215.       end
  216.     else
  217.       update_phase4_step5_skill_chase       # 原物
  218.     end
  219.     # 追加攻撃終了or追加攻撃失敗
  220.     if self.skill_chase_end or !@skill_chase_success
  221.       self.skill_chase_exercise = false
  222.       @skill_chase_flg = false
  223.       self.skill_chase_end = false
  224.       if SKILL_CHASE_DMG_ALL
  225.         for target in @target_battlers
  226.           target.skill_chase_all_dmg = nil
  227.           if target.skill_chase_dead_end
  228.             target.hp = 0
  229.             target.skill_chase_dead_end = false
  230.           end
  231.         end
  232.       end
  233.     end
  234.     if self.skill_chase_exercise
  235.       @skill_chase_success = false
  236.       # 追加攻撃開始
  237.       @phase4_step = 2
  238.       @active_battler.current_action.kind = 0
  239.       @active_battler.current_action.basic = 0
  240.     end
  241.   end
  242.  
  243.   #--------------------------------------------------------------------------
  244.   # ● フレーム更新
  245.   #--------------------------------------------------------------------------
  246.   alias update_skill_chase update
  247.   def update
  248.     if @skill_chase_check_key and @skill_chase_flg
  249.       # 追加攻撃発動チェック
  250.       if (Input.trigger?(SKILL_CHASE_KEY) or self.skill_chase_set[2])
  251.         # 確率チェック
  252.         if rand(100) <= self.skill_chase_set[3]
  253.           @skill_chase_success = true
  254.           @skill_chase_check_key = false
  255.           @skill_chase_count += 1
  256.           # 追加攻撃回数チェック
  257.           if @skill_chase_count >= self.skill_chase_set[4] or self.skill_chase_end
  258.             self.skill_chase_end = true
  259.           else
  260.             # 追加攻撃成功SEを鳴らしてみる
  261.             if SKILL_CHASE_SE != nil and !self.skill_chase_end
  262.               Audio.se_play("Audio/SE/" + SKILL_CHASE_SE)
  263.             end
  264.           end
  265.         end
  266.       end
  267.     end
  268.     update_skill_chase              # 原物
  269.   end
  270.   #--------------------------------------------------------------------------
  271.   # ● フレーム更新 (メインフェーズ ステップ 6 : リフレッシュ)
  272.   #--------------------------------------------------------------------------
  273.   alias update_phase4_step6_add_atk update_phase4_step6
  274.   def update_phase4_step6
  275.     init_chase
  276.     for target in @target_battlers
  277.       target.skill_chase_all_dmg = nil
  278.       target.skill_chase_dead_end = false
  279.       target.once_critical = false
  280.     end
  281.     update_phase4_step6_add_atk
  282.   end
  283. end
  284.  
  285.  
  286. #==============================================================================
  287. # ■ Game_Battler
  288. #==============================================================================
  289. class Game_Battler
  290.   include ExtraSkill
  291.   attr_accessor :skill_chase_all_dmg           # 積算ダメージ
  292.   attr_accessor :skill_chase_dead_end          # 死亡フラグ
  293.   attr_accessor :once_critical           # クリティカルフラグ(一括表示用)
  294.   #--------------------------------------------------------------------------
  295.   # ● オブジェクト初期化
  296.   #--------------------------------------------------------------------------
  297.   alias initialize_skill_chase initialize
  298.   def initialize
  299.     initialize_skill_chase
  300.     @skill_chase_all_dmg = nil
  301.     @skill_chase_dead_end = false
  302.     @once_critical = false
  303.   end
  304.  
  305.   #--------------------------------------------------------------------------
  306.   # ● 通常攻撃の効果適用
  307.   #     attacker : 攻撃者 (バトラー)
  308.   #--------------------------------------------------------------------------
  309.   alias attack_effect_skill_chase attack_effect
  310.   def attack_effect(attacker)
  311.     if $scene.skill_chase_exercise
  312.       # クリティカルフラグをクリア
  313.       self.critical = false
  314.       # 基本ダメージを計算
  315.       if $scene.chase_skill_type == 1
  316.         atk_skill = (attacker.atk * $scene.skill_atk_f + $scene.skill_chase_set[0])/1.2
  317.       elsif $scene.chase_skill_type == 2
  318.         atk_skill = (attacker.int * $scene.skill_atk_f + $scene.skill_chase_set[0])/1.2
  319.       else
  320.         p "設定ミス2"
  321.       end
  322.       atk = [atk_skill.to_int - self.pdef / 2, 0].max
  323.       self.damage = atk * (20 + attacker.str) / 20
  324.       # 属性修正
  325.       self.damage *= elements_correct(attacker.element_set)
  326.       self.damage /= 100
  327.       # ダメージの符号が正の場合
  328.       if self.damage > 0
  329.         # クリティカル修正
  330.         if rand(100) < 4 * attacker.dex / self.agi
  331.           self.damage *= 2
  332.           self.critical = true
  333.           self.once_critical = true
  334.         end
  335.         # 防御修正
  336.         if self.guarding?
  337.           self.damage /= 2
  338.         end
  339.       end
  340.       # 分散
  341.       if self.damage.abs > 0
  342.         amp = [self.damage.abs * 15 / 100, 1].max
  343.         self.damage += rand(amp+1) + rand(amp+1) - amp
  344.       end
  345.       # 第二命中判定
  346.       eva = 8 * self.agi / attacker.dex + self.eva
  347.       hit = self.damage < 0 ? 100 : 100 - eva
  348.       hit = self.cant_evade? ? 100 : hit
  349.       hit_result = (rand(100) < hit)
  350.       # 命中の場合
  351.       if hit_result == true
  352.         # ステート衝撃解除
  353.         remove_states_shock
  354.         # HP からダメージを減算
  355.         self.hp -= self.damage
  356.         # ステート変化
  357.         @state_changed = false
  358.         states_plus(attacker.plus_state_set)
  359.         states_minus(attacker.minus_state_set)
  360.       # ミスの場合
  361.       else
  362.         # ダメージに "Miss" を設定
  363.         self.damage = "Miss"
  364.         # クリティカルフラグをクリア
  365.         self.critical = false
  366.       end
  367.     else
  368.       attack_effect_skill_chase(attacker)      # 原物
  369.     end
  370.     if self.dead?
  371.       # こいつはもう死んでいる
  372.       @skill_chase_dead_end = true
  373.       # ダメージ一括表示
  374.       if SKILL_CHASE_DMG_ALL and $scene.skill_chase_exercise
  375.         # とりあえず生かしておく
  376.         self.hp = 1
  377.       else
  378.         $scene.skill_chase_end = true
  379.       end
  380.     end
  381.     # ダメージ一括表示ならダメージの蓄積
  382.     if SKILL_CHASE_DMG_ALL and self.damage != "Miss" and $scene.skill_chase_exercise
  383.       @skill_chase_all_dmg = (@skill_chase_all_dmg == nil ? 0 : @skill_chase_all_dmg)
  384.       @skill_chase_all_dmg += self.damage
  385.       self.damage = nil
  386.     elsif SKILL_CHASE_DMG_ALL and self.damage != "Miss" and $scene.skill_chase_first
  387.       @skill_chase_all_dmg = (@skill_chase_all_dmg == nil ? 0 : @skill_chase_all_dmg)
  388.       @skill_chase_all_dmg += self.damage
  389.       $scene.skill_chase_first = false
  390.     else
  391.       # ダメージミスなら終了
  392.       if SKILL_CHASE_MISS and self.damage == "Miss"
  393.         $scene.skill_chase_end = true
  394.         if SKILL_CHASE_DMG_ALL and @skill_chase_all_dmg == nil
  395.           @skill_chase_all_dmg = "Miss"
  396.         end
  397.       end
  398.     end
  399.     # メソッド終了
  400.     return true
  401.   end
  402.  
  403.   #--------------------------------------------------------------------------
  404.   # ● スキルの効果適用
  405.   #     user  : スキルの使用者 (バトラー)
  406.   #     skill : スキル
  407.   #--------------------------------------------------------------------------
  408.   alias skill_effect_skill_chase skill_effect
  409.   def skill_effect(user, skill)
  410.     ret = skill_effect_skill_chase(user, skill)
  411.     if self.dead?
  412.       # こいつはもう死んでいる
  413.       @skill_chase_dead_end = true
  414.       # ダメージ一括表示
  415.       if SKILL_CHASE_DMG_ALL and ($scene.skill_chase_exercise or $scene.skill_chase_first)
  416.         # とりあえず生かしておく
  417.         self.hp = 1
  418.       else
  419.         $scene.skill_chase_end = true
  420.       end
  421.     end
  422.     # ダメージ一括表示ならダメージの蓄積
  423.     if SKILL_CHASE_DMG_ALL and self.damage != "Miss" and $scene.skill_chase_exercise
  424.       @skill_chase_all_dmg = (@skill_chase_all_dmg == nil ? 0 : @skill_chase_all_dmg)
  425.       @skill_chase_all_dmg += self.damage
  426.       self.damage = nil
  427.     elsif SKILL_CHASE_DMG_ALL and self.damage != "Miss" and $scene.skill_chase_first
  428.       @skill_chase_all_dmg = (@skill_chase_all_dmg == nil ? 0 : @skill_chase_all_dmg)
  429.       @skill_chase_all_dmg = self.damage
  430.       $scene.skill_chase_first = false
  431.     else
  432.       # ダメージミスなら終了
  433.       if SKILL_CHASE_MISS and self.damage == "Miss"
  434.         $scene.skill_chase_end = true
  435.         if SKILL_CHASE_DMG_ALL and @skill_chase_all_dmg == nil
  436.           @skill_chase_all_dmg = "Miss"
  437.         end
  438.       end
  439.     end
  440.     return ret
  441.   end
  442. end

评分

参与人数 1+1 收起 理由
taeckle + 1 六脉神剑!

查看全部评分

回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33173
在线时间
10489 小时
注册时间
2009-3-15
帖子
4756
7
发表于 2019-7-17 16:42:32 | 只看该作者
soulsaga 发表于 2019-7-17 16:32
#==============================================================================
# ■ XP-RGSS-13 スキ ...

# 設定例
  # SKILL_CHASE[スキルID] = [追加攻撃の攻撃力(%), 連鎖アニメID, オート発動フラグ,
  #  成功率, 連続回数,クリティカル時アニメ]]
  SKILL_CHASE[57] = [100, 31, false, 100, 5, 32]
  SKILL_CHASE[61] = [100, 42, false, 100, 4, 43]

评分

参与人数 1+1 收起 理由
taeckle + 1 有点明白了!

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9128
在线时间
463 小时
注册时间
2015-5-8
帖子
865
8
 楼主| 发表于 2019-7-17 23:29:17 | 只看该作者
soulsaga 发表于 2019-7-17 16:42
# 設定例
  # SKILL_CHASE[スキルID] = [追加攻撃の攻撃力(%), 連鎖アニメID, オート発動フラグ,
  #   ...

还有为什么有时候每楼的点评一栏我看不到。。
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33173
在线时间
10489 小时
注册时间
2009-3-15
帖子
4756
9
发表于 2019-7-18 10:14:00 | 只看该作者
taeckle 发表于 2019-7-17 23:29
还有为什么有时候每楼的点评一栏我看不到。。

在那楼再点评就看到了..
另外我是叫你还不如用技能调用公用事件强制行动做好过..
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9128
在线时间
463 小时
注册时间
2015-5-8
帖子
865
10
 楼主| 发表于 2019-7-18 23:24:38 | 只看该作者
soulsaga 发表于 2019-7-18 10:14
在那楼再点评就看到了..
另外我是叫你还不如用技能调用公用事件强制行动做好过.. ...

那个公共事件强制行动里的“战斗者”设定是神马意思啊?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-26 05:54

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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