code:
;-------------------------------------------------
;クエスト定義ファイル
;QUEST_16:アリーナ
;-------------------------------------------------
@QST_TITLE_QUEST_16
RESULTS '= "アリーナ"

;ギルドメニューでクエストをフィルターする際のタグリスト。末尾の','を忘れないように
@QST_QUEST_TAG_16
RESULTS '= "周期,連戦,"

;クエストメニュー右上段の概要欄。10行まで
@QST_SUMALLY1_QUEST_16
CALL QST_QUEST_16_MESSAGE_SUMALLY1()

;クエストメニュー右下段の備考欄。難易度や条件、報酬等を記述。7行まで
@QST_SUMALLY2_QUEST_16
CALL QST_QUEST_16_MESSAGE_SUMALLY2()

;-------------------------------------------------
;クエストの実行可能条件を定義
;3期に一度
;-------------------------------------------------
;クエストを一覧に表示するか判定
@QST_AVAILABLE_QUEST_16(QUEST_ID)
#DIM QUEST_ID
;前提として野盗討伐の攻略が必要
SIF QST_SV_QUEST_FLAG:12 != 1
	RETURN 0
;クエストのクールタイム。完了時に加算され、期終了時に減算される
SIF QST_COOLTIME:QUEST_ID
	RETURN 0
RETURN 1

;クエストを開始できるか判定
@QST_CAN_START_QUEST_16(QUEST_ID)
#DIM QUEST_ID

;人数制限
IF LIST_COUNT(_LIST_QST_PARTY) > QUEST_16_PARTY_LIMIT
	CALL QST_QUEST_16_MESSAGE_CANNOT_START()
	RETURN 0
ENDIF
RETURN 1

;-------------------------------------------------
;マップデータ定義
;-------------------------------------------------
@QST_SET_MAPDATA_QUEST_16(MAP_ID)
#DIM MAP_ID
#DIM  DYNAMIC ROOM_ID   , 25
#DIMS DYNAMIC PATH_LIST , 25
#DIMS DYNAMIC ROOM_NAME , 25
#DIMS DYNAMIC EVENT_LIST, 25
#DIM  DYNAMIC L_CNT
#DIM  CONST ROOM_ID_START = 200
#DIM  CONST ROOM_ID_ETC   = 201
;イベントが増えて横に長くなりすぎたので分割。パスの接続方向を数値でなく文字(UDLR)で指定
;1行目(0～4)
;未使用
;2行目(5～9)
L_CNT = 6
ROOM_NAME:L_CNT  '= "観客席"
ROOM_ID:L_CNT     = ROOM_ID_ETC
PATH_LIST:L_CNT  '= "D,"
EVENT_LIST:L_CNT '= "0,9,"
L_CNT = 7
ROOM_NAME:L_CNT  '= "アリーナ"
ROOM_ID:L_CNT     = ROOM_ID_ETC
PATH_LIST:L_CNT  '= "D,"
EVENT_LIST:L_CNT '= "0,7,"
L_CNT = 8
ROOM_NAME:L_CNT  '= "観客席"
ROOM_ID:L_CNT     = ROOM_ID_ETC
PATH_LIST:L_CNT  '= "D,"
EVENT_LIST:L_CNT '= "0,9,"
;3行目(10～14)
;医務室と対称になる位置に何か置きたい。とりあえずコメントアウトして仮置き。
;L_CNT = 10
;ROOM_NAME:L_CNT  '= "控室(仮)"
;ROOM_ID:L_CNT     = ROOM_ID_ETC
;PATH_LIST:L_CNT  '= "R,"
;EVENT_LIST:L_CNT '= "0,11,"
L_CNT = 11
ROOM_NAME:L_CNT  '= "通路"
ROOM_ID:L_CNT     = ROOM_ID_ETC
PATH_LIST:L_CNT  '= "U,R,"
EVENT_LIST:L_CNT '= "0,"
L_CNT = 12
ROOM_NAME:L_CNT  '= "受付"
ROOM_ID:L_CNT     = ROOM_ID_START
PATH_LIST:L_CNT  '= "U,L,R,D,"
EVENT_LIST:L_CNT '= "0,1,3,"
;デバッグモード時はデバッグ専用イベントを追加
[IF_DEBUG]
EVENT_LIST:L_CNT += "100,101,102,"
[ENDIF]
L_CNT = 13
ROOM_NAME:L_CNT  '= "通路"
ROOM_ID:L_CNT     = ROOM_ID_ETC
PATH_LIST:L_CNT  '= "U,L,R,"
EVENT_LIST:L_CNT '= "0,"
L_CNT = 14
ROOM_NAME:L_CNT  '= "医務室"
ROOM_ID:L_CNT     = ROOM_ID_ETC
PATH_LIST:L_CNT  '= "L,"
EVENT_LIST:L_CNT '= "0,8,"
;4行目(15～19)
L_CNT = 17
ROOM_NAME:L_CNT  '= "出口"
ROOM_ID:L_CNT     = ROOM_ID_ETC
PATH_LIST:L_CNT  '= "U,"
EVENT_LIST:L_CNT '= "0,6,"
;5行目(20～24)
;未使用

QST_MAPNAME '= "アリーナ"
;設定した情報をマップデータ「_DIC_HO_MAPDATA:MAP_ID:***」に格納
FOR L_CNT, 0, 25
	;設定なしのマス
	IF !ROOM_ID:L_CNT
		_DIC_HO_MAPDATA:MAP_ID:L_CNT '= "[ROOM_ID:0][ROOM_PATH:]"
		;設定ありのマス
	ELSE
		;PATH_LISTの中身を文字(ULRD)から数値に変換
		PATH_LIST:L_CNT '= REPLACE(PATH_LIST:L_CNT, "U", TOSTR(L_CNT - 5))
		PATH_LIST:L_CNT '= REPLACE(PATH_LIST:L_CNT, "L", TOSTR(L_CNT - 1))
		PATH_LIST:L_CNT '= REPLACE(PATH_LIST:L_CNT, "R", TOSTR(L_CNT + 1))
		PATH_LIST:L_CNT '= REPLACE(PATH_LIST:L_CNT, "D", TOSTR(L_CNT + 5))

		_DIC_HO_MAPDATA:MAP_ID:L_CNT '= @"[ROOM_ID:{ROOM_ID:L_CNT}]"
		_DIC_HO_MAPDATA:MAP_ID:L_CNT += @"[ROOM_PATH:%PATH_LIST:L_CNT%]"
		_DIC_HO_MAPDATA:MAP_ID:L_CNT += @"[ROOM_NAME:%ROOM_NAME:L_CNT%]"
		_DIC_HO_MAPDATA:MAP_ID:L_CNT += @"[EVENT_LIST:%EVENT_LIST:L_CNT%]"
	ENDIF
NEXT

;-------------------------------------------------
;クエストのタイプ
;マップ探索を伴う場合 "MAP"
;文章のみで完結する場合 "DIALOGUE"
;-------------------------------------------------
@QST_TYPE_QUEST_16
RESULTS '= "MAP"

;-------------------------------------------------
;クエスト固有の初期化処理
;-------------------------------------------------
@QST_INIT_QUEST_16
#DIM L_CNT
#DIM ROOM_ID
#DIM CONST MAP_ID = 0
FLAG:クエスト_中断を許可 = 1
;広域変数の初期化
CALL QST_QUEST_16_INIT_GLOBAL_VARIABLE()
;全マスを表示
FOR L_CNT, 0, 25
	CALL HO_GET_MAPDATA(MAP_ID, L_CNT, "ROOM_ID")
	ROOM_ID = RESULT
	SIF ROOM_ID != 0
		CALL QST_CLEAR_FOG_OF_WAR(L_CNT)
NEXT

;-------------------------------------------------
;クエスト中止時の処理
;QST_QUEST_{QUEST_ID}_ABORT は撤退コマンド実行時に呼ばれる
;-------------------------------------------------
@QST_QUEST_16_ABORT
;クエスト中断メッセージを表示
CALL QST_QUEST_16_MESSAGE_ABORT()

;クエストクールタイムを加算
QST_COOLTIME:QST_有効クエストID += QUEST_16_COOLTIME

;-------------------------------------------------
;クエスト終了処理
;-------------------------------------------------
@QST_QUEST_16_QUEST_EXIT
;クエストクールタイムを加算
QST_COOLTIME:QST_有効クエストID += QUEST_16_COOLTIME

;クエスト終了処理
TFLAG:クエスト_完了フラグ = 1
CALL TRAIN_EXIT()

;-------------------------------------------------
;QST_INTRO_QUEST_n はQUEST開始前に呼ばれる
;クエストの導入文などを記述
;"DIALOGUE"型のクエストは当該関数のCALLのみ行う
;-------------------------------------------------
@QST_INTRO_QUEST_16
CALL PRINT_TITLE("アリーナ", "QUEST")
;初回訪問時
IF !QUEST_16_VISITED
	;メッセージ表示(1-1.導入前半)
	CALL QST_QUEST_16_MESSAGE_INTRO(1, 1)
	;デモ戦闘用のモブを設定、デモ戦闘実行
	CALL CC_INIT()
	CALL QST_QUEST_16_COMBAT_MOB_PRESET_デモ戦闘用やられ役("ATTACKER")
	CALL QST_QUEST_16_COMBAT_MOB_PRESET_キマイラ("DEFENDER")
	CALL CLOSE_COMBAT()
	;メッセージ表示(1-2.導入後半)
	CALL QST_QUEST_16_MESSAGE_INTRO(1, 2)
	;2回目以降
ELSE
	;メッセージ表示(2.2回目以降)
	CALL QST_QUEST_16_MESSAGE_INTRO(2)
ENDIF

;メッセージ表示(3.注釈)
CALL QST_QUEST_16_MESSAGE_INTRO(3)
;訪問済フラグON
QUEST_16_VISITED = 1
;最初の対戦相手を決定してログに表示
CALL QST_QUEST_16_SET_ENEMY()
CALL QST_QUEST_16_PRINT_LOG()
;ゲーム内時刻をセット
CALL QST_QUEST_16_SET_TIME()
;空腹度をリセット
CALL QST_QUEST_16_RESET_HUNGER_LEVEL()
;パーティが男性のみか判定
CALL QST_QUEST_16_SET_ONLY_MALE_PARTY()

IF NAME_TO_CHARA("QUEST_31_受付嬢") == -1
	CALL QST_QUEST_16_CREATE_NPC_RECEPTION_GIRL()
ENDIF

;-------------------------------------------------
;EV0 全マス共通処理
;・マスを移動するごとに実行する処理
;-------------------------------------------------
@QST_ADD_EVENT_QUEST_16_EVENT_0
; #region EV0
#DIMS EVENT_TRIGGER = "ENTER_ROOM"
#DIMS EVENT_TYPE    = ""
VARSET RESULTS
RESULTS:0 = %EVENT_TRIGGER%
RESULTS:2 = %EVENT_TYPE%

;-------------------------
;EV0 全マス共通処理＠メイン処理
;-------------------------
@QST_QUEST_16_EVENT_0
;ゲーム内時刻のセット
;・移動で増えた時間を無効化する
CALL QST_QUEST_16_SET_TIME()
;空腹度をリセット
CALL QST_QUEST_16_RESET_HUNGER_LEVEL()

;-------------------------------------------------
;EV1 受付係の女性(ルール説明/対戦相手ガチャ)
;-------------------------------------------------
@QST_ADD_EVENT_QUEST_16_EVENT_1
; #region EV1
#DIMS EVENT_TRIGGER   = "EVENT_SLOT"
#DIMS EVENT_SLOT_NAME = "受付係の女性"
VARSET RESULTS
RESULTS:0 = %EVENT_TRIGGER%
RESULTS:1 = %EVENT_SLOT_NAME%

;-------------------------
;EV1 受付係の女性＠メイン処理
;-------------------------
@QST_QUEST_16_EVENT_1
#DIM CONST EVENT_ID = 1

;----------------
;-- 地の文表示
;----------------
CALL QST_QUEST_16_MESSAGE_DESCRIPTIVE_PART(EVENT_ID)

;------------------------
;-- 説明を聞いていない
;------------------------
CALL QST_QUEST_16_GET_FLAG_EXPLAINED()
IF !RESULT
	;ルール説明
	CALL QST_QUEST_16_EVENT_1_ARENA_GUIDE(EVENT_ID)
	RETURN
ENDIF

;----------------
;-- 興行終了済
;----------------
CALL QST_QUEST_16_GET_OUT_TIME()
IF RESULT
	;帰宅選択処理
	CALL QST_QUEST_16_GO_HOME(EVENT_ID)
	RETURN
ENDIF

;------------
;-- 通常時
;------------
;対戦相手ガチャ
CALL QST_QUEST_16_EVENT_1_SHUFFLE_ENEMY
; #endregion

;-------------------------
;EV1 受付係の女性＠ルール説明
;-------------------------
;EVENT_ID :実行元のEVENT ID
@QST_QUEST_16_EVENT_1_ARENA_GUIDE(CALLER_EV_ID = 1)
#DIM CALLER_EV_ID
#DIM CONST EVENT_ID = 1

;1.受付応対
CALL QST_QUEST_16_RECEPTION_MESSAGE_ARENA_GUIDE(1, CALLER_EV_ID)
;2.ルール説明導入
CALL QST_QUEST_16_RECEPTION_MESSAGE_ARENA_GUIDE(2, CALLER_EV_ID)
;3.ルール説明
CALL QST_QUEST_16_RECEPTION_MESSAGE_ARENA_GUIDE(3, CALLER_EV_ID)
;4.補足1：医務室の説明
CALL QST_QUEST_16_RECEPTION_MESSAGE_ARENA_GUIDE(4, CALLER_EV_ID)
;5.補足2：対戦相手ガチャの説明
CALL QST_QUEST_16_RECEPTION_MESSAGE_ARENA_GUIDE(5, CALLER_EV_ID)
;6.説明終了後
CALL QST_QUEST_16_RECEPTION_MESSAGE_ARENA_GUIDE(6, CALLER_EV_ID)

;------------
;-- 後処理
;------------
;説明を聞いたフラグON
CALL QST_QUEST_16_SET_FLAG_EXPLAINED(1)
;ログを更新
CALL QST_QUEST_16_PRINT_LOG()

;---------------------------
;EV1 受付＠対戦相手ガチャ
;---------------------------
@QST_QUEST_16_EVENT_1_SHUFFLE_ENEMY
#DIM CONST EVENT_ID = 1

;メッセージ表示(1.受付応対)
CALL QST_QUEST_16_RECEPTION_MESSAGE_SHUFFLE_ENEMY(1)
CALL ASK_YN(RESULTS:0, RESULTS:1)
IF RESULT
	;メッセージ表示(2.冷やかし)
	CALL QST_QUEST_16_RECEPTION_MESSAGE_SHUFFLE_ENEMY(2)
	RETURN
ENDIF

;メッセージ表示(3.対戦相手の変更)
CALL QST_QUEST_16_RECEPTION_MESSAGE_SHUFFLE_ENEMY(3)
CALL ASK_MULTI_ANNOTATION(RESULTS:0, RESULTS:1, RESULTS:2, RESULTS:3)
IF RESULT
	;メッセージ表示(4.変更キャンセル)
	CALL QST_QUEST_16_RECEPTION_MESSAGE_SHUFFLE_ENEMY(4)
	RETURN
ENDIF

;対戦相手ガチャループ
DO
	;抽選実行可否判定
	IF MONEY < QUEST_16_SHUFFLE_COST
		;メッセージ表示(5.料金不足)
		CALL QST_QUEST_16_RECEPTION_MESSAGE_SHUFFLE_ENEMY(5)
		BREAK
	ENDIF
	;料金支払い
	CALL QST_CHANGE_ITEM(@"MONEY,-{QUEST_16_SHUFFLE_COST},")
	;メッセージ表示(6.ガチャ実行)
	CALL QST_QUEST_16_RECEPTION_MESSAGE_SHUFFLE_ENEMY(6)
	;抽選実行
	CALL QST_QUEST_16_SET_ENEMY()
	;ログを更新
	CALL QST_QUEST_16_PRINT_LOG()
	;メッセージ表示(7.結果確認)
	CALL QST_QUEST_16_RECEPTION_MESSAGE_SHUFFLE_ENEMY(7)
	;再抽選選択
	CALL ASK_MULTI_ANNOTATION(RESULTS:0, RESULTS:1, RESULTS:2, RESULTS:3)
	IF RESULT
		;メッセージ表示(8.変更確定)
		CALL QST_QUEST_16_RECEPTION_MESSAGE_SHUFFLE_ENEMY(8)
		BREAK
	ENDIF
LOOP 1

;-------------------------------------------------
;EV3 試合開始
;-------------------------------------------------
@QST_ADD_EVENT_QUEST_16_EVENT_3
; #region EV3
#DIMS EVENT_TRIGGER   = "EVENT_SLOT"
#DIMS EVENT_SLOT_NAME = "試合開始！"
VARSET RESULTS
RESULTS:0 = %EVENT_TRIGGER%
RESULTS:1 = %EVENT_SLOT_NAME%

;-------------------------
;EV3 試合開始＠メイン処理
;-------------------------
@QST_QUEST_16_EVENT_3()
#DIM CONST EVENT_ID = 3

;------------------------
;-- 説明を聞いていない
;------------------------
CALL QST_QUEST_16_GET_FLAG_EXPLAINED()
IF !RESULT
	;ルール説明
	CALL QST_QUEST_16_EVENT_1_ARENA_GUIDE(EVENT_ID)
ENDIF

;----------------
;-- 興行終了済
;----------------
CALL QST_QUEST_16_GET_OUT_TIME()
IF RESULT
	;帰宅選択処理
	CALL QST_QUEST_16_GO_HOME(EVENT_ID)
	;試合処理に進まない
	RETURN
ENDIF

;対戦回数を加算
;※ 試合終了後に加算するように変更
;CALL QST_QUEST_16_ADD_FLAG_MATCH_COUNT()

;試合中フラグON
QUEST_16_IN_COMBAT = 1

;アリーナへ移動
CALL HO_MOVE_MASTER(QUEST_16_ROOM_ID_ARENA)

;試合処理を実行(QUEST_16_アリーナ_試合.ERB)
CALL QST_QUEST_16_BATTLE()
; #endregion

;-------------------------------------------------
;EV4 勝利、勝利調教後に直接呼ばれる
;・「QUEST_16_アリーナ_試合.ERB」の処理後に呼ばれる
;-------------------------------------------------
; #region EV4
@QST_QUEST_16_EVENT_4(TRAIN_STATE = QUEST_16_DO_TRAIN)
#DIM TRAIN_STATE
#DIM CONST EVENT_ID = 4
#DIM DYNAMIC ENEMY_RANK
#DIM DYNAMIC ディナリ基礎値
#DIM DYNAMIC 名誉点基礎値
#DIM DYNAMIC ディナリ
#DIM DYNAMIC 名誉点
#DIM DYNAMIC STREAK_BONUS

;メッセージ表示(6.勝利、勝利調教後)
CALL QST_QUEST_16_MESSAGE_CONBAT_WIN(6)

;敵ランクから報酬の基礎値を決定
ENEMY_RANK = TOINT(QST_GET_FLAGMAP("難易度"))
ディナリ基礎値 = QUEST_16_LIST_REWARD_GOLD:ENEMY_RANK
名誉点基礎値   = QUEST_16_LIST_REWARD_HONOR:ENEMY_RANK

;報酬に連勝ボーナスを反映
STREAK_BONUS = 100 + (QUEST_16_STREAK_COUNT * QUEST_16_STREAK_BONUS_RATE)
ディナリ = FTIMES(ディナリ基礎値, STREAK_BONUS)
名誉点   = FTIMES(名誉点基礎値  , STREAK_BONUS)

;報酬の獲得
CALL QST_CHANGE_ITEM(@"MONEY,{ディナリ},名誉点,{名誉点},")
;デバッグ用表示：報酬の内訳を表示
[IF_DEBUG]
PRINTSL @"ディナリ：{ディナリ} ＝ {ディナリ基礎値} × {STREAK_BONUS}" + "[%]"
PRINTSW @"名誉点  ：{名誉点} ＝ {名誉点基礎値} × {STREAK_BONUS}" + "[%]"
[ENDIF]

;連勝回数をカウント
QUEST_16_STREAK_COUNT += 1

;試合終了時共通処理
CALL QST_QUEST_16_MATCH_END()

; #endregion

;-------------------------------------------------
;EV5 敗北、敗北調教後に直接呼ばれる
;・「QUEST_16_アリーナ_試合.ERB」の処理後に呼ばれる
;-------------------------------------------------
; #region EV5
@QST_QUEST_16_EVENT_5(TRAIN_STATE = QUEST_16_DO_TRAIN)
#DIM TRAIN_STATE
#DIM CONST EVENT_ID = 5
#DIM DYNAMIC ENEMY_RANK
#DIM DYNAMIC ディナリ

;メッセージ表示(3.敗北、敗北調教後)
CALL QST_QUEST_16_MESSAGE_CONBAT_LOSE(3)

;敵ランクから罰金を決定して資金を減らす
ENEMY_RANK = TOINT(QST_GET_FLAGMAP("難易度"))
ディナリ = QUEST_16_LIST_PENALTY_GOLD:ENEMY_RANK
CALL QST_CHANGE_ITEM(@"MONEY,{ディナリ},")

;連勝回数をリセット
QUEST_16_STREAK_COUNT = 0

;試合終了時共通処理
CALL QST_QUEST_16_MATCH_END()
; #endregion

;---------------------------
;EV4,5 試合終了時共通処理
;---------------------------
@QST_QUEST_16_MATCH_END()
#DIM DYNAMIC TARGET_ID
#DIM DYNAMIC L_CNT
#DIMS DYNAMIC MAP_ARENA
#DIMS DYNAMIC MAP_BLEACHERS_L
#DIMS DYNAMIC MAP_BLEACHERS_R

;対戦回数を加算
CALL QST_QUEST_16_ADD_FLAG_MATCH_COUNT()

;興行終了後は意味がないイベントを使用できないようにする
;・現状無効化するのはデバックモード用のイベントのみ
;　通常イベントも大概やれることはないが、メッセージ表示があるので無効化しない
[IF_DEBUG]
CALL QST_QUEST_16_GET_OUT_TIME()
IF RESULT
	;選択イベント「対戦相手の選択」を無効化
	CALL QST_DEACTIVATE_EVENT(QUEST_16_EV_ID_SELECT_ENEMY)
	;選択イベント「時間を飛ばす」を無効化
	CALL QST_DEACTIVATE_EVENT(QUEST_16_EV_ID_SKIP_TIME)
