スキル・アイテム・装備品に有効条件を追加

フォーラムルール
素材の利用規約を決めたいけど、どんなことを書けばいいのか分からない場合は、
素材のテンプレートをご利用下さい。
アバター
あるけみ
記事: 9
登録日時: 2016年12月20日(火) 23:30

スキル・アイテム・装備品に有効条件を追加

投稿記事by あるけみ » 2017年5月09日(火) 19:18

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

コード: 全て選択

#==============================================================================
# ■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

アバター
あるけみ
記事: 9
登録日時: 2016年12月20日(火) 23:30

Re: スキル・アイテム・装備品に有効条件を追加

投稿記事by あるけみ » 2017年6月29日(木) 23:23

修正しました。
条件<○○> の記号が全角になり、条件<○○>になりました。
どんな文字も認識するワイルドカードを使っているので、少々扱いが難しいです。
今回の場合、修正後も<>内に>の文字があるとエラーを吐く可能性大です。
そのときは"条件《○○》"なり、"条件【○○】"なり、被らないと思われる記号に適宜改変してください。

コード: 全て選択

text = @note.scan(/条件✖((?m:.)+?)✖/).flatten

こちらの行の、✖の箇所を書き換えると改変できます

“Ace:スクリプト素材(RGSS3)” へ戻る