查看: 2524|回复: 1

[已经解决] 法术多秒判定

[复制链接]
梦石
0
星屑
3850
在线时间
1899 小时
注册时间
2010-6-19
回帖
917
发表于 2022-9-9 23:10:12 | 显示全部楼层 |阅读模式

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

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

×
找了个法术多秒系统,介绍说 秒的其他对象采用速度判定,并且作用己方多秒
  的时候,附加状态判定,即有该魔法附加的状态,秒的其他对象将变成没有该状态的角
  色。,但是发现个Bug,敌人没像角色那样有附加状态判定,导致比如对敌人用了法术,然后敌人身上
被附加了状态,下次再使用该法术的时候,还是优先以速度为判断,如何改成和角色一样,敌人身上有状态了就秒到没状态的敌人身上




[pre lang="ruby"]=begin
================================================================================
● 法术多秒系统介绍 BY-Kaiser.DS
================================================================================
『介绍』
    ☆模拟网游[梦幻西游]的多秒系统,秒的其他对象采用速度判定,并且作用己方多秒
  的时候,附加状态判定,即有该魔法附加的状态,秒的其他对象将变成没有该状态的角
  色。
   
=end   

class Scene_Battle
def tg_xiuzheng(s)
    for kds_dui in  $data_skills[@active_battler.current_action.skill_id].plus_state_set
      if $game_party.smooth_target_actor(s).states.include?(kds_dui)
         return true
      end
    end
   return false
end
def tg_xiuzheng2(s)
    for kds_dui in  $data_skills[@active_battler.current_action.skill_id].plus_state_set
      if $game_troop.smooth_target_enemy(s).states.include?(kds_dui)
         return true
      end
    end
   return false
end
def dr_ac
       index = @active_battler.current_action.target_index
        $miao = 1
       if @active_battler.current_action.kind == 1
         @skill = $data_skills[@active_battler.current_action.skill_id]
        if $data_skills[@skill.id].kds_miao > 1
        @sudu = []
        @guang = []
        for s in 0..$game_party.actors.size-1
          if $game_party.actors.hp != 0
           @sudu.push($game_party.smooth_target_actor(s).agi)
           @guang.push(s)
          end
        end
        for a in 0..@sudu.size-1
         for s in 0..@sudu.size-1
          if s < @sudu.size-1 and @sudu < @sudu[s+1]
          elsif s < @sudu.size-1 and @sudu > @sudu[s+1]
           @abc = @sudu
           @sudu = @sudu[s+1]
           @sudu[s+1] = @abc
           @bcd = @guang
           @guang = @guang[s+1]
           @guang[s+1] = @bcd
          end
         end
        end
        for s in 0..@sudu.size-1
          if @guang[@sudu.size-1-s] == index
          else
            $miao += 1
            @target_battlers.push($game_party.smooth_target_actor(@guang[@sudu.size-1 - s]))
          end
          if $miao == $data_skills[@skill.id].kds_miao
           break
          end
        end
        end
      end
    end
def dr_dr
      index = @active_battler.current_action.target_index
        $miao = 1
      if @active_battler.current_action.kind == 1
         @skill = $data_skills[@active_battler.current_action.skill_id]
        if $data_skills[@skill.id].kds_miao > 1
        @sudu = []
        @guang = []
        for s in 0..$game_troop.enemies.size-1
          if $game_troop.enemies.hp != 0 and @active_battler.current_action.kind == 1 and tg_xiuzheng2(s) == false
           @sudu.push($game_troop.smooth_target_enemy(s).agi)
           @guang.push(s)
          end
        end
        for a in 0..@sudu.size-1
         for s in 0..@sudu.size-1
          if s < @sudu.size-1 and @sudu < @sudu[s+1]
          elsif s < @sudu.size-1 and @sudu > @sudu[s+1]
           @abc = @sudu
           @sudu = @sudu[s+1]
           @sudu[s+1] = @abc
           @bcd = @guang
           @guang = @guang[s+1]
           @guang[s+1] = @bcd
          end
         end
        end
        for s in 0..@sudu.size-1
          if @guang[@sudu.size-1-s] == index
          else
            $miao += 1
            @target_battlers.push($game_troop.smooth_target_enemy(@guang[@sudu.size-1 - s]))
          end
          if $miao == $data_skills[@skill.id].kds_miao
           break
          end
        end
        end
       end
    end
def ac_dr
      index = @active_battler.current_action.target_index
      if @active_battler.current_action.kind == 1
        @skill = $data_skills[@active_battler.current_action.skill_id]
        $miao = 1
        if $data_skills[@skill.id].kds_miao > 1
        @sudu = []
        @guang = []
        for s in 0..$game_troop.enemies.size-1
          if $game_troop.enemies.hp != 0
           @sudu.push($game_troop.smooth_target_enemy(s).agi)
           @guang.push(s)
          end
        end
        for a in 0..@sudu.size-1
         for s in 0..@sudu.size-1
          if s < @sudu.size-1 and @sudu < @sudu[s+1]
          elsif s < @sudu.size-1 and @sudu > @sudu[s+1]
           @abc = @sudu
           @sudu = @sudu[s+1]
           @sudu[s+1] = @abc
           @bcd = @guang
           @guang = @guang[s+1]
           @guang[s+1] = @bcd
          end
         end
        end
        for s in 0..@sudu.size-1
          if @guang[@sudu.size-1-s] == index
          else
            $miao += 1
            @target_battlers.push($game_troop.smooth_target_enemy(@guang[@sudu.size-1 - s]))
          end
          if $miao == $data_skills[@skill.id].kds_miao
           break
          end
        end
        end
       end
    end
def ac_ac
      index = @active_battler.current_action.target_index
      if @active_battler.current_action.kind == 1
        @skill = $data_skills[@active_battler.current_action.skill_id]
        $miao = 1
        if $data_skills[@skill.id].kds_miao > 1
        @sudu = []
        @guang = []
        for s in 0..$game_party.actors.size-1
          if $game_party.actors.hp != 0 and @active_battler.current_action.kind == 1 and tg_xiuzheng(s) == false
           @sudu.push($game_party.smooth_target_actor(s).agi)
           @guang.push(s)
          end
        end
        for a in 0..@sudu.size-1
         for s in 0..@sudu.size-1
          if s < @sudu.size-1 and @sudu < @sudu[s+1]
          elsif s < @sudu.size-1 and @sudu > @sudu[s+1]
           @abc = @sudu
           @sudu = @sudu[s+1]
           @sudu[s+1] = @abc
           @bcd = @guang
           @guang = @guang[s+1]
           @guang[s+1] = @bcd
          end
         end
        end
        for s in 0..@sudu.size-1
          if @guang[@sudu.size-1-s] == index
          else
            $miao += 1
            @target_battlers.push($game_party.smooth_target_actor(@guang[@sudu.size-1 - s]))
          end
          if $miao == $data_skills[@skill.id].kds_miao
           break
          end
        end
      end
    end
end
end[/pre]
梦石
0
星屑
3850
在线时间
1899 小时
注册时间
2010-6-19
回帖
917
 楼主| 发表于 2022-9-11 15:21:41 | 显示全部楼层
自行解决了
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部