本帖最后由 Silentever 于 2015-9-16 22:12 编辑
- class Game_Actor < Game_Battler
- def passive_objects
- skills.reject {|skill| skill_sealed?(skill.id)} + states
- end
- end
复制代码
2个脚本都会用到特性,问题应该是这里引起了内部循环。
想得到的办法只有脱离特性处理,或想办法把特性无效化。
姑且准备了个改写内容,应该能解决问题。
但下面这个代码会让数据库其他技能禁用的特性无效,觉得无妨的话。
class Game_Actor < Game_Battler attr_accessor :sealed_skills #-------------------------------------------------------------------------- def_before(:initialize) { |actor_id| @sealed_skills = [] } #-------------------------------------------------------------------------- def skill_sealed?(skill_id) @sealed_skills.include?(skill_id); end #-------------------------------------------------------------------------- def skill_activate(skill) return unless skill_sealed?(skill.id) @sealed_skills.delete(skill.id); end #-------------------------------------------------------------------------- def skill_deactivate(skill) return if skill_sealed?(skill.id) @sealed_skills.push(skill.id); end end
class Game_Actor < Game_Battler
attr_accessor :sealed_skills
#--------------------------------------------------------------------------
def_before(:initialize) { |actor_id| @sealed_skills = [] }
#--------------------------------------------------------------------------
def skill_sealed?(skill_id)
@sealed_skills.include?(skill_id); end
#--------------------------------------------------------------------------
def skill_activate(skill)
return unless skill_sealed?(skill.id)
@sealed_skills.delete(skill.id); end
#--------------------------------------------------------------------------
def skill_deactivate(skill)
return if skill_sealed?(skill.id)
@sealed_skills.push(skill.id); end
end
|