#============================================================================== # ■ XP-RGSS-61-ev クエストシステム【イベント】 by Claimh #------------------------------------------------------------------------------ # イベントのスクリプト操作 #============================================================================== class Interpreter #-------------------------------------------------------------------------- # ● クエストリスト呼び出し #-------------------------------------------------------------------------- def call_questlist if defined?(Scene_QuestList) $game_temp.shop_calling = true $game_temp.call_questlist = true end return true end #-------------------------------------------------------------------------- # ● ギルド呼び出し #-------------------------------------------------------------------------- def call_guild(id=0) if defined?(Scene_Guild) $game_temp.shop_calling = true $game_temp.call_guild = true $game_temp.call_guild_id = id end return true end #-------------------------------------------------------------------------- # ● クエスト結果の表示 #-------------------------------------------------------------------------- def call_questresult if defined?(Window_QuestResult) $game_temp.shop_calling = true $game_temp.call_questresult = true 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_questlist attr_accessor :call_guild attr_accessor :call_guild_id attr_accessor :call_questresult attr_accessor :questresult_id # 直前に開始・完了したクエストID attr_accessor :questresult_old_rank # ランク変動があった前のクエストランク #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- alias initialize_quest initialize def initialize initialize_quest @call_questlist = false @call_guild = false @call_guild_id = 0 @call_questresult = false @questresult_id = 0 @questresult_old_rank = 1 end end #============================================================================== # ■ Scene_Map #============================================================================== class Scene_Map #-------------------------------------------------------------------------- # ● ショップの呼び出し #-------------------------------------------------------------------------- alias call_shop_quest call_shop def call_shop if $game_temp.call_questlist # クエストリスト $game_temp.shop_calling = false $game_player.straighten $scene = Scene_QuestList.new elsif $game_temp.call_questresult # クエスト結果 $game_temp.shop_calling = false $game_temp.call_questresult = false result = Window_QuestResult.new result.refresh($game_system.quest[$game_temp.questresult_id]) result.back_opacity = 160 result.x = 140 result.y -= 40 loop do Graphics.update # ゲーム画面を更新 Input.update # 入力情報を更新 $game_map.update $game_screen.update @spriteset.update result.update if Input.trigger?(Input::C) $game_system.se_play($data_system.decision_se) break elsif Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) break end end result.dispose elsif $game_temp.call_guild # ギルド $game_temp.shop_calling = false $game_player.straighten $scene = Scene_Guild.new($game_temp.call_guild_id) $game_temp.call_guild = false $game_temp.call_guild_id = 0 else # ショップ call_shop_quest end end end