ENDIF
[ENDIF]

;体力0のキャラの体力を1にする
;・陵辱後、行動不能のままだと面倒なので無理やり起こす
FOR L_CNT, 0, QST_PARTYNUM
	TARGET_ID = TOINT(LIST_GET(_LIST_QST_PARTY, L_CNT))
	IF BASE:TARGET_ID:体力 == 0
		;メッセージ表示なしで回復
		CALL QST_CHANGE_HP(TARGET_ID, 1, 0)
	ENDIF
NEXT

;アリーナのエリア効果を観客席にコピーする
MAP_ARENA       '= @"MAP_{QUEST_16_ROOM_ID_ARENA}_ROOM_EFFECT"
MAP_BLEACHERS_L '= @"MAP_{QUEST_16_ROOM_ID_BLEACHERS_L}_ROOM_EFFECT"
MAP_BLEACHERS_R '= @"MAP_{QUEST_16_ROOM_ID_BLEACHERS_R}_ROOM_EFFECT"
CALL QST_QUEST_16_COPY_ROOM_EFFECT(MAP_ARENA, MAP_BLEACHERS_L)
CALL QST_QUEST_16_COPY_ROOM_EFFECT(MAP_ARENA, MAP_BLEACHERS_R)

;試合中フラグOFF
QUEST_16_IN_COMBAT = 0

;受付に戻る
CALL HO_MOVE_MASTER(QUEST_16_ROOM_ID_RECEPTION)

;ゲーム内時刻を更新
CALL QST_QUEST_16_SET_TIME()

;次の対戦相手を決定＆ログに表示
CALL QST_QUEST_16_SET_ENEMY()
CALL QST_QUEST_16_PRINT_LOG()

;-------------------------------------------------
;EV6 出口
;-------------------------------------------------
@QST_ADD_EVENT_QUEST_16_EVENT_6
#DIMS CONST EVENT_TRIGGER = "ENTER_ROOM"
RESULTS = %EVENT_TRIGGER%

;-------------------------
;EV6 出口＠メイン処理
;-------------------------
@QST_QUEST_16_EVENT_6
#DIM CONST EVENT_ID = 6

;----------------
;-- 地の文表示
;----------------
CALL QST_QUEST_16_MESSAGE_DESCRIPTIVE_PART(EVENT_ID)

;------------------
;-- 帰宅選択処理
;------------------
CALL QST_QUEST_16_GO_HOME(EVENT_ID)
;帰宅しなかった場合は受付に戻る
SIF !RESULT
	CALL HO_MOVE_MASTER(QUEST_16_ROOM_ID_RECEPTION)

;-------------------------------------------------
;EV7 アリーナ
;-------------------------------------------------
@QST_ADD_EVENT_QUEST_16_EVENT_7
#DIMS EVENT_TRIGGER = "ENTER_ROOM"
RESULTS = %EVENT_TRIGGER%

;-------------------------
;EV7 アリーナ＠メイン処理
;-------------------------
@QST_QUEST_16_EVENT_7
#DIM CONST EVENT_ID = 7

;戦闘中は処理なし
SIF QUEST_16_IN_COMBAT
	RETURN

;----------------
;-- 地の文表示
;----------------
CALL QST_QUEST_16_MESSAGE_DESCRIPTIVE_PART(EVENT_ID)

;------------------------
;-- 説明を聞いていない
;------------------------
CALL QST_QUEST_16_GET_FLAG_EXPLAINED()
IF !RESULT
	;メッセージ表示(2.説明を聞いていない)
	CALL QST_QUEST_16_RECEPTION_MESSAGE_STOPS_ENTRY(2)
	;受付に戻ってルール説明
	CALL HO_MOVE_MASTER(QUEST_16_ROOM_ID_RECEPTION)
	CALL QST_QUEST_16_EVENT_1_ARENA_GUIDE(EVENT_ID)
	RETURN
ENDIF

;----------------
;-- 興行終了済
;----------------
CALL QST_QUEST_16_GET_OUT_TIME()
IF RESULT
	;メッセージ表示(3.興行終了済)
	CALL QST_QUEST_16_RECEPTION_MESSAGE_STOPS_ENTRY(3)
	;受付に戻る
	CALL HO_MOVE_MASTER(QUEST_16_ROOM_ID_RECEPTION)
	RETURN
ENDIF

;------------
;-- 通常時
;------------
;メッセージ表示(1.通常)
CALL QST_QUEST_16_RECEPTION_MESSAGE_STOPS_ENTRY(1)
;受付に戻る
CALL HO_MOVE_MASTER(QUEST_16_ROOM_ID_RECEPTION)

;-------------------------------------------------
;EV8 医務室
;-------------------------------------------------
@QST_ADD_EVENT_QUEST_16_EVENT_8
#DIMS EVENT_TRIGGER = "ENTER_ROOM"
RESULTS = %EVENT_TRIGGER%

;-------------------------
;EV8 医務室＠メイン処理
;-------------------------
@QST_QUEST_16_EVENT_8
#DIM CONST EVENT_ID = 8

;----------------
;-- 地の文表示
;----------------
CALL QST_QUEST_16_MESSAGE_DESCRIPTIVE_PART(EVENT_ID)

;----------------
;-- 興行終了済
;----------------
CALL QST_QUEST_16_GET_OUT_TIME()
IF RESULT
	;興行終了後の回復処理を実行
	CALL QST_QUEST_16_HEAL_OUT_TIME()
	RETURN
ENDIF

;------------
;-- 通常時
;------------
;回復処理を実行
CALL QST_QUEST_16_HEAL_IN_TIME()

;-------------------------------------------------
;EV9 観客席
;-------------------------------------------------
@QST_ADD_EVENT_QUEST_16_EVENT_9
#DIMS EVENT_TRIGGER = "ENTER_ROOM"
RESULTS = %EVENT_TRIGGER%

;-------------------------
;EV9 観客席＠メイン処理
;-------------------------
@QST_QUEST_16_EVENT_9
#DIM CONST EVENT_ID = 9
#DIMS DYNAMIC ATTACKER_NAME
#DIMS DYNAMIC DEFENDER_NAME
#DIM  DYNAMIC エロ優先
#DIM  DYNAMIC OUT_TIME
#DIM  DYNAMIC ANSWER_VALUE

;------------------
;-- エロ優先判定
;------------------
;・左の観客席で観戦するとエロ優先モードになる。
IF HO_MASTER現在地 == QUEST_16_ROOM_ID_BLEACHERS_L
	エロ優先 = 1
ELSE
	エロ優先 = 0
ENDIF

;----------------
;-- 地の文表示
;----------------
CALL QST_QUEST_16_MESSAGE_DESCRIPTIVE_PART(EVENT_ID)

;興行終了判定
CALL QST_QUEST_16_GET_OUT_TIME()
OUT_TIME = RESULT

;------------
;-- 興行中
;------------
IF !OUT_TIME
	IF エロ優先
		;メッセージ表示(1.エロ優先モード表示)
		CALL QST_QUEST_16_MESSAGE_SPECTATOR_MODE(1)
	ENDIF
	;メッセージ表示(2.観戦選択肢前)
	CALL QST_QUEST_16_MESSAGE_SPECTATOR_MODE(2)

	;観戦モード中フラグON
	;・対戦相手の選出時に使用するのでこの時点でONしておく
	QUEST_16_SPECTATOR_MODE = 1

	;選択前に対戦カードを決定
	CALL QST_QUEST_16_SPECTATOR_MODE_SET_MATCH(エロ優先)
	DO
		;メッセージ表示(3.観戦選択肢)
		CALL QST_QUEST_16_MESSAGE_SPECTATOR_MODE(3)
		CALL ASK_MULTI_ANNOTATION(RESULTS:0, RESULTS:1, RESULTS:2, RESULTS:3, RESULTS:4, RESULTS:5)
		ANSWER_VALUE = RESULT
		;対戦カードの指定【デバッグモード専用】
		[IF_DEBUG]
		IF ANSWER_VALUE == 2
			CALL QST_QUEST_16_SPECTATOR_MODE_SELECT_MATCH(エロ優先)
		ENDIF
		[ENDIF]
		;対戦カードの指定をした場合は確認に戻る
	LOOP ANSWER_VALUE == 2

	;----------------
	;-- 興行終了済
	;----------------
ELSE
	;メッセージ表示(4.興行終了時)
	CALL QST_QUEST_16_MESSAGE_SPECTATOR_MODE(4)
	;選択なしで戻る
	ANSWER_VALUE = 1
ENDIF

;----------------
;-- 観戦しない
;----------------
IF ANSWER_VALUE
	;メッセージ表示(5.観戦キャンセル)
	CALL QST_QUEST_16_MESSAGE_SPECTATOR_MODE(5)

	;観戦モード中フラグOFF
	QUEST_16_SPECTATOR_MODE = 0

	;受付に戻る
	CALL HO_MOVE_MASTER(QUEST_16_ROOM_ID_RECEPTION)
	RETURN
ENDIF

;----------------
;-- 観戦する
;----------------
;観戦処理を実行(「QUEST_16_アリーナ_観戦モード.ERB」の処理へ移動)
CALL QST_QUEST_16_SPECTATOR_MODE()

;-------------------------------------------------
;EV10 観戦、観戦調教後処理
;・「QUEST_16_アリーナ_観戦モード.ERB」の処理後に呼ばれる
;-------------------------------------------------
@QST_QUEST_16_EVENT_10(TRAIN_STATE = QUEST_16_DO_TRAIN)
#DIM TRAIN_STATE
#DIM CONST EVENT_ID = 10
#DIMS DYNAMIC MAP_ARENA
#DIMS DYNAMIC MAP_BLEACHERS_L
#DIMS DYNAMIC MAP_BLEACHERS_R

;メッセージ表示(9～12.観戦、観戦調教後)
CALL QST_QUEST_16_MESSAGE_SPECTATOR_MODE(9 + TRAIN_STATE)

;観戦調教用モブの削除
CALL QST_QUEST_16_SPECTATOR_MODE_DELETE_MOB()

;観戦モード中フラグOFF
QUEST_16_SPECTATOR_MODE = 0

;観客席のエリア効果をアリーナと反対側の観客席にコピーする
MAP_ARENA       '= @"MAP_{QUEST_16_ROOM_ID_ARENA}_ROOM_EFFECT"
MAP_BLEACHERS_L '= @"MAP_{QUEST_16_ROOM_ID_BLEACHERS_L}_ROOM_EFFECT"
MAP_BLEACHERS_R '= @"MAP_{QUEST_16_ROOM_ID_BLEACHERS_R}_ROOM_EFFECT"
SELECTCASE HO_MASTER現在地
	CASE QUEST_16_ROOM_ID_BLEACHERS_L
		CALL QST_QUEST_16_COPY_ROOM_EFFECT(MAP_BLEACHERS_L, MAP_ARENA)
		CALL QST_QUEST_16_COPY_ROOM_EFFECT(MAP_BLEACHERS_L, MAP_BLEACHERS_R)
	CASE QUEST_16_ROOM_ID_BLEACHERS_R
		CALL QST_QUEST_16_COPY_ROOM_EFFECT(MAP_BLEACHERS_R, MAP_ARENA)
		CALL QST_QUEST_16_COPY_ROOM_EFFECT(MAP_BLEACHERS_R, MAP_BLEACHERS_L)
ENDSELECT

;受付に戻る
CALL HO_MOVE_MASTER(QUEST_16_ROOM_ID_RECEPTION)
RETURN

;-------------------------------------------------
;EV100 対戦相手の選択【デバッグモード用】
;-------------------------------------------------
[IF_DEBUG]
@QST_ADD_EVENT_QUEST_16_EVENT_100
#DIMS EVENT_TRIGGER   = "EVENT_SLOT"
#DIMS EVENT_SLOT_NAME = "DEBUG: 対戦相手の選択"
VARSET RESULTS
RESULTS:0 = %EVENT_TRIGGER%
RESULTS:1 = %EVENT_SLOT_NAME%
[ENDIF]

;-------------------------
;EV100 対戦相手の指定＠メイン処理
;-------------------------
[IF_DEBUG]
@QST_QUEST_16_EVENT_100
#DIM CONST EVENT_ID = 100

;対戦相手の選択
CALL QST_QUEST_16_SELECT_ENEMY()
;ログを更新
CALL QST_QUEST_16_PRINT_LOG()
[ENDIF]

;-------------------------------------------------
;EV101 時間を飛ばす【デバッグモード用】
;-------------------------------------------------
[IF_DEBUG]
@QST_ADD_EVENT_QUEST_16_EVENT_101
#DIMS EVENT_TRIGGER   = "EVENT_SLOT"
#DIMS EVENT_SLOT_NAME = "DEBUG: 時間を飛ばす"
VARSET RESULTS
RESULTS:0 = %EVENT_TRIGGER%
RESULTS:1 = %EVENT_SLOT_NAME%
[ENDIF]

;-------------------------
;EV101 時間を飛ばす＠メイン処理
;-------------------------
[IF_DEBUG]
@QST_QUEST_16_EVENT_101
#DIM CONST EVENT_ID = 101

;試合終了時の処理を実行
CALL QST_QUEST_16_MATCH_END()
[ENDIF]

;-------------------------------------------------
;EV102 体力を減らす【デバッグモード用】
;-------------------------------------------------
[IF_DEBUG]
@QST_ADD_EVENT_QUEST_16_EVENT_102
#DIMS EVENT_TRIGGER   = "EVENT_SLOT"
#DIMS EVENT_SLOT_NAME = "DEBUG: 体力を減らす"
VARSET RESULTS
RESULTS:0 = %EVENT_TRIGGER%
RESULTS:1 = %EVENT_SLOT_NAME%
[ENDIF]

;-------------------------
;EV102 体力を減らす＠メイン処理
;-------------------------
[IF_DEBUG]
@QST_QUEST_16_EVENT_102
#DIM CONST EVENT_ID = 102
#DIM DYNAMIC TARGET_ID
#DIM DYNAMIC L_CNT

;パーティ全員の体力を1にする
FOR L_CNT, 0, QST_PARTYNUM
	TARGET_ID = TOINT(LIST_GET(_LIST_QST_PARTY, L_CNT))
	BASE:TARGET_ID:体力 = 1
NEXT
[ENDIF]

;-------------------------------------------------
;@QST_QUEST_16_PRINT_LOG
;ログへの定型文出力
;-------------------------------------------------
;region @QST_QUEST_16_PRINT_LOG
@QST_QUEST_16_PRINT_LOG
#DIM DYNAMIC L_CNT
#DIM DYNAMIC LOG_NUM

;ログ用メッセージを取得
CALL QST_QUEST_16_MESSAGE_PRINT_LOG()
LOG_NUM = RESULT

;ログにメッセージを表示
CALL HO_CREAR_LOG()

FOR L_CNT, 0, LOG_NUM
	CALL HO_PRINT_LOG(RESULTS:L_CNT, L_CNT + 1)
NEXT
;#endregion

;-------------------------------------------------
;@QST_QUEST_16_GO_HOME
;帰宅選択処理
;-------------------------------------------------
@QST_QUEST_16_GO_HOME(EVENT_ID)
#DIM EVENT_ID

;メッセージ表示(1.「帰る？」)
CALL QST_QUEST_16_RECEPTION_MESSAGE_GO_HOME(EVENT_ID, 1)
;メッセージ表示(2.選択肢表示)
CALL QST_QUEST_16_RECEPTION_MESSAGE_GO_HOME(EVENT_ID, 2)
CALL ASK_YN(RESULTS:0, RESULTS:1)
IF !RESULT
	;メッセージ表示(3.帰る)
	CALL QST_QUEST_16_RECEPTION_MESSAGE_GO_HOME(EVENT_ID, 3)
	;クエスト終了処理
	CALL QST_QUEST_16_QUEST_EXIT()
	RETURN 1
ELSE
	;メッセージ表示(4.帰らない)
	CALL QST_QUEST_16_RECEPTION_MESSAGE_GO_HOME(EVENT_ID, 4)
	RETURN 0
ENDIF

;-------------------------------------------------
;@QST_QUEST_16_GET_OUT_TIME
;興行が終了したか判定
;-------------------------------------------------
@QST_QUEST_16_GET_OUT_TIME()
;試合回数が上限
CALL QST_QUEST_16_GET_FLAG_MATCH_COUNT()
RETURN RESULT >= QUEST_16_MATCH_COUNT_MAX

;-------------------------------------------------
;@QST_QUEST_16_SET_TIME
;試合回数にあわせてゲーム内時刻を更新
;・試合するごとに時間が進む。
;・移動で時間経過しないようにする。(移動のたびに実行して時間をリセットする)
;-------------------------------------------------
@QST_QUEST_16_SET_TIME()
#DIM DYNAMIC MATCH_COUNT
;試合回数を取得してゲーム内時刻を更新
CALL QST_QUEST_16_GET_FLAG_MATCH_COUNT()
MATCH_COUNT = RESULT
HO_TIME = HO_CLOCK(QUEST_16_TIMETABLE:MATCH_COUNT)

;-------------------------------------------------
;@QST_QUEST_16_RESET_HUNGER_LEVEL
;空腹度のリセット
;・クエスト中に[STATUS]を開いたときに空腹と表示されないようにする
;  今度は常に満腹表示になるが。
;-------------------------------------------------
@QST_QUEST_16_RESET_HUNGER_LEVEL()
#DIM DYNAMIC CHARA_ID
#DIM DYNAMIC L_CNT
;パーティメンバーの空腹度を0にする
FOR L_CNT, 0, QST_PARTYNUM
	CHARA_ID = TOINT(LIST_GET(_LIST_QST_PARTY, L_CNT))
	TCVAR:CHARA_ID:空腹度 = 0
NEXT

;-------------------------------------------------
;@QST_QUEST_16_COPY_ROOM_EFFECT
;エリア効果の移動
;-------------------------------------------------
@QST_QUEST_16_COPY_ROOM_EFFECT(SRC_MAP, DST_MAP)
#DIMS SRC_MAP	;Source Map
#DIMS DST_MAP	;Destination Map
#DIMS DYNAMIC LIST_EFFECT_NAME, HO_MAX_EFFECTNUM
#DIMS DYNAMIC EFFECT_NAME
#DIM  DYNAMIC EFFECT_NUM
#DIM  DYNAMIC EFFECT_VALUE
#DIM  L_CNT

;デバッグ用表示:移動元の確認
[IF_DEBUG]
PRINTFORML 移動元:%SRC_MAP%
CALL QST_QUEST_16_PRINT_ROOM_EFFECT(SRC_MAP)
WAIT
[ENDIF]

;エリア効果を移動
MAP_GETKEYS SRC_MAP, LIST_EFFECT_NAME, 1
EFFECT_NUM = RESULT
IF EFFECT_NUM > 0
	FOR L_CNT, 0, EFFECT_NUM
		EFFECT_NAME '= LIST_EFFECT_NAME:LOCAL
		EFFECT_VALUE = TOINT(MAP_GET(SRC_MAP, EFFECT_NAME))
		MAP_SET DST_MAP, EFFECT_NAME, TOSTR(EFFECT_VALUE)
	NEXT
ELSE
	;移動元が空の場合は移動先を削除
	MAP_CLEAR DST_MAP
ENDIF

;デバッグ用表示:移動先の確認
[IF_DEBUG]
PRINTFORML 移動先:%DST_MAP%
CALL QST_QUEST_16_PRINT_ROOM_EFFECT(DST_MAP)
WAIT
[ENDIF]

;-------------------------------------------------
;@QST_QUEST_16_PRINT_ROOM_EFFECT
;エリア効果の表示【デバッグモード用】
;-------------------------------------------------
[IF_DEBUG]
@QST_QUEST_16_PRINT_ROOM_EFFECT(MAP)
#DIMS MAP
#DIMS DYNAMIC LIST_EFFECT_NAME, HO_MAX_EFFECTNUM
#DIMS DYNAMIC EFFECT_NAME
#DIM  DYNAMIC EFFECT_NUM
#DIM  DYNAMIC EFFECT_VALUE
#DIM  L_CNT
MAP_GETKEYS MAP, LIST_EFFECT_NAME, 1
EFFECT_NUM = RESULT
IF EFFECT_NUM > 0
	FOR L_CNT, 0, EFFECT_NUM
		EFFECT_NAME '= LIST_EFFECT_NAME:LOCAL
		EFFECT_VALUE = TOINT(MAP_GET(MAP, EFFECT_NAME))
		PRINTFORML EFFECT[{L_CNT}] %EFFECT_NAME:L_CNT%: {EFFECT_VALUE}
	NEXT
ELSE
	PRINTFORML EFFECT: NONE
ENDIF
[ENDIF]

;-------------------------------------------------
;@QST_QUEST_16_SET_ONLY_MALE_PARTY
;パーティが男性のみか判定
;・「男同士のコマンドフィルタ」が有効な場合に「男のみ×男のみの調教」が発生しないようにするための処理
;・自パーティの構成はクエスト中変化しないので最初に1回だけ判断して記憶
;-------------------------------------------------
@QST_QUEST_16_SET_ONLY_MALE_PARTY()
#DIM DYNAMIC CHARA_ID
#DIM DYNAMIC L_CNT
#DIM DYNAMIC ONLY_MALE
ONLY_MALE = 1
FOR L_CNT, 0, QST_PARTYNUM
	CHARA_ID = TOINT(LIST_GET(_LIST_QST_PARTY, L_CNT))
	IF IS_FEMALE(CHARA_ID)
		ONLY_MALE = 0
		BREAK
	ENDIF
NEXT
QUEST_16_ONLY_MALE_PARTY = ONLY_MALE

;-------------------------------------------------
;@QST_QUEST_16_IS_ONLY_MALE_TRAIN
;男性のみの調教になるか判定
;・「男同士のコマンドフィルタ」が有効な場合に「男のみ×男のみの調教」が発生しないようにするための処理
;・対戦相手側が男のみの編成の場合の調教が発生するかの判定で使用する想定
;-------------------------------------------------
@QST_QUEST_16_IS_ONLY_MALE_TRAIN()
#FUNCTION
#DIM DYNAMIC ONLY_MALE
;フィルタが有効な場合
;・自パーティが男性のみの場合は「男のみ×男のみの調教」になると判定
;・観戦モード中は自パーティの情報は参照しない
IF CONFIG:201 && (QUEST_16_ONLY_MALE_PARTY && !QUEST_16_SPECTATOR_MODE)
	ONLY_MALE = 1
ELSE
	ONLY_MALE = 0
ENDIF
RETURNF ONLY_MALE

