Project1
标题:
求救!怎样让技能像PM中一样,不同技能的状态几率不一样?
[打印本页]
作者:
cqr19950307
时间:
2010-7-1 09:36
标题:
求救!怎样让技能像PM中一样,不同技能的状态几率不一样?
本帖最后由 cqr19950307 于 2010-7-2 17:01 编辑
举个例子说:
同样是A攻击B,A用“闪电拳”,B10%几率麻痹;但A用“电火花”,B30%几率麻痹。
希望能得到一个有效的解决方法。
作者:
wangswz
时间:
2010-7-1 11:43
状态附加有效度 或者只是相同名字 的多个状态
作者:
逆鳞R
时间:
2010-7-1 13:33
提示:
作者被禁止或删除 内容自动屏蔽
作者:
cqr19950307
时间:
2010-7-1 13:37
照你们这么说,那么当同名的多种状态相叠加不是也能看出来吗
作者:
cqr19950307
时间:
2010-7-2 10:50
解决了,在计算状态变化这一栏稍作修改。
作者:
cqr19950307
时间:
2010-7-2 10:51
在Game_Battler这一栏里
#--------------------------------------------------------------------------
# ● 定义状态变化变量
#--------------------------------------------------------------------------
def staterate
return $game_variables[2]
end
#--------------------------------------------------------------------------
# ● 计算状态变化
# obj : 技能、物品或攻击者
#--------------------------------------------------------------------------
def apply_state_changes(obj)
plus = obj.plus_state_set # 获取状态变化(+)
minus = obj.minus_state_set # 获取状态变化(-)
for i in plus # 状态变化(+)
next if state_resist?(i) # 判断状态是否无效
next if dead? # 判断是否无法战斗
next if i == 1 and @immortal # 判断是否为不死身
if state?(i) # 判断状态是否已存在
@remained_states.push(i) # 记录为变更状态
next
end
if obj.is_a?(RPG::Skill)
if obj.description[0,2] == "10"
$game_variables[2] = 10
elsif obj.description[0,2] == "20"
$game_variables[2] = 20
elsif obj.description[0,2] == "30"
$game_variables[2] = 30
elsif obj.description[0,2] == "40"
$game_variables[2] = 40
elsif obj.description[0,2] == "50"
$game_variables[2] = 50
elsif obj.description[0,2] == "60"
$game_variables[2] = 60
elsif obj.description[0,2] == "70"
$game_variables[2] = 70
else
$game_variables[2] = 100
end
else
$game_variables[2] = 100
end
if rand(100) < staterate * state_probability(i) / 100 # 计算状态机率
add_state(i) # 附加状态
@added_states.push(i) # 记录已附加状态
end
end
for i in minus # 状态变化(-)
next unless state?(i) # 判断状态是否已存在
remove_state(i) # 移除状态
@removed_states.push(i) # 记录以移除状态
end
for i in @added_states & @removed_states # 清除附加和移除状态
@added_states.delete(i)
@removed_states.delete(i)
end
end
作者:
cqr19950307
时间:
2010-7-2 10:54
obj.description[0,2] 就是技能说明,比如说技能说明中70%几率中毒,该句子就引用技能说明的前两个字符(“70”),然后把几率代入变量2求解。
作者:
cqr19950307
时间:
2010-7-2 10:54
if rand(100) < staterate * state_probability(i) / 100 # 计算状态机率
这一步保留了附加状态时对方本身的中状态的几率。
作者:
cqr19950307
时间:
2010-7-2 10:54
谢谢支持!
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1