赞 | 2 |
VIP | 143 |
好人卡 | 1 |
积分 | 1 |
经验 | 216792 |
最后登录 | 2019-10-10 |
在线时间 | 24 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 61
- 在线时间
- 24 小时
- 注册时间
- 2008-8-5
- 帖子
- 1924
|
# 所有状态的循环
for i in 1...$data_states.size
# 状态变化 (+) 处理
if $data_states[state_id].plus_state_set.include?(i)
add_state(i)
end
# 状态变化 (-) 处理
if $data_states[state_id].minus_state_set.include?(i)
remove_state(i)
end
end 这一段是在对一个战斗者添加状态时执行的,for 循环遍历数据库中的所有状态,如果发现某状态是当前 add_state 将要添加的状态的附加状态,就再次调用 add_state 添加该状态;如果发现某状态是当前 add_state 将要添加的状态的解除状态,就调用 remove_state 解除该状态~可以看出这里 add_state 有一个递归调用的过程,附加状态添加后再次添加附加状态的附加状态,直到没有附加状态或者状态已经添加了(递归的出口)
# 无法强制附加的情况下
unless force
# 已存在的状态循环
for i in @states
# 新的状态和已经存在的状态 (-) 同时包含的情况下、
# 本状态不包含变化为新状态的状态变化 (-)
# (ex : 战斗不能与附加中毒同时存在的场合)
if $data_states.minus_state_set.include?(state_id) and
not $data_states[state_id].minus_state_set.include?(i)
# 过程结束
return
end
end
end 这一段是在状态不是被强制添加的情况下,遍历战斗者当前已有的状态,如果已有的状态中包含会解除即将要添加的状态的状态,或者当前要添加的状态会解除任何一个当前已有的状态,那么就直接结束整个添加状态的过程,因为不能让有解除关系的两个状态同时存在,比如战斗不能和其它状态不能同时存在~ 系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~ |
|