;-------------------------------------------------
;@QST_QUEST_16_GET_RAND_SEX
;対戦相手の性別のランダム判定
;・「男同士のコマンドフィルタ」が有効な場合に「男のみ×男のみの調教」が発生しないようにするための処理
;・調教時に性別がランダムで変わるキャラの性別判定で使用する想定
;・引数[DO_TRAIN]は調教する側かどうか(観戦モード時に使用)
;・引数[MALE_RATE]は女性固定にしない場合に男性になる確率(千分率)
;-------------------------------------------------
@QST_QUEST_16_GET_RAND_SEX(DO_TRAIN, MALE_RATE = 500)
#FUNCTION
#DIM DO_TRAIN
#DIM MALE_RATE
#DIM DYNAMIC SEX
;フィルタが有効な場合
;・自パーティに女性がいない場合は女性固定
;・観戦モードで調教される側の場合は女性固定
IF CONFIG:201 && ((!QUEST_16_SPECTATOR_MODE && QUEST_16_ONLY_MALE_PARTY) || (QUEST_16_SPECTATOR_MODE && !DO_TRAIN))
	SEX = 1
	;フィルタが無効 or 性別を固定しない場合
	;・ランダムで性別を決定
ELSE
	SEX = RAND:1000 < MALE_RATE ? 0 # 1
ENDIF
RETURNF SEX

;-------------------------------------------------
;@QST_QUEST_16_INIT_GLOBAL_VARIABLE
;広域変数の初期化
;-------------------------------------------------
@QST_QUEST_16_INIT_GLOBAL_VARIABLE()
QUEST_16_ONLY_MALE_PARTY    = 0
QUEST_16_SPECTATOR_MODE     = 0
QUEST_16_DISAGREE_CHARA_ID  = -1
QUEST_16_SP_TRAIN_CHR_ID_ST = -1
QUEST_16_HEAL_COUNT_INTIME  = 0
QUEST_16_HEAL_COUNT_OUTTIME = 0

;-------------------------------------------------
;@QST_QUEST_16_***_FLAG_EXPLAINED
;イベントフラグ(セーブあり)管理：EV1.説明を聞いたフラグ
;-------------------------------------------------
@QST_QUEST_16_GET_FLAG_EXPLAINED()
#DIM CONST EVENT_ID = 1
CALL QST_GET_SV_EVENT_FLAG(EVENT_ID)
RETURN RESULT

@QST_QUEST_16_SET_FLAG_EXPLAINED(FLAG_VALUE = 1)
#DIM FLAG_VALUE
#DIM CONST EVENT_ID = 1
CALL QST_SET_SV_EVENT_FLAG(EVENT_ID, FLAG_VALUE)

;-------------------------------------------------
;@QST_QUEST_16_***_FLAG_MATCH_COUNT
;イベントフラグ管理：EV1.試合回数
;-------------------------------------------------
@QST_QUEST_16_GET_FLAG_MATCH_COUNT()
#DIM CONST EVENT_ID = 1
CALL QST_GET_EVENT_FLAG(EVENT_ID)
RETURN RESULT

@QST_QUEST_16_SET_FLAG_MATCH_COUNT(MATCH_COUNT)
#DIM MATCH_COUNT
#DIM CONST EVENT_ID = 1
CALL QST_SET_EVENT_FLAG(EVENT_ID, MATCH_COUNT)

@QST_QUEST_16_ADD_FLAG_MATCH_COUNT(ADD_COUNT = 1)
#DIM ADD_COUNT
#DIM CONST EVENT_ID = 1
CALL QST_GET_EVENT_FLAG(EVENT_ID)
CALL QST_SET_EVENT_FLAG(EVENT_ID, RESULT + ADD_COUNT)


code:
;-------------------------------------------------------------------------------
;QUEST_16:アリーナ
;メッセージ表示
;QST_QUEST_16_MESSAGE_*****
;-------------------------------------------------------------------------------
;・テキスト量が多いので処理とテキストを分離。
;・SELECTCASEを複数入れ子で使いたくないので判定値を連結して使用する。
;  ネストが深くなりすぎたりメッセージごとネストが違うと読みづらいので。

;-------------------------------------------------
;@QST_QUEST_16_MESSAGE_SUMALLY1
;クエスト概要欄(右上段)用メッセージ
;-------------------------------------------------
@QST_QUEST_16_MESSAGE_SUMALLY1()

VARSET RESULTS
;10行まで(RESULTS:0～RESULTS:9)
RESULTS:0 '= "闘技場文化は古帝国中期に絶頂を迎え、各地の属州に設けられた円形闘技場では"
RESULTS:1 '= "戦いや殺しが娯楽として供され民衆を熱狂させた。大戦が末期を迎え人的資源が払底すると"
RESULTS:2 '= "次第に廃れ、帝国の滅亡とともに消えていった"
RESULTS:4 '= "しかしながら民衆の根強い人気に支えられ、今なお存続している地域もある"
RESULTS:5 '= "建前はともかくとして、いつの世も流血と暴力は魅力的な娯楽であり続けたのである"
RESULTS:7 '= "さて、ここソドミアの円形闘技場は観客や闘士達が通い詰め、今日も満員御礼だ"
RESULTS:8 '= "金か名誉か、あるいは後ろ暗い欲求か。いずれもこの場所であれば大手を振って満たせるだろう"
RESULTS:9 '= "しかし敗北者となれば、自身がその捌け口に成り下がることも忘れてはいけない……"

;-------------------------------------------------
;@QST_QUEST_16_MESSAGE_SUMALLY2
;クエスト概要欄(右下段)用メッセージ
;-------------------------------------------------
@QST_QUEST_16_MESSAGE_SUMALLY2()

VARSET RESULTS
;7行まで(RESULTS:0～RESULTS:6)
RESULTS:0 '= @"難易度：@C:{カラー_注意}@%"★" * QUEST_16_DIFFICULTY% ～@/C@"
RESULTS:1 '= @"報酬：%TOSTR(QUEST_16_REWARD_GOLD, "#,##0")%ディナリ～"

RESULTS:2 '= @"推奨パーティ人数:1名～{QUEST_16_PARTY_LIMIT}名　　　"
RESULTS:2 += @"推奨平均戦闘値：{QUEST_16_RECOMMENDED}以上　　　　"
RESULTS:2 += @"備考:定期性クエスト({QUEST_16_COOLTIME}期毎)"

RESULTS:3 '= @"@C:{カラー_選択不可}@「俺も若い頃はやんちゃしたもんだが、まぁ程々にしておくことだな」@/C@"
RESULTS:4 '= @"@C:{カラー_選択不可}@「あの場にいるとまぁ、見てる方も闘ってる方もみーんなおかしくなっちまう」@/C@"
RESULTS:5 '= @"@C:{カラー_選択不可}@「血塗れになった自分の手を見て我に返れるならまぁマシな部類だ」@/C@"
RESULTS:6 '= @"@C:{カラー_選択不可}@「のめり込んだ奴は大抵おかしくなったまま、ある日ぽっくり逝っちまう」@/C@"

;-------------------------------------------------
;@QST_QUEST_16_MESSAGE_CANNOT_START
;クエスト開始不可メッセージ(開始できない理由表示)
;-------------------------------------------------
@QST_QUEST_16_MESSAGE_CANNOT_START()
CALLF TAG_PRINT(@"このクエストの参加人数は@C:{カラー_注意}@{QUEST_16_PARTY_LIMIT}人まで@/C@です", 1)
WAIT

;-------------------------------------------------
;@QST_QUEST_16_MESSAGE_INTRO
;クエスト導入メッセージ
;-------------------------------------------------
@QST_QUEST_16_MESSAGE_INTRO(MESSAGE_NO, PATTERN_NO = 0)
#DIM  MESSAGE_NO
#DIM  PATTERN_NO
#DIMS DYNAMIC MESSAGE_ID

;判定値を連結
IF !PATTERN_NO
	MESSAGE_ID '= @"{MESSAGE_NO}"
ELSE
	MESSAGE_ID '= @"{MESSAGE_NO}-{PATTERN_NO}"
ENDIF

SELECTCASE MESSAGE_ID
	;導入メッセージ前半
	CASE "1-1"
		PRINTFORML 東方辺境随一の歓楽街があることで知られるここソドミアの、市街地の中心には巨大な円形の闘技場が立っている
		PRINTFORMW 乳白色の石灰岩で建築された闘技場は、この街がかつて古帝国時代の植民市の一つであったことを物語っている
		PRINTL
		PRINTFORMW かつての皇帝を模した石像が並び立つ門をくぐると、観覧席がけたたましく沸くのが聞こえた
		PRINTFORMW 帝国が滅亡し、剣闘の習慣が廃れていった後も、この街では相変わらず流血を好む市民の娯楽として愛され続けているようだ
		PRINTL
		PRINTFORML あなたが観覧席に立つと、アリーナの左手の門から奴隷や囚人が引き立てられて来るのが見えた
		PRINTFORMW 皆ボロボロの粗末な衣服を身に纏い、頼りのない朽ちた剣や棒切れを持たされている
		PRINTFORML
		PRINTFORMW 右手の門が開くと、ずしりと腹に響く足音が鳴り響く
		PRINTFORMW 現れたのは象ほどの体格もある獣だ。しかしその巨体以上に、特異な見た目が目を引いた
		PRINTFORMW それは獅子と山羊、竜に似た三つの頭を持ち、目の前に集う憐れな一団を睥睨している
		PRINTFORML
		PRINTFORMW 「さぁさぁご覧あれ！　西門に集うは不運な奴隷に犯罪者！神に愛されぬ憐れで卑小な者たち」
		PRINTFORMW 「彼らが奇跡的にも勝利すれば、その勇気に免じて富と自由が与えられるでしょう！」
		PRINTFORML
		PRINTFORMW 「しかし、しかし、父なる神の慈悲とは高く付くもの。彼らに与えられたる試練の名はキマイラ！」
		PRINTFORMW 「南方大陸に轟くかの魔獣の恐ろしさは……言うまでもありますまい！」
		PRINTFORML
		PRINTFORMW 観衆は口々に奴隷や罪人を嘲り、囃し立てる。誰も彼も憐れな挑戦者が焼かれ、八つ裂きにされる様を見たがっていた
		PRINTFORMW 一方、アリーナに立つ彼らは皆キマイラの威に圧倒され、震え立ち竦んでいる
		PRINTL
		PRINTFORMW しかし犬人の一人が意を決したように剣を握り締め、雄叫びを上げなかばがむしゃらにキマイラに斬り掛かった！
		PRINTL

	;導入メッセージ後半
	CASE "1-2"
		PRINTL
		PRINTFORMW 飢えたキマイラはその獰猛さを如何なく発揮した
		PRINTFORMW 山羊の胴体から振り下ろされる巨大な蹄は、決死の抵抗を図った犬人を呆気なく、容赦なく踏み潰した
		PRINTFORMW 飛び散る鮮血と臓物がアリーナの乾いた砂を濡らし、観衆たちは熱狂の声を上げる
		PRINTFORML
		PRINTFORML なけなしの士気を打ち砕かれ逃げ惑う囚人たちを竜の頭から放たれた猛炎が襲い、肉の焼ける匂いがあなたの鼻をつく
		PRINTFORMW 後は……ただただ一方的な鏖殺であった
		PRINTFORML
		PRINTFORML
		PRINTFORMW ひとしきり続いた見世物の殺戮の後もなお、闘技場は狂気的な熱狂の最中にある
		PRINTFORML あなた達冒険者はこの狂った祭宴に闘士として参加することも出来るし、この場を後にしても良い
		PRINTFORMW もしも勝利することができれば大金と名誉を得られるだろう
		PRINTFORMW しかし敗北すれば……見ての通りだ。闘士としてアリーナに立つ限り、振るうにせよ振るわれるにせよ、あらゆる暴力は正当化される
		PRINTFORML
		PRINTFORMW ――敗北は、あるいは死よりも屈辱的な結果を生むかもしれない

	;導入メッセージ(2回目以降)
	CASE "2"
		PRINTFORMW %QST_LEADER_NAME()%は再びアリーナを訪れた
		PRINTFORMW 市街の中心に立つ闘技場からは割れるような歓声と怒号、そして悲鳴が聞こえてくる…

	;導入メッセージ(注釈)
	CASE "3"
		PRINTL
		PRINTL
		CALL COLOR_PRINTW(@"このクエストは撤退可能だ。限界を感じたら[撤退]コマンドを実行して引き上げよう", カラー_注意)

	;----------------
	;-- 不明な入力
	;----------------
	CASEELSE
		CALL QST_QUEST_16_MESSAGE_ID_ERROR("QST_QUEST_16_MESSAGE_INTRO", MESSAGE_ID)
ENDSELECT

;-------------------------------------------------
;@QST_QUEST_16_MESSAGE_ABORT
;クエスト中断メッセージ
;-------------------------------------------------
@QST_QUEST_16_MESSAGE_ABORT()

PRINTL
PRINTFORMW %QST_LEADER_NAME()%は闘技場を後にした…

;-------------------------------------------------
;@QST_QUEST_16_MESSAGE_DESCRIPTIVE_PART
;各マスで最初に表示する地の文
;・興行終了済だとテキストが変化する
;-------------------------------------------------
@QST_QUEST_16_MESSAGE_DESCRIPTIVE_PART(EVENT_ID)
#DIM  EVENT_ID
#DIMS DYNAMIC MESSAGE_ID

CALL QST_QUEST_16_GET_OUT_TIME()
IF !RESULT
	MESSAGE_ID '= @"{EVENT_ID}"
ELSE
	;OT:Out Time(時間外)
	MESSAGE_ID '= @"{EVENT_ID}-OT"
ENDIF

SELECTCASE MESSAGE_ID
	;----------------------
	;-- EV1 受付係の女性
	;----------------------
	;マス踏んだときのではないがソレっぽいのでココに記載
	CASE "1", "1-OT"
		PRINTFORMW %QST_LEADER_NAME()%はアリーナの受付に足を運んだ
		PRINTFORMW 受付では猫人族の女性が眠たげな顔をしてカウンターに頬杖をついている

	;--------------
	;-- EV6 出口
	;--------------
	CASE "6", "6-OT"
		PRINTFORMW アリーナの出口だ
		PRINTL

	;------------------
	;-- EV7 アリーナ
	;------------------
	CASE "7", "7-OT"
		;地の文なし

	;----------------
	;-- EV8 医務室
	;----------------
	CASE "8"
		PRINTFORMW 医務室は負傷した参加者達でごった返している
		PRINTL
	CASE "8-OT"
		PRINTFORMW 医務室は興行中とは打って変わって閑散としており、医師達が撤収作業をしている
		PRINTL

	;----------------
	;-- EV9 観客席
	;----------------
	CASE "9"
		PRINTFORMW 観客席は大勢の観客で賑わっている
		PRINTL
	CASE "9-OT"
		PRINTFORMW 興行が終わり、観客席は静寂に包まれている
		PRINTL

	;----------------
	;-- 不明な入力
	;----------------
	CASEELSE
		CALL QST_QUEST_16_MESSAGE_ID_ERROR("QST_QUEST_16_MESSAGE_DESCRIPTIVE_PART", MESSAGE_ID)
ENDSELECT

;-------------------------------------------------
;@QST_QUEST_16_MESSAGE_CONBAT_WIN
;勝利メッセージ
;-------------------------------------------------
@QST_QUEST_16_MESSAGE_CONBAT_WIN(MESSAGE_NO, PATTERN_NO = 0)
#DIM MESSAGE_NO
#DIM PATTERN_NO
#DIMS DYNAMIC MESSAGE_ID
#DIMS DYNAMIC 非同意キャラ名

;判定値を連結
IF !PATTERN_NO
	MESSAGE_ID '= @"{MESSAGE_NO}"
ELSE
	MESSAGE_ID '= @"{MESSAGE_NO}-{PATTERN_NO}"
ENDIF

;非同意キャラ名を取得
SIF QUEST_16_DISAGREE_CHARA_ID > 0
	非同意キャラ名 '= ANAME(QUEST_16_DISAGREE_CHARA_ID)

VARSET RESULTS
SELECTCASE MESSAGE_ID
	;----------------------
	;-- 戦闘勝利
	;----------------------
	CASE "1"
		CALL PRINT_NOTICE(@"%QST_LEADER_NAME()%は戦闘に勝利した！")
		PRINTL

	;----------------------
	;-- 勝利調教選択前メッセージ
	;----------------------
	;・調教対象表示前
	CASE "2"
		PRINTFORML 敗北した対戦相手は抵抗を止め、うなだれて降参の意を示している
		PRINTFORML 大会の規定上降参した相手の命を奪うことは禁じられているが、命以外の与奪は勝者に委ねられている
		PRINTL
		PRINTFORMW 対戦相手に敬意を示すも、辱めるも%QST_LEADER_NAME()%の思いのままだ
		PRINTL
	;・勝利調教選択肢
	CASE "3"
		PRINTL
		PRINTL
		;選択肢の項目(と注釈)用のテキストを設定
		RESULTS:0 '= "敬意を示し立ち去る"
		RESULTS:1 '= "※ 名誉点を獲得"
		RESULTS:2 '= "尊厳を辱める"
		RESULTS:3 '= "※ 淫堕点を獲得"

	;----------------------
	;-- 勝利調教しない
	;----------------------
	;・調教しない選択肢を選んだ
	CASE "4-1"
		PRINTFORMW %QST_LEADER_NAME()%は対戦相手に一礼すると踵を返してアリーナを後にした
		PRINTFORMW %QST_LEADER_NAME()%の高潔さを褒め称える声と、お高く止まっていると罵倒する声の双方が次々に背中へ投げられてきた……
	;・調教しようと思ったけど思い直した
	CASE "4-2"
		PRINTFORMW %QST_LEADER_NAME(1)%はハッと我に返り、『こんなことはするべきではない』と思い直した
		PRINTL
		PRINTFORMW %QST_LEADER_NAME(1)%は頭を振ってアリーナを後にした
	;・調教しようと思ったけど止められた
	CASE "4-3"
		PRINTFORMW %QST_LEADER_NAME(1)%は嗜虐心の赴くままに敗者を嬲ろうとする
		PRINTFORMW そんな%QST_LEADER_NAME(1)%を%非同意キャラ名%は留め、そのようなことをするべきではないと諫める
		PRINTFORMW %非同意キャラ名%の同意を得られない以上仕方あるまいと、%QST_LEADER_NAME(1)%は踵を返してアリーナを後にした……

	;----------------------
	;-- 勝利調教する
	;----------------------
	CASE "5"
		PRINTFORMW %QST_LEADER_NAME()%は嗜虐心の赴くままに敗者を嬲ることにした
		PRINTFORMW 観客たちは歓声を上げ、口々に%QST_LEADER_NAME()%を囃し立てる

	;----------------------
	;-- 勝利、勝利調教後
	;----------------------
	CASE "6"
		PRINTL
		PRINTFORMW ………………
		PRINTFORMW …………
		PRINTFORMW ……
		PRINTL
		PRINTFORMW 見事戦いに勝利した%QST_LEADER_NAME()%に報奨が支払われた！

	;----------------
	;-- 不明な入力
	;----------------
	CASEELSE
		CALL QST_QUEST_16_MESSAGE_ID_ERROR("QST_QUEST_16_MESSAGE_CONBAT_WIN", MESSAGE_ID)
ENDSELECT

;-------------------------------------------------
;@QST_QUEST_16_MESSAGE_CONBAT_LOSE
;敗北メッセージ
;-------------------------------------------------
@QST_QUEST_16_MESSAGE_CONBAT_LOSE(MESSAGE_NO)
#DIM MESSAGE_NO

SELECTCASE MESSAGE_NO
	;----------------------
	;-- 戦闘敗北
	;----------------------
	CASE 1
		CALL PRINT_NOTICE(@"%QST_LEADER_NAME()%は戦闘に敗北してしまった……")

	;----------------------
	;-- 敗北調教される
	;----------------------
	CASE 2
		PRINTFORMW ……敗北した%QST_LEADER_NAME()%を前にして対戦相手は下卑た笑みを浮かべている
		PRINTFORMW どうやら彼らは観衆の面前で%QST_LEADER_NAME()%を辱めることにしたようだ……
		PRINTL

	;----------------------
	;-- 敗北、敗北調教後
	;----------------------
	CASE 3
		PRINTL
		PRINTFORMW ………………
		PRINTFORMW …………
		PRINTFORMW ……
		PRINTL
		PRINTFORMW %QST_LEADER_NAME()%は戦いに敗れ、掛け金を没収されてしまった…

	;----------------
	;-- 不明な入力
	;----------------
	CASEELSE
		CALL QST_QUEST_16_MESSAGE_ID_ERROR("QST_QUEST_16_MESSAGE_CONBAT_LOSE", TOSTR(MESSAGE_NO))
ENDSELECT

;-------------------------------------------------
;@QST_QUEST_16_MESSAGE_MEDICAL_OFFICE
;医務室治療関連メッセージ
;-------------------------------------------------
@QST_QUEST_16_MESSAGE_MEDICAL_OFFICE(MESSAGE_NO, PATTERN_NO)
#DIM MESSAGE_NO
#DIM PATTERN_NO
#DIMS DYNAMIC MESSAGE_ID

;判定値を連結
IF !PATTERN_NO
	MESSAGE_ID '= @"{MESSAGE_NO}"
ELSE
	MESSAGE_ID '= @"{MESSAGE_NO}-{PATTERN_NO}"
ENDIF

