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

Project1

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

状态防御修正值的计算方法改动

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
55
在线时间
0 小时
注册时间
2006-10-17
帖子
112
跳转到指定楼层
1
发表于 2007-2-15 10:32:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
是受http://rpg.blue/web/htm/news617.htm启发的。。。
既然属性防御可以修正,状态防御同样可以!
以下脚本实现的功能是在某防具上:
如果选择某状态防御,而不选择其他属性防御,则可实现对此状态免疫
如果选择某状态防御,并选择某个属性,则可实现此状态对其成功的几率降低
具体可由你选择的属性,与脚本的设置,来调整是降低多少概率

把Game_Actor里的:
  1.   #--------------------------------------------------------------------------
  2.   # ● 判定防御属性
  3.   #     state_id : 属性 ID
  4.   #--------------------------------------------------------------------------
  5.   def state_guard?(state_id)
  6.     for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
  7.       armor = $data_armors[i]
  8.       if armor != nil
  9.         if armor.guard_state_set.include?(state_id)
  10.           return true
  11.         end
  12.       end
  13.     end
  14.     return false
  15.   end
复制代码

改写成:
  1.   def state_rate(state_id)
  2.     # 获取对应状态有效度的数值
  3.     table = [0,100,80,60,40,20,0]
  4.     result = table[$data_classes[@class_id].state_ranks[state_id]]
  5.     # 防具防御本状态的情况下
  6.    for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
  7.       beishu=10 #默认为10倍,相当于免疫
  8.       armor = $data_armors[i]
  9.     if armor != nil and armor.guard_element_set.include?(69)
  10.       beishu=1
  11.     elsif armor != nil and armor.guard_element_set.include?(70)
  12.       beishu=2
  13.     elsif armor != nil and armor.guard_element_set.include?(71)
  14.       beishu=3
  15.     elsif armor != nil and armor.guard_element_set.include?(72)
  16.       beishu=4
  17.     elsif armor != nil and armor.guard_element_set.include?(73)
  18.       beishu=5
  19.     end
  20.      if armor != nil and armor.guard_state_set.include?(state_id)
  21.        result -= 10 * beishu #仅当本状态防御时才有效
  22.       if result > 100 then result= 100
  23.       elsif result < -100 then result = -100
  24.       end
  25.      end
  26.     end
  27.     # 过程结束
  28.    return result
  29.   end
复制代码

然后把Game_Battler 2里的:

  1.   def states_plus(plus_state_set)
  2.     # 清除有效标志
  3.     effective = false
  4.     # 循环 (附加状态)
  5.     for i in plus_state_set
  6.       # 无法防御本状态的情况下
  7.       unless self.state_guard?(i)
  8.         # 这个状态如果不是 full 的话就设置有效标志
  9.         effective |= self.state_full?(i) == false
  10.         # 状态为 [不能抵抗] 的情况下
  11.         if $data_states[i].nonresistance
  12.           # 设置状态变化标志
  13.           @state_changed = true
  14.           # 附加状态
  15.           add_state(i)
  16.         # 这个状态不是 full 的情况下
  17.         elsif self.state_full?(i) == false
  18.           # 将状态的有效度变换为概率、与随机数比较
  19.           if rand(100) < [0,100,80,60,40,20,0][self.state_ranks[i]]
  20.             # 设置状态变化标志
  21.             @state_changed = true
  22.             # 附加状态
  23.             add_state(i)
  24.           end
  25.         end
  26.       end
  27.     end
  28.     # 过程结束
  29.     return effective
  30.   end
复制代码

改写成:
  1.   def states_plus(plus_state_set)
  2.     # 清除有效标志
  3.     effective = false
  4.     # 循环 (附加状态)
  5.     for i in plus_state_set
  6.       # 无法防御本状态的情况下
  7.       #unless self.state_guard?(i)
  8.         # 这个状态如果不是 full 的话就设置有效标志
  9.         effective |= self.state_full?(i) == false
  10.         # 状态为 [不能抵抗] 的情况下
  11.         if $data_states[i].nonresistance
  12.           # 设置状态变化标志
  13.           @state_changed = true
  14.           # 附加状态
  15.           add_state(i)
  16.         # 这个状态不是 full 的情况下
  17.         elsif self.state_full?(i) == false
  18.           # 将状态的有效度变换为概率、与随机数比较
  19.           if rand(100) < state_rate(i)
  20.           # if rand(100) < [0,100,80,60,40,20,0][self.state_ranks[i]]
  21.             # 设置状态变化标志
  22.             @state_changed = true
  23.             # 附加状态
  24.             add_state(i)
  25.           end
  26.         end
  27.      #end
  28.     end
  29.     # 过程结束
  30.     return effective
  31.   end
复制代码


              [本贴由 叶舞枫 于 2007-4-1 20:21:38 进行了编辑]
我的博客:http://golden124.bokee.com

Lv1.梦旅人

梦石
0
星屑
55
在线时间
0 小时
注册时间
2006-10-17
帖子
112
2
 楼主| 发表于 2007-2-15 10:32:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
是受http://rpg.blue/web/htm/news617.htm启发的。。。
既然属性防御可以修正,状态防御同样可以!
以下脚本实现的功能是在某防具上:
如果选择某状态防御,而不选择其他属性防御,则可实现对此状态免疫
如果选择某状态防御,并选择某个属性,则可实现此状态对其成功的几率降低
具体可由你选择的属性,与脚本的设置,来调整是降低多少概率

