#==============================================================================
# 「進化スキル」(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