SELECTCASE MESSAGE_ID
	;----------
	;-- 導入
	;----------
	;・1回目(無料)
	CASE "1-1"
		PRINTFORML 『1日1回無料で治療が受けられます。
		PRINTFORML 　2回目以降は%TOSTR(QUEST_16_HEAL_IT_COST, "#,##0")%ディナリいただきます。
		CALLF TAG_PRINT(@"　@C:{カラー_注意}@※ 利用制限のため、治療を受けるとペナルティが発生します。@/C@』", 1)
		PRINTFORMW と張り紙がしてある
		PRINTL
		PRINTFORMW 今なら無料で治療を受けられるが・・・
	;・2回目(有料)
	CASE "1-2"
		PRINTFORML 『1日1回無料で治療が受けられます。
		PRINTFORML 　2回目以降は%TOSTR(QUEST_16_HEAL_IT_COST, "#,##0")%ディナリいただきます。
		CALLF TAG_PRINT(@"　@C:{カラー_注意}@※ 利用制限のため、治療を受けるとペナルティが発生します。@/C@』", 1)
		PRINTFORMW と張り紙がしてある
		PRINTL
		PRINTFORMW 治療には%TOSTR(QUEST_16_HEAL_IT_COST, "#,##0")%ディナリ必要だが・・・
	;・試合前
	CASE "1-3"
		PRINTFORMW まだ試合もしていないのに来る場所ではないだろう
		PRINTL
		PRINTFORMW %QST_LEADER_NAME()%は受付へ戻った

	;--------------------
	;-- 治療選択前表示
	;--------------------
	;・警告なし
	CASE "2-1"
		;選択肢表示
		PRINTL
		PRINTFORML 治療をしてもらおうか？
	;・警告あり
	CASE "2-2"
		;選択肢表示
		PRINTL
		PRINTFORML 治療をしてもらおうか？
		CALLF TAG_PRINT(@"@C:{カラー_注意}@※ 治療を受けると連勝回数がリセットされます@/C@", 1)
		WAIT
	;・治療不要(無傷)
	CASE "2-3"
		PRINTL
		PRINTFORMW 今は%QST_PARTYNUM > 1 ? "誰も" # ""%負傷していない。ここのお世話になる必要はないだろう
		PRINTL
		PRINTFORMW %QST_LEADER_NAME()%は受付へ戻った
	;・治療不可(金欠)
	CASE "2-4"
		PRINTL
		PRINTFORMW あいにくと持ち合わせがないようだ
		PRINTL
		PRINTFORMW %QST_LEADER_NAME()%は受付へ戻った

	;--------------
	;-- 治療選択
	;--------------
	;・1回目(無料)
	CASE "3-1"
		PRINTL
		RESULTS:0 '= "治療してもらう"
		RESULTS:1 '= "※ 無料"
		RESULTS:2 '= "治療は不要"
		RESULTS:3 '= ""
	;・2回目(有料)
	CASE "3-2"
		PRINTL
		RESULTS:0 '= "治療してもらう"
		RESULTS:1 '= @"※ %TOSTR(QUEST_16_HEAL_IT_COST, "#,##0")%ディナリ消費"
		RESULTS:2 '= "治療は不要"
		RESULTS:3 '= ""

	;--------------
	;-- 選択結果
	;--------------
	;・治療を受ける
	CASE "4-1"
		PRINTFORMW %QST_LEADER_NAME()%は医務室で治療してもらった
		PRINTL
	;・治療を断る
	CASE "4-2"
		PRINTFORMW %QST_LEADER_NAME()%は治療を断り受付へ戻った
		PRINTL

	;------------
	;-- 治療後
	;------------
	;・ペナルティなし
	CASE "5-1"
		PRINTL
		PRINTFORMW 治療を終えた%QST_LEADER_NAME()%は受付へ戻った
	;・ペナルティあり
	CASE "5-2"
		PRINTL
		CALLF TAG_PRINT(@"@C:{カラー_注意}@連勝回数がリセットされました@/C@", 1)
		WAIT
		PRINTL
		PRINTFORMW 治療を終えた%QST_LEADER_NAME()%は受付へ戻った

	;----------------
	;-- 興行終了後
	;---------------
	CASE "10"
		PRINTFORMW 医師の1人が負傷している%QST_LEADER_NAME()%に目を留め、「その傷で帰るのは大変だろう」と応急手当をしてくれた
		PRINTL

	CASE "11"
		PRINTL
		PRINTFORMW %QST_LEADER_NAME()%は医師に礼を告げると受付に戻った

	CASE "12"
		PRINTFORMW 医師達の邪魔にならないよう、%QST_LEADER_NAME()%は静かに退散した

	;----------------
	;-- 不明な入力
	;----------------
	CASEELSE
		CALL QST_QUEST_16_MESSAGE_ID_ERROR("QST_QUEST_16_MESSAGE_MEDICAL_OFFICE", MESSAGE_ID)
ENDSELECT

;-------------------------------------------------
;@QST_QUEST_16_MESSAGE_SPECTATOR_MODE
;観戦モードメッセージ
;-------------------------------------------------
@QST_QUEST_16_MESSAGE_SPECTATOR_MODE(MESSAGE_NO, TEXT1 = "", TEXT2 = "")
#DIM  MESSAGE_NO
#DIMS TEXT1
#DIMS TEXT2

VARSET RESULTS
SELECTCASE MESSAGE_NO
	;------------------------
	;-- エロ優先モード表示
	;------------------------
	CASE 1
		PRINTFORML こちらの観客は反対の観客席に比べてガラの悪い観客が多い印象を受ける
		PRINTFORMW どうやら試合そのものより「その後」を楽しみにしている観客が集まっているようだ
		PRINTL

	;------------------
	;-- 観戦選択肢前
	;------------------
	CASE 2
		PRINTFORMW もうすぐ試合が始まるようだ・・・

	;----------------------------
	;-- 対戦カード＆観戦選択肢
	;----------------------------
	CASE 3
		PRINTL
		PRINTFORML 　＜対戦カード＞
		;ランクにあわせて名前を色分けする
		TEXT1 '= QST_GET_FLAGMAP("観戦攻撃側")
		TEXT2 '= QST_GET_FLAGMAP("観戦防御側")
		CALLFORM QST_QUEST_16_GET_ENEMY_RANK_%TEXT1%
		CALLF TAG_PRINT(@"　　@C:{QUEST_16_LIST_DIF_COLOR:RESULT}@%TEXT1%@/C@　VS　", 0)
		CALLFORM QST_QUEST_16_GET_ENEMY_RANK_%TEXT2%
		CALLF TAG_PRINT(@"@C:{QUEST_16_LIST_DIF_COLOR:RESULT}@%TEXT2%@/C@", 1)
		WAIT
		PRINTL
		PRINTFORML 観戦していこうか？
		PRINTL
		;選択肢の項目用のテキストを設定
		RESULTS:0 '= "観戦する"
		RESULTS:1 '= ""
		RESULTS:2 '= "観戦しない"
		RESULTS:3 '= ""
		[IF_DEBUG]
		RESULTS:4 '= "DEBUG: 対戦カードを指定する"
		RESULTS:5 '= ""
		[ENDIF]

	;----------------
	;-- 興行終了時
	;----------------
	CASE 4
		PRINTFORMW ここに留まっても清掃員の邪魔になるだけだろう
		PRINTL

	;--------------------
	;-- 観戦キャンセル
	;--------------------
	CASE 5
		PRINTFORMW %QST_LEADER_NAME()%は受付に戻った

	;--------------
	;-- 試合終了
	;--------------
	CASE 6
		;TEXT1: WINNER_NAME
		CALLFORM QST_QUEST_16_GET_ENEMY_RANK_%TEXT1%
		CALLF TAG_PRINT(@"試合は@C:{QUEST_16_LIST_DIF_COLOR:RESULT}@%TEXT1%@/C@の勝利で終わったようだ", 0)
		PRINTFORMW
		PRINTL

	;----------------
	;-- 調教あり時
	;----------------
	CASE 7
		PRINTL
		PRINTFORMW しばらくすると会場の空気が変わった
		PRINTL
		CALLF TAG_PRINT(@"@C:{カラー_ピンク}@どうやら勝者による敗者の辱めが始まるようだ@/C@", 1)
		WAIT
		PRINTL
		PRINTFORMW 観客たちは歓声を上げ、口々に囃し立てている
		PRINTL

	;--------------------
	;-- 観戦継続選択肢
	;--------------------
	CASE 8
		PRINTL
		PRINTL
		PRINTFORML 『観戦』を続けますか？
		PRINTL
		RESULTS:0 '= "続ける"
		RESULTS:1 '= "席を立つ"

	;----------------------
	;-- 観戦、観戦調教後
	;----------------------
	;0.観戦調教をみてきた
	CASE 9 + QUEST_16_DO_TRAIN
		PRINTL
		PRINTL
		PRINTFORMW 狂宴が終わり、アリーナは試合間のインターバルに入ったようだ
		PRINTL
		PRINTFORMW 興奮冷めやらぬ様子の観客たちを尻目に%QST_LEADER_NAME()%は一旦受付に戻ることにした
	;1.観戦調教をみないで戻った
	CASE 9 + QUEST_16_CANCEL_TRAIN
		PRINTFORMW ……ここから先を見る必要はないだろう
		PRINTL
		PRINTFORMW %QST_LEADER_NAME()%は一旦受付に戻ることにした
	;2.観戦調教が発生していない
	CASE 9 + QUEST_16_NO_TRAIN
		PRINTFORMW 試合が終わり、アリーナは試合間のインターバルに入った
		PRINTL
		PRINTFORMW %QST_LEADER_NAME()%は一旦受付に戻ることにした

	;--------------------------
	;-- 対戦カードの選択
	;-- 【デバッグモード用】
	;--------------------------
	[IF_DEBUG]
	CASE 100
		PRINTFORML 対戦カードの選択【デバッグモード用】
	CASE 101
		PRINTL
		PRINTFORML 《攻撃側を選択》
	CASE 102
		PRINTL
		PRINTFORML 《防御側を選択》
	[ENDIF]

	;----------------
	;-- 不明な入力
	;----------------
	CASEELSE
		CALL QST_QUEST_16_MESSAGE_ID_ERROR("QST_QUEST_16_MESSAGE_SPECTATOR_MODE", TOSTR(MESSAGE_NO))
ENDSELECT

;-------------------------------------------------
;@QST_QUEST_16_MESSAGE_TRAIN_TARGETS
;調教対象キャラ表示
;-------------------------------------------------
@QST_QUEST_16_MESSAGE_TRAIN_TARGETS(MESSAGE_NO, ID_START, ID_END)
#DIM  MESSAGE_NO
#DIM  ID_START
#DIM  ID_END
#DIM  DYNAMIC CHARA_ID
#DIMS DYNAMIC CHARA_NAME
#DIMS DYNAMIC CHARA_SEX

SELECTCASE MESSAGE_NO
	;-----------------------
	;-- 勝利調教/敗者表示
	;-----------------------
	CASE 1
		CALL PRINT_TITLE("名誉か、恥辱か", "イベント")
		PRINTFORML 以下の者たちが地に伏し、%QST_LEADER_NAME(1)%の判断に身を委ねている。さて……どうしたものだろうか？
		PRINTL

	;-----------------------
	;-- 観戦調教/勝者表示
	;-----------------------
	CASE 2
		PRINTL
		PRINTFORML 　《勝者》
		PRINTFORM

	;------------------------
	;-- 観戦調教/敗者表示
	;------------------------
	CASE 3
		PRINTL
		PRINTL
		PRINTFORML 　《敗者》
		PRINTFORM

	;----------------
	;-- 不明な入力
	;----------------
	CASEELSE
		CALL QST_QUEST_16_MESSAGE_ID_ERROR("QST_QUEST_16_MESSAGE_TRAIN_TARGETS", TOSTR(MESSAGE_NO))
ENDSELECT

;調教対象キャラの表示
FOR CHARA_ID, ID_START, ID_END + 1
	CHARA_NAME '= ANAME(CHARA_ID)
	CALL GET_STR_SEX(CHARA_ID, 1)
	CHARA_SEX  '= RESULTS
	CALLF TAG_PRINT(@"　%CHARA_NAME%(%CHARA_SEX%)")
NEXT

;-------------------------------------------------
;@QST_QUEST_16_MESSAGE_SELECT_ENEMY
;観戦モードメッセージ【デバッグモード用】
;-------------------------------------------------
[IF_DEBUG]
@QST_QUEST_16_MESSAGE_SELECT_ENEMY()

PRINTFORML 対戦相手の選択【デバッグモード用】
PRINTL
PRINTFORML 《対戦相手を選択》
[ENDIF]

;-------------------------------------------------
;@QST_QUEST_16_MESSAGE_DEFEAT_NO_TRAIN
;敗北調教なし時の汎用メッセージ
;-------------------------------------------------
@QST_QUEST_16_MESSAGE_DEFEAT_NO_TRAIN()

PRINTFORMW 戦いに敗れた%QST_LEADER_NAME()%であったが、幸いにもそれ以上の辛苦を味わずに済んだ
PRINTL
PRINTFORMW ―― 戦いに敗れ降参した対戦相手を殺してはならない
PRINTL
PRINTFORMW この闘技場のルールは決して高潔な意図や慈悲によって定められたものではない
PRINTFORMW 奴隷であれ、慰み物であれ、限りある命から余すところなく価値を絞り出そうとする、ソドミアの街の欲望が生んだ、ある種必然的なルールであった
PRINTL
PRINTFORMW さて、授業料は高く付いたが金銭だけで済む程度なら幸運と言えよう……

;-------------------------------------------------
;@QST_QUEST_16_MESSAGE_PRINT_LOG
;ログ領域への表示用テキストの設定
;-------------------------------------------------
@QST_QUEST_16_MESSAGE_PRINT_LOG()
#DIMS DYNAMIC ENEMY_NAME
#DIMS DYNAMIC ARENA_INFO, QUEST_16_PRINT_LOG_NUM_S
#DIM  DYNAMIC ENEMY_RANK
#DIM  DYNAMIC MATCH_COUNT
#DIM  DYNAMIC STREAK_COUNT
#DIM  DYNAMIC OUT_TIME
#DIM  DYNAMIC EXPLAINED
#DIM  DYNAMIC DEBUG_LINE_NUM
#DIM  DYNAMIC L_CNT
#DIMS DYNAMIC MAP_KEYS

;使用する情報を取得
ENEMY_NAME '= QST_GET_FLAGMAP("対戦相手")
ENEMY_RANK  = TOINT(QST_GET_FLAGMAP("難易度"))
CALL QST_QUEST_16_GET_FLAG_MATCH_COUNT()
MATCH_COUNT	 = RESULT + 1
STREAK_COUNT = QUEST_16_STREAK_COUNT
CALL QST_QUEST_16_GET_OUT_TIME()
OUT_TIME   = RESULT
CALL QST_QUEST_16_GET_FLAG_EXPLAINED()
EXPLAINED = RESULT

VARSET RESULTS
;--------------------------------------------
;-- デバッグ用情報表示【デバッグモード用】
;--------------------------------------------
;※ ログ欄を展開したときのみ表示されるように先に追加する
;※ 10行
[IF_NDEBUG]
DEBUG_LINE_NUM = 0
[ENDIF]
[IF_DEBUG]
DEBUG_LINE_NUM = QUEST_16_PRINT_LOG_NUM_L - QUEST_16_PRINT_LOG_NUM_S
FOR L_CNT, 0, DEBUG_LINE_NUM
	RESULTS:L_CNT '= "　"
NEXT
;タイトル
RESULTS:0 '= @"@C:{カラー_黄}@### デバッグ用追加情報 ###@/C@"

;コンフィグ「男同士のコマンドフィルタ」の状態
RESULTS:1 '= "男同士のコマンドフィルタ : "
IF CONFIG:201
	RESULTS:1 += "有効"
ELSE
	RESULTS:1 += "無効"
ENDIF

;自パーティが男性のみかどうか
RESULTS:2 '= "自パーティが男性のみ     : "
IF QUEST_16_ONLY_MALE_PARTY
	RESULTS:2 += "○"
ELSE
	RESULTS:2 += "×"
ENDIF

;[アリーナ]のエリア効果
MAP_KEYS '= MAP_GETKEYS(@"MAP_{QUEST_16_ROOM_ID_ARENA}_ROOM_EFFECT")
RESULTS:3 '= "[アリーナ]のエリア効果   : "
IF MAP_KEYS != ""
	RESULTS:3 += MAP_KEYS
ELSE
	RESULTS:3 += "なし"
ENDIF

;[観客席]のエリア効果
MAP_KEYS '= MAP_GETKEYS(@"MAP_{QUEST_16_ROOM_ID_BLEACHERS_L}_ROOM_EFFECT")
RESULTS:4 '= "[観客席(左)]のエリア効果 : "
IF MAP_KEYS != ""
	RESULTS:4 += MAP_KEYS
ELSE
	RESULTS:4 += "なし"
ENDIF

MAP_KEYS '= MAP_GETKEYS(@"MAP_{QUEST_16_ROOM_ID_BLEACHERS_R}_ROOM_EFFECT")
RESULTS:5 '= "[観客席(右)]のエリア効果 : "
IF MAP_KEYS != ""
	RESULTS:5 += MAP_KEYS
ELSE
	RESULTS:5 += "なし"
ENDIF

;RESULTS:6 '= @""
;RESULTS:7 '= @""
;RESULTS:8 '= @""
;RESULTS:9 '= @""
[ENDIF]

;----------------------
;-- アリーナ情報表示
;----------------------
;※ 5行
;表示情報の初期化
;・空だと表示されずにスキップされるので全角スペースで初期化。
VARSET ARENA_INFO, "　"
;----------------------
;-- 通常表示
;----------------------
IF EXPLAINED && !OUT_TIME
	;次の対戦相手の情報を表示する
	ARENA_INFO:0 '= @"@C:{カラー_緑}@### 第{MATCH_COUNT}試合 ###@/C@"
	ARENA_INFO:1 '= @"対戦相手 : @C:{カラー_黄}@%ENEMY_NAME%@/C@"
	ARENA_INFO:2 '= @"難易度   : @C:{QUEST_16_LIST_DIF_COLOR:ENEMY_RANK}@%QUEST_16_LIST_DIF_NAME:ENEMY_RANK%@/C@"
	;ARENA_INFO:3 '= @""
	IF STREAK_COUNT
		ARENA_INFO:4 '= @"現在の連勝数 : @C:{カラー_緑}@{STREAK_COUNT}連勝中@/C@"
	ELSE
		ARENA_INFO:4 '= @"現在の連勝数 : 0勝"
	ENDIF

;------------------------
;-- 説明を聞いていない
;------------------------
ELSEIF !EXPLAINED
	;説明を聞いていないので情報不明な状態。あと受付に行く旨を表示する
	ARENA_INFO:0 '= @"@C:{カラー_緑}@### ？？？？？？ ###@/C@"
	ARENA_INFO:1 '= @"対戦相手 : @C:{カラー_黄}@？？？？？@/C@"
	ARENA_INFO:2 '= @"難易度   : @C:{QUEST_16_LIST_DIF_COLOR:0}@？？？？？@/C@"
	;ARENA_INFO:3 '= @""
	ARENA_INFO:4 '= @"@C:{カラー_黄}@受付で話を聞こう@/C@"

;----------------
;-- 興行終了済
;----------------
ELSEIF OUT_TIME
	;もう試合はできないので対戦相手の情報は表示しない。連勝数だけ記録として表示。
	ARENA_INFO:0 '= @"@C:{カラー_注意}@### 本日の興行は終了しました ###@/C@"
	IF STREAK_COUNT
		ARENA_INFO:1 '= @"連勝記録 : @C:{カラー_緑}@{STREAK_COUNT}連勝@/C@"
	ELSE
		ARENA_INFO:1 '= @"連勝記録 : 0勝"
	ENDIF
	;ARENA_INFO:2 '= @""
	;ARENA_INFO:3 '= @""
	;ARENA_INFO:4 '= @""
ENDIF

;アリーナ情報を結果文字列に格納
FOR L_CNT, 0, QUEST_16_PRINT_LOG_NUM_S
	RESULTS:(DEBUG_LINE_NUM + L_CNT) '= ARENA_INFO:L_CNT
NEXT

;ログの行数をRESULTとして返す
RETURN DEBUG_LINE_NUM + QUEST_16_PRINT_LOG_NUM_S

;-------------------------------------------------
;@QST_QUEST_16_MESSAGE_ID_ERROR
;不明なメッセージIDが指定されたときのメッセージ
;-------------------------------------------------
@QST_QUEST_16_MESSAGE_ID_ERROR(FUNCTION_NAME, MESSAGE_ID)
#DIMS FUNCTION_NAME
#DIMS MESSAGE_ID
#DIMS DYNAMIC ERROR_MESSAGE

ERROR_MESSAGE '= @"ERROR: 関数[%FUNCTION_NAME%]にはMESSAGE_ID[%MESSAGE_ID%]に対応するテキストが設定されていません。"
PRINTL
CALLF TAG_PRINT(@"@C:{カラー_注意}@%ERROR_MESSAGE%@/C@", 1)
WAIT
PRINTL

repo_name: napo/erafl

license: unknown


code:
;-------------------------------------------------------------------------------
;QUEST_16:アリーナ
;メッセージ表示(受付嬢のセリフ)
;QST_QUEST_16_RECEPTION_MESSAGE_*****
;-------------------------------------------------------------------------------
;・テキスト量が多いので処理とテキストを分離する。
;・SELECTCASEを複数入れ子で使いたくないので判定値を連結して使用する。
;  ネストが深くなりすぎたりメッセージごとネストが違うと読みづらいので。
;・なんか受付嬢のセリフだけですごい量になったのでさらに分離。

;-------------------------------------------------
;@QST_QUEST_16_RECEPTION_MESSAGE_ARENA_GUIDE
;EV1 アリーナの説明用メッセージ
;・呼び出し元イベントでセリフを分岐
;-------------------------------------------------
@QST_QUEST_16_RECEPTION_MESSAGE_ARENA_GUIDE(MESSAGE_NO, CALLER_EV_ID)
#DIM  MESSAGE_NO
#DIM  CALLER_EV_ID
#DIMS DYNAMIC MESSAGE_ID

MESSAGE_ID '= @"{MESSAGE_NO}-{CALLER_EV_ID}"
VARI CHARA_ID
CHARA_ID = NAME_TO_CHARA("QUEST_31_受付嬢")

