=begin ◆概要 レベルアップ時のスキル習得に条件を付けます。 ◆機能 ・<習得条件:str>でstrを条件とします。mhp > 1000でもbase_atk > 15でも何でもOK。 ・<上書き:n>でスキル習得した際にIDnのスキルを忘れます。 ◆仕様 ・上書きした時の専用メッセージとかはありません。 ・習得条件が文字列である関係上、メモ欄に書くときは必ず最後の項目に書いて下さい。 スキル習得のメモ欄が複数行だったらこんなことにならなかったんですがね。 例:<上書き 90><習得条件:atk > 10>とやると習得条件が"atk > 10"ですが、 <習得条件:atk > 10><上書き 90>とやると習得条件が"atk > 10><上書き 90"に なっちゃいます。申し訳ない。(ただしこの場合でも上書きは正常に機能する) かと言ってちょっと読み込み条件を変えると「>」が使用できなくなるので。 ◆使用上の注意 ・○……新規定義 ●……再定義 ・エイリアスしている箇所よりも上においてください。 ◆作者:faida @faida3983 ◆更新履歴 ver1.0 : 公開 =end module FAI_LSC # 設定項目:拙作「rand_skill_learn」と併用する(このスクリプトを下に導入) USE_RAND_SKILL_LEARN = false CONDITION = /<習得条件\:(.+)>/ OVERWRITE = /<上書き\s*(\d+)>/ end #============================================================================== # ■ RPG::Class::Learning #============================================================================== class RPG::Class::Learning include FAI_LSC #-------------------------------------------------------------------------- # ○ メモ取得 #-------------------------------------------------------------------------- def learn_condition return @learn_condition if !@learn_condition.nil? @learn_condition = (note =~ CONDITION ? $1 : false) end def overwrite_skill return @overwrite_skill if @overwrite_skill @overwrite_skill = (note =~ OVERWRITE ? $1.to_i : 0) end end #============================================================================== # ■ Game_Actor #============================================================================== class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # ● レベルアップ #-------------------------------------------------------------------------- def level_up @level += 1 learn_skills = {} self.class.learnings.each do |learning| if !skill_learn?($data_skills[learning.skill_id]) if learning.learn_condition next if learning.level > @level || !eval(learning.learn_condition) else next if learning.level != @level end if FAI_LSC::USE_RAND_SKILL_LEARN if !learn_skills[learning.learn_group] learn_skills[learning.learn_group] = [] end learn_skills[learning.learn_group] << learning else learn_skills[learning.skill_id] = [learning] end end end return if learn_skills.empty? learn_skills.each_value{|lernings| lerning = lernings[rand(lernings.size)] learn_skill(lerning.skill_id) forget_skill(lerning.overwrite_skill) if lerning.overwrite_skill > 0 } end end