赞 | 0 |
VIP | 0 |
好人卡 | 0 |
积分 | 1 |
经验 | 3095 |
最后登录 | 2020-5-5 |
在线时间 | 0 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 55
- 在线时间
- 0 小时
- 注册时间
- 2006-10-17
- 帖子
- 112
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
是受http://rpg.blue/web/htm/news617.htm启发的。。。
既然属性防御可以修正,状态防御同样可以!
以下脚本实现的功能是在某防具上:
如果选择某状态防御,而不选择其他属性防御,则可实现对此状态免疫
如果选择某状态防御,并选择某个属性,则可实现此状态对其成功的几率降低
具体可由你选择的属性,与脚本的设置,来调整是降低多少概率
把Game_Actor里的:
- #--------------------------------------------------------------------------
- # ● 判定防御属性
- # state_id : 属性 ID
- #--------------------------------------------------------------------------
- def state_guard?(state_id)
- for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
- armor = $data_armors[i]
- if armor != nil
- if armor.guard_state_set.include?(state_id)
- return true
- end
- end
- end
- return false
- end
复制代码
改写成:
- def state_rate(state_id)
- # 获取对应状态有效度的数值
- table = [0,100,80,60,40,20,0]
- result = table[$data_classes[@class_id].state_ranks[state_id]]
- # 防具防御本状态的情况下
- for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
- beishu=10 #默认为10倍,相当于免疫
- armor = $data_armors[i]
- if armor != nil and armor.guard_element_set.include?(69)
- beishu=1
- elsif armor != nil and armor.guard_element_set.include?(70)
- beishu=2
- elsif armor != nil and armor.guard_element_set.include?(71)
- beishu=3
- elsif armor != nil and armor.guard_element_set.include?(72)
- beishu=4
- elsif armor != nil and armor.guard_element_set.include?(73)
- beishu=5
- end
- if armor != nil and armor.guard_state_set.include?(state_id)
- result -= 10 * beishu #仅当本状态防御时才有效
- if result > 100 then result= 100
- elsif result < -100 then result = -100
- end
- end
- end
- # 过程结束
- return result
- end
复制代码
然后把Game_Battler 2里的:
-
- def states_plus(plus_state_set)
- # 清除有效标志
- effective = false
- # 循环 (附加状态)
- for i in plus_state_set
- # 无法防御本状态的情况下
- unless self.state_guard?(i)
- # 这个状态如果不是 full 的话就设置有效标志
- effective |= self.state_full?(i) == false
- # 状态为 [不能抵抗] 的情况下
- if $data_states[i].nonresistance
- # 设置状态变化标志
- @state_changed = true
- # 附加状态
- add_state(i)
- # 这个状态不是 full 的情况下
- elsif self.state_full?(i) == false
- # 将状态的有效度变换为概率、与随机数比较
- if rand(100) < [0,100,80,60,40,20,0][self.state_ranks[i]]
- # 设置状态变化标志
- @state_changed = true
- # 附加状态
- add_state(i)
- end
- end
- end
- end
- # 过程结束
- return effective
- end
复制代码
改写成:
- def states_plus(plus_state_set)
- # 清除有效标志
- effective = false
- # 循环 (附加状态)
- for i in plus_state_set
- # 无法防御本状态的情况下
- #unless self.state_guard?(i)
- # 这个状态如果不是 full 的话就设置有效标志
- effective |= self.state_full?(i) == false
- # 状态为 [不能抵抗] 的情况下
- if $data_states[i].nonresistance
- # 设置状态变化标志
- @state_changed = true
- # 附加状态
- add_state(i)
- # 这个状态不是 full 的情况下
- elsif self.state_full?(i) == false
- # 将状态的有效度变换为概率、与随机数比较
- if rand(100) < state_rate(i)
- # if rand(100) < [0,100,80,60,40,20,0][self.state_ranks[i]]
- # 设置状态变化标志
- @state_changed = true
- # 附加状态
- add_state(i)
- end
- end
- #end
- end
- # 过程结束
- return effective
- end
复制代码
[本贴由 叶舞枫 于 2007-4-1 20:21:38 进行了编辑] |
|