SELECTCASE MESSAGE_ID
		;----------------
		;-- 受付応対
		;----------------
	CASE "1-1"
		PRINTFORMW %QST_LEADER_NAME()%が声を掛けると引きつった笑みを浮かべて応じる
		PRINTL
		CALL DRAW_PORTRAIT(CHARA_ID, "[サイズ:150px][POS_X:100]",, 1)
		CALL QST_QUEST_16_RECEPTION_PRINTW("「いらっしゃいませニャン♪」", QUEST_16_RECEPTION_MESSAGE_COLOR_EX)
		PRINTW
		PRINTW
		CALL QST_QUEST_16_RECEPTION_PRINTW("「……あー無理。無理だー……やっぱりこのキャラ作りは無理だぁ……」")
		PRINTL
		PRINTFORMW

	CASE "1-3"
		PRINTFORMW 「試合がしたい」と声を掛けた%QST_LEADER_NAME(1)%に受付係の女性は引きつった笑みを浮かべて応じた
		PRINTL
		CALL DRAW_PORTRAIT(CHARA_ID, "[サイズ:150px][POS_X:100]",, 1)
		CALL QST_QUEST_16_RECEPTION_PRINTW("「いらっしゃいませニャン♪」", カラー_ピンク)
		PRINTW
		PRINTW
		CALL QST_QUEST_16_RECEPTION_PRINTW("「……あー無理。無理だー……やっぱりこのキャラ作りは無理だぁ……」")
		PRINTL
		PRINTFORMW

	CASE "1-7"
		;EV7経由の場合はセリフなしで間だけとる
		PRINTW
		PRINTW

		;----------------------
		;-- ルール説明導入
		;----------------------
		;・ルール説明する前の導入というか雑談というか。
		;EV1 受付係の女性から実行した場合：通常対応
	CASE "2-1"
		CALL QST_QUEST_16_RECEPTION_PRINTW("「……というわけでいらっしゃいませー。見ての通りここは闘技場の受付だよー。地獄への片道直行便だよー」")
		PRINTL
		CALL QST_QUEST_16_RECEPTION_PRINTL(@"「アナタ%QST_PARTYNUM > 1 ? "たち" # ""%、結構まともなナリしているけれど、もうこんなところで命を粗末にしたくなっちゃったの？」")
		CALL QST_QUEST_16_RECEPTION_PRINTW("「世の中わからないもんだねー。まぁ知ったこっちゃないけどねー」")
		PRINTL
		PRINTFORMW 猫人族の女性は始終気怠げで眠たげな態度で応対を続ける
		PRINTL
		CALL QST_QUEST_16_RECEPTION_PRINTW("「早く殺りたくて犯りたくて仕方ないんだろうけどさ、とりあえずルールは聞いていってね。そんなに難しくないからさ」")
		PRINTL
		PRINTL

		;EV3 試合開始から実行した場合：とにかく試合がしたい輩対応
	CASE "2-3"
		CALL DRAW_PORTRAIT(CHARA_ID, "[サイズ:150px][POS_X:100]",, 1)
		CALL QST_QUEST_16_RECEPTION_PRINTW("「……というわけでいらっしゃいませー。わかってるみたいだけどここは闘技場の受付だよー。地獄への片道直行便だよー」")
		PRINTL
		PRINTFORMW 猫人族の女性は始終気怠げで眠たげな態度で応対を続ける
		PRINTL
		CALL QST_QUEST_16_RECEPTION_PRINTW(@"「しかし第一声が『試合がしたい』とは……%IS_MALE(QST_LEADER_ID()) ? "お兄さん" # "お姉さん"%はバトルジャンキーかなにかかな？」")
		CALL QST_QUEST_16_RECEPTION_PRINTW(@"「%QST_PARTYNUM > 1 ? "お連れの子たちもだけど" # ""%とりあえずルールは聞いていってね？ルールを聞いてない子は試合が出来ないお約束なの」")
		PRINTL
		PRINTL

		;EV7 アリーナから実行した場合：受付ガン無視でアリーナに突撃する輩対応
	CASE "2-7"
		CALL DRAW_PORTRAIT(CHARA_ID, "[サイズ:150px][POS_X:100]",, 1)
		CALL QST_QUEST_16_RECEPTION_PRINTW("「……というわけでいらっしゃいませー。ここが闘技場の受付だよー？わかるかなー？」")
		PRINTL
		PRINTFORMW 猫人族の女性はあきれた顔で応対を続ける
		PRINTL
		CALL QST_QUEST_16_RECEPTION_PRINTW("「いやーもう受付ガン無視でアリーナに突撃する人が居るとは驚きだよ……」")
		CALL QST_QUEST_16_RECEPTION_PRINTW("「とりあえず受付でお話ししようね？ちゃんとルールを聞いていってね？できるだけ簡単に済ませるからさ」")
		PRINTL
		PRINTL

		;------------------
		;-- ルール説明
		;------------------
		;どのイベントから実行されても同じ
	CASE "3-1", "3-3", "3-7"
		CALL QST_QUEST_16_RECEPTION_PRINTL("「ルールは簡単、カードを組まれた相手と金を賭けて闘って、あらゆる手段でぶちのしたりぶちのめされたりするの。それだけ」")
		CALL QST_QUEST_16_RECEPTION_PRINTW("「勝てばお互いの掛け金と名誉が手に入るし、負ければどちらも失う。簡単でしょう？」")
		PRINTL
		CALL QST_QUEST_16_RECEPTION_PRINTL("「それと……試合中に殺したり殺されたりするのは勝手にやっていいけれど、降参した相手を殺すのはダメ。これは絶対に守ってね」")
		CALL QST_QUEST_16_RECEPTION_PRINTW("「……まぁ無闇矢鱈に殺されちゃうとさー、こっちも興行が成立しなくなっちゃうんだよね」")
		PRINTL
		CALL QST_QUEST_16_RECEPTION_PRINTL("「殺さなければまぁ……ご自由に。ヤろうが嬲ろうがお好きにどうぞ」")
		CALL QST_QUEST_16_RECEPTION_PRINTW("「安全な高みで見物してるあの悪趣味な連中を大いに喜ばせてあげてね～」")
		PRINTL
		CALL QST_QUEST_16_RECEPTION_PRINTL("「……それと、負けちゃえば……どうなるかはもちろん想像つくよね？」")
		CALL QST_QUEST_16_RECEPTION_PRINTW("「まぁさっさと降参すれば死にはしないはずだからさ。どっちに転んでも場を盛り上げてね」")

		PRINTL
		PRINTL
		CALL PRINT_NOTICE(@"アリーナの試合には1日{QUEST_16_MATCH_COUNT_MAX}回まで出場することが出来る。連勝すればその分報酬も増えるようだ")
		PRINTL
		PRINTL

		;---------------------------
		;-- 補足1：医務室の説明
		;---------------------------
		;どのイベントから実行されても同じ
	CASE "4-1", "4-3", "4-7"
		CALL QST_QUEST_16_RECEPTION_PRINTW("「あ、そうそう、試合で負った怪我は医務室で治療してもらうこともできるよ」")
		CALL QST_QUEST_16_RECEPTION_PRINTW("「ただし、利用するとペナルティで『連勝回数がリセットされる』からよく考えて使ってね」")
		PRINTL
		;なんか適当にペナルティにソレっぽい理由を付ける
		CALL QST_QUEST_16_RECEPTION_PRINTW("「ちょっとした怪我で利用されると医務室がすぐにパンパンになっちゃうからね」")
		CALL QST_QUEST_16_RECEPTION_PRINTW("「まぁ試合に負けた後ならペナルティとか気にせず使えるわよ」")
		PRINTL
		PRINTL

		;---------------------------------
		;-- 補足2：戦相手ガチャの説明
		;---------------------------------
		;どのイベントから実行されても同じ
	CASE "5-1", "5-3", "5-7"
		CALL QST_QUEST_16_RECEPTION_PRINTW("「もうひとついい忘れてたけれど、勝てそうもない相手だなって思ったら対戦相手を変えることもできるよー。お金はもらうけど」")
		CALL QST_QUEST_16_RECEPTION_PRINTW("「怖くなっちゃったら話しかけてね～」")

		;------------------
		;-- 説明終了後
		;------------------
		;EV1, EV7:説明終わったら自由行動
	CASE "6-1", "6-7"
		PRINTL
		PRINTL
		CALL QST_QUEST_16_RECEPTION_PRINTW("「んじゃ頑張ってー」")
		;EV3:説明終わったら即試合開始
	CASE "6-3"
		PRINTW
		PRINTW
		CALL QST_QUEST_16_RECEPTION_PRINTW("「さてさて、実は説明してる裏で試合の準備を進めてたの」")
		CALL QST_QUEST_16_RECEPTION_PRINTW("「とにかく試合がしたいみたいだったし、試合開始は今すぐだよ。なうだよ」")
		CALL QST_QUEST_16_RECEPTION_PRINTW("「頑張ってね～」")
		PRINTL
		PRINTFORMW ………………
		PRINTFORMW …………
		PRINTFORMW ……
		PRINTL

		;----------------
		;-- 不明な入力
		;----------------
	CASEELSE
		CALL QST_QUEST_16_MESSAGE_ID_ERROR("QST_QUEST_16_RECEPTION_MESSAGE_ARENA_GUIDE", MESSAGE_ID)
ENDSELECT

;-------------------------------------------------
;@QST_QUEST_16_RECEPTION_MESSAGE_GO_HOME
;興行終了後の帰れメッセージ
;・イベントごとにセリフを設定
;-------------------------------------------------
@QST_QUEST_16_RECEPTION_MESSAGE_GO_HOME(EVENT_ID, MESSAGE_NO)
#DIM EVENT_ID
#DIM MESSAGE_NO
#DIMS DYNAMIC MESSAGE_ID

MESSAGE_ID '= @"{EVENT_ID}-{MESSAGE_NO}"

VARSET RESULTS
SELECTCASE MESSAGE_ID
		;------------------------
		;-- EV*.全イベント共通
		;------------------------
		;選択肢表示
	CASE "1-2", "3-2", "6-2"
		PRINTL
		PRINTFORML 帰宅しますか？
		;選択肢の項目用のテキストを設定
		RESULTS:0 '= "帰る"
		RESULTS:1 '= "まだ留まる"

		;--------------
		;-- EV1.受付
		;--------------
		;「帰れ」
	CASE "1-1"
		PRINTL
		CALL QST_QUEST_16_RECEPTION_PRINTW("「本日はもうお開きだよー、ほら帰った帰った。遊びたくなったらまた来てねー」")
		PRINTFORMW 猫人族の女性は大きく欠伸をし、手の甲で%QST_LEADER_NAME()%を払った
		;帰る場合
	CASE "1-3"
		CALL QST_QUEST_16_RECEPTION_PRINTW("「ばいばーい」")
		PRINTFORMW 手を振る猫人族の女性を尻目に%QST_LEADER_NAME()%は闘技場を後にした
		;帰らない場合
	CASE "1-4"
		CALL QST_QUEST_16_RECEPTION_PRINTW("「いや帰らないんかーい。今日はもうすることないと思うけどにゃー？」")

		;------------------
		;-- EV3.試合開始
		;------------------
		;「帰れ」
	CASE "3-1"
		CALL QST_QUEST_16_RECEPTION_PRINTW("「今日はもう試合はできないよー？まだやり足りないのかな？このよくばりさんめ」")
		CALL QST_QUEST_16_RECEPTION_PRINTW("「まぁ無理なものは無理だからさっさと帰るにゃぁ」")
		PRINTFORMW 猫人族の女性は呆れ顔で%QST_LEADER_NAME()%を追い出そうとしている
		;帰る場合
	CASE "3-3"
		CALL QST_QUEST_16_RECEPTION_PRINTW("「またきてね～」")
		PRINTFORMW 手を振る猫人族の女性を尻目に%QST_LEADER_NAME()%は闘技場を後にした
		;帰らない場合
	CASE "3-4"
		CALL QST_QUEST_16_RECEPTION_PRINTW("「いやほんとに試合できないからね？残っててもしょうがないからね？」")

		;--------------
		;-- EV6.出口
		;--------------
		;・受付嬢喋らないけど同じようなパターンなのでココにまとめる
		;「帰る？」
	CASE "6-1"
		CALL QST_QUEST_16_GET_OUT_TIME()
		IF !RESULT
			;・興行終了前に出口に来た場合
			PRINTFORMW まだ試合はできるようだが・・・
		ELSE
			;・興行終了後に出口に来た場合
			PRINTFORMW 既に今日の興行は終了している
		ENDIF
		;帰る場合
	CASE "6-3"
		PRINTFORMW %QST_LEADER_NAME()%は闘技場を後にした…
		;帰らない場合
	CASE "6-4"
		PRINTFORMW %QST_LEADER_NAME()%はまだ闘技場に留まることにした

		;----------------
		;-- 不明な入力
		;----------------
	CASEELSE
		CALL QST_QUEST_16_MESSAGE_ID_ERROR("QST_QUEST_16_RECEPTION_MESSAGE_GO_HOME", MESSAGE_ID)
ENDSELECT

;-------------------------------------------------
;@QST_QUEST_16_RECEPTION_MESSAGE_SHUFFLE_ENEMY
;対戦相手ガチャ時メッセージ
;-------------------------------------------------
@QST_QUEST_16_RECEPTION_MESSAGE_SHUFFLE_ENEMY(MESSAGE_NO)
#DIM MESSAGE_NO
#DIMS DYNAMIC ENEMY_NAME

VARI CHARA_ID
CHARA_ID = NAME_TO_CHARA("QUEST_31_受付嬢")

