137 lines
6.3 KiB
Ruby
137 lines
6.3 KiB
Ruby
|
||
|
||
|
||
#==============================================================================
|
||
# 「わざタイプ」(ACE) ver1.2
|
||
# 製作者:奈々(なな)
|
||
# へぷたなすくろーる http://heptanas.mamagoto.com/
|
||
#
|
||
# ◇使用規約
|
||
# 使用される場合はスクリプト作成者として「奈々」を明記して下さい。
|
||
# このスクリプトを改変したり、改変したものを配布するなどは自由ですが
|
||
# その場合も元のスクリプトの作成者として名前は載せて下さい。
|
||
#
|
||
#------------------------------------------------------------------------------
|
||
#
|
||
# スキルの必要武器タイプを「わざタイプ」として独立化させます。
|
||
# これにより武器タイプと防具タイプの設定はスキルの使用に関わらなくなります。
|
||
#
|
||
#
|
||
# アクター・職業・武器・防具・ステートのメモ欄に「わざタイプ」を設定します。
|
||
#
|
||
# <わざタイプ ○○> :○○に好きな名前を入れます。
|
||
# この名前がわざタイプの識別名称になります。
|
||
#
|
||
#
|
||
# スキルのメモ欄に使用条件となるわざタイプを設定します。
|
||
#
|
||
# <要求わざタイプ ○○>:設定したもののうち「どれか1つ」あれば使用可能。
|
||
#
|
||
# <必須わざタイプ ○○>:設定したもののうち「全て」揃っていれば使用可能。
|
||
#
|
||
# <禁止わざタイプ ○○>:設定したもののうち「1つも無ければ」使用可能。
|
||
#
|
||
#
|
||
# 「わざタイプ」は色々なものに好きなだけ設定できますので上手く活用して下さい。
|
||
# 例えば伝説の剣にだけ<わざタイプ 剣>と<わざタイプ 伝説の剣>の2つを設定し
|
||
# 勇者の専用必殺技には<要求わざタイプ 伝説の剣>を追加するなどです。
|
||
# 基本的にはこのわざタイプを増やして要求わざタイプで対応する方法が簡単です。
|
||
# 必須わざタイプは2つ以上の装備品が必要なスキルなどを作りたいときに使います。
|
||
# また、ステートに<わざタイプ 魔法封印>という設定をして
|
||
# 魔法スキルには<禁止わざタイプ 魔法封印>という条件を追加する方法で
|
||
# より細かいスキルの封印設定なども作れるようになっています。
|
||
#
|
||
#==============================================================================
|
||
#==============================================================================
|
||
# ■ Game_Actor
|
||
#------------------------------------------------------------------------------
|
||
# アクターを扱うクラスです。このクラスは Game_Actors クラス($game_actors)
|
||
# の内部で使用され、Game_Party クラス($game_party)からも参照されます。
|
||
#==============================================================================
|
||
class Game_Actor < Game_Battler
|
||
#--------------------------------------------------------------------------
|
||
# ● スキルの必要武器を装備しているか(再定義)
|
||
#--------------------------------------------------------------------------
|
||
def skill_wtype_ok?(skill)
|
||
any_wazatype_id = skill.required_any_wazatype_id
|
||
all_wazatype_id = skill.required_all_wazatype_id
|
||
notany_wazatype_id = skill.required_notany_wazatype_id
|
||
|
||
return false if any_wazatype_ok?(notany_wazatype_id) && notany_wazatype_id != []
|
||
return false if !all_wazatype_ok?(all_wazatype_id) && all_wazatype_id != []
|
||
return false if !any_wazatype_ok?(any_wazatype_id) && any_wazatype_id != []
|
||
return true
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 特定のわざタイプをどれか1つでも満たしているか(新規メソッド)
|
||
#--------------------------------------------------------------------------
|
||
def any_wazatype_ok?(any_wazatype_id)
|
||
any_wazatype_id.any? {|id|
|
||
final_waza_type.include?(id)
|
||
}
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 特定のわざタイプを全て満たしているか(新規メソッド)
|
||
#--------------------------------------------------------------------------
|
||
def all_wazatype_ok?(all_wazatype_id)
|
||
all_wazatype_id.all? {|id|
|
||
final_waza_type.include?(id)
|
||
}
|
||
end
|
||
|
||
#--------------------------------------------------------------------------
|
||
# ● アクターの持つわざタイプ一覧
|
||
#--------------------------------------------------------------------------
|
||
def final_waza_type
|
||
list = self.actor.waza_type
|
||
list |= self.class.waza_type
|
||
self.equips.each do |equip|
|
||
next unless equip
|
||
list |= equip.waza_type
|
||
end
|
||
self.states.each do |state|
|
||
list |= state.waza_type
|
||
end
|
||
return list
|
||
end
|
||
end
|
||
|
||
class RPG::BaseItem
|
||
#--------------------------------------------------------------------------
|
||
# ● わざタイプ
|
||
#--------------------------------------------------------------------------
|
||
def waza_type
|
||
list = []
|
||
@note.scan(/<わざタイプ\s?(.*)>/) {|s| list.push($1.to_s) if $1}
|
||
return list
|
||
end
|
||
end
|
||
|
||
|
||
class RPG::Skill < RPG::UsableItem
|
||
#--------------------------------------------------------------------------
|
||
# ● 要求わざタイプの定義(追加定義)
|
||
#--------------------------------------------------------------------------
|
||
def required_any_wazatype_id
|
||
list = []
|
||
@note.scan(/<要求わざタイプ\s?(.*)>/) {|s| list.push($1.to_s) if $1}
|
||
return list
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 必須わざタイプの定義(追加定義)
|
||
#--------------------------------------------------------------------------
|
||
def required_all_wazatype_id
|
||
list = []
|
||
@note.scan(/<必須わざタイプ\s?(.*)>/) {|s| list.push($1.to_s) if $1}
|
||
return list
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 禁止わざタイプの定義(追加定義)
|
||
#--------------------------------------------------------------------------
|
||
def required_notany_wazatype_id
|
||
list = []
|
||
@note.scan(/<禁止わざタイプ\s?(.*)>/) {|s| list.push($1.to_s) if $1}
|
||
return list
|
||
end
|
||
end
|
||
|