把Game_Actor里的:
  1.   #--------------------------------------------------------------------------
  2.   # ● 判定防御属性
  3.   #     state_id : 属性 ID
  4.   #--------------------------------------------------------------------------
  5.   def state_guard?(state_id)
  6.     for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
  7.       armor = $data_armors[i]
  8.       if armor != nil
  9.         if armor.guard_state_set.include?(state_id)
  10.           return true
  11.         end
  12.       end
  13.     end
  14.     return false
  15.   end
复制代码

改写成:
  1.   def state_rate(state_id)
  2.     # 获取对应状态有效度的数值
  3.     table = [0,100,80,60,40,20,0]
  4.     result = table[$data_classes[@class_id].state_ranks[state_id]]
  5.     # 防具防御本状态的情况下
  6.    for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
  7.       beishu=10 #默认为10倍,相当于免疫
  8.       armor = $data_armors[i]
  9.     if armor != nil and armor.guard_element_set.include?(69)
  10.       beishu=1
  11.     elsif armor != nil and armor.guard_element_set.include?(70)
  12.       beishu=2
  13.     elsif armor != nil and armor.guard_element_set.include?(71)
  14.       beishu=3
  15.     elsif armor != nil and armor.guard_element_set.include?(72)
  16.       beishu=4
  17.     elsif armor != nil and armor.guard_element_set.include?(73)
  18.       beishu=5
  19.     end
  20.      if armor != nil and armor.guard_state_set.include?(state_id)
  21.        result -= 10 * beishu #仅当本状态防御时才有效
  22.       if result > 100 then result= 100
  23.       elsif result < -100 then result = -100
  24.       end
  25.      end
  26.     end
  27.     # 过程结束
  28.    return result
  29.   end
复制代码

然后把Game_Battler 2里的:

  1.   def states_plus(plus_state_set)
  2.     # 清除有效标志
  3.     effective = false
  4.     # 循环 (附加状态)
  5.     for i in plus_state_set
  6.       # 无法防御本状态的情况下
  7.       unless self.state_guard?(i)
  8.         # 这个状态如果不是 full 的话就设置有效标志
  9.         effective |= self.state_full?(i) == false
  10.         # 状态为 [不能抵抗] 的情况下
  11.         if $data_states[i].nonresistance
  12.           # 设置状态变化标志
  13.           @state_changed = true
  14.           # 附加状态
  15.           add_state(i)
  16.         # 这个状态不是 full 的情况下
  17.         elsif self.state_full?(i) == false
  18.           # 将状态的有效度变换为概率、与随机数比较
  19.           if rand(100) < [0,100,80,60,40,20,0][self.state_ranks[i]]
  20.             # 设置状态变化标志
  21.             @state_changed = true
  22.             # 附加状态
  23.             add_state(i)
  24.           end
  25.         end
  26.       end
  27.     end
  28.     # 过程结束
  29.     return effective
  30.   end
复制代码

改写成:
  1.   def states_plus(plus_state_set)
  2.     # 清除有效标志
  3.     effective = false
  4.     # 循环 (附加状态)
  5.     for i in plus_state_set
  6.       # 无法防御本状态的情况下
  7.       #unless self.state_guard?(i)
  8.         # 这个状态如果不是 full 的话就设置有效标志
  9.         effective |= self.state_full?(i) == false
  10.         # 状态为 [不能抵抗] 的情况下
  11.         if $data_states[i].nonresistance
  12.           # 设置状态变化标志
  13.           @state_changed = true
  14.           # 附加状态
  15.           add_state(i)
  16.         # 这个状态不是 full 的情况下
  17.         elsif self.state_full?(i) == false
  18.           # 将状态的有效度变换为概率、与随机数比较
  19.           if rand(100) < state_rate(i)
  20.           # if rand(100) < [0,100,80,60,40,20,0][self.state_ranks[i]]
  21.             # 设置状态变化标志
  22.             @state_changed = true
  23.             # 附加状态
  24.             add_state(i)
  25.           end
  26.         end
  27.      #end
  28.     end
  29.     # 过程结束
  30.     return effective
  31.   end
复制代码


              [本贴由 叶舞枫 于 2007-4-1 20:21:38 进行了编辑]
我的博客:http://golden124.bokee.com

Lv1.梦旅人

梦石
0
星屑
55
在线时间
0 小时
注册时间
2006-10-17
帖子
112
3
 楼主| 发表于 2007-2-15 10:34:56 | 只看该作者
本人新学脚本,还有不足之处,大家补充!
我的博客:http://golden124.bokee.com
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
0 小时
注册时间
2006-10-17
帖子
112
4
 楼主| 发表于 2007-2-17 08:06:29 | 只看该作者
修正过了,以前的有点小问题。
现在没有任何问题了!
我的博客:http://golden124.bokee.com
回复 支持 反对

使用道具 举报

Lv1.梦旅人

逃兵

5
发表于 2007-2-20 06:08:22 | 只看该作者
不错~
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2007-2-2
帖子
66
6
发表于 2007-2-26 22:28:21 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-30 19:41

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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