VARSET RESULTS
SELECTCASE MESSAGE_NO
		;----------------
		;-- 受付応対
		;----------------
	CASE 1
		PRINTL
		CALL DRAW_PORTRAIT(CHARA_ID, "[サイズ:150px][POS_X:100]",, 1)
		CALL QST_QUEST_16_RECEPTION_PRINTW("「んあー……何か用？見ての通りすごーく忙しいんだよねー」")
		PRINTFORML 猫人族の女性はカウンターに頬を付き、酷く気怠げな調子で応じる
		PRINTL
		;選択肢の項目用のテキストを設定
		RESULTS:0 '= "対戦相手を変更したい"
		RESULTS:1 '= "特に何も"

		;----------------
		;-- 冷やかし
		;----------------
	CASE 2
		CALL QST_QUEST_16_RECEPTION_PRINTW("「冷やかしかー……。冷やかしは止めてほしいにゃー」")

		;----------------------
		;-- 対戦相手の変更
		;----------------------
	CASE 3
		CALL QST_QUEST_16_RECEPTION_PRINTW( "「選り好みかー　いいご身分だねー」")
		CALL QST_QUEST_16_RECEPTION_PRINTL(@"「対戦相手の変更は%TOSTR(QUEST_16_SHUFFLE_COST, "#,##0")%ディナリもらうよ。構わないね？」")
		PRINTL
		;選択肢の項目(と注釈)用のテキストを設定
		RESULTS:0 '=  "支払う"
		RESULTS:1 '= @"※ %TOSTR(QUEST_16_SHUFFLE_COST, "#,##0")%ディナリ消費"
		RESULTS:2 '=  "やっぱりやめる"
		RESULTS:3 '=  ""

		;----------------
		;-- キャンセル
		;----------------
	CASE 4
		CALL QST_QUEST_16_RECEPTION_PRINTW("「うんうん、お姉さんも好き嫌いは良くないと思うよー」")

		;----------------
		;-- 料金不足
		;----------------
	CASE 5
		CALL QST_QUEST_16_RECEPTION_PRINTW("「お金が足りないにゃー。冷やかしは止めてほしいにゃー」")

		;------------------
		;-- ガチャ実行
		;------------------
	CASE 6
		PRINTL
		CALL DRAW_PORTRAIT(CHARA_ID, "[サイズ:150px][POS_X:100]",, 1)
		CALL FL_PLAYSE("Dice_0.mp3")
		CALL QST_QUEST_16_RECEPTION_PRINTW("「はい、ガラガラポン」")
		PRINTL

		;----------------
		;-- 結果確認
		;----------------
	CASE 7
		ENEMY_NAME = %QST_GET_FLAGMAP("対戦相手")%
		CALL PRINT_NOTICE(@"次の対戦相手が%ENEMY_NAME%に変更された")
		PRINTL
		CALL QST_QUEST_16_RECEPTION_PRINTL("「ご満足？」")
		PRINTL
		;選択肢の項目(と注釈)用のテキストを設定
		RESULTS:0 '=  "もう一度くじを引く"
		RESULTS:1 '= @"※ %TOSTR(QUEST_16_SHUFFLE_COST, "#,##0")%ディナリ消費"
		RESULTS:2 '=  "これでいい"
		RESULTS:3 '=  ""

		;----------------
		;-- 変更確定
		;----------------
	CASE 8
		CALL QST_QUEST_16_RECEPTION_PRINTW("「それじゃあ頑張ってー」")

		;----------------
		;-- 不明な入力
		;----------------
	CASEELSE
		CALL QST_QUEST_16_MESSAGE_ID_ERROR("QST_QUEST_16_RECEPTION_MESSAGE_SHUFFLE_ENEMY", TOSTR(MESSAGE_NO))
ENDSELECT

;-------------------------------------------------
;@QST_QUEST_16_RECEPTION_MESSAGE_STOPS_ENTRY
;アリーナ侵入阻止メッセージ
;-------------------------------------------------
@QST_QUEST_16_RECEPTION_MESSAGE_STOPS_ENTRY(MESSAGE_NO)
#DIM MESSAGE_NO

SELECTCASE MESSAGE_NO
		;------------------
		;-- 通常パターン
		;------------------
	CASE 1
		;勝手に入ろうとすると怒られる。
		CALL QST_QUEST_16_RECEPTION_PRINTW("「ちょっとちょっと勝手に入っちゃダメよー？」")
		CALL QST_QUEST_16_RECEPTION_PRINTW("「試合がしたいならちゃんと受付を通してちょうだいな」")
		PRINTL
		PRINTFORMW アリーナに入ろうとした%QST_LEADER_NAME()%は猫人族の女性に嗜められ、受付に引き返した

		;------------------
		;-- 説明を聞く前
		;------------------
	CASE 2
		;新顔かー説明面倒だなーって眺めてたらなんか受付ガン無視で奥に歩いてくからあわてて止める。
		CALL QST_QUEST_16_RECEPTION_PRINTW("「ちょっと待てーい！」")
		CALL QST_QUEST_16_RECEPTION_PRINTW("「色々すっ飛ばして奥に行かないでもらえるかなぁ？」")
		CALL QST_QUEST_16_RECEPTION_PRINTW("「まずはコッチでお話しましょ」")
		PRINTL
		PRINTFORMW %QST_LEADER_NAME()%は受付係の女性に大声で呼び止められ、受付へと引き返した

		;----------------
		;-- 興行終了後
		;----------------
	CASE 3
		;勝手に入ろうとすると怒られる。あともう帰れ。
		CALL QST_QUEST_16_RECEPTION_PRINTW("「ちょっとちょっと勝手に入っちゃダメよー？」")
		CALL QST_QUEST_16_RECEPTION_PRINTW("「今日はもうお開きなんだから余計なことしてないで帰り支度をしてちょうだいな」")
		PRINTL
		PRINTFORMW アリーナに入ろうとした%QST_LEADER_NAME()%は猫人族の女性に嗜められ、受付に引き返した

		;----------------
		;-- 不明な入力
		;----------------
	CASEELSE
		CALL QST_QUEST_16_MESSAGE_ID_ERROR("QST_QUEST_16_RECEPTION_MESSAGE_STOPS_ENTRY", TOSTR(MESSAGE_NO))
ENDSELECT

;-------------------------------------------------
;@QST_QUEST_16_RECEPTION_PRINT*
;受付譲のセリフ表示用関数
;・PRINTW互換のTAG_PRINTがないので作成。ついでに他のPRINT文互換も作成。
;・セリフ色指定可能。
;-------------------------------------------------
;PRINT互換版
@QST_QUEST_16_RECEPTION_PRINT(MESSAGE_TEXT, TEXT_COLOR = QUEST_16_RECEPTION_MESSAGE_COLOR)
#DIMS MESSAGE_TEXT ;セリフとして表示するテキスト
#DIM  TEXT_COLOR   ;テキスト色(省略時はデフォルト設定の色)

CALLF TAG_PRINT(@"@C:{TEXT_COLOR}@%MESSAGE_TEXT%@/C@", 0)

;PRINTL互換版
@QST_QUEST_16_RECEPTION_PRINTL(MESSAGE_TEXT, TEXT_COLOR = QUEST_16_RECEPTION_MESSAGE_COLOR)
#DIMS MESSAGE_TEXT ;セリフとして表示するテキスト
#DIM  TEXT_COLOR   ;テキスト色(省略時はデフォルト設定の色)

CALLF TAG_PRINT(@"@C:{TEXT_COLOR}@%MESSAGE_TEXT%@/C@", 1)

;PRINTW互換版
@QST_QUEST_16_RECEPTION_PRINTW(MESSAGE_TEXT, TEXT_COLOR = QUEST_16_RECEPTION_MESSAGE_COLOR)
#DIMS MESSAGE_TEXT ;セリフとして表示するテキスト
#DIM  TEXT_COLOR   ;テキスト色(省略時はデフォルト設定の色)

CALLF TAG_PRINT(@"@C:{TEXT_COLOR}@%MESSAGE_TEXT%@/C@", 1)
WAIT

;-------------------------------------------------
; QST_QUEST_16_CREATE_NPC_RECEPTION_GIRL()
; 受付嬢をユニークキャラクターとして生成
;-------------------------------------------------
@QST_QUEST_16_CREATE_NPC_RECEPTION_GIRL()
#DIM 対象
#DIMS 名前
#DIM 主導除外フラグ

名前 = チェルシー

CALL CREATE_RANDOM_CHARA(0, -1, 1)
FLAG:汎用武将カウント --
対象 = RESULT
IF LOCAL == -1
	RETURN -1
ENDIF

NO:対象 = GET_EMPTY_NO()
;ユニークキャラとして一度だけ生成するのでCSTR:99を登録
;CSTR:99は他キャラと重複できないので固有の名称が望ましい
CSTR:対象:99 '= "QUEST_31_受付嬢"
NAME:対象 = %名前%
CALLNAME:対象 = %名前%
MAXBASE:対象:体力 = 2600
MAXBASE:対象:気力 = 2300
MAXBASE:対象:精神力 = 1000
TALENT:対象:処女 = 1
TALENT:対象:キス未経験 = 1
TALENT:対象:童貞 = 0
TALENT:対象:アナル処女 = 1
TALENT:対象:体格 = 体格_小柄
CSTR:対象:0 =
CSTR:対象:1 =
TALENT:対象:性別 = 1
ABL:対象:戦闘 = 25
ABL:対象:性知識 = 1
ABL:対象:Ｃ感 = 3
ABL:対象:Ｖ感 = 0
ABL:対象:Ａ感 = 3
ABL:対象:Ｂ感 = 3
ABL:対象:奉仕 = 1
ABL:対象:性技 = 1
ABL:対象:欲望 = 3
ABL:対象:性交 = 0
ABL:対象:サド = 2
ABL:対象:マゾ = 0
ABL:対象:主導度Ｕ = RAND(0, 500)
ABL:対象:倒錯度 = RAND(0, 100)
EXP:対象:絶頂経験 = 10

CFLAG:対象:口上カラーコード = カラー_ピンク
CFLAG:対象:所属 = 所属_ゲストNPC

;[ポートレイトパーツ情報]
;※ポートレイト・口上編集画面の[パーツ情報出力]の出力ファイルを編集すると設定しやすいです
CSTR:対象:120 '= "CC1_後髪_13"
CSTR:対象:121 '= "CC1_身体_0"
CSTR:対象:122 '= "CC1_顔_1"
CSTR:対象:123 '= "CC1_瞳_0"
CSTR:対象:124 '= "CC1_目_5"
CSTR:対象:126 '= "CC1_鼻_0"
CSTR:対象:127 '= "CC1_口_0"
CSTR:対象:128 '= "CC1_服_ドレス_2"
CSTR:対象:129 '= "CC1_前髪_7"
CSTR:対象:130 '= "CC1_眉_2"
CSTR:対象:131 '= "CC1_頭部位_ケモミミ_1"
CSTR:対象:133 '= "CC1_アクセサリ1_リボン_5"
CSTR:対象:138 '= "CC1_首飾_首飾_1"
CSTR:対象:141 '= ""
CSTR:対象:150 '= "376:200:204"
CSTR:対象:151 '= "300:256:256"
CSTR:対象:152 '= "300:256:256"
CSTR:対象:153 '= "352:124:164"
CSTR:対象:154 '= ""
CSTR:対象:158 '= ""
CSTR:対象:159 '= "376:200:204"
CSTR:対象:160 '= "376:200:204"
CSTR:対象:161 '= "376:200:204"
CSTR:対象:163 '= "448:100:164"
CSTR:対象:168 '= ""
CSTR:対象:171 '= ""

CALL SET_BODYSIZE(対象)

RETURN 対象

path: ERB/QUEST/クエストデータ/QUEST_16_アリーナ/QUEST_16_アリーナ_メッセージ_受付嬢.ERB


code:
;-------------------------------------------------
;QUEST_16:アリーナ　医務室の処理
;-------------------------------------------------
;@QST_QUEST_16_HEAL_IN_TIME
;興行中の回復処理
;-------------------------------------------------
@QST_QUEST_16_HEAL_IN_TIME()
#DIM DYNAMIC HEAL_COST
#DIM DYNAMIC DO_HEAL

;まだ試合をしていない
CALL QST_QUEST_16_GET_FLAG_MATCH_COUNT()
IF !RESULT
	;メッセージを表示(1-3.導入/試合前)
	CALL QST_QUEST_16_MESSAGE_MEDICAL_OFFICE(1, 3)
	CALL HO_MOVE_MASTER(QUEST_16_ROOM_ID_RECEPTION)
	RETURN
ENDIF

;1回目は無料
IF !QUEST_16_HEAL_COUNT_INTIME
	HEAL_COST = 0
	;メッセージを表示(1-1.導入/1回目)
	CALL QST_QUEST_16_MESSAGE_MEDICAL_OFFICE(1, 1)
;2回目以降は有料
ELSE
	HEAL_COST = QUEST_16_HEAL_IT_COST
	;メッセージを表示(1-2.導入/2回目)
	CALL QST_QUEST_16_MESSAGE_MEDICAL_OFFICE(1, 2)
ENDIF

DO_HEAL = 1
;治療不要(無傷)
IF !QST_QUEST_16_CHK_NEED_TO_HEAL(QUEST_16_HEAL_IT_TRIG)
	DO_HEAL = 0
	;メッセージを表示(2-3.選択前表示/治療不要)
	CALL QST_QUEST_16_MESSAGE_MEDICAL_OFFICE(2, 3)
;治療不可(お金がない)
ELSEIF MONEY < HEAL_COST
	DO_HEAL = 0
	;メッセージを表示(2-4.選択前表示/治療不可)
	CALL QST_QUEST_16_MESSAGE_MEDICAL_OFFICE(2, 4)
ENDIF

;治療不要/不可の場合は選択肢前に帰る
IF !DO_HEAL
	CALL HO_MOVE_MASTER(QUEST_16_ROOM_ID_RECEPTION)
	RETURN
ENDIF

;治療選択確認表示
;・1連勝以上している場合は連勝回数がリセットされるので警告付き
IF !QUEST_16_STREAK_COUNT
	;メッセージを表示(2-1.選択前表示/警告なし)
	CALL QST_QUEST_16_MESSAGE_MEDICAL_OFFICE(2, 1)
ELSE
	;メッセージを表示(2-2.選択前表示/警告あり)
	CALL QST_QUEST_16_MESSAGE_MEDICAL_OFFICE(2, 2)
ENDIF

;選択肢表示
IF !HEAL_COST
	;メッセージを表示(3-1.選択肢/1回目)
	CALL QST_QUEST_16_MESSAGE_MEDICAL_OFFICE(3, 1)
ELSE
	;メッセージを表示(3-2.選択肢/2回目)
	CALL QST_QUEST_16_MESSAGE_MEDICAL_OFFICE(3, 2)
ENDIF
CALL ASK_MULTI_ANNOTATION(RESULTS:0, RESULTS:1, RESULTS:2, RESULTS:3)

;治療してもらう
IF !RESULT
	;治療回数加算
	QUEST_16_HEAL_COUNT_INTIME ++
	;料金支払い
	;(所持金のチェックは選択肢前に実施済)
	SIF HEAL_COST > 0
		CALL QST_CHANGE_ITEM("MONEY,-{HEAL_COST},")
	;メッセージを表示(4-1.選択結果/治療を受ける)
	CALL QST_QUEST_16_MESSAGE_MEDICAL_OFFICE(4, 1)
	;回復実行
	CALL QST_QUEST_16_HEAL_EXECUTION(QUEST_16_HEAL_IT_VALUE, QUEST_16_HEAL_IT_TRIG)
	;治療完了メッセージ表示＆連勝回数をリセット
	IF !QUEST_16_STREAK_COUNT
		;メッセージを表示(5-1.治療後/ペナルティなし)
		CALL QST_QUEST_16_MESSAGE_MEDICAL_OFFICE(5, 1)
	ELSE
		;メッセージを表示(5-2.治療後/ペナルティあり)
		CALL QST_QUEST_16_MESSAGE_MEDICAL_OFFICE(5, 2)
		QUEST_16_STREAK_COUNT = 0
	ENDIF
	;連勝回数が変化したのでログを更新
	CALL QST_QUEST_16_PRINT_LOG()
ELSE
	;メッセージを表示(4-2.選択結果/治療を断る)
	CALL QST_QUEST_16_MESSAGE_MEDICAL_OFFICE(4, 2)
ENDIF
;受付に戻る
CALL HO_MOVE_MASTER(QUEST_16_ROOM_ID_RECEPTION)

;-------------------------------------------------
;@QST_QUEST_16_HEAL_OUT_TIME
;興行終了後の回復処理
;-------------------------------------------------
@QST_QUEST_16_HEAL_OUT_TIME()

;重傷だと応急手当してくれる
;※ フレーバーイベント。興行終了後は試合ができないので回復しても特に意味はない
IF QST_QUEST_16_CHK_NEED_TO_HEAL(QUEST_16_HEAL_OT_TRIG) && !QUEST_16_HEAL_COUNT_OUTTIME
	;メッセージ表示(10.興行終了後/回復前)
	CALL QST_QUEST_16_MESSAGE_MEDICAL_OFFICE(10)
	;治療実行
	CALL QST_QUEST_16_HEAL_EXECUTION(QUEST_16_HEAL_OT_VALUE, QUEST_16_HEAL_OT_TRIG)
	;治療回数加算
	QUEST_16_HEAL_COUNT_OUTTIME ++
	;メッセージ表示(11.興行終了後/回復後)
	CALL QST_QUEST_16_MESSAGE_MEDICAL_OFFICE(11)
ELSE
	;メッセージ表示(12.興行終了後/回復不要)
	CALL QST_QUEST_16_MESSAGE_MEDICAL_OFFICE(12)
ENDIF
;受付に戻る
CALL HO_MOVE_MASTER(QUEST_16_ROOM_ID_RECEPTION)

;-------------------------------------------------
;@QST_QUEST_16_CHK_NEED_TO_HEAL
;治療が必要か判定
;・HEAL_TRIGGER: 指定割合未満の体力だと治療が必要と判断。千分率で指定。
;                省略時は1000 = HP100.0％未満で治療が必要と判断する。
;-------------------------------------------------
@QST_QUEST_16_CHK_NEED_TO_HEAL(HEAL_TRIG = 1000)
#FUNCTION
#DIM HEAL_TRIG
#DIM DYNAMIC TARGET_ID
#DIM DYNAMIC NEED_TO_HEAL
#DIM DYNAMIC JUDGE_HP
#DIM DYNAMIC L_CNT

;体力が減っているパーティメンバーがいるかチェック
NEED_TO_HEAL = 0
FOR L_CNT, 0, QST_PARTYNUM
	TARGET_ID = TOINT(LIST_GET(_LIST_QST_PARTY, L_CNT))
	;指定割合未満の体力のキャラが1人でも居たら回復が必要と判断
	JUDGE_HP = MAXBASE:TARGET_ID:体力 * HEAL_TRIG / 1000
	IF BASE:TARGET_ID:体力 < JUDGE_HP
		NEED_TO_HEAL = 1
		BREAK
	ENDIF
NEXT
RETURNF NEED_TO_HEAL

;-------------------------------------------------
;@QST_QUEST_16_HEAL_EXECUTION
;治療実行
;・HEAL_VALUE  : 体力回復量
;・HEAL_TRIGGER: 指定割合未満の体力のキャラのみ回復する。千分率で指定。
;                省略時は1000 = HP100.0％未満で治療が必要と判断する。
;-------------------------------------------------
@QST_QUEST_16_HEAL_EXECUTION(HEAL_VALUE, HEAL_TRIG = 1000)
#DIM HEAL_VALUE
#DIM HEAL_TRIG
#DIM DYNAMIC TARGET_ID
#DIM DYNAMIC JUDGE_HP
#DIM DYNAMIC L_CNT

;パーティ全員の体力を回復
FOR L_CNT, 0, QST_PARTYNUM
	TARGET_ID = TOINT(LIST_GET(_LIST_QST_PARTY, L_CNT))
	;指定割合未満の体力なら回復を実行
	JUDGE_HP = MAXBASE:TARGET_ID:体力 * HEAL_TRIG / 1000
	IF BASE:TARGET_ID:体力 < JUDGE_HP
		CALL QST_CHANGE_HP(TARGET_ID, HEAL_VALUE)
	ENDIF
NEXT


code:
;-------------------------------------------------
;QUEST_16:アリーナ　観戦モード処理
;-------------------------------------------------
@QST_QUEST_16_SPECTATOR_MODE()
#DIMS DYNAMIC ATTACKER_NAME
#DIMS DYNAMIC DEFENDER_NAME
#DIM  DYNAMIC COMBAT_RESULT
#DIM  DYNAMIC TRAIN_STATE

ATTACKER_NAME '= QST_GET_FLAGMAP("観戦攻撃側")
DEFENDER_NAME '= QST_GET_FLAGMAP("観戦防御側")

;戦闘モブの登録
CALL CC_INIT()
CALLFORM QST_QUEST_16_COMBAT_MOB_PRESET_%ATTACKER_NAME%("ATTACKER")
CALLFORM QST_QUEST_16_COMBAT_MOB_PRESET_%DEFENDER_NAME%("DEFENDER")

;戦闘開始
CALL CLOSE_COMBAT()
COMBAT_RESULT = RESULT

;戦闘後処理
SELECTCASE COMBAT_RESULT
;攻撃側勝利
CASE 1
	CALL QST_QUEST_16_SPECTATOR_MODE_END_COMBAT(ATTACKER_NAME, DEFENDER_NAME)
	TRAIN_STATE = RESULT
;防御側勝利
CASE 2
	CALL QST_QUEST_16_SPECTATOR_MODE_END_COMBAT(DEFENDER_NAME, ATTACKER_NAME)
	TRAIN_STATE = RESULT
ENDSELECT

;調教しない場合は終了後イベントを直接呼出し
SIF GROUPMATCH(TRAIN_STATE, QUEST_16_NO_TRAIN, QUEST_16_CANCEL_TRAIN)
	CALLFORM QST_QUEST_16_EVENT_{QUEST_16_EV_ID_AFTER_SPECTATE}(TRAIN_STATE)

;-------------------------------------------------
;@QST_QUEST_16_SPECTATOR_MODE_END_COMBAT
;観戦モード　戦闘終了後処理
;-------------------------------------------------
@QST_QUEST_16_SPECTATOR_MODE_END_COMBAT(WINNER_NAME, LOSER_NAME)
#DIMS WINNER_NAME
#DIMS LOSER_NAME
#DIM  DYNAMIC WINNER_ID_START
#DIM  DYNAMIC WINNER_ID_END
#DIM  DYNAMIC LOSER_ID_START
#DIM  DYNAMIC LOSER_ID_END
#DIM  DYNAMIC CHARA_ID
#DIM  DYNAMIC DO_TRAIN
#DIM  DYNAMIC INPUT_ASK

;メッセージ表示(6.試合終了)
CALL QST_QUEST_16_MESSAGE_SPECTATOR_MODE(6, WINNER_NAME)

;-----------------------
;-- 観戦調教実行判定1
;-----------------------
;調教が発生する組み合わせでなかった場合は調教なしで終了
CALL QST_QUEST_16_SPECTATOR_MODE_DO_TRAIN(WINNER_NAME, LOSER_NAME)
IF !RESULT
	;観戦調教用モブID開始位置を初期化
	QUEST_16_SP_TRAIN_CHR_ID_ST = -1
	RETURN QUEST_16_NO_TRAIN
ENDIF

;-----------------------
;-- 観戦調教実行判定2
;-----------------------
;判定用にモブを生成
;生成前後のCHARANUMからモブIDの開始位置～終了位置を記憶
WINNER_ID_START = CHARANUM
CALLFORM QST_QUEST_16_TRAIN_MOB_PRESET_%WINNER_NAME%(1)
WINNER_ID_END  = CHARANUM -1
LOSER_ID_START = CHARANUM
CALLFORM QST_QUEST_16_TRAIN_MOB_PRESET_%LOSER_NAME%(0)
LOSER_ID_END   = CHARANUM -1
;観戦調教用モブID開始位置を記録
QUEST_16_SP_TRAIN_CHR_ID_ST = WINNER_ID_START
;デバッグ用表示
[IF_DEBUG]
PRINTFORMW WINNER_ID_START:{WINNER_ID_START}
PRINTFORMW WINNER_ID_END  :{WINNER_ID_END}
PRINTFORMW LOSER_ID_START :{LOSER_ID_START}
PRINTFORMW LOSER_ID_END   :{LOSER_ID_END}
PRINTFORMW SP_TRAIN_CHR_ID_ST:{QUEST_16_SP_TRAIN_CHR_ID_ST}
[ENDIF]

;「男同士のコマンドフィルタ」が有効な場合に男のみ×男のみの調教が発生しないようにする
IF CONFIG:201
	DO_TRAIN = 0
	;調教参加モブに女性がいる場合は調教する
	FOR CHARA_ID, WINNER_ID_START, LOSER_ID_END + 1
		IF IS_FEMALE(CHARA_ID)
			DO_TRAIN = 1
			BREAK
		ENDIF
	NEXT
ELSE
	DO_TRAIN = 1
ENDIF

;調教が発生する組み合わせでなかった場合は調教なしで終了
SIF !DO_TRAIN
	RETURN QUEST_16_NO_TRAIN

;------------------
;-- 観戦調教選択
;------------------
;メッセージ表示(7.調教あり)
CALL QST_QUEST_16_MESSAGE_SPECTATOR_MODE(7)

;選択前に調教の対象キャラを表示
;調教対象表示(勝者側)
CALL QST_QUEST_16_MESSAGE_TRAIN_TARGETS(2, WINNER_ID_START, WINNER_ID_END)
;調教対象表示(敗者側)
CALL QST_QUEST_16_MESSAGE_TRAIN_TARGETS(3, LOSER_ID_START, LOSER_ID_END)

;メッセージ表示(8.観戦調教選択肢)
CALL QST_QUEST_16_MESSAGE_SPECTATOR_MODE(8)
CALL ASK_YN(RESULTS:0, RESULTS:1)
INPUT_ASK = RESULT

;----------------------
;-- 観戦調教を見ない
;----------------------
SIF INPUT_ASK
	RETURN QUEST_16_CANCEL_TRAIN

;--------------------
;-- 観戦調教を見る
;--------------------
;調教設定
FLAG:ウフフフラグ   = 1
FLAG:調教モード     = 調教_慰安
TFLAG:調教ターン数  = QUEST_16_SPECTATE_TRAIN_TURN
FLAG:調教スキップ可 = 1
;一旦全キャラの調教参加フラグを折る
CVARSET CFLAG, GETNUM(CFLAG, "調教参加フラグ") , 0

;勝者側の設定
FOR CHARA_ID, WINNER_ID_START, WINNER_ID_END + 1
	CFLAG:CHARA_ID:調教参加フラグ   = 1
	CFLAG:CHARA_ID:慰安参加者       = 1
	CFLAG:CHARA_ID:主導除外         = 0
	CFLAG:CHARA_ID:凌辱被害者フラグ = 0
NEXT

;敗者側の設定
FOR CHARA_ID, LOSER_ID_START, LOSER_ID_END + 1
	CFLAG:CHARA_ID:調教参加フラグ   = 1
	CFLAG:CHARA_ID:慰安参加者       = 0
	CFLAG:CHARA_ID:主導除外         = 1
	CFLAG:CHARA_ID:凌辱被害者フラグ = 1
NEXT

;調教終了後に実行するイベントを設定
CALL QST_ENQUEUE_TRAIN_EXIT_EVENT(QUEST_16_EV_ID_AFTER_SPECTATE)
RETURN QUEST_16_DO_TRAIN

;-------------------------------------------------
;@QST_QUEST_16_SPECTATOR_MODE_DO_TRAIN
;観戦モード　調教発生判定
;-------------------------------------------------
@QST_QUEST_16_SPECTATOR_MODE_DO_TRAIN(WINNER_NAME, LOSER_NAME)
#DIMS WINNER_NAME
#DIMS LOSER_NAME
#DIM  DYNAMIC WIN_DO_TRAIN	; Winner Do Train
#DIM  DYNAMIC LOS_CAN_TRAIN	; Loser Can Train

;勝者が調教するタイプ
TRYCCALLFORM QST_QUEST_16_IS_DO_TRAIN_%WINNER_NAME%
	WIN_DO_TRAIN = RESULT
CATCH
	WIN_DO_TRAIN = 0
ENDCATCH

;敗者が調教されるタイプ
TRYCCALLFORM QST_QUEST_16_IS_CAN_TRAIN_%LOSER_NAME%
	LOS_CAN_TRAIN = RESULT
CATCH
	LOS_CAN_TRAIN = 0
ENDCATCH

RETURN WIN_DO_TRAIN && LOS_CAN_TRAIN

;-------------------------------------------------
;@QST_QUEST_16_SPECTATOR_MODE_SET_MATCH
;観戦モード　対戦カードの設定
;-------------------------------------------------
@QST_QUEST_16_SPECTATOR_MODE_SET_MATCH(エロ優先)
#DIM  エロ優先
#DIMS DYNAMIC LIST_ENEMY
#DIM  DYNAMIC L_CNT
#DIMS DYNAMIC ATTACKER_NAME
#DIM  DYNAMIC ATTACKER_RANK
#DIM  DYNAMIC ATK_DO_TRAIN	; Attacker Do Train
#DIM  DYNAMIC ATK_CAN_TRAIN	; Attacker Can Train
#DIMS DYNAMIC DEFENDER_NAME
#DIM  DYNAMIC DEFENDER_RANK
#DIM  DYNAMIC DEF_DO_TRAIN	; Defender Do Train
#DIM  DYNAMIC DEF_CAN_TRAIN	; Defender Can Train

;対戦相手の一覧を取得
CALL QST_QUEST_16_SPECTATOR_MODE_GET_LIST_ENEMY(エロ優先)
LIST_ENEMY '= RESULTS

;組み合わせ抽選(エロ優先判定なし)
IF !エロ優先
	;一覧をシャッフルして対戦相手を決定
	CALL LIST_SHUFFLE(LIST_ENEMY)
	ATTACKER_NAME '= LIST_GET(LIST_ENEMY, 0)
	CALL LIST_SHUFFLE(LIST_ENEMY)
	DEFENDER_NAME '= LIST_GET(LIST_ENEMY, 0)
	CALL QST_SET_FLAGMAP("観戦攻撃側", ATTACKER_NAME)
	CALL QST_SET_FLAGMAP("観戦防御側", DEFENDER_NAME)
	RETURN
ENDIF

;組み合わせ抽選(エロ優先判定あり)
;・戦闘後に調教が発生する組み合わせになるまで再抽選する
;・無限ループ防止のため、NGパターンを引き続けた場合は規定回数で諦める
FOR L_CNT, 0, QUEST_16_SHFFL_ATTP_CNT
	;一覧をシャッフルして対戦相手を決定
	CALL LIST_SHUFFLE(LIST_ENEMY)
	ATTACKER_NAME '= LIST_GET(LIST_ENEMY, 0)
	CALL LIST_SHUFFLE(LIST_ENEMY)
	DEFENDER_NAME '= LIST_GET(LIST_ENEMY, 0)

	;ランクを取得
	CALLFORM QST_QUEST_16_GET_ENEMY_RANK_%ATTACKER_NAME%
	ATTACKER_RANK = RESULT
	CALLFORM QST_QUEST_16_GET_ENEMY_RANK_%DEFENDER_NAME%
	DEFENDER_RANK = RESULT

	;攻撃側/防御側双方の勝利調教/敗北調教の有無を取得
	;負けたときに調教される
	TRYCCALLFORM QST_QUEST_16_IS_CAN_TRAIN_%ATTACKER_NAME%
		ATK_CAN_TRAIN = RESULT
	CATCH
		ATK_CAN_TRAIN = 0
	ENDCATCH
	TRYCCALLFORM QST_QUEST_16_IS_CAN_TRAIN_%DEFENDER_NAME%
		DEF_CAN_TRAIN = RESULT
	CATCH
		DEF_CAN_TRAIN = 0
	ENDCATCH
	;勝ったときに調教する
	TRYCCALLFORM QST_QUEST_16_IS_DO_TRAIN_%ATTACKER_NAME%
		ATK_DO_TRAIN = RESULT
	CATCH
		ATK_DO_TRAIN = 0
	ENDCATCH
	TRYCCALLFORM QST_QUEST_16_IS_DO_TRAIN_%DEFENDER_NAME%
		DEF_DO_TRAIN = RESULT
	CATCH
		DEF_DO_TRAIN = 0
	ENDCATCH

	;攻撃側が勝利したときに調教が発生する組み合わせならOK
	;・攻撃側のランクが防御側未満の場合は勝てない可能性が高いので除外
	SIF ATK_DO_TRAIN && DEF_CAN_TRAIN && ATTACKER_RANK >= DEFENDER_RANK
		BREAK

	;防御側が勝利したときに調教が発生する組み合わせならOK
	;・防御側のランクが攻撃側未満の場合は勝てない可能性が高いので除外
	SIF DEF_DO_TRAIN && ATK_CAN_TRAIN && DEFENDER_RANK >= ATTACKER_RANK
		BREAK
NEXT
CALL QST_SET_FLAGMAP("観戦攻撃側", ATTACKER_NAME)
CALL QST_SET_FLAGMAP("観戦防御側", DEFENDER_NAME)

;-------------------------------------------------
;@QST_QUEST_16_SPECTATOR_MODE_GET_LIST_ENEMY
;観戦モード　対戦相手一覧の取得
;-------------------------------------------------
@QST_QUEST_16_SPECTATOR_MODE_GET_LIST_ENEMY(エロ優先)
#DIM エロ優先
#DIMS DYNAMIC LIST_ENEMY
#DIM  DYNAMIC L_CNT
#DIMS DYNAMIC ENEMY_NAME
#DIM  DYNAMIC CAN_TRAIN
#DIM  DYNAMIC DO_TRAIN
;対戦相手一覧を取得
CALL QST_QUEST_16_GET_LIST_ENEMY()
LIST_ENEMY '= RESULTS

;エロ優先じゃない場合はそのままリストを返す
IF !エロ優先
	RESULTS '= LIST_ENEMY
	RETURN
ENDIF

;エロ優先：調教できない＆調教しない編成はリストから除外
L_CNT = 0
DO
	ENEMY_NAME '= LIST_GET(LIST_ENEMY, L_CNT)
	;リストの中身がなくなったら終了
	SIF ENEMY_NAME == ""
		BREAK

	TRYCCALLFORM QST_QUEST_16_IS_CAN_TRAIN_%ENEMY_NAME%
		CAN_TRAIN = RESULT
	CATCH
		CAN_TRAIN = 0
	ENDCATCH
	TRYCCALLFORM QST_QUEST_16_IS_DO_TRAIN_%ENEMY_NAME%
		DO_TRAIN = RESULT
	CATCH
		DO_TRAIN = 0
	ENDCATCH

	IF !CAN_TRAIN && !DO_TRAIN
		;リストから削除
		LIST_ENEMY '= LIST_REMOVEALL(LIST_ENEMY, ENEMY_NAME)
		;削除した場合は中身がズレるのでカウンタは動かさない
	ELSE
		;削除しない場合はカウンタを動かして次の内容へ
		L_CNT ++
	ENDIF
LOOP 1

RESULTS '= LIST_ENEMY

;-------------------------------------------------
;@QST_QUEST_16_SPECTATOR_MODE_DELETE_MOB
;観戦調教用モブの削除
;・観戦調教で慰安モブが増えすぎてバグるのを防止する。(通常、慰安モブはターン終了時に削除)
;・観戦調教はNPC対NPCの調教でプレイヤーが絡まないのでターン終了時まで保持する必要もないと判断。
;・観戦調教で追加した慰安モブのみを対象とする。
;  勝利調教/敗北調教で追加された慰安モブは消去せず、通常通りターン終了時まで保持する。
;-------------------------------------------------
@QST_QUEST_16_SPECTATOR_MODE_DELETE_MOB()

;観戦調教用モブID開始位置が設定されていない場合は終了
SIF QUEST_16_SP_TRAIN_CHR_ID_ST == -1
	RETURN

;モブの削除
DO
	;デバッグ用表示
	[IF_DEBUG]
	PRINTFORMW DELETECHARA:[{QUEST_16_SP_TRAIN_CHR_ID_ST}] %ANAME(QUEST_16_SP_TRAIN_CHR_ID_ST)%
	[ENDIF]

	;慰安モブ以外が削除対象になったらエラー通知する
	;※ バグで慰安モブ以外が削除対象になってしまった際、そのまま削除して進行しないようにするフェイルセーフ処理
	SIF !CFLAG:QUEST_16_SP_TRAIN_CHR_ID_ST:慰安モブ
		THROW 観戦調教用モブの削除で慰安モブ以外のキャラ([{QUEST_16_SP_TRAIN_CHR_ID_ST}] %ANAME(QUEST_16_SP_TRAIN_CHR_ID_ST)%)が削除対象になりました。

	;削除実行
	CALL DELETE_CHARA(QUEST_16_SP_TRAIN_CHR_ID_ST)
;キャラ人数が観戦調教用モブID開始位置より少なくなったら終了
LOOP QUEST_16_SP_TRAIN_CHR_ID_ST < CHARANUM

;観戦調教用モブID開始位置を初期化
QUEST_16_SP_TRAIN_CHR_ID_ST = -1

;-------------------------------------------------
;@QST_QUEST_16_SPECTATOR_MODE_SELECT_MATCH
;観戦モード　対戦カードの選択【デバッグモード用】
;-------------------------------------------------
[IF_DEBUG]
@QST_QUEST_16_SPECTATOR_MODE_SELECT_MATCH(エロ優先)
#DIM エロ優先
#DIMS DYNAMIC LIST_ENEMY
#DIMS DYNAMIC ATTACKER_NAME
#DIMS DYNAMIC DEFENDER_NAME

;対戦相手の一覧を取得
CALL QST_QUEST_16_SPECTATOR_MODE_GET_LIST_ENEMY(エロ優先)
LIST_ENEMY '= RESULTS
;メッセージ表示(100.対戦カードの選択)
CALL QST_QUEST_16_MESSAGE_SPECTATOR_MODE(100)
;メッセージ表示(101.攻撃側)
CALL QST_QUEST_16_MESSAGE_SPECTATOR_MODE(101)
;対戦相手一覧から対戦相手を選択
CALL QST_QUEST_16_SELECT_LIST_ENEMY(LIST_ENEMY)
ATTACKER_NAME '= RESULTS
;メッセージ表示(102.防御側)
CALL QST_QUEST_16_MESSAGE_SPECTATOR_MODE(102)
CALL QST_QUEST_16_SELECT_LIST_ENEMY(LIST_ENEMY)
DEFENDER_NAME '= RESULTS
CALL QST_SET_FLAGMAP("観戦攻撃側", ATTACKER_NAME)
CALL QST_SET_FLAGMAP("観戦防御側", DEFENDER_NAME)
[ENDIF]


code:
;-------------------------------------------------
;QUEST_16:アリーナ　試合関連の処理
;-------------------------------------------------
@QST_QUEST_16_BATTLE
#DIMS DYNAMIC ENEMY_PRESET_NAME
#DIM  DYNAMIC COMBAT_RESULT
#DIM  DYNAMIC TRAIN_STATE

;対戦相手の取得
ENEMY_PRESET_NAME '= QST_GET_FLAGMAP("対戦相手")
;戦闘前口上を表示
TRYCALLFORM QST_QUEST_16_MESSAGE_BEFORE_BATTLE_%ENEMY_PRESET_NAME%

;戦闘実行
CALL QST_QUEST_16_COMBAT(ENEMY_PRESET_NAME)
COMBAT_RESULT = RESULT

;勝敗ごとの処理
IF COMBAT_RESULT
	;勝利調教する
	CALL QST_QUEST_16_WINNING_TRAIN(ENEMY_PRESET_NAME)
	TRAIN_STATE = RESULT
	;調教しない場合は終了後イベントを直接呼出し
	SIF GROUPMATCH(TRAIN_STATE, QUEST_16_NO_TRAIN, QUEST_16_CANCEL_TRAIN)
		CALLFORM QST_QUEST_16_EVENT_{QUEST_16_EV_ID_AFTER_WINNING}(TRAIN_STATE)
ELSE
	;敗北調教される
	CALL QST_QUEST_16_DEFEAT_TRAIN(ENEMY_PRESET_NAME)
	TRAIN_STATE = RESULT
	;調教しない場合は終了後イベントを直接呼出し
	SIF TRAIN_STATE == QUEST_16_NO_TRAIN
		CALLFORM QST_QUEST_16_EVENT_{QUEST_16_EV_ID_AFTER_DEFEAT}(TRAIN_STATE)
ENDIF

;-------------------------------------------------
;@QST_QUEST_16_SET_ENEMY
;対戦相手の抽選
;-------------------------------------------------
;region @QST_QUEST_16_SET_ENEMY
@QST_QUEST_16_SET_ENEMY()
#DIMS DYNAMIC PREV_ENEMY
#DIMS DYNAMIC LIST_ENEMY
#DIMS DYNAMIC ENEMY_PRESET_NAME
#DIMS DYNAMIC ENEMY_RANK

PREV_ENEMY '= QST_GET_FLAGMAP("対戦相手")
;対戦相手の一覧を取得
CALL QST_QUEST_16_GET_LIST_ENEMY()
LIST_ENEMY '= RESULTS

;前回と同じ対戦相手を削除
IF PREV_ENEMY != ""
	LIST_ENEMY '= LIST_REMOVEALL(LIST_ENEMY, PREV_ENEMY)
ENDIF

;シャッフルして抽選
CALL LIST_SHUFFLE(LIST_ENEMY)
ENEMY_PRESET_NAME '= LIST_GET(LIST_ENEMY, 0)

;決定した相手を登録
CALL QST_SET_FLAGMAP("対戦相手", ENEMY_PRESET_NAME)
CALLFORM QST_QUEST_16_GET_ENEMY_RANK_%ENEMY_PRESET_NAME%
CALL QST_SET_FLAGMAP("難易度", TOSTR(RESULT))
RESULTS '= ENEMY_PRESET_NAME

RETURN
;#endregion

;-------------------------------------------------
;@QST_QUEST_16_GET_LIST_ENEMY
;対戦相手一覧の取得
;-------------------------------------------------
@QST_QUEST_16_GET_LIST_ENEMY
#DIMS DYNAMIC LIST_ENEMY
#DIM  DYNAMIC L_CNT

;対戦相手の一覧を作成
LIST_ENEMY '= ""
FOR L_CNT, 0, QUEST_16_LIST_ENEMY_MAX
	;対戦相手の名前が設定されていたらリストに追加する
	TRYCCALLFORM QST_QUEST_16_GET_ENEMY_NAME_{L_CNT}
		LIST_ENEMY '= LIST_ADD(LIST_ENEMY, RESULTS)
	CATCH
	ENDCATCH
NEXT
RESULTS '= LIST_ENEMY

;-------------------------------------------------
;@QST_QUEST_16_COMBAT
;戦闘イベント
;-------------------------------------------------
@QST_QUEST_16_COMBAT(PRESET_NAME)
#DIMS PRESET_NAME
#DIM  DYNAMIC GROUP_SIZE
#DIMS DYNAMIC _LIST_REWARD
#DIM  DYNAMIC COMBAT_RESULT
#DIM  DYNAMIC L_CNT

;白兵戦参加メンバーの初期化
CALL CC_INIT()
;攻撃側キャラクターの設定(最大3名)
FOR L_CNT, 0, LIST_COUNT(_LIST_QST_PARTY)
	CALL CC_ADDCHARA("ATTACKER", TOINT(LIST_GET(_LIST_QST_PARTY, L_CNT)))
NEXT
;防御側キャラクターの設定(対戦相手)
CALLFORM QST_QUEST_16_COMBAT_MOB_PRESET_%PRESET_NAME%
;戦闘開始
CALL CLOSE_COMBAT()
COMBAT_RESULT = RESULT
;勝利
IF COMBAT_RESULT == 1
	;戦利品(対戦相手のドロップアイテム)を獲得
	CALL CC_GET_LOOT_FROM("DEFENDER")
	;戦闘で減った体力を反映
	CALL CC_APPLY_CHARA_HP()
	;勝利メッセージ表示(1.戦闘勝利)
	CALL QST_QUEST_16_MESSAGE_CONBAT_WIN(1)
	;戦利品(闘技場の勝利報酬)を獲得
	;・設定なし？(_LIST_REWARDが空)
	;・対戦相手のランクで変化する勝利報酬(ディナリと名誉点)は勝利/勝利調教後に呼ばれるイベント処理で獲得。
	CALL QST_GET_COMBAT_REWARD(_LIST_REWARD)
	WAIT
	;RETURN 1: 勝利
	RETURN 1
;敗北
ELSE
	;戦闘で減った体力を反映
	CALL CC_APPLY_CHARA_HP()
	;敗北メッセージ表示(1.戦闘敗北)
	CALL QST_QUEST_16_MESSAGE_CONBAT_LOSE(1)
	WAIT
	;RETURN 0: 敗北
	RETURN 0
ENDIF

;-------------------------------------------------
;@QST_QUEST_16_WINNING_TRAIN
;勝利調教
;-------------------------------------------------
@QST_QUEST_16_WINNING_TRAIN(ENEMY_PRESET_NAME)
#DIMS ENEMY_PRESET_NAME
#DIM  DYNAMIC CHARA_ID
#DIM  DYNAMIC 非同意のキャラ
#DIM  DYNAMIC IDX
#DIM  DYNAMIC ENABLE_WINNING_TRAIN
#DIM  DYNAMIC L_CNT
#DIM  DYNAMIC LOSER_ID_START
#DIM  DYNAMIC LOSER_ID_END
#DIM  DYNAMIC TRAIN_STATE
#DIM  DYNAMIC INPUT_ASK

;----------------------
;-- 勝利調教実行判定
;----------------------
TRYCCALLFORM QST_QUEST_16_IS_CAN_TRAIN_%ENEMY_PRESET_NAME%
	ENABLE_WINNING_TRAIN = RESULT
CATCH
	ENABLE_WINNING_TRAIN = 0
ENDCATCH

;----------------------
;-- 勝利調教できない
;----------------------
SIF !ENABLE_WINNING_TRAIN
	RETURN QUEST_16_NO_TRAIN

;----------------------
;-- 勝利調教実行選択
;----------------------
TRAIN_STATE = QUEST_16_DO_TRAIN
;予めモブを生成
LOSER_ID_START = CHARANUM
CALLFORM QST_QUEST_16_TRAIN_MOB_PRESET_%ENEMY_PRESET_NAME%(0)
LOSER_ID_END   = CHARANUM -1

;勝利調教強制キャンセル判定1(男のみ×男のみの調教)
;「男同士のコマンドフィルタ」が有効な場合に男のみ×男のみの調教が発生しないようにする処理
;男のみ×男のみの調教の場合は強制的に調教しない選択を選んだことにする
IF CONFIG:201 && QUEST_16_ONLY_MALE_PARTY
	TRAIN_STATE = QUEST_16_CANCEL_TRAIN
	;調教参加モブに女性がいる場合は調教する
	FOR CHARA_ID, LOSER_ID_START, LOSER_ID_END + 1
		IF IS_FEMALE(CHARA_ID)
			TRAIN_STATE = QUEST_16_DO_TRAIN
			BREAK
		ENDIF
	NEXT
ENDIF

;強制キャンセルでない場合は選択
IF TRAIN_STATE == QUEST_16_DO_TRAIN
	;メッセージ表示(2.調教対象表示前)
	CALL QST_QUEST_16_MESSAGE_CONBAT_WIN(2)

	;調教対象を表示
	CALL QST_QUEST_16_MESSAGE_TRAIN_TARGETS(1, LOSER_ID_START, LOSER_ID_END)

	;メッセージ表示(3.勝利調教選択肢)
	CALL QST_QUEST_16_MESSAGE_CONBAT_WIN(3)
	CALL ASK_MULTI_ANNOTATION_P(RESULTS:0, RESULTS:1, RESULTS:2, RESULTS:3)
	INPUT_ASK = RESULT
	SIF !INPUT_ASK
		TRAIN_STATE = QUEST_16_CANCEL_TRAIN
ENDIF

;勝利調教キャンセル時処理
IF TRAIN_STATE == QUEST_16_CANCEL_TRAIN
	;メッセージ表示(4-1.勝利調教しない)
	CALL QST_QUEST_16_MESSAGE_CONBAT_WIN(4, 1)

;勝利調教強制キャンセル判定2(パーティメンバー非同意)
ELSE
	;パーティメンバー全員が凌辱を許容するか判定
	非同意のキャラ = -1
	FOR L_CNT, 0, QST_PARTYNUM
		CHARA_ID = TOINT(LIST_GET(_LIST_QST_PARTY, L_CNT))
		IF !CAN_RAPE_ACCEPT(CHARA_ID)
			非同意のキャラ = CHARA_ID
			BREAK
		ENDIF
	NEXT
	QUEST_16_DISAGREE_CHARA_ID = 非同意のキャラ

	;パーティ全員の同意が無ければ凌辱非成立
	IF 非同意のキャラ != -1
		TRAIN_STATE = QUEST_16_CANCEL_TRAIN
		;リーダーが非同意キャラ
		IF 非同意のキャラ == QST_LEADER_ID()
			;メッセージ表示(4-2.勝利調教しない/思い直した)
			CALL QST_QUEST_16_MESSAGE_CONBAT_WIN(4, 2)
		;リーダー以外が非同意キャラ
		ELSE
			;メッセージ表示(4-3.勝利調教しない/止められた)
			CALL QST_QUEST_16_MESSAGE_CONBAT_WIN(4, 3)
		ENDIF
	ENDIF
ENDIF

;勝利調教しない/できない場合の名誉点加算＆慰安モブの後処理
IF TRAIN_STATE == QUEST_16_CANCEL_TRAIN
	;名誉点獲得
	CALL QST_CHANGE_ITEM(@"名誉点,{QUEST_16_WIN_HONOR},")
	;生成したモブが表示されないようにする
	FOR L_CNT, 0, CHARANUM
		CHARA_ID = L_CNT
		IF CFLAG:CHARA_ID:調教参加フラグ && CFLAG:CHARA_ID:慰安モブ
			CFLAG:CHARA_ID:調教参加フラグ = 0
		ENDIF
	NEXT
	RETURN QUEST_16_CANCEL_TRAIN
ENDIF

;------------------
;-- 勝利調教する
;------------------
;淫堕点獲得
CALL QST_CHANGE_ITEM(@"淫堕点,{QUEST_16_WIN_LEWDNESS},")

;メッセージ表示(5.勝利調教する)
CALL QST_QUEST_16_MESSAGE_CONBAT_WIN(5)

;パーティメンバーを調教に参加させる
FOR L_CNT, 0, QST_PARTYNUM
	CFLAG:(TOINT(LIST_GET(_LIST_QST_PARTY, L_CNT))):調教参加フラグ = 1
NEXT

;調教設定
FLAG:ウフフフラグ = 1
FLAG:調教モード = 調教_捕虜調教
TFLAG:調教ターン数 = QUEST_16_WINNING_TRAIN_TURN
;生成したモブキャラを捕虜調教の対象に
VARSET PRISONER_TARGET, -1
FOR L_CNT, 0, CHARANUM
	CHARA_ID = L_CNT
	IF CFLAG:CHARA_ID:調教参加フラグ && CFLAG:CHARA_ID:慰安モブ
		PRISONER_TARGET:IDX = CHARA_ID
		CFLAG:CHARA_ID:強制友好化 = 0
		CFLAG:CHARA_ID:主導除外 = 1
		CFLAG:CHARA_ID:凌辱被害者フラグ = 1
		TFLAG:参加者数 ++
		IDX++
	ENDIF
NEXT

;調教終了後に実行するイベントを設定
CALL QST_ENQUEUE_TRAIN_EXIT_EVENT(QUEST_16_EV_ID_AFTER_WINNING)
RETURN QUEST_16_DO_TRAIN

;-------------------------------------------------
;@QST_QUEST_16_DEFEAT_TRAIN
;敗北調教
;-------------------------------------------------
@QST_QUEST_16_DEFEAT_TRAIN(ENEMY_PRESET_NAME)
#DIMS ENEMY_PRESET_NAME
#DIM  DYNAMIC CHARA_ID
;#DIM CONST 派生イベントID = 21
#DIM  DYNAMIC ENABLE_DEFEAT_TRAIN
#DIM  DYNAMIC L_CNT

;----------------------
;-- 敗北調教実行判定
;----------------------
TRYCCALLFORM QST_QUEST_16_IS_DO_TRAIN_%ENEMY_PRESET_NAME%
	ENABLE_DEFEAT_TRAIN = RESULT
CATCH
	ENABLE_DEFEAT_TRAIN = 0
ENDCATCH

;----------------------
;-- 敗北調教されない
;----------------------
;敗北調教なしの場合はメッセージを表示して終了
IF !ENABLE_DEFEAT_TRAIN
	;戦闘敗北時のメッセージ(敗北調教なし)を表示
	TRYCCALLFORM QST_QUEST_16_MESSAGE_DEFEAT_NO_TRAIN_%ENEMY_PRESET_NAME%
	CATCH
		;メッセージ設定がない場合は汎用メッセージを表示
		CALL QST_QUEST_16_MESSAGE_DEFEAT_NO_TRAIN()
	ENDCATCH
	RETURN QUEST_16_NO_TRAIN
ENDIF

;--------------------
;-- 敗北調教される
;--------------------
;戦闘敗北時のメッセージ(敗北調教あり)を表示
TRYCALLFORM QST_QUEST_16_MESSAGE_DEFEAT_TRAIN_%ENEMY_PRESET_NAME%

;モブを生成
CALLFORM QST_QUEST_16_TRAIN_MOB_PRESET_%ENEMY_PRESET_NAME%(1)

;メッセージを表示(2.敗北調教される)
CALL QST_QUEST_16_MESSAGE_CONBAT_LOSE(2)

;慰安参加者にパーティメンバーの誘蛾の色香に応じたステータス補正をかける
CALL QST_SET_SEDUCTION_EFFECT_TO_MOB(1)

FLAG:ウフフフラグ = 1
FLAG:調教モード = 調教_慰安
TFLAG:調教ターン数 = QUEST_16_DEFEAT_TRAIN_TURN

;主導除外フラグが立ったキャラクターは慰安調教で常にターゲットに回る。
;拘束中など自主的に行動させたくないシチュエーションでこのフラグを立てる。
FOR L_CNT, 0, QST_PARTYNUM
	CHARA_ID = TOINT(LIST_GET(_LIST_QST_PARTY, L_CNT))
	;調教コマンドのプレイヤーにならなくなる。一方的に嬲られるシチュ用
	CFLAG:CHARA_ID:主導除外 = 1
	;良感情を極めて得にくくなるフラグ
	CFLAG:CHARA_ID:凌辱被害者フラグ = 1
	CFLAG:CHARA_ID:調教参加フラグ = 1
NEXT

;調教終了後に実行するイベントを設定
CALL QST_ENQUEUE_TRAIN_EXIT_EVENT(QUEST_16_EV_ID_AFTER_DEFEAT)
RETURN QUEST_16_DO_TRAIN

;-------------------------------------------------
;@QST_QUEST_16_SELECT_ENEMY
;対戦相手の選択【デバッグモード用】
;-------------------------------------------------
[IF_DEBUG]
@QST_QUEST_16_SELECT_ENEMY()
#DIMS DYNAMIC LIST_ENEMY
#DIMS DYNAMIC ENEMY_NAME

;対戦相手の一覧を取得
CALL QST_QUEST_16_GET_LIST_ENEMY()
LIST_ENEMY '= RESULTS

;メッセージ表示(対戦相手の選択)
CALL QST_QUEST_16_MESSAGE_SELECT_ENEMY()
;対戦相手一覧から対戦相手を選択
CALL QST_QUEST_16_SELECT_LIST_ENEMY(LIST_ENEMY)
ENEMY_NAME '= RESULTS

;決定した相手を登録
CALL QST_SET_FLAGMAP("対戦相手", ENEMY_NAME)
CALLFORM QST_QUEST_16_GET_ENEMY_RANK_%ENEMY_NAME%
CALL QST_SET_FLAGMAP("難易度", TOSTR(RESULT))
[ENDIF]

;-------------------------------------------------
;@QST_QUEST_16_SELECT_LIST_ENEMY
;対戦相手一覧から対戦相手を選択【デバッグモード用】
;-------------------------------------------------
[IF_DEBUG]
@QST_QUEST_16_SELECT_LIST_ENEMY(LIST_ENEMY)
#DIMS LIST_ENEMY
#DIMS DYNAMIC ENEMY_NAME
#DIM  DYNAMIC ENEMY_RANK
#DIM  DYNAMIC L_CNT
#DIM  DYNAMIC INPUT_NO

;対戦相手一覧をボタンとして表示
FOR L_CNT, 0, LIST_COUNT(LIST_ENEMY)
	ENEMY_NAME '= LIST_GET(LIST_ENEMY, L_CNT)
	CALLFORM QST_QUEST_16_GET_ENEMY_RANK_%ENEMY_NAME%
	ENEMY_RANK = RESULT
	CALLF TAG_PRINT(@"　@B:{L_CNT}@[%ENEMY_NAME% (RANK.{ENEMY_RANK})]@/B@", 5)
NEXT

;入力ループ
DO
	INPUT
	INPUT_NO = RESULT
	IF INPUT_NO < 0 || INPUT_NO > (LIST_COUNT(LIST_ENEMY) - 1)
		CLEARLINE 1
	ELSE
		ENEMY_NAME '= LIST_GET(LIST_ENEMY, INPUT_NO)
		CLEARLINE 1
		CALLF TAG_PRINT(@"@C:{0xFFFF00}@    ⇒%ENEMY_NAME%@/C@", 1)
		BREAK
	ENDIF
LOOP 1
RESULTS '= ENEMY_NAME
[ENDIF]


path: ERB/QUEST/クエストデータ/QUEST_16_アリーナ/対戦相手/QUEST_16_アリーナ_対戦相手_0.デモ戦闘用やられ役.ERB


path: ERB/QUEST/クエストデータ/QUEST_16_アリーナ/対戦相手/QUEST_16_アリーナ_対戦相手_1.ならず者.ERB


path: ERB/QUEST/クエストデータ/QUEST_16_アリーナ/対戦相手/QUEST_16_アリーナ_対戦相手_10.幻術師.ERB


code:
;QUEST_16_アリーナ_対戦相手_11.お嬢様魔術師
;-------------------------------------------------
;番号と名前の紐付け
;-------------------------------------------------
@QST_QUEST_16_GET_ENEMY_NAME_11
RESULTS = お嬢様魔術師

;-------------------------------------------------
;敵ランク
;・褒賞、罰金の算出に使用。0～3の値を返すこと
;-------------------------------------------------
@QST_QUEST_16_GET_ENEMY_RANK_お嬢様魔術師
RETURN 1

;-------------------------------------------------
;調教できるか判定
;・あなたが勝利した際に勝利調教できるか
;　また、観戦で敗北した際に調教されるか
;・省略化。省略した場合は調教できない/されない
;-------------------------------------------------
@QST_QUEST_16_IS_CAN_TRAIN_お嬢様魔術師
RETURN 1

;-------------------------------------------------
;調教してくるか判定
;・あなたが敗北した際に敗北調教してくるか
;　また、観戦で勝利した際に調教するか
;・省略化。省略した場合は調教してこない/しない
;-------------------------------------------------
@QST_QUEST_16_IS_DO_TRAIN_お嬢様魔術師
;男性のみの編成なので「男のみ×男のみ調教」にならないように判定する
RETURN !QST_QUEST_16_IS_ONLY_MALE_TRAIN()

;-------------------------------------------------
;戦闘前口上
;・省略化。省略した場合は何も表示されない
;-------------------------------------------------
@QST_QUEST_16_MESSAGE_BEFORE_BATTLE_お嬢様魔術師
PRINTFORMW 「ほーっほっほっほっ！」
PRINTFORMW アリーナに場違いな高笑いが響き渡る
PRINTL
PRINTFORMW 今回の対戦相手は世間知らずのお嬢様のようだ
PRINTFORMW 端からみると魔術師に見える。お供に連れているのは奴隷だろうか
PRINTL
PRINTFORMW 「私の魔法でどんな輩もイチコロですわ！」
PRINTFORMW 「肉壁達！詠唱の邪魔をさせるんじゃないですわよ！」

;-------------------------------------------------
;戦闘敗北時口上(敗北調教あり)
;・あなたが敗北し、調教される場合に表示されるメッセージ
;・省略化。省略した場合は何も表示されない
;-------------------------------------------------
@QST_QUEST_16_MESSAGE_DEFEAT_TRAIN_お嬢様魔術師
PRINTFORMW 「ほーっほっほっほっ！大勝利ですわぁ！」
PRINTFORML 勝利に満足したお嬢様は盾となり倒れた奴隷たちに目もくれず、
PRINTFORMW 高笑いを上げながら去っていった
PRINTL
PRINTFORMW ………………
PRINTFORMW …………
PRINTFORMW ……
PRINTL
PRINTFORMW しばらくすると奴隷たちは立ち上がり、こちらににじり寄ってきた
PRINTL

;-------------------------------------------------
;戦闘敗北時口上(敗北調教なし)
;・あなたが敗北し、調教されない場合に表示されるメッセージ
;・省略化。省略した場合は汎用メッセージが表示される
;-------------------------------------------------
@QST_QUEST_16_MESSAGE_DEFEAT_NO_TRAIN_お嬢様魔術師
PRINTFORMW 「ほーっほっほっほっ！大勝利ですわぁ！」
PRINTFORML 勝利に満足したお嬢様は盾となり倒れた奴隷たちに目もくれず
PRINTFORMW 高笑いを上げながら去っていった
PRINTL
PRINTFORMW ………………
PRINTFORMW …………
PRINTFORMW ……
PRINTL
PRINTFORML しばらくすると奴隷たちは立ち上がり、
PRINTFORMW こちらを一瞥した後ふらふらとした足取りでお嬢様の後を追っていった
PRINTL

;-------------------------------------------------
;戦闘用モブデータ設定
;-------------------------------------------------
@QST_QUEST_16_COMBAT_MOB_PRESET_お嬢様魔術師(SIDES = "DEFENDER")
#DIMS SIDES
;大量の盾持ちでお嬢様を護る編成
;いい感じの盾スキル持ちのモブがいなかったので肉盾の中身はスケルトン
CALL CC_ADDMOB_FROM_TABLE(SIDES, "スケルトン・ファランクス", "肉盾奴隷")
CALL CC_ADDMOB_FROM_TABLE(SIDES, "スケルトン・ファランクス", "肉盾奴隷")
CALL CC_ADDMOB_FROM_TABLE(SIDES, "スケルトン・ファランクス", "ディフェンスドローン")
CALL CC_ADDMOB_FROM_TABLE(SIDES, "スケルトン・ファランクス", "ディフェンスドローン")
CALL CC_ADDMOB_FROM_TABLE(SIDES, "冒険者・魔術師", "お嬢様魔術師")

;-------------------------------------------------
;調教用モブデータ設定
;-------------------------------------------------
@QST_QUEST_16_TRAIN_MOB_PRESET_お嬢様魔術師(DO_TRAIN)
#DIM DO_TRAIN
;お嬢様は調教する側に参加しない
SIF !DO_TRAIN
	CALL QST_TRAIN_MOB_PRESET("貴族", "お嬢様",1, 0)
CALL QST_TRAIN_MOB_PRESET("奴隷", "奴隷",, 0)
CALL QST_TRAIN_MOB_PRESET("奴隷", "奴隷",, 0)

path: ERB/QUEST/クエストデータ/QUEST_16_アリーナ/対戦相手/QUEST_16_アリーナ_対戦相手_11.お嬢様魔術師.ERB


path: ERB/QUEST/クエストデータ/QUEST_16_アリーナ/対戦相手/QUEST_16_アリーナ_対戦相手_12.騎兵三姉妹.ERB


path: ERB/QUEST/クエストデータ/QUEST_16_アリーナ/対戦相手/QUEST_16_アリーナ_対戦相手_2.剣闘士.ERB


path: ERB/QUEST/クエストデータ/QUEST_16_アリーナ/対戦相手/QUEST_16_アリーナ_対戦相手_3.冒険者.ERB


path: ERB/QUEST/クエストデータ/QUEST_16_アリーナ/対戦相手/QUEST_16_アリーナ_対戦相手_4.猛獣使い.ERB


path: ERB/QUEST/クエストデータ/QUEST_16_アリーナ/対戦相手/QUEST_16_アリーナ_対戦相手_5.アマゾネス.ERB


code:
;QUEST_16_アリーナ_対戦相手_6.メスガキアマゾネス
;-------------------------------------------------
;番号と名前の紐付け
;-------------------------------------------------
@QST_QUEST_16_GET_ENEMY_NAME_6
RESULTS = メスガキアマゾネス

;-------------------------------------------------
;敵ランク
;・褒賞、罰金の算出に使用。0～3の値を返すこと
;-------------------------------------------------
@QST_QUEST_16_GET_ENEMY_RANK_メスガキアマゾネス
RETURN 1

;-------------------------------------------------
;調教できるか判定
;・あなたが勝利した際に勝利調教できるか
;　また、観戦で敗北した際に調教されるか
;・省略化。省略した場合は調教できない/されない
;-------------------------------------------------
@QST_QUEST_16_IS_CAN_TRAIN_メスガキアマゾネス
RETURN 1

;-------------------------------------------------
;調教してくるか判定
;・あなたが敗北した際に敗北調教してくるか
;　また、観戦で勝利した際に調教するか
;・省略化。省略した場合は調教してこない/しない
;-------------------------------------------------
@QST_QUEST_16_IS_DO_TRAIN_メスガキアマゾネス
RETURN 1

;-------------------------------------------------
;戦闘前口上
;・省略化。省略した場合は何も表示されない
;-------------------------------------------------
@QST_QUEST_16_MESSAGE_BEFORE_BATTLE_メスガキアマゾネス
PRINTFORMW 「えぇ……なにコイツ%QST_PARTYNUM > 1 ? "ら" # ""%、超弱そうじゃん！」
PRINTL
PRINTFORMW 眼の前に立ちはだかったのは齢幾ばくもない南夷の少女たちだ。
PRINTFORMW 「アタシらはここでサッサと勝ち上がって、一族の皆にもう一人前だーってこと分からせないといけないの！」
PRINTL
PRINTFORMW 礼節とはおよそ無縁な調子でこちらなど意に介さず一方的に捲し立ててくる
PRINTL
PRINTFORMW 「だーかーらー、ザコは……さっさと死んでよ！」
PRINTL
PRINTFORMW 鋭い槍の矛先が%QST_LEADER_NAME()%に向けられる。その幼い衣姿とは裏腹に、少女の槍捌きは非常に巧みだ
PRINTFORMW 大口を叩くだけの実力は兼ね備えているとみえる
PRINTL
PRINTFORMW %QST_LEADER_NAME()%は武器を構えた。"教育"にはいささか手を焼きそうだ

;-------------------------------------------------
;戦闘敗北時口上(敗北調教あり)
;・あなたが敗北し、調教される場合に表示されるメッセージ
;・省略化。省略した場合は何も表示されない
;-------------------------------------------------
@QST_QUEST_16_MESSAGE_DEFEAT_TRAIN_メスガキアマゾネス
PRINTFORMW 「アハハ！　やっぱり見た目通りのザコじゃん！」
PRINTL
PRINTFORMW  ……敗北し地に伏す%QST_LEADER_NAME()%を足蹴にし、少女たちは次々に嘲りの言葉を投げつける
PRINTL
PRINTFORMW 「どうしよっかなぁ～遊び足りないよねぇ……。ん～それじゃあ……」
PRINTL
PRINTFORMW 「ザコはザコらしく……みんなの前で玩具になっちゃえ❤」
PRINTL

;-------------------------------------------------
;戦闘敗北時口上(敗北調教なし)
;・あなたが敗北し、調教されない場合に表示されるメッセージ
;・省略化。省略した場合は汎用メッセージが表示される
;-------------------------------------------------
;@QST_QUEST_16_MESSAGE_DEFEAT_NO_TRAIN_メスガキアマゾネス

;-------------------------------------------------
;戦闘用モブデータ設定
;-------------------------------------------------
@QST_QUEST_16_COMBAT_MOB_PRESET_メスガキアマゾネス(SIDES = "DEFENDER")
#DIMS SIDES
CALL CC_ADDMOB_FROM_TABLE(SIDES, "メスガキアマゾネス", "メスガキアマゾネス")
CALL CC_ADDMOB_FROM_TABLE(SIDES, "メスガキアマゾネス", "メスガキアマゾネス")
CALL CC_ADDMOB_FROM_TABLE(SIDES, "メスガキアマゾネス", "メスガキアマゾネス")

;-------------------------------------------------
;調教用モブデータ設定
;-------------------------------------------------
@QST_QUEST_16_TRAIN_MOB_PRESET_メスガキアマゾネス(DEFEAT_TRAIN)
#DIM DEFEAT_TRAIN
CALL QST_TRAIN_MOB_PRESET("メスガキアマゾネス", "メスガキアマゾネス", 1, 0)
CALL QST_TRAIN_MOB_PRESET("メスガキアマゾネス", "メスガキアマゾネス", 1, 0)
CALL QST_TRAIN_MOB_PRESET("メスガキアマゾネス", "メスガキアマゾネス", 1, 0)

path: ERB/QUEST/クエストデータ/QUEST_16_アリーナ/対戦相手/QUEST_16_アリーナ_対戦相手_6.メスガキアマゾネス.ERB


code:
;QUEST_16_アリーナ_対戦相手_7.冒険者カップル
;-------------------------------------------------
;番号と名前の紐付け
;-------------------------------------------------
@QST_QUEST_16_GET_ENEMY_NAME_7
RESULTS = 冒険者カップル

;-------------------------------------------------
;敵ランク
;・褒賞、罰金の算出に使用。0～3の値を返すこと
;-------------------------------------------------
@QST_QUEST_16_GET_ENEMY_RANK_冒険者カップル
RETURN 1

;-------------------------------------------------
;調教できるか判定
;・あなたが勝利した際に勝利調教できるか
;　また、観戦で敗北した際に調教されるか
;・省略化。省略した場合は調教できない/されない
;-------------------------------------------------
@QST_QUEST_16_IS_CAN_TRAIN_冒険者カップル
RETURN 1

;-------------------------------------------------
;調教してくるか判定
;・あなたが敗北した際に敗北調教してくるか
;　また、観戦で勝利した際に調教するか
;・省略化。省略した場合は調教してこない/しない
;-------------------------------------------------
;@QST_QUEST_16_IS_DO_TRAIN_冒険者カップル
;RETURN 1

;-------------------------------------------------
;戦闘前口上
;・省略化。省略した場合は何も表示されない
;-------------------------------------------------
@QST_QUEST_16_MESSAGE_BEFORE_BATTLE_冒険者カップル
PRINTFORMW 「んんっ……、ねぇ……こっち、見てるよ？」
PRINTFORMW 「構うもんか……見せつけてやろう」
PRINTFORMW %QST_LEADER_NAME()%の前で男女の冒険者が抱擁を交わし、唇を重ねている……
IF QST_PARTYNUM > 1
	PRINTFORMW %ANAME(QST_RANDCHARA(1))%はげんなりした様子で%QST_LEADER_NAME(1)%に視線を送り、指示を仰いだ
ENDIF
PRINTL
PRINTFORMW 「……おおっと、すまない、すまない。彼女の美貌に比べてあまりにも矮小で気付きもしなかったよ」
PRINTL
PRINTFORMW 細身で長身、端正な面構えの男は気取った調子で語る
PRINTFORMW 豪奢な装備はピカピカに輝き、傷や汚れ一つ見出すことができない
PRINTFORMW 外見だけ見れば、なんともおめでたい男……というのが率直な評だろう
PRINTL
PRINTFORMW だが男が剣を抜くや、周囲の空気が張り詰め、抜き差しならぬ緊張感が辺りに漂う
PRINTL
PRINTFORMW %QST_LEADER_NAME(1)%は軽薄な態度とは裏腹に、男の実力は相当に高いことを悟った
PRINTL
PRINTFORMW 「さぁ、さっさと終わらせてしまおうか。この街で二人きりでいられるまともなベッドを見つけるとなると、とても高くつくんだ」
PRINTFORMW 「……君%QST_PARTYNUM > 1 ? "たち" # ""%を倒せば……まぁ多少の足しにはなるだろう」

;-------------------------------------------------
;戦闘敗北時口上(敗北調教あり)
;・あなたが敗北し、調教される場合に表示されるメッセージ
;・省略化。省略した場合は何も表示されない
;-------------------------------------------------
;@QST_QUEST_16_MESSAGE_DEFEAT_TRAIN_冒険者カップル

;-------------------------------------------------
;戦闘敗北時口上(敗北調教なし)
;・あなたが敗北し、調教されない場合に表示されるメッセージ
;・省略化。省略した場合は汎用メッセージが表示される
;-------------------------------------------------
@QST_QUEST_16_MESSAGE_DEFEAT_NO_TRAIN_冒険者カップル
PRINTFORMW 満身創痍になった%QST_LEADER_NAME(1)%の武器を剣士の一閃が弾き飛ばす
PRINTL
PRINTFORMW ……どうやら勝負あったようだ
PRINTL
PRINTFORMW 「ふぅ、どうやら僕の勝ちのようだね。まぁ悪く思わないでくれたまえ」
PRINTFORMW 「他の悪漢共と違って、僕は恋人の前で君を嬲るほど悪趣味ではないよ。この掛け金は宿代として貰っていくけどね」
PRINTL
PRINTFORMW 剣士は気取った笑みを浮かべると身を翻し、パートナーを抱き寄せて闘技場を去っていった
PRINTL
PRINTFORMW 「ではご機嫌よう！」

;-------------------------------------------------
;戦闘用モブデータ設定
;-------------------------------------------------
@QST_QUEST_16_COMBAT_MOB_PRESET_冒険者カップル(SIDES = "DEFENDER")
#DIMS SIDES
CALL CC_ADDMOB_FROM_TABLE(SIDES, "熟練冒険者・剣士"  , "熟練冒険者・剣士")
CALL CC_ADDMOB_FROM_TABLE(SIDES, "熟練冒険者・魔術師", "熟練冒険者・魔術師")
CALL CC_ADDMOB_FROM_TABLE(SIDES, "使い魔・低級"      , "アルカナスカウトドローン１")
CALL CC_ADDMOB_FROM_TABLE(SIDES, "使い魔・低級"      , "アルカナスカウトドローン２")

;-------------------------------------------------
;調教用モブデータ設定
;-------------------------------------------------
@QST_QUEST_16_TRAIN_MOB_PRESET_冒険者カップル(DEFEAT_TRAIN)
#DIM DEFEAT_TRAIN
;戦闘用とは順番を変更。調教のメインターゲットは魔術師(♀)だと思うので
CALL QST_TRAIN_MOB_PRESET("冒険者", "魔術師", 1, 0)
CALL QST_TRAIN_MOB_PRESET("冒険者", "剣士",, 0)

path: ERB/QUEST/クエストデータ/QUEST_16_アリーナ/対戦相手/QUEST_16_アリーナ_対戦相手_7.冒険者カップル.ERB


path: ERB/QUEST/クエストデータ/QUEST_16_アリーナ/対戦相手/QUEST_16_アリーナ_対戦相手_8.サラマンダー.ERB


path: ERB/QUEST/クエストデータ/QUEST_16_アリーナ/対戦相手/QUEST_16_アリーナ_対戦相手_9.キマイラ.ERB


code:
;BASE
#DIM DANCE_キャラ
#DIM DANCE_体力
#DIM DANCE_身長
#DIM DANCE_バスト
#DIM DANCE_ウェスト
#DIM DANCE_ヒップ
;ABL
#DIM DANCE_奉仕
#DIM DANCE_露出
#DIM DANCE_身体
#DIM DANCE_器用
#DIM DANCE_魔術
#DIM DANCE_話術
#DIM DANCE_歌唱
;開幕前
#DIM DANCE_基礎
#DIM DANCE_衣装
;演奏中
#DIM DANCE_本気度
#DIMS DANCE_MOTIVATION
#DIM DANCE_RAND1
#DIM DANCE_RAND2
#DIM DANCE_RAND3
#DIM DANCE_RAND4
#DIM DANCE_ステージ数
#DIM DANCE_ボルテージ
#DIM DANCE_ボルテージ状態
#DIM DANCE_ボルテージ上昇値
#DIM DANCE_ボルテージカウント
#DIM DANCE_ボルテージ延長
#DIM DANCE_アピール成否
#DIM DANCE_アピール成功回数
#DIM DANCE_アクシデント_衣装
#DIM DANCE_アクシデント_ステージ
#DIM DANCE_アクシデント_観客
#DIM DANCE_アクシデント_成否
#DIM DANCE_アクシデント_成功回数
;評価
#DIM DANCE_客評価
#DIM DANCE_客評価上昇値
#DIM DANCE_チップ
#DIM DANCE_報酬
#DIM DANCE_損害
;経験
#DIM DANCE_奉仕経験
#DIM DANCE_露出経験
#DIM DANCE_身体経験
#DIM DANCE_器用経験
#DIM DANCE_魔術経験
#DIM DANCE_歌唱経験
#DIM DANCE_話術経験