#============================================================================== # ■ VXAce-RGSS3-1 用語辞典-アナライザ [Ver.1.0.0] by Claimh #------------------------------------------------------------------------------ # スキル、アイテムを使って、敵の能力を調べることができるようになります。 # 使用可能時 :バトルのみ # 効果範囲 :単体のみ #------------------------------------------------------------------------------ # 必須 : 自動生成Plugin、自動更新Plugin #------------------------------------------------------------------------------ # 自動生成 : ATC_ENEMY_A を使用してください # 自動更新 : A_UP[ATC_ENEMY_A] を有効にしてください #------------------------------------------------------------------------------ module DictAnalizer # アナライザとして使用するスキルID SKILL_ID = [3, 4] # アナライザとして使用するアイテムID ITEM_ID = [5] # 画面背景の不透明度 BACK_OPACITY = 160 end module DictAnalizer def self.analizer?(item) case item when RPG::Skill; return DictAnalizer::SKILL_ID.include?(item.id) when RPG::Item; return DictAnalizer::ITEM_ID.include?(item.id) end return false end end class Game_Battler < Game_BattlerBase #-------------------------------------------------------------------------- # ● スキル/アイテムの効果適用 #-------------------------------------------------------------------------- alias item_apply_analize item_apply def item_apply(user, item) item_apply_analize(user, item) if @result.hit? and DictAnalizer.analizer?(item) @result.success = true ## 効果有りにする。 end end end class Scene_Battle < Scene_Base #-------------------------------------------------------------------------- # ● アナライザウィンドウの作成 #-------------------------------------------------------------------------- def create_analize_window @analizer_window = Window_DictInfo.new @analizer_window.set_handler(:ok, method(:dict_analizer_cancel)) @analizer_window.set_handler(:cancel, method(:dict_analizer_cancel)) @analizer_window.set_handler(:pageup, method(:dict_analizer_pageup)) @analizer_window.set_handler(:pagedown, method(:dict_analizer_pagedown)) @analizer_window.back_opacity = DictAnalizer::BACK_OPACITY @analizer_window.hide end #-------------------------------------------------------------------------- # ● アナライザウィンドウの作成 #-------------------------------------------------------------------------- def setup_analize_window(target) a_up = DictAutoUpdate::A_UP[DictDef::ATC_ENEMY_A] enemy_id = target.enemy_id data = $game_system.dictionary[a_up.category_id][enemy_id] data.show_flg = true unless data.show_flg data.info = DictAutoCreate.enemy_text(enemy_id) if data.info == "" @analizer_window.refresh(data, 0) @analizer_window.show @analizer_window.activate end #-------------------------------------------------------------------------- # ● アナライザウィンドウ終了 #-------------------------------------------------------------------------- def dict_analizer_cancel @analizer_window.deactivate @analizer_window.hide end #-------------------------------------------------------------------------- # ● アナライザウィンドウ終了 #-------------------------------------------------------------------------- def dispose_analize_window @analizer_window.dispose @analizer_window = nil end #-------------------------------------------------------------------------- # ● アナライザウィンドウpage up #-------------------------------------------------------------------------- def dict_analizer_pageup @analizer_window.page_up end #-------------------------------------------------------------------------- # ● アナライザウィンドウpage down #-------------------------------------------------------------------------- def dict_analizer_pagedown @analizer_window.page_dw end #-------------------------------------------------------------------------- # ● スキル/アイテムの効果を適用 #-------------------------------------------------------------------------- alias apply_item_effects_analize apply_item_effects def apply_item_effects(target, item) apply_item_effects_analize(target, item) exec_analizer(target) if is_analizer?(target, item) end #-------------------------------------------------------------------------- # ● アナライザ : スキル or アイテム #-------------------------------------------------------------------------- def is_analizer?(target, item) return false if target.actor? # エネミーだけ return false unless target.result.hit? return DictAnalizer.analizer?(item) end #-------------------------------------------------------------------------- # ● アナライザ実行 #-------------------------------------------------------------------------- def exec_analizer(target) if !defined?(DictAutoUpdate) or !defined?(DictAutoCreate) p "自動生成、自動更新がありません。" return end wait_for_message create_analize_window setup_analize_window(target) wait_for_analizer dispose_analize_window end #-------------------------------------------------------------------------- # ● アナライザ表示が終わるまでウェイト #-------------------------------------------------------------------------- def wait_for_analizer update_for_wait update_for_wait while @analizer_window.active end end