Project1

标题: RTAB敌人SP不够使用技能时依然吟唱的BUG [打印本页]

作者: 君迁子    时间: 2009-5-16 01:58
标题: RTAB敌人SP不够使用技能时依然吟唱的BUG
如果敌人要使用某一技能而SP又不够,此技能又有吟唱,他就只能先吟唱完,再什么也不做……
有没有办法直接让敌人进行普通攻击且舍弃那个无用的吟唱呢? [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: kakarot    时间: 2009-5-16 02:59
看错了..自我屏蔽..

作者: 君迁子    时间: 2009-5-16 03:55
在连击计算里面改了如下:
(BY 紫苏 http://rpg.blue/viewthread.php?tid=124789)

  #--------------------------------------------------------------------------
  # ● スキルアクション 準備
  #--------------------------------------------------------------------------
  def make_skill_action_preparation(battler)
    # スキルを取得
    @skill = $data_skills[battler.current_action.skill_id]
    # 連携スキルであるかどうか確認
    speller = synthe?(battler)
    # 強制アクションでなければ
    unless battler.current_action.forcing
      # SP 切れなどで使用できなくなった場合
      if speller == nil
   #     unless battler.skill_can_use?(@skill.id)
          # ステップ 6 に移行
   #       battler.phase = 6
   #      return false
   #     end
   #   end
   # end
     ##########################################
        unless battler.skill_can_use?(@skill.id)
        if battler.class == Game_Enemy
         # 设置行动为攻击
         battler.current_action.kind = 0
         battler.current_action.basic = 0
         make_basic_action_result(battler)
       else
          # ステップ 6 に移行
          battler.phase = 1
       end
       # 清除强制行动对像的战斗者
       $game_temp.forcing_battler = nil
       return
      end
      end
    end
    ##########################################


现在倒是能修正为普攻,但是吟唱还在,就是先吟唱,再普攻|||||||||
作者: 紫苏    时间: 2009-5-16 11:43
六饭的那个整合版 RTAB 原本应该是 sp 不足时直接什么也不做的,可能 make_action 被改过?
在 RTAB战斗系统 Ver 1.16 中找到这个方法的定义,应该有蓝色部分的判断,然后添加红色部分就可以在技能无法使用时普攻了~
  #--------------------------------------------------------------------------
  # ● アクション作成
  #--------------------------------------------------------------------------
  def make_action
    # カレントアクションをクリア
    self.current_action.clear
    # 動けない場合
    unless self.inputable?
      # メソッド終了
      return
    end
    # 現在有効なアクションを抽出
    available_actions = []
    rating_max = 0
    for action in self.actions
      # ターン 条件確認
      n = $game_temp.battle_turn
      a = action.condition_turn_a
      b = action.condition_turn_b
      if (b == 0 and n != a) or
         (b > 0 and (n < 1 or n < a or n % b != a % b))
        next
      end
      # HP 条件確認
      if self.hp * 100.0 / self.maxhp > action.condition_hp
        next
      end
      # レベル 条件確認
      if $game_party.max_level < action.condition_level
        next
      end
      # スイッチ 条件確認
      switch_id = action.condition_switch_id
      if switch_id > 0 and $game_switches[switch_id] == false
        next
      end
      # スキル使用可能 条件確認
      if action.kind == 1
        unless self.skill_can_use?(action.skill_id)
          available_actions.push(RPG::Enemy::Action.new)
          next
        end
      end

      # 条件に該当 : このアクションを追加
      available_actions.push(action)
      if action.rating > rating_max
        rating_max = action.rating
      end
    end
    # 最大のレーティング値を 3 として合計を計算 (0 以下は除外)
    ratings_total = 0
    for action in available_actions
      if action.rating > rating_max - 3
        ratings_total += action.rating - (rating_max - 3)
      end
    end
    # レーティングの合計が 0 ではない場合
    if ratings_total > 0
      # 乱数を作成
      value = rand(ratings_total)
      # 作成した乱数に対応するものをカレントアクションに設定
      for action in available_actions
        if action.rating > rating_max - 3
          if value < action.rating - (rating_max - 3)
            self.current_action.kind = action.kind
            self.current_action.basic = action.basic
            self.current_action.skill_id = action.skill_id
            self.current_action.decide_random_target_for_enemy
            return
          else
            value -= action.rating - (rating_max - 3)
          end
        end
      end
    end
  end
[LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: 君迁子    时间: 2009-5-16 18:31
弄好了,再次多谢紫苏TvT
另外make_action确实是被重定义了,我用了一个技能冷却系统=v=b




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