#============================================================================== # アイテム効果拡張 ver1.01 # #[特徴] # 特定のステートが付与されているときにアイテムの効果が別のアイテムの効果になる。 # #[設定方法] # ステートのメモ欄に <アイテム効果拡張:アイテムID,変化後アイテムID> と書いてください。 # 例) <アイテム効果拡張:1,2> # ポーションがハイポーションの効果になる。 # # 作成:ぶちょー # ホム:http://nyannyannyan.bake-neko.net/ # 著作:自分で作ったとか言わないで>< # 改造はご自由にどうぞ。 # リードミーとかに私の名前の載せたりするのは任意で。 #============================================================================== #============================================================================== # バージョンアップ情報 # ver1.01 表示するアイテム名を変化前か変化後か選択可能に # ver1.00 公開 #============================================================================== #============================================================================== # 設定項目 #============================================================================== module Kazari module ItemExtension # 表示するアイテム名を変化前にするか変化後にするか # 0 : 変化前 # 1 : 変化後 NAME = 0 end end #============================================================================== # ここまで #============================================================================== $kzr_imported = {} if $kzr_imported == nil $kzr_imported["ItemExtension"] = true #============================================================================== # ■ Scene_Battle #============================================================================== class Scene_Battle < Scene_Base #-------------------------------------------------------------------------- # ● アイテム[決定] #-------------------------------------------------------------------------- alias kzr_item_extansion_on_item_ok on_item_ok def on_item_ok actor = BattleManager.actor item = @item_window.item extend_item = item_extension(actor, item) if item.id != extend_item.id actor.input.set_item(item.id) @item = extend_item if !extend_item.need_selection? @item_window.hide next_command elsif extend_item.for_opponent? select_enemy_selection else select_actor_selection end $game_party.last_item.object = item else kzr_item_extansion_on_item_ok end end #-------------------------------------------------------------------------- # ● スキル/アイテムの使用 #-------------------------------------------------------------------------- alias kzr_item_extension_use_item use_item def use_item item = @subject.current_action.item extend_item = item_extension(@subject, item) if item.id != extend_item.id && item.is_a?(RPG::Item) if Kazari::ItemExtension::NAME == 0 @log_window.display_use_item(@subject, item) else @log_window.display_use_item(@subject, extend_item) end @subject.input.set_item(extend_item.id) @subject.use_item_extend(item, extend_item) refresh_status targets = @subject.current_action.make_targets.compact show_animation(targets, extend_item.animation_id) targets.each {|target| extend_item.repeats.times { invoke_item(target, extend_item) } } else kzr_item_extension_use_item end end #-------------------------------------------------------------------------- # ● アイテム効果拡張 #-------------------------------------------------------------------------- def item_extension(user, item) user.states.each do |state| state.extend_item_id.each do |item_id| return $data_items[item_id[1]] if item_id[0] == item.id end end item end end #============================================================================== # ■ Game_Battler #============================================================================== class Game_Battler < Game_BattlerBase #-------------------------------------------------------------------------- # ● アイテムの使用(拡張) #-------------------------------------------------------------------------- def use_item_extend(item, extend_item) consume_item(item) extend_item.effects.each {|effect| item_global_effect_apply(effect) } end end #============================================================================== # ■ RPG::State #============================================================================== class RPG::State < RPG::BaseItem def extend_item_id list = [[0, 0]] note.each_line {|line| case line when /<アイテム効果拡張:(\d+),(\d+)>/i ; list << [$1.to_i, $2.to_i] end } list end end