Project1
标题:
状态防御修正值的计算方法改动
[打印本页]
作者:
golden124
时间:
2007-2-15 10:32
标题:
状态防御修正值的计算方法改动
是受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 进行了编辑]
作者:
golden124
时间:
2007-2-15 10:32
标题:
状态防御修正值的计算方法改动
是受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 进行了编辑]
作者:
golden124
时间:
2007-2-15 10:34
本人新学脚本,还有不足之处,大家补充!
作者:
golden124
时间:
2007-2-17 08:06
修正过了,以前的有点小问题。
现在没有任何问题了!
作者:
轮回者
时间:
2007-2-20 06:08
不错~
作者:
囧rz=3
时间:
2007-2-26 22:28
提示:
作者被禁止或删除 内容自动屏蔽
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1