#============================================================================== # ■ VX-RGSS2-16-ev クエストシステム【イベント】 by Claimh #------------------------------------------------------------------------------ # イベントのスクリプト操作 #============================================================================== class Game_Interpreter #-------------------------------------------------------------------------- # ● クエストリスト呼び出し #-------------------------------------------------------------------------- def call_questlist if defined?(Scene_QuestList) $game_temp.next_scene = "quest" end return true end #-------------------------------------------------------------------------- # ● ギルド呼び出し #-------------------------------------------------------------------------- def call_guild(id=0) if defined?(Scene_Guild) $game_temp.next_scene = "guild" $game_temp.call_guild_id = id end return true end #-------------------------------------------------------------------------- # ● クエスト結果の表示 #-------------------------------------------------------------------------- def call_questresult if defined?(Window_QuestResult) $game_temp.next_scene = "q_result" end return true end #-------------------------------------------------------------------------- # ◆クエストデータの初期化 # id : クエストID(id=0なら全クエストの初期化) #-------------------------------------------------------------------------- def quest_reset(id=0) id == 0 ? $game_system.quest.reset : $game_system.quest[id].reset return true end #-------------------------------------------------------------------------- # ◆クエスト開始 # id : クエストID #-------------------------------------------------------------------------- def quest_start(id) $game_system.quest[id].quest_start return true 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) return true 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) return true end #-------------------------------------------------------------------------- # ◆クエストの表示変更 # id : クエストID # flag : true=表示ON / false=表示OFF #-------------------------------------------------------------------------- def quest_visible(id, flag=true) $game_system.quest[id].visible = flag return true end #-------------------------------------------------------------------------- # ◆クエスト内容の変更 # id : クエストID # text : クエスト内容 #-------------------------------------------------------------------------- def quest_change_text(id, text) $game_system.quest[id].text = text.dup return true end #-------------------------------------------------------------------------- # ◆クエストの依頼内容に追記 # id : クエストID # text : 追記内容 #-------------------------------------------------------------------------- def quest_add_text(id, text) $game_system.quest[id].text += text.dup return true end #-------------------------------------------------------------------------- # ◆クエストの報酬金額変更 # id : クエストID # money : 報酬金額 #-------------------------------------------------------------------------- def quest_change_premium(id, money) $game_system.quest[id].change_premium(money) return true end #-------------------------------------------------------------------------- # ◆クエストの報酬金追加 # id : クエストID # money : 追加する報酬金額 #-------------------------------------------------------------------------- def quest_add_premium(id, money) $game_system.quest[id].add_premium(money) return true end #-------------------------------------------------------------------------- # ◆クエストの報酬変更 # id : クエストID # result : 報酬[RsltXXX.new, …] #-------------------------------------------------------------------------- def quest_change_result(id, result) $game_system.quest[id].result = result.dup return true end #-------------------------------------------------------------------------- # ◆クエストの報酬追加 # id : クエストID # result : 報酬 RsltXXX.new #-------------------------------------------------------------------------- def quest_add_result(id, result) $game_system.quest[id].result.push(result.dup) return true end #-------------------------------------------------------------------------- # ◆クエストの報酬内容の表示変更 # id : クエストID # flag : true=表示ON / false=表示OFF #-------------------------------------------------------------------------- def quest_view_result(id, flag=true) $game_system.quest[id].view_res = flag return true end end #============================================================================== # ■ Game_Temp #============================================================================== class Game_Temp attr_accessor :call_guild_id attr_accessor :questresult_id # 直前に開始・完了したクエストID attr_accessor :questresult_old_rank # ランク変動があった前のクエストランク #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- alias initialize_quest initialize def initialize initialize_quest @call_guild_id = 0 @questresult_id = 0 @questresult_old_rank = 1 end end #============================================================================== # ■ Scene_Map #============================================================================== class Scene_Map #-------------------------------------------------------------------------- # ● 画面切り替えの実行 #-------------------------------------------------------------------------- alias update_scene_change_quest update_scene_change def update_scene_change return if $game_player.moving? # プレイヤーの移動中? case $game_temp.next_scene when "quest"; call_quest when "guild"; call_guild when "q_result"; call_q_result else; update_scene_change_quest end end #-------------------------------------------------------------------------- # ● クエストリストの呼び出し #-------------------------------------------------------------------------- def call_quest $game_temp.next_scene = nil $scene = Scene_QuestList.new end #-------------------------------------------------------------------------- # ● ギルドの呼び出し #-------------------------------------------------------------------------- def call_guild $game_temp.next_scene = nil $scene = Scene_Guild.new($game_temp.call_guild_id) $game_temp.call_guild_id = 0 end #-------------------------------------------------------------------------- # ● クエスト結果の表示 #-------------------------------------------------------------------------- def call_q_result $game_temp.next_scene = nil result = Window_QuestResult.new result.refresh($game_system.quest[$game_temp.questresult_id]) result.back_opacity = 160 result.x = 100 result.y -= 40 result.z = 5000 loop do update_basic result.update if Input.trigger?(Input::C) Sound.play_decision break elsif Input.trigger?(Input::B) Sound.play_cancel break end end result.dispose end end