#============================================================================== # 「進化スキル」(ACE) Ver.1.0 # 製作者:奈々(なな) # へぷたなすくろーる http://heptanas.mamagoto.com/ # # ◇利用規約 # この素材はフリーゲームにのみご利用頂けます。 # シェアウェア、販売作品への利用は原則として禁止します。(詳細はブログ参照) # 利用される場合はスクリプト作成者として「奈々」とURLを明記し # 配布時にブログで利用規約の確認と、利用報告を行って下さい。 # #------------------------------------------------------------------------------ # # スキルのメモ欄にタグを記述することで、以下の機能を追加します。(複数可) # # <前提スキル n>:特定のスキルを習得していないとスキルがリストに現れません。 # 装備品やアイテムで自由にスキルを習得するゲーム向きです。 # <削除スキル n>:特定のスキルをリストから消します。 # 上位互換のスキル習得時や、スキルのデメリットとして。 # <進化スキル n>:両者の組み合わせです。 # スキルの進化・派生を演出することができます。 # #============================================================================== #============================================================================== # ■ RPG::Skill #------------------------------------------------------------------------------ # スキルのデータクラス。 #============================================================================== class RPG::Skill < RPG::UsableItem #-------------------------------------------------------------------------- # ● 前提スキルの定義(追加定義) #-------------------------------------------------------------------------- def premise_skills list = [] @note.scan(/<前提スキル\s?(\d*)>/) {|s| list.push($1.to_i) if $1 } @note.scan(/<進化スキル\s?(\d*)>/) {|s| list.push($1.to_i) if $1 } return list.uniq end #-------------------------------------------------------------------------- # ● 削除スキルの定義(追加定義) #-------------------------------------------------------------------------- def deleted_skills list = [] @note.scan(/<削除スキル\s?(\d*)>/) {|s| list.push($1.to_i) if $1 } @note.scan(/<進化スキル\s?(\d*)>/) {|s| list.push($1.to_i) if $1 } return list.uniq end end #============================================================================== # ■ Game_Actor #------------------------------------------------------------------------------ # アクターを扱うクラスです。このクラスは Game_Actors クラス($game_actors) # の内部で使用され、Game_Party クラス($game_party)からも参照されます。 #============================================================================== class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # ● スキルオブジェクトの配列取得 #-------------------------------------------------------------------------- alias n7evo_skills skills def skills skill_evolve[0].sort.collect {|id| $data_skills[id] } end #-------------------------------------------------------------------------- # ● 所持スキルの分類処理 # 戻り値:[使用可能スキル,進化済スキル,未進化スキル]のスキルID配列 #-------------------------------------------------------------------------- def skill_evolve #各ローカル変数の準備 list = [] n7evo_skills.each{|skill| list.push(skill.id)} list.uniq! p list useable = [] evolved = [] unevolve = [] flag = false #前提スキルの判定 loop do flag = false list.each do |id| next if useable.include?(id) if $data_skills[id].premise_skills if $data_skills[id].premise_skills == ($data_skills[id].premise_skills & useable) useable.push(id) flag = true end else useable.push(id) flag = true end end break if flag == false p "loop" end p useable #未進化スキルの確定 unevolve = list - useable #削除スキルの判定、進化済スキルの確定 useable.each do |uid| $data_skills[uid].deleted_skills.each do |did| evolved.push(did) if useable.include?(did) end end #使用可能スキルの確定 useable -= evolved p useable p evolved return [useable, evolved, unevolve] end end