查看: 2197|回复: 4

[已经解决] 如何做出口袋妖怪中的混乱状态

[复制链接]
梦石
1
星屑
3913
在线时间
592 小时
注册时间
2007-8-14
回帖
141
发表于 2017-2-10 17:51:48 | 显示全部楼层 |阅读模式

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

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

×
即中了混乱状态的角色,攻击或者使用技能时,会有三分之一的几率变成攻击自己
求大大们帮忙解答{:2_249:}
赞美灵魂……

鼬痴汉

梦石
29
星屑
3401
在线时间
1300 小时
注册时间
2010-4-24
回帖
919

短篇十吟唱者组别亚军开拓者

发表于 2017-2-11 16:54:53 | 显示全部楼层
本帖最后由 FHNBHJ 于 2017-2-11 17:19 编辑

[pre lang="ruby"]#============================================================
#                                                   By FHNBHJ
#·脚本说明
#    使得进入新的混乱状态(和默认的混乱不一样)的角色/敌人有一定
#    几率对自己使用普通攻击。
#   (无论进行什么操作,攻击/防御/物品都是)
#·使用说明
#    在@new_confusion_state_id = 后面加上数组,
#    数组内容是新的混乱的状态id。
#    修改rand后括号内的数字可以改变混乱时攻击自己的几率。
#============================================================


#============================================================
#·Game_BattlerBase
#============================================================

class Game_BattlerBase
  
  alias initialize_fhn initialize
  def initialize
    initialize_fhn
    @new_confusion_state_id = [27,28] # <---这里加新混乱状态id的数组
  end
  
  def new_confusion?
    in_new_confusion = false
    @new_confusion_state_id.each do |id|
      if state?(id)
        in_new_confusion = true
        break
      end
    end
    exist? && in_new_confusion
  end
  
end

#===========================================================
#·Game_Action
#===========================================================

class Game_Action
  
  def judge_attack_user
    @attack_user = false
#           ↓ 这里可以修改攻击自己的几率,rand(3)是1/3,rand(4)是1/4,以此类推。
    if rand(3) == 0
      @attack_user = true
    end
  end
  
  alias make_targets_fhn make_targets
  def make_targets
    if subject.new_confusion? && @attack_user
      # p "attack_user!"
      [subject]
    else
      make_targets_fhn
    end
  end
  
  alias prepare_fhn prepare
  def prepare
    prepare_fhn
    set_new_confusion if subject.new_confusion? && !forcing
  end
  
  def set_new_confusion
    judge_attack_user
    set_confusion if @attack_user
  end
  
end

#===========================================================
#·End
#===========================================================[/pre]

插在main前,
只经过初步测试,有问题请反馈。
有新的想法用事件却难以实现?想要酷炫的战斗系统?想要自定义的华丽UI?
学会脚本,梦想成真!

传送门戳:
https://rpg.blue/forum.php?mo ... 8047&extra=page%3D5
RGSS3脚本教程,目前火热施工中!

评分

参与人数 1星屑 +10 收起 理由
cryhades + 10 我很赞同

查看全部评分

回复

使用道具 举报

梦石
1
星屑
3913
在线时间
592 小时
注册时间
2007-8-14
回帖
141
 楼主| 发表于 2017-2-12 17:43:24 | 显示全部楼层
FHNBHJ 发表于 2017-2-11 16:54
#============================================================
#                                      ...

你好,非常感谢你的回答,实验成果成功了{:2_249:}
不知道能不能把打自己的普通攻击变成另一个技能呢?因为我这游戏的普通攻击有其他作用
在此先谢为敬{:2_249:}
赞美灵魂……
回复

使用道具 举报

鼬痴汉

梦石
29
星屑
3401
在线时间
1300 小时
注册时间
2010-4-24
回帖
919

短篇十吟唱者组别亚军开拓者

发表于 2017-2-12 17:51:01 | 显示全部楼层
[pre lang="ruby"]#============================================================
#                                                   By FHNBHJ
#·脚本说明
#    使得进入新的混乱状态(和默认的混乱不一样)的角色/敌人有一定
#    几率对自己使用普通攻击。
#   (无论进行什么操作,攻击/防御/物品都是)
#·使用说明
#    在@new_confusion_state_id = 后面加上数组,
#    数组内容是新的混乱的状态id。
#    修改rand后括号内的数字可以改变混乱时攻击自己的几率。
#    修改set_skill后括号内的数字可以改变混乱时攻击自己的技能id。
#============================================================


#============================================================
#·Game_BattlerBase
#============================================================

class Game_BattlerBase
  
  alias initialize_fhn initialize
  def initialize
    initialize_fhn
    @new_confusion_state_id = [27,28] # <---这里加新混乱状态id的数组
  end
  
  def new_confusion?
    in_new_confusion = false
    @new_confusion_state_id.each do |id|
      if state?(id)
        in_new_confusion = true
        break
      end
    end
    exist? && in_new_confusion
  end
  
end

#===========================================================
#·Game_Action
#===========================================================

class Game_Action
  
  def judge_attack_user
    @attack_user = false
#           ↓ 这里可以修改攻击自己的几率,rand(3)是1/3,rand(4)是1/4,以此类推。
    if rand(3) == 0
      @attack_user = true
    end
  end
  
  alias make_targets_fhn make_targets
  def make_targets
    if subject.new_confusion? && @attack_user
      # p "attack_user!"
      [subject]
    else
      make_targets_fhn
    end
  end
  
  alias prepare_fhn prepare
  def prepare
    prepare_fhn
    set_new_confusion if subject.new_confusion? && !forcing
  end
  
  def set_new_confusion
    judge_attack_user
#             ↓ 这里可以修改攻击自己的技能id。
#      (如果混乱而且随机后判定为攻击自己时使用,目标会强制为使用者)
    set_skill(8) if @attack_user
  end
  
end

#===========================================================
#·End
#===========================================================[/pre]

评分

参与人数 2星屑 +10 梦石 +2 收起 理由
RaidenInfinity + 2 认可答案
cryhades + 10 我很赞同

查看全部评分

回复 1 0

使用道具 举报

梦石
1
星屑
3913
在线时间
592 小时
注册时间
2007-8-14
回帖
141
 楼主| 发表于 2017-2-12 18:25:59 | 显示全部楼层
FHNBHJ 发表于 2017-2-12 17:51
#============================================================
#                                      ...

完美!!!感谢大神帮忙!!!{:2_264:}
赞美灵魂……
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部