rebf-gaiden/Scripts/_ACE_ver1_2.rb
2025-04-26 17:06:34 -05:00

137 lines
6.3 KiB
Ruby
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#==============================================================================
# 「わざタイプ」(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