self.note.each_line { |line|
if line =~ KGC::Reflection::Regexp::REFLECT_TYPE
@__reflect_type = $1
end
if line =~ KGC::Reflection::Regexp::UsableItem::PENETRATE_REFLECT
@__penetrate_reflect = true
end
}
@__reflect_cached = true
end
#--------------------------------------------------------------------------
# ○ 反射タイプ
#--------------------------------------------------------------------------
def reflection_type
create_reflection_cache unless @__reflect_cached
return @__reflect_type
end
#--------------------------------------------------------------------------
# ○ 反射貫通可否
#--------------------------------------------------------------------------
def can_penetrate_reflect
create_reflection_cache if @__penetrate_reflect == nil
return @__penetrate_reflect
end
alias can_penetrate_reflect? can_penetrate_reflect
end
self.note.each_line { |line|
if line =~ KGC::Reflection::Regexp::REFLECT_TYPE
@__reflect_type = $1
end
if line =~ KGC::Reflection::Regexp::State::REFLECT_PHYSIC
@__reflect_physic = true
end
if line =~ KGC::Reflection::Regexp::State::REFLECT_MAGIC
@__reflect_magic = true
end
if line =~ KGC::Reflection::Regexp::State::REFLECT_ELEMENT
$1.scan(/\d+/).each { |num| @__reflect_elements << num.to_i }
@__reflect_elements.uniq!
end
if line =~ KGC::Reflection::Regexp::UsableItem::PENETRATE_REFLECT
@__penetrate_reflect = true
end
}
@__reflect_cached = true
end
#--------------------------------------------------------------------------
# ○ 反射ステートか
#--------------------------------------------------------------------------
def is_reflect?
return (physic_can_reflect? ||
magic_can_reflect? ||
reflection_type != nil
)
end
#--------------------------------------------------------------------------
# ○ 反射タイプ
#--------------------------------------------------------------------------
def reflection_type
create_reflection_cache unless @__reflect_cached
return @__reflect_type
end
#--------------------------------------------------------------------------
# ○ 物理反射可否
#--------------------------------------------------------------------------
def physic_can_reflect
create_reflection_cache if @__reflect_physic == nil
return @__reflect_physic
end
alias physic_can_reflect? physic_can_reflect
#--------------------------------------------------------------------------
# ○ 魔法反射可否
#--------------------------------------------------------------------------
def magic_can_reflect
create_reflection_cache if @__reflect_magic == nil
return @__reflect_magic
end
alias magic_can_reflect? magic_can_reflect
#--------------------------------------------------------------------------
# ○ 反射可能属性
#--------------------------------------------------------------------------
def reflectable_elements
create_reflection_cache if @__reflect_elements == nil
return @__reflect_elements
end
#--------------------------------------------------------------------------
# ○ 反射貫通可否
#--------------------------------------------------------------------------
def can_penetrate_reflect
create_reflection_cache if @__penetrate_reflect == nil
return @__penetrate_reflect
end
alias can_penetrate_reflect? can_penetrate_reflect
end
states.each { |state|
next unless state.is_reflect?
r_elements = state.reflectable_elements
unless r_elements.empty?
# 反射不可能な属性があればダメ
return false if (r_elements & element_set).size != element_set.size
end
if type != nil
# 反射タイプ指定あり
return true if state.reflection_type == type
else
# 反射タイプ指定なし
return true if physic && state.physic_can_reflect?
return true if !physic && state.magic_can_reflect?
end
}
return false
end
end