#--------------------------------------------------------------------------
# ● 获取额外状态(非附身但有效)
#--------------------------------------------------------------------------
def extra_states
# 自身来源特性数据的自动状态
set = features(feature_list(true), [], :auto_state_set)
# 自身习得特技的自动状态
set.concat(feature(learned_skills, [], :auto_state_set))
# 自己的非排除性光环
set.concat(aura_states(0, 2))
# 本方其他人的光环
set.concat(feature(friends_unit.members - [self], []) {|battler|
battler.aura_states(0, 1, 2, 3)})
# 本方全队的光环
set.concat(friends_unit.aura_states(0, 2))
# 对方战斗者作用于本方的光环
set.concat(feature(opponents_unit.members, []) {|battler|
battler.aura_states(2, 3, 4)})
# 对方全队作用于本方的光环
set.concat(opponents_unit.aura_states(2, 4))
# 地图生效的光环(继承对象定义该方法)
set.concat(active_map_auras)
# 开关生效的光环(继承对象定义该方法)
set.concat(active_switch_auras)
# 数据单项化,排除无效数据
set.uniq!
set.reject! {|i| $data_states[i].nil?}
# 连锁 [+] 状态的处理
loop do
last_size = set.size
set = set.inject(set) {|a, i| a | $data_states[i].plus_state_set}
break if last_size == set.size
end
# 排除 HP 0 的状态后返回
set.reject {|i| $data_states[i].zero_hp}
end