スキル・アイテム・装備品に有効条件を追加
Posted: 2017年5月09日(火) 19:18
中級者向け?
スキル、アイテム、装備品に個別に使用条件を追加できます
あくまでリストに表示されるときの有効状態をいじれるというだけで、
条件を満たさなくなった時に自動で装備を外す機能はついておりません。
スキル、アイテム、装備品に個別に使用条件を追加できます

あくまでリストに表示されるときの有効状態をいじれるというだけで、
条件を満たさなくなった時に自動で装備を外す機能はついておりません。
コード: 全て選択
#==============================================================================
# ■RGSS3 スキル・アイテム・装備品に有効条件を追加
# あるけみ 使用報告・記載は任意 するなら"あるけみ[byツクマテ]"で
# 2017/05/09 公開
# 2017/06/29 正規表現のエラーを修正
#------------------------------------------------------------------------------
# 【なんぞこれ】
# スキル・アイテムの使用条件、武器の装備条件を個別に設定できたりするスクリプト
# 【使い方】
# スキル・アイテム・装備品のメモ欄に 条件<論理値> と書く
# battlerで使用するバトラーオブジェクトが呼び出せるよ
# ※アイテムをフィールドで使用する場合無効
#
# 【サンプル】
# 条件<battler.class.name == "勇者" && battler.name == "アレックス">
# =>職業が勇者のアレックスのみ装備できる剣、エクスカリバー
# 条件<$game_map.screen.weather_type == :snow>
# =>雪が降ってるときしか使えないスキル、アイス
# 条件<battler.hp <= battler.mhp/10>
# =>瀕死の時しか使えないアイテム
# 条件<$game_party.battle_members.any?{
|actor|actor.name == "アリス"} && $game_party.battle_members.any?{|actor|actor.name == "イザベル"}>
# =>ジェットスクリームアタック!
#
#==============================================================================
class RPG::BaseItem
def usable_item_condition(battler)
unless @condition
text = @note.scan(/条件<((?m:.)+?)>/).flatten
@condition = (text && text[0] ? Proc.new{|battler|eval(text[0])} : Proc.new{true})
end
@condition.call(battler)
end
end
#==============================================================================
# ■ Game_Battler
#------------------------------------------------------------------------------
# スプライトや行動に関するメソッドを追加したバトラーのクラスです。このクラス
# は Game_Actor クラスと Game_Enemy クラスのスーパークラスとして使用されます。
#==============================================================================
class Game_Battler < Game_BattlerBase
#--------------------------------------------------------------------------
# ● スキル/アイテムの共通使用可能条件チェック
#--------------------------------------------------------------------------
def usable_item_conditions_met?(item)
movable? && occasion_ok?(item) && item.usable_item_condition(self)
end
end
#==============================================================================
# ■ Window_EquipItem
#------------------------------------------------------------------------------
# 装備画面で、装備変更の候補となるアイテムの一覧を表示するウィンドウです。
#==============================================================================
class Window_EquipItem < Window_ItemList
#--------------------------------------------------------------------------
# ● アイテムを許可状態で表示するかどうか
#--------------------------------------------------------------------------
def enable?(item)
return true unless item
item.usable_item_condition(@actor)
end
end