#============================================================================== # ■ VXAce-RGSS3-4-ev クエストシステム【イベント】 by Claimh #------------------------------------------------------------------------------ # イベントのスクリプト操作 #============================================================================== class Game_Interpreter #-------------------------------------------------------------------------- # ● クエストリスト呼び出し #-------------------------------------------------------------------------- def call_questlist SceneManager.call(Scene_QuestList) if defined?(Scene_QuestList) end #-------------------------------------------------------------------------- # ● ギルド呼び出し #-------------------------------------------------------------------------- def call_guild(id=0) SceneManager.call(Scene_Guild) if defined?(Scene_Guild) SceneManager.scene.prepare(id) end #-------------------------------------------------------------------------- # ● クエスト結果の表示 #-------------------------------------------------------------------------- def call_questresult if defined?(Window_QuestResult) and SceneManager.scene_is?(Scene_Map) SceneManager.scene.exec_questresult end end #-------------------------------------------------------------------------- # ◆クエストデータの初期化 # id : クエストID(id=0なら全クエストの初期化) #-------------------------------------------------------------------------- def quest_reset(id=0) id == 0 ? $game_system.quest.reset : $game_system.quest[id].reset end #-------------------------------------------------------------------------- # ◆クエスト開始 # id : クエストID #-------------------------------------------------------------------------- def quest_start(id) $game_system.quest[id].quest_start end #-------------------------------------------------------------------------- # ◆クエスト成功 # id : クエストID # force : false=ギルドへの報告待ちにする(ギルドクエストのみ) # true =ギルドクエストを完了にする(報告待ちにしない) # audio : ME/SEの演奏の有無 #-------------------------------------------------------------------------- def quest_clear(id, force=false, audio=true) $game_system.quest[id].quest_clear(force, audio) end #-------------------------------------------------------------------------- # ◆クエスト失敗 # id : クエストID # force : false=ギルドへの報告待ちにする(ギルドクエストのみ) # true =ギルドクエストを完了にする(報告待ちにしない) # audio : ME/SEの演奏の有無 #-------------------------------------------------------------------------- def quest_fail(id, force=false, audio=true) $game_system.quest[id].quest_fail(force, audio) end #-------------------------------------------------------------------------- # ◆クエストの表示変更 # id : クエストID # flag : true=表示ON / false=表示OFF #-------------------------------------------------------------------------- def quest_visible(id, flag=true) $game_system.quest[id].visible = flag end #-------------------------------------------------------------------------- # ◆クエスト内容の変更 # id : クエストID # text : クエスト内容 #-------------------------------------------------------------------------- def quest_change_text(id, text) $game_system.quest[id].text = text.dup end #-------------------------------------------------------------------------- # ◆クエストの依頼内容に追記 # id : クエストID # text : 追記内容 #-------------------------------------------------------------------------- def quest_add_text(id, text) $game_system.quest[id].text += text.dup end #-------------------------------------------------------------------------- # ◆クエストの報酬金額変更 # id : クエストID # money : 報酬金額 #-------------------------------------------------------------------------- def quest_change_premium(id, money) $game_system.quest[id].change_premium(money) end #-------------------------------------------------------------------------- # ◆クエストの報酬金追加 # id : クエストID # money : 追加する報酬金額 #-------------------------------------------------------------------------- def quest_add_premium(id, money) $game_system.quest[id].add_premium(money) end #-------------------------------------------------------------------------- # ◆クエストの報酬変更 # id : クエストID # result : 報酬[RsltXXX.new, …] #-------------------------------------------------------------------------- def quest_change_result(id, result) $game_system.quest[id].result = result.dup end #-------------------------------------------------------------------------- # ◆クエストの報酬追加 # id : クエストID # result : 報酬 RsltXXX.new #-------------------------------------------------------------------------- def quest_add_result(id, result) $game_system.quest[id].result.push(result.dup) end #-------------------------------------------------------------------------- # ◆クエストの報酬内容の表示変更 # id : クエストID # flag : true=表示ON / false=表示OFF #-------------------------------------------------------------------------- def quest_view_result(id, flag=true) $game_system.quest[id].view_res = flag end end #============================================================================== # ■ Game_Temp #============================================================================== class Game_Temp attr_accessor :questresult_id # 直前に開始・完了したクエストID attr_accessor :questresult_old_rank # ランク変動があった前のクエストランク #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- alias initialize_quest initialize def initialize initialize_quest @questresult_id = 0 @questresult_old_rank = 1 end end #============================================================================== # ■ Scene_Map #============================================================================== class Scene_Map #-------------------------------------------------------------------------- # ● 全ウィンドウの作成 #-------------------------------------------------------------------------- alias create_all_windows_quest create_all_windows def create_all_windows create_all_windows_quest create_questresult_window end #-------------------------------------------------------------------------- # ● クエスト結果ウィンドウ生成 #-------------------------------------------------------------------------- def create_questresult_window @q_result_window = Window_QuestResult.new @q_result_window.back_opacity = 160 @q_result_window.z = 5000 @q_result_window.set_handler(:ok, method(:questresult_cancel)) @q_result_window.set_handler(:cancel, method(:questresult_cancel)) end #-------------------------------------------------------------------------- # ● クエスト結果キャンセル #-------------------------------------------------------------------------- def questresult_cancel @q_result_window.deactivate @q_result_window.hide end #-------------------------------------------------------------------------- # ● クエスト結果の表示 #-------------------------------------------------------------------------- def exec_questresult @q_result_window.refresh($game_system.quest[$game_temp.questresult_id]) @q_result_window.show @q_result_window.activate loop do update_basic break unless @q_result_window.active end end end