code:
;-------------------------------------------------
;desc  :キャラリストを表示する関数
;param :表示関数名:キャラクタをリストに表示するかを判定する関数の名前 SELECT_CHARA_LIST_SHOW_LOGIC_●●(ARG:0)の●●の部分
;param :選択関数名:キャラクタをリストで選択できるようにするかを判定する関数の名前 SELECT_CHARA_LIST_SHOW_LOGIC_●●(ARG:0)の●●の部分
;param :色指定関数名:キャラクタが選択できる場合、リストでどんな色でできるようにするかを判定する関数の名前 SELECT_CHARA_LIST_COLOR_LOGIC_●●(ARG:0)の●●の部分
;param :表示文字:各カラムの要素 ABLの名前
;-------------------------------------------------
@SELECT_CHARA_LIST(表示関数名 = "", 選択関数名="", 色指定関数名="", 表示文字:0 = "", 表示文字:1 = "", 表示文字:2 = "", 表示文字:3 = "", 表示文字:4 = "", 表示文字:5 = "", 表示文字:6 = "", 表示文字:7 = "")
#DIMS 表示関数名
#DIMS 選択関数名
#DIMS 色指定関数名
#DIMS 表示文字, 8
#DIM 表示数値, 8
#DIM FIRST_LINE
#DIM 対象
#DIM 表示位置
#DIM 表示ページ
#DIM 総ページ数
#DIM キャラ数
#DIM キャラカウンタ
#DIM 表示開始位置
#DIM 表示終了位置
#DIM ランク種別
#DIM 直前総ページ数
#DIMS 直前表示関数名
#DIMS 直前選択関数名

VARSET キャラ数
VARSET 表示数値, -1

;ガード節
TRYCCALLFORM SELECT_CHARA_LIST_SHOW_LOGIC_%表示関数名%(MASTER)
CATCH
	THROW 指定された関数SELECT_CHARA_LIST_SHOW_LOGIC_%表示関数名%が存在しません
ENDCATCH

TRYCCALLFORM SELECT_CHARA_LIST_SELECT_LOGIC_%選択関数名%(MASTER)
CATCH
	THROW 指定された関数SELECT_CHARA_LIST_SELECT_LOGIC_%選択関数名%が存在しません
ENDCATCH

TRYCCALLFORM SELECT_CHARA_LIST_COLOR_LOGIC_%色指定関数名%(MASTER)
CATCH
	THROW 指定された関数SELECT_CHARA_LIST_COLOR_LOGIC_%色指定関数名%が存在しません
ENDCATCH

;一行目を用意
FOR LOCAL, 0, VARSIZE("表示文字")
	FOR LOCAL:1, 0, VARSIZE("ABL")
		SIF ABLNAME:(LOCAL:1) == ""
			CONTINUE
		IF 表示文字:LOCAL == ABLNAME:(LOCAL:1)
			表示文字:LOCAL = %TOSTR_SPACE(2)%%SUBSTRINGU(ABLNAME:(LOCAL:1), 0, 1)%\@ LOCAL == VARSIZE("表示文字") - 1 ?   # | \@
			表示数値:LOCAL = LOCAL:1
			BREAK
		ENDIF
	NEXT
	SIF LOCAL:1 == VARSIZE("ABL")
		表示文字:LOCAL = %TOSTR_SPACE(5)%
NEXT

;ページ数計算
FOR LOCAL, 0, CHARANUM
	CALLFORM SELECT_CHARA_LIST_SHOW_LOGIC_%表示関数名%(LOCAL)
	SIF RESULT
		キャラ数 ++
NEXT

総ページ数 = (キャラ数 - 1) / 40 + 1

;直前の呼び出しとページ数、表示する関数、選択する関数名が同一であれば連続した呼び出しと判断しページを切り替えない
SIF 総ページ数 != 直前総ページ数 || 表示関数名 != 直前表示関数名 || 選択関数名 != 直前選択関数名
	表示ページ = 1

直前総ページ数  = 総ページ数
直前表示関数名 '= 表示関数名
直前選択関数名 '= 選択関数名

;ヘッダ表示
PRINTFORM %TOSTR_SPACE(MAX_CHARANAME_LENGTH / 2 + 7)%
FOR LOCAL:1, 0, VARSIZE("表示文字")
	PRINTFORM %表示文字:(LOCAL:1)%
NEXT
PRINTFORM %TOSTR_SPACE(MAX_CHARANAME_LENGTH / 2 + 12)%
FOR LOCAL:1, 0, VARSIZE("表示文字")
	PRINTFORM %表示文字:(LOCAL:1)%
NEXT

PRINTL
FIRST_LINE = LINECOUNT

CALL CREATE_SELECTOR_SORT_LIST(0)

;本体部分の表示
$SHOW_LOOP

VARSET 表示位置
VARSET キャラカウンタ

表示開始位置 = (表示ページ - 1) * 40
表示終了位置 = 表示ページ * 40

FOR LOCAL:0, 0, CHARANUM
	LOCAL:1 = SHOP_CHARA_LIST:LOCAL
	SIF LOCAL:1 == -1
		CONTINUE
	;表示ロジックにあてはまらないなら飛ばす
	CALLFORM SELECT_CHARA_LIST_SHOW_LOGIC_%表示関数名%(LOCAL:1)
	SIF !RESULT
		CONTINUE
	IF 表示開始位置 <= キャラカウンタ && キャラカウンタ < 表示終了位置
		IF 表示位置 % 2 != 0
			PRINT
		ELSEIF 表示位置 > 0
			PRINTL
		ENDIF
		;選択ロジックに当てはまるキャラだけ通常表示
		;あてはまらなければ灰色表示
		CALLFORM SELECT_CHARA_LIST_SELECT_LOGIC_%選択関数名%(LOCAL:1)
		IF RESULT
			CALLFORM SELECT_CHARA_LIST_COLOR_LOGIC_%色指定関数名%(LOCAL:1)
			CALL COLOR_PRINT(@"[{LOCAL:1 + 99, 4}]%SNAME(LOCAL:1), MAX_CHARANAME_LENGTH/2, RIGHT%", RESULT)
			PRINTFORM %TOSTR_SPACE(1)%
			FOR LOCAL:2, 0, VARSIZE("表示数値")
				IF 表示数値:(LOCAL:2) != -1
					SELECTCASE 表示数値:(LOCAL:2)
						CASE GETNUM(ABL, "戦闘"), GETNUM(ABL, "身体"), GETNUM(ABL, "器用"), GETNUM(ABL, "知識"), GETNUM(ABL, "社交"), GETNUM(ABL, "魔術"), GETNUM(ABL, "料理"), GETNUM(ABL, "歌唱")
							ランク種別 = ランク_ＳＬＧ
						CASE GETNUM(ABL, "性知識")
							ランク種別 = ランク_性知識
						CASEELSE
							ランク種別 = ランク_その他
					ENDSELECT
					CALL PRINT_ALPHABET_RANK(ランク種別, ABL:(LOCAL:1):(表示数値:(LOCAL:2)))
					PRINTFORM {ABL:(LOCAL:1):(表示数値:(LOCAL:2)), 3}
					SIF LOCAL:2 != VARSIZE("表示数値") -1
						PRINT |
				ELSE
					PRINTFORM %TOSTR_SPACE(5)%
				ENDIF
			NEXT
			PRINTBUTTON " 情", LOCAL:1 + 10099
		ELSE
			LOCALS:0 = [{NO:(LOCAL:1) + 99, 4}]%SNAME(LOCAL:1), MAX_CHARANAME_LENGTH/2, RIGHT%%TOSTR_SPACE(1)%
			FOR LOCAL:2, 0, VARSIZE("表示数値")
				IF 表示数値:(LOCAL:2) != -1
					SELECTCASE 表示数値:(LOCAL:2)
						CASE GETNUM(ABL, "戦闘"), GETNUM(ABL, "身体"), GETNUM(ABL, "器用"), GETNUM(ABL, "知識"), GETNUM(ABL, "社交"), GETNUM(ABL, "魔術"), GETNUM(ABL, "料理"), GETNUM(ABL, "歌唱")
							ランク種別 = ランク_ＳＬＧ
						CASE GETNUM(ABL, "性知識")
							ランク種別 = ランク_性知識
						CASEELSE
							ランク種別 = ランク_その他
					ENDSELECT
					LOCALS:0 = %LOCALS:0%%ALPHABET_RANK(ランク種別, ABL:(LOCAL:1):(表示数値:(LOCAL:2)))%{ABL:(LOCAL:1):(表示数値:(LOCAL:2)), 3}
					SIF LOCAL:2 != VARSIZE("表示数値") -1
						LOCALS:0 = %LOCALS:0%|
				ELSE
					LOCALS:0 = %LOCALS:0%%TOSTR_SPACE(5)%
				ENDIF
			NEXT
			SETCOLOR カラー_選択不可
			PRINTPLAINFORM %LOCALS:0%
			PRINTPLAINFORM
			RESETCOLOR
		ENDIF
		表示位置 ++
	ENDIF
	キャラカウンタ ++
NEXT

PRINTL
CALL COLOR_LINE

;フッタ部分
IF 総ページ数 >= 2
	PRINT [  1] 最初のページ
	PRINT [  2] 前のページ
	PRINTPLAINFORM ページ{表示ページ}/{総ページ数}
	PRINT [  8] 後のページ
	PRINT [  9] 最後のページ
	PRINTL
	CALL COLOR_LINE
ENDIF
PRINTBUTTON "<<", 20000
PRINT
PRINTBUTTON @"[%STR_NOW_SORTKEY:ソートキー, 4, LEFT%]", 20001
PRINT
PRINTBUTTON ">>", 20002
PRINT
PRINTBUTTON @"[\@ 降順ソート ? 降順 # 昇順\@]", 20003
PRINTL
CALL SINGLE_DRAWLINE
PRINTL [  0] やっぱりやめる

REDRAW 0

$INPUT_LOOP
INPUT
IF RESULT == 1
	表示ページ = 1
	CLEARLINE LINECOUNT - FIRST_LINE
	GOTO SHOW_LOOP
ELSEIF RESULT == 2
	表示ページ = ROUND_DECREMENT(表示ページ, 1, 総ページ数)
	CLEARLINE LINECOUNT - FIRST_LINE
	GOTO SHOW_LOOP
ELSEIF RESULT == 8
	表示ページ = ROUND_INCREMENT(表示ページ, 1, 総ページ数)
	CLEARLINE LINECOUNT - FIRST_LINE
	GOTO SHOW_LOOP
ELSEIF RESULT == 9
	表示ページ = 総ページ数
	CLEARLINE LINECOUNT - FIRST_LINE
	GOTO SHOW_LOOP
ELSEIF RESULT == 0
	REDRAW 1
	RETURN -1
ELSEIF RESULT == 20000
	ソートキー = ROUND_DECREMENT(ソートキー, 0, NUM_SORTKEY - 1)
	CALL CREATE_SELECTOR_SORT_LIST(0)
	CLEARLINE LINECOUNT - FIRST_LINE
	GOTO SHOW_LOOP
ELSEIF RESULT == 20001
	CALL SINGLE_DRAWLINE
	FOR LOCAL, 0, NUM_SORTKEY
		PRINTFORML [{LOCAL}] %STR_NOW_SORTKEY:LOCAL%
	NEXT
	INPUT
	SIF INRANGE(RESULT, 0, NUM_SORTKEY - 1)
		ソートキー = RESULT
	CALL CREATE_SELECTOR_SORT_LIST(0)
	CLEARLINE LINECOUNT - FIRST_LINE
	GOTO SHOW_LOOP
ELSEIF RESULT == 20002
	ソートキー = ROUND_INCREMENT(ソートキー, 0, NUM_SORTKEY - 1)
	CALL CREATE_SELECTOR_SORT_LIST(0)
	CLEARLINE LINECOUNT - FIRST_LINE
	GOTO SHOW_LOOP
ELSEIF RESULT == 20003
	降順ソート = !降順ソート
	CALL CREATE_SELECTOR_SORT_LIST(0)
	CLEARLINE LINECOUNT - FIRST_LINE
	GOTO SHOW_LOOP
ENDIF

;ガード節・特殊ボタン
IF RESULT >= 10099
	対象 = RESULT - 10099
	IF 対象 > CHARANUM || 対象 < 0
		CLEARLINE 1
		GOTO INPUT_LOOP
	ENDIF
	CALLFORM SELECT_CHARA_LIST_SHOW_LOGIC_%表示関数名%(対象)
	IF !RESULT
		CLEARLINE 1
		GOTO INPUT_LOOP
	ENDIF
	CALLFORM SELECT_CHARA_LIST_SELECT_LOGIC_%選択関数名%(対象)
	IF !RESULT
		CLEARLINE 1
		GOTO INPUT_LOOP
	ENDIF
	FOR LOCAL, 0, CHARANUM
		SIF SHOP_CHARA_LIST:LOCAL == -1
			CONTINUE
		CALLFORM SELECT_CHARA_LIST_SHOW_LOGIC_%表示関数名%(SHOP_CHARA_LIST:LOCAL)
		SIF RESULT
			CALLFORM SELECT_CHARA_LIST_SELECT_LOGIC_%選択関数名%(SHOP_CHARA_LIST:LOCAL)
		SIF RESULT
			CONTINUE
		SHOP_CHARA_LIST:LOCAL = -1
	NEXT
	CALL SHOW_INFO_WITH_UI(対象, 1)
	CALL CREATE_SELECTOR_SORT_LIST(0)
	CLEARLINE LINECOUNT - FIRST_LINE
	GOTO SHOW_LOOP
ENDIF

;入力本体
対象 = RESULT - 99
IF 対象 > CHARANUM || 対象 < 0
	CLEARLINE 1
	GOTO INPUT_LOOP
ENDIF
CALLFORM SELECT_CHARA_LIST_SHOW_LOGIC_%表示関数名%(対象)
IF !RESULT
	CLEARLINE 1
	GOTO INPUT_LOOP
ENDIF
CALLFORM SELECT_CHARA_LIST_SELECT_LOGIC_%選択関数名%(対象)
IF !RESULT
	CLEARLINE 1
	GOTO INPUT_LOOP
ENDIF
RETURN 対象

;-------------------------------------------------
;キャラリスト表示　大まかな使い方はSELECT_CHARA_LISTと同様
;人数に-1を指定すれば無制限になる
;選択したキャラはSELECTED_CHARAに代入
;選択した人数はSELECTED_CHARA_NUMに代入
;-------------------------------------------------
@SELECT_CHARA_LIST_MULTI(人数, 表示関数名="", 選択関数名 = "", 色指定関数名 = "", 表示文字:0 = "", 表示文字:1 = "", 表示文字:2 = "", 表示文字:3 = "", 表示文字:4 = "", 表示文字:5 = "", 表示文字:6 = "", 表示文字:7 = "")
#DIMS 表示関数名
#DIMS 選択関数名
#DIMS 色指定関数名
#DIMS 表示文字, 8
#DIM 表示数値, 8
#DIM FIRST_LINE
#DIM 対象
#DIM 表示位置
#DIM 表示ページ
#DIM 総ページ数
#DIM キャラ数
#DIM キャラカウンタ
#DIM 選択フラグ, VARSIZE("SELECTED_CHARA")
#DIM 人数
#DIM 表示開始位置
#DIM 表示終了位置
#DIM ランク種別
#DIM 直前総ページ数
#DIMS 直前選択関数名
#DIMS 直前表示関数名
VARSET 選択フラグ
VARSET キャラ数
VARSET 表示数値, -1

; VARSET SELECTED_CHARA
ARRAYCOPY "SELECTED_CHARA", "選択フラグ"
VARSET SELECTED_CHARA_NUM

;ガード節
TRYCCALLFORM SELECT_CHARA_LIST_SHOW_LOGIC_%表示関数名%(MASTER)
CATCH
	THROW 指定された関数SELECT_CHARA_LIST_SHOW_LOGIC_%表示関数名%が存在しません
ENDCATCH

TRYCCALLFORM SELECT_CHARA_LIST_SELECT_LOGIC_%選択関数名%(MASTER)
CATCH
	THROW 指定された関数SELECT_CHARA_LIST_SELECT_LOGIC_%選択関数名%が存在しません
ENDCATCH

;ヘッダ用意
FOR LOCAL, 0, VARSIZE("表示文字")
	FOR LOCAL:1, 0, VARSIZE("ABL")
		SIF ABLNAME:(LOCAL:1) == ""
			CONTINUE
		IF 表示文字:LOCAL == ABLNAME:(LOCAL:1)
			表示文字:LOCAL = %TOSTR_SPACE(2)%%SUBSTRINGU(ABLNAME:(LOCAL:1), 0, 1)%\@ LOCAL == VARSIZE("表示文字") - 1 ?   # | \@
			表示数値:LOCAL = LOCAL:1
			BREAK
		ENDIF
	NEXT
	SIF LOCAL:1 == VARSIZE("ABL")
		表示文字:LOCAL = %TOSTR_SPACE(5)%
NEXT

;ページ数計算
FOR LOCAL, 0, CHARANUM
	CALLFORM SELECT_CHARA_LIST_SHOW_LOGIC_%表示関数名%(LOCAL)
	SIF RESULT
		キャラ数 ++
NEXT

総ページ数 = (キャラ数 - 1) / 40 + 1

;直前の呼び出しとページ数、表示する関数、選択する関数名が同一であれば連続した呼び出しと判断しページを切り替えない
SIF 総ページ数 != 直前総ページ数 || 表示関数名 != 直前表示関数名 || 選択関数名 != 直前選択関数名
	表示ページ = 1

直前総ページ数  = 総ページ数
直前表示関数名 '= 表示関数名
直前選択関数名 '= 選択関数名

;ヘッダ描画
PRINTFORM %TOSTR_SPACE(19)%
FOR LOCAL:1, 0, VARSIZE("表示文字")
	PRINTFORM %表示文字:(LOCAL:1)%
NEXT
PRINTFORM %TOSTR_SPACE(24)%
FOR LOCAL:1, 0, VARSIZE("表示文字")
	PRINTFORM %表示文字:(LOCAL:1)%
NEXT

;ここから本体
PRINTL
FIRST_LINE = LINECOUNT

CALL CREATE_SELECTOR_SORT_LIST(0)

$SHOW_LOOP

VARSET 表示位置
VARSET キャラカウンタ
表示開始位置 = (表示ページ - 1) * 40
表示終了位置 = 表示ページ * 40

FOR LOCAL:0, 0, CHARANUM
	LOCAL:1 = SHOP_CHARA_LIST:LOCAL
	SIF LOCAL:1 == -1
		CONTINUE
	CALLFORM SELECT_CHARA_LIST_SHOW_LOGIC_%表示関数名%(LOCAL:1)
	SIF !RESULT
		CONTINUE
	IF 表示開始位置 <= キャラカウンタ && キャラカウンタ < 表示終了位置
		IF 表示位置 % 2 != 0
			PRINT
		ELSEIF 表示位置 > 0
			PRINTL
		ENDIF
		CALLFORM SELECT_CHARA_LIST_SELECT_LOGIC_%選択関数名%(LOCAL:1)
		IF RESULT
			IF 選択フラグ:(LOCAL:1)
				SETCOLOR カラー_選択中
			ELSE
				CALLFORM SELECT_CHARA_LIST_COLOR_LOGIC_%色指定関数名%(LOCAL:1)
				SETCOLOR RESULT
			ENDIF
			PRINTFORM [{LOCAL:1 + 99, 4}]%SNAME(LOCAL:1), MAX_CHARANAME_LENGTH/2, RIGHT%
			RESETCOLOR
			PRINTFORM %TOSTR_SPACE(1)%
			FOR LOCAL:2, 0, VARSIZE("表示数値")
				IF 表示数値:(LOCAL:2) != -1
					SELECTCASE 表示数値:(LOCAL:2)
						CASE GETNUM(ABL, "戦闘"), GETNUM(ABL, "身体"), GETNUM(ABL, "器用"), GETNUM(ABL, "知識"), GETNUM(ABL, "社交"), GETNUM(ABL, "魔術"), GETNUM(ABL, "料理"), GETNUM(ABL, "歌唱")
							ランク種別 = ランク_ＳＬＧ
						CASE GETNUM(ABL, "性知識")
							ランク種別 = ランク_性知識
						CASEELSE
							ランク種別 = ランク_その他
					ENDSELECT
					CALL PRINT_ALPHABET_RANK(ランク種別, ABL:(LOCAL:1):(表示数値:(LOCAL:2)))
					PRINTFORM {ABL:(LOCAL:1):(表示数値:(LOCAL:2)), 3}
					SIF LOCAL:2 != VARSIZE("表示数値") -1
						PRINT |
				ELSE
					PRINTFORM %TOSTR_SPACE(5)%
				ENDIF
			NEXT
			PRINTBUTTON " 情", LOCAL:1 + 10099
		ELSE
			LOCALS:0 = [{NO:(LOCAL:1) + 99, 4}]%SNAME(LOCAL:1), MAX_CHARANAME_LENGTH/2, RIGHT%%TOSTR_SPACE(1)%
			FOR LOCAL:2, 0, VARSIZE("表示数値")
				IF 表示数値:(LOCAL:2) != -1
					SELECTCASE 表示数値:(LOCAL:2)
						CASE GETNUM(ABL, "戦闘"), GETNUM(ABL, "身体"), GETNUM(ABL, "器用"), GETNUM(ABL, "知識"), GETNUM(ABL, "社交"), GETNUM(ABL, "魔術"), GETNUM(ABL, "料理"), GETNUM(ABL, "歌唱")
							ランク種別 = ランク_ＳＬＧ
						CASE GETNUM(ABL, "性知識")
							ランク種別 = ランク_性知識
						CASEELSE
							ランク種別 = ランク_その他
					ENDSELECT
					LOCALS:0 = %LOCALS:0%%ALPHABET_RANK(ランク種別, ABL:(LOCAL:1):(表示数値:(LOCAL:2)))%{ABL:(LOCAL:1):(表示数値:(LOCAL:2)), 3}
					SIF LOCAL:2 != VARSIZE("表示数値") -1
						LOCALS:0 = %LOCALS:0%|
				ELSE
					LOCALS:0 = %LOCALS:0%%TOSTR_SPACE(5)%
				ENDIF
			NEXT
			SETCOLOR カラー_選択不可
			PRINTPLAINFORM %LOCALS:0%
			PRINTPLAINFORM
			RESETCOLOR
		ENDIF
		表示位置 ++
	ENDIF
	キャラカウンタ ++
NEXT

;フッタ描画
PRINTL
CALL SINGLE_DRAWLINE

IF 総ページ数 >= 2
	PRINT [  1] 最初のページ
	PRINT [  2] 前のページ
	PRINTPLAINFORM ページ{表示ページ}/{総ページ数}
	PRINT [  8] 後のページ
	PRINT [  9] 最後のページ
	PRINTL
	CALL COLOR_LINE
ENDIF

IF 人数 != -1
	PRINTFORM {MATCH(選択フラグ, 1)} / {人数}
ELSE
	PRINTFORM [97] 全員設定
	PRINTPLAIN
	PRINTFORM [98] 全員解除
	PRINTL
ENDIF
CALL COLOR_LINE
PRINTBUTTON "<<", 20000
PRINT
PRINTBUTTON @"[%STR_NOW_SORTKEY:ソートキー, 4, LEFT%]", 20001
PRINT
PRINTBUTTON ">>", 20002
PRINT
PRINTBUTTON @"[\@ 降順ソート ? 降順 # 昇順\@]", 20003
PRINTL
CALL SINGLE_DRAWLINE
PRINTL [  0] 決定

REDRAW 0

;入力
$INPUT_LOOP
INPUT

;ガード節・特殊処理
IF RESULT == 1
	表示ページ = 1
	CLEARLINE LINECOUNT - FIRST_LINE
	GOTO SHOW_LOOP
ELSEIF RESULT == 2
	表示ページ = ROUND_DECREMENT(表示ページ, 1, 総ページ数)
	CLEARLINE LINECOUNT - FIRST_LINE
	GOTO SHOW_LOOP
ELSEIF RESULT == 8
	表示ページ = ROUND_INCREMENT(表示ページ, 1, 総ページ数)
	CLEARLINE LINECOUNT - FIRST_LINE
	GOTO SHOW_LOOP
ELSEIF RESULT == 9
	表示ページ = 総ページ数
	CLEARLINE LINECOUNT - FIRST_LINE
	GOTO SHOW_LOOP
ELSEIF RESULT == 97 && 人数 == -1
	FOR LOCAL, 0, CHARANUM
		CALLFORM SELECT_CHARA_LIST_SHOW_LOGIC_%表示関数名%(LOCAL)
		SIF !RESULT
			CONTINUE
		CALLFORM SELECT_CHARA_LIST_SELECT_LOGIC_%選択関数名%(LOCAL)
		SIF !RESULT
			CONTINUE
		選択フラグ:LOCAL = 1
	NEXT
	CLEARLINE LINECOUNT - FIRST_LINE
	GOTO SHOW_LOOP
ELSEIF RESULT == 98 && 人数 == -1
	VARSET 選択フラグ
	CLEARLINE LINECOUNT - FIRST_LINE
	GOTO SHOW_LOOP
ELSEIF RESULT == 0
	REDRAW 1
	FOR LOCAL, 0, VARSIZE("SELECTED_CHARA")
		IF 選択フラグ:LOCAL
			SELECTED_CHARA:SELECTED_CHARA_NUM = LOCAL
			SELECTED_CHARA_NUM ++
		ENDIF
	NEXT
	RETURN
ELSEIF RESULT == 20000
	ソートキー = ROUND_DECREMENT(ソートキー, 0, NUM_SORTKEY - 1)
	CALL CREATE_SELECTOR_SORT_LIST(0)
	CLEARLINE LINECOUNT - FIRST_LINE
	GOTO SHOW_LOOP
ELSEIF RESULT == 20001
	CALL SINGLE_DRAWLINE
	FOR LOCAL, 0, NUM_SORTKEY
		PRINTFORML [{LOCAL}] %STR_NOW_SORTKEY:LOCAL, 4, LEFT%
	NEXT
	INPUT
	SIF INRANGE(RESULT, 0, NUM_SORTKEY - 1)
		ソートキー = RESULT
	CALL CREATE_SELECTOR_SORT_LIST(0)
	CLEARLINE LINECOUNT - FIRST_LINE
	GOTO SHOW_LOOP
ELSEIF RESULT == 20002
	ソートキー = ROUND_INCREMENT(ソートキー, 0, NUM_SORTKEY - 1)
	CALL CREATE_SELECTOR_SORT_LIST(0)
	CLEARLINE LINECOUNT - FIRST_LINE
	GOTO SHOW_LOOP
ELSEIF RESULT == 20003
	降順ソート = !降順ソート
	CALL CREATE_SELECTOR_SORT_LIST(0)
	CLEARLINE LINECOUNT - FIRST_LINE
	GOTO SHOW_LOOP
ENDIF

IF RESULT >= 10099
	対象 = RESULT - 10099
	IF 対象 > CHARANUM || 対象 < 0
		CLEARLINE 1
		GOTO INPUT_LOOP
	ENDIF
	CALLFORM SELECT_CHARA_LIST_SHOW_LOGIC_%表示関数名%(対象)
	IF !RESULT
		CLEARLINE 1
		GOTO INPUT_LOOP
	ENDIF
	CALLFORM SELECT_CHARA_LIST_SELECT_LOGIC_%選択関数名%(対象)
	IF !RESULT
		CLEARLINE 1
		GOTO INPUT_LOOP
	ENDIF
	FOR LOCAL, 0, CHARANUM
		SIF SHOP_CHARA_LIST:LOCAL == -1
			CONTINUE
		CALLFORM SELECT_CHARA_LIST_SHOW_LOGIC_%表示関数名%(SHOP_CHARA_LIST:LOCAL)
		SIF RESULT
			CALLFORM SELECT_CHARA_LIST_SELECT_LOGIC_%選択関数名%(SHOP_CHARA_LIST:LOCAL)
		SIF RESULT
			CONTINUE
		SHOP_CHARA_LIST:LOCAL = -1
	NEXT
	CALL SHOW_INFO_WITH_UI(対象, 1)
	CALL CREATE_SELECTOR_SORT_LIST(0)
	CLEARLINE LINECOUNT - FIRST_LINE
	GOTO SHOW_LOOP
ENDIF

;入力
対象 = RESULT - 99
IF 対象 > CHARANUM || 対象 < 0
	CLEARLINE 1
	GOTO INPUT_LOOP
ENDIF

IF 選択フラグ:対象
	選択フラグ:対象 = 0
	CLEARLINE LINECOUNT - FIRST_LINE
	GOTO SHOW_LOOP
ENDIF

CALLFORM SELECT_CHARA_LIST_SHOW_LOGIC_%表示関数名%(対象)
IF !RESULT
	CLEARLINE 1
	GOTO INPUT_LOOP
ENDIF
CALLFORM SELECT_CHARA_LIST_SELECT_LOGIC_%選択関数名%(対象)
IF !RESULT
	CLEARLINE 1
	GOTO INPUT_LOOP
ENDIF
IF 選択フラグ:対象 == 0
	SIF (人数 != -1 && MATCH(選択フラグ, 1) < 人数) || 人数 == -1
		選択フラグ:対象 = 1
	CLEARLINE LINECOUNT - FIRST_LINE
	GOTO SHOW_LOOP
ENDIF

CLEARLINE 1
GOTO INPUT_LOOP

;-------------------------------------------------
;キャラリスト表示用の汎用関数の表示ロジック
;-------------------------------------------------
@SELECT_CHARA_LIST_SHOW_LOGIC_DEFAULT(対象)
#DIM 対象
;育児対象,別勢力,放浪,脂肪,未登場,動物をはじく
SIF CFLAG:対象:行動不能状態 == 行動不能_子供
	RETURN 0
SIF CFLAG:対象:所属 != CFLAG:MASTER:所属
	RETURN 0
SIF GROUPMATCH(CFLAG:対象:特殊状態, 1, 2)
	RETURN 0
SIF CFLAG:対象:特殊状態 == 0 && !IS_COUNTRY(CFLAG:対象:所属)
	RETURN 0
SIF IS_ANIMAL(対象)
	RETURN 0
RETURN 1

@SELECT_CHARA_LIST_SHOW_LOGIC_NONE(対象)
#DIM 対象
RETURN 1

@SELECT_CHARA_LIST_SHOW_LOGIC_SAME_FACTION(対象)
#DIM 対象
SIF CFLAG:対象:所属 != CFLAG:MASTER:所属
	RETURN 0
RETURN 1

@SELECT_CHARA_LIST_SHOW_LOGIC_SAME_FACTION_HAS_PENIS(対象)
#DIM 対象
SIF !HAS_PENIS(対象)
	RETURN 0
RETURN 1

@SELECT_CHARA_LIST_SHOW_LOGIC_SAME_FACTION_HAS_VAGINA(対象)
#DIM 対象
SIF !HAS_VAGINA(対象)
	RETURN 0
RETURN 1

;-------------------------------------------------
;キャラリスト表示用の汎用関数の洗濯用ロジック
;-------------------------------------------------
@SELECT_CHARA_LIST_SELECT_LOGIC_DEFAULT(対象)
#DIM 対象
;捕虜をはじく
SIF CFLAG:対象:捕虜先
	RETURN 0
RETURN 1

@SELECT_CHARA_LIST_SELECT_LOGIC_NONE(対象)
#DIM 対象
RETURN 1

@SELECT_CHARA_LIST_COLOR_LOGIC_DEFAULT(対象)
#DIM 対象
RETURN GETDEFCOLOR()

;-------------------------------------------------
;キャラリスト表示用の汎用関数 能力表示SLG版
;-------------------------------------------------
@SELECT_CHARA_LIST_SLG()
CALL SELECT_CHARA_LIST("DEFAULT", "DEFAULT", "DEFAULT", "戦闘", "身体", "器用", "知識", "社交", "魔術", "歌唱", "料理")
RETURN RESULT

@SELECT_CHARA_LIST_ONLY_LOGIC_SLG(表示関数名, 選択関数名, 色指定関数名 = "DEFAULT")
#DIMS 表示関数名
#DIMS 選択関数名
#DIMS 色指定関数名
CALL SELECT_CHARA_LIST(表示関数名, 選択関数名, 色指定関数名, "戦闘", "身体", "器用", "知識", "社交", "魔術", "歌唱", "料理")
RETURN RESULT

;-------------------------------------------------
;キャラリスト表示用の汎用関数 能力表示すけべ版
;-------------------------------------------------
@SELECT_CHARA_LIST_SEX()
CALL SELECT_CHARA_LIST("DEFAULT", "DEFAULT", "DEFAULT", "Ｃ感", "Ｖ感", "Ｂ感", "Ａ感", "Ｍ感", "Ｕ感", "欲望")
RETURN RESULT

@SELECT_CHARA_LIST_ONLY_LOGIC_SEX(表示関数名, 選択関数名, 色指定関数名 = "DEFAULT")
#DIMS 表示関数名
#DIMS 選択関数名
#DIMS 色指定関数名
CALL SELECT_CHARA_LIST(表示関数名, 選択関数名, 色指定関数名,  "Ｃ感", "Ｖ感", "Ｂ感", "Ａ感", "Ｍ感", "Ｕ感", "欲望")
RETURN RESULT

;-------------------------------------------------
;キャラリスト表示用の汎用関数 マルチ版SLG
;-------------------------------------------------
@SELECT_CHARA_LIST_MULTI_SLG(人数)
#DIM 人数
CALL SELECT_CHARA_LIST_MULTI(人数, "DEFAULT", "DEFAULT", "DEFAULT", "戦闘", "身体", "器用", "知識", "社交", "魔術", "歌唱", "料理")

@SELECT_CHARA_LIST_MULTI_ONLY_LOGIC_SLG(人数, 表示関数名, 選択関数名, 色指定関数名 = "DEFAULT")
#DIM 人数
#DIMS 表示関数名
#DIMS 選択関数名
#DIMS 色指定関数名
CALL SELECT_CHARA_LIST_MULTI(人数, 表示関数名, 選択関数名, 色指定関数名,  "戦闘", "身体", "器用", "知識", "社交", "魔術", "歌唱", "料理")

;-------------------------------------------------
;キャラリスト表示用の汎用関数 マルチ版すけべ
;-------------------------------------------------
@SELECT_CHARA_LIST_MULTI_SEX(人数)
#DIM 人数
CALL SELECT_CHARA_LIST_MULTI(人数, "DEFAULT", "DEFAULT", "DEFAULT", "Ｃ感", "Ｖ感", "Ｂ感", "Ａ感", "Ｍ感", "Ｕ感", "欲望")

@SELECT_CHARA_LIST_MULTI_ONLY_LOGIC_SEX(人数, 表示関数名, 選択関数名, 色指定関数名 = "DEFAULT")
#DIM 人数
#DIMS 表示関数名
#DIMS 選択関数名
#DIMS 色指定関数名
CALL SELECT_CHARA_LIST_MULTI(人数, 表示関数名, 選択関数名, 色指定関数名,  "Ｃ感", "Ｖ感", "Ｂ感", "Ａ感", "Ｍ感", "Ｕ感", "欲望")

@SELECT_CHARA_LIST_INIT
VARSET SELECTED_CHARA
SELECTED_CHARA_NUM = 0


code:
@SET_BODYSIZE(対象, セット位置 = 0, 再計算フラグ = 1)
#DIM 対象
#DIM セット位置
#DIM 再計算フラグ

IF GETBIT(セット位置, サイズ_身長) || セット位置 == 0
	IF !再計算フラグ
		CALL SET_BODYSIZE_HEIGHT(対象)
	ELSE
		MAXBASE:対象:身長 = CALC_BODYSIZE_HEIGHT(対象)
		BASE:対象:身長 = MAXBASE:対象:身長
	ENDIF
ENDIF

IF GETBIT(セット位置, サイズ_バスト) || セット位置 == 0
	IF !再計算フラグ
		CALL SET_BODYSIZE_BUST(対象)
	ELSE
		MAXBASE:対象:バスト = CALC_BODYSIZE_BUST(対象)
		BASE:対象:バスト = MAXBASE:対象:バスト
	ENDIF
ENDIF

IF GETBIT(セット位置, サイズ_ウェスト) || セット位置 == 0
	IF !再計算フラグ
		CALL SET_BODYSIZE_WEIST(対象)
	ELSE
		MAXBASE:対象:ウェスト = CALC_BODYSIZE_WEIST(対象)
		BASE:対象:ウェスト = MAXBASE:対象:ウェスト
	ENDIF
ENDIF

IF GETBIT(セット位置, サイズ_ヒップ) || セット位置 == 0
	IF !再計算フラグ
		CALL SET_BODYSIZE_HIP(対象)
	ELSE
		MAXBASE:対象:ヒップ = CALC_BODYSIZE_HIP(対象)
		BASE:対象:ヒップ = MAXBASE:対象:ヒップ
	ENDIF
ENDIF

IF GETBIT(セット位置, サイズ_体重) || セット位置 == 0
	IF !再計算フラグ
		CALL SET_BODYSIZE_WEIGHT(対象)
	ELSE
		MAXBASE:対象:体重 = CALC_BODYSIZE_WEIGHT(対象)
		BASE:対象:体重 = MAXBASE:対象:体重
	ENDIF
ENDIF

IF GETBIT(セット位置, サイズ_ペニス) || セット位置 == 0
	IF !再計算フラグ
		CALL SET_BODYSIZE_PENIS(対象)
	ELSE
		MAXBASE:対象:ペニス = CALC_BODYSIZE_PENIS(対象)
		BASE:対象:ペニス = MAXBASE:対象:ペニス
	ENDIF
ENDIF

CALL CUT_WOMB_SPERM_AMOUNT(対象)

;-------------------------
;身長の設定
;-------------------------
@SET_BODYSIZE_HEIGHT(対象)
#DIM 対象
#DIM 身長基礎値

IF BASE:対象:身長 > 100 && BASE:対象:身長 < 200
	BASE:対象:身長 *= 10
	MAXBASE:対象:身長 = BASE:対象:身長
ELSEIF BASE:対象:身長 > 1000 && BASE:対象:身長 < 2000
	MAXBASE:対象:身長 = BASE:対象:身長
ELSE
	MAXBASE:対象:身長 = CALC_BODYSIZE_HEIGHT(対象)
	BASE:対象:身長 = MAXBASE:対象:身長
ENDIF

@CALC_BODYSIZE_HEIGHT(対象)
#FUNCTION
#DIM 対象
#DIM 基礎値

IF CFLAG:対象:行動不能状態 == 行動不能_子供
	基礎値 = MIN(750 + CFLAG:対象:子の成長度 * 30, 1300) + RAND:30
ELSEIF TALENT:対象:幼児
	基礎値 = MIN(900 + (CFLAG:対象:子の成長度 - 6) * 40, 1300) + RAND:40
ELSE
	SELECTCASE TALENT:対象:体格
		CASE 体格_子供
			基礎値 = IS_MALE(対象) ? 1200 # 1100
			基礎値 += RAND:200
		CASE 体格_小柄
			基礎値 = IS_MALE(対象) ? 1400 # 1300
			基礎値 += RAND:200
		CASE 体格_普通
			基礎値 = IS_MALE(対象) ? 1600 # 1500
			基礎値 += RAND:200
		CASE 体格_長身
			基礎値 = IS_MALE(対象) ? 1750 + RAND:150 # 1700 + RAND:100
		CASE 体格_大柄
			基礎値 = IS_MALE(対象) ? 1850 + RAND:200 # 1750 + RAND:200
		CASE 体格_巨大
			基礎値 = 2200 + RAND:1000
	ENDSELECT
ENDIF

RETURNF 基礎値

;-------------------------
;ウェストの設定
;-------------------------
@SET_BODYSIZE_WEIST(対象)
#DIM 対象

IF BASE:対象:ウェスト > 40 && BASE:対象:ウェスト < 100
	BASE:対象:ウェスト *= 10
	MAXBASE:対象:ウェスト = BASE:対象:ウェスト
ELSEIF BASE:対象:ウェスト > 400 && BASE:対象:ウェスト < 1000
	MAXBASE:対象:ウェスト = BASE:対象:ウェスト
ELSE
	BASE:対象:ウェスト = CALC_BODYSIZE_WEIST(対象)
	MAXBASE:対象:ウェスト = BASE:対象:ウェスト
ENDIF

@CALC_BODYSIZE_WEIST(対象)
#FUNCTION
#DIM 対象
#DIM 基礎値
基礎値 = (BASE:対象:身長 * (IS_MALE(対象) ? 42 # 37 + TALENT:対象:体型)) / 100

SELECTCASE TALENT:対象:体格
	CASE 体格_子供
		TIMES 基礎値, 1.07
	CASE 体格_小柄
		TIMES 基礎値, 1.03
	CASE 体格_普通
	CASE 体格_長身
	CASE 体格_大柄
		TIMES 基礎値, 1.03
	CASE 体格_巨大
		TIMES 基礎値, 1.10
ENDSELECT

SELECTCASE TALENT:対象:体型
	CASE 体型_痩せすぎ
		TIMES 基礎値, 0.90
	CASE 体型_細身
		TIMES 基礎値, 0.94
	CASE 体型_スレンダー
		TIMES 基礎値, 0.97
	CASE 体型_豊満
		TIMES 基礎値, 1.10
	CASE 体型_肥満
		TIMES 基礎値, 1.20
ENDSELECT

基礎値 = 基礎値 * RAND(97, 104) / 100

RETURNF 基礎値

;-------------------------
;バストサイズの設定
;-------------------------
@SET_BODYSIZE_BUST(対象)
#DIM 対象

IF BASE:対象:バスト > 40 && BASE:対象:バスト < 150
	BASE:対象:バスト *= 10
	MAXBASE:対象:バスト = BASE:対象:バスト
ELSEIF BASE:対象:バスト > 400 && BASE:対象:バスト < 1000
	MAXBASE:対象:バスト = BASE:対象:バスト
ELSE
	BASE:対象:バスト = CALC_BODYSIZE_BUST(対象)
	MAXBASE:対象:バスト = BASE:対象:バスト
ENDIF

@CALC_BODYSIZE_BUST(対象)
#FUNCTION
#DIM 対象
#DIM 基礎値

基礎値 = BASE:対象:身長 * (IS_MALE(対象) ? 52 # 53) / 100

SELECTCASE GET_BUSTSIZE(対象)
	CASE -2
		TIMES 基礎値, 0.85
	CASE -1
		TIMES 基礎値, 0.9
	CASE 0
	CASE 1
		TIMES 基礎値, 1.05
	CASE 2
		TIMES 基礎値, 1.10
	CASE 3
		TIMES 基礎値, 1.25
	CASE 4
		TIMES 基礎値, 1.50
ENDSELECT

SELECTCASE TALENT:対象:体格
	CASE 体格_子供
		TIMES 基礎値, 0.90
	CASE 体格_小柄
		TIMES 基礎値, 0.95
	CASE 体格_普通
	CASE 体格_長身
	CASE 体格_大柄
		TIMES 基礎値, 1.03
	CASE 体格_巨大
		TIMES 基礎値, 1.10
ENDSELECT

SELECTCASE TALENT:対象:体型
	CASE 体型_痩せすぎ
		TIMES 基礎値, 0.90
	CASE 体型_細身
		TIMES 基礎値, 0.92
	CASE 体型_スレンダー
		TIMES 基礎値, 0.93
	CASE 体型_豊満
		TIMES 基礎値, 1.07
	CASE 体型_肥満
		TIMES 基礎値, 1.07
ENDSELECT

基礎値 = 基礎値 * RAND(97, 104) / 100

基礎値 = MAX(基礎値, CALC_BODYSIZE_UNDERBUST(対象) + 10)

RETURNF 基礎値

;-------------------------
;アンダーバストの算出
;-------------------------
@CALC_BODYSIZE_UNDERBUST(対象)
#FUNCTION
#DIM 対象
#DIM 基礎値
基礎値 = BASE:対象:身長 * (IS_MALE(対象) ? 50 # 43) / 100

SELECTCASE TALENT:対象:体格
	CASE 体格_子供
		TIMES 基礎値, 0.90
	CASE 体格_小柄
		TIMES 基礎値, 0.95
	CASE 体格_普通
	CASE 体格_長身
		TIMES 基礎値, 1.03
	CASE 体格_大柄
		TIMES 基礎値, 1.07
	CASE 体格_巨大
		TIMES 基礎値, 1.15
ENDSELECT

SELECTCASE TALENT:対象:体型
	CASE 体型_痩せすぎ
		TIMES 基礎値, 0.90
	CASE 体型_細身
		TIMES 基礎値, 0.93
	CASE 体型_スレンダー
		TIMES 基礎値, 0.95
	CASE 体型_豊満
		TIMES 基礎値, 1.05
	CASE 体型_肥満
		TIMES 基礎値, 1.10
ENDSELECT

RETURNF 基礎値

;-------------------------
;ヒップサイズの設定
;-------------------------
@SET_BODYSIZE_HIP(対象)
#DIM 対象

IF BASE:対象:ヒップ > 40 && BASE:対象:ヒップ < 150
	BASE:対象:ヒップ *= 10
	MAXBASE:対象:ヒップ = BASE:対象:ヒップ
ELSEIF BASE:対象:ヒップ > 400 && BASE:対象:ヒップ < 1000
	MAXBASE:対象:ヒップ = BASE:対象:ヒップ
ELSE
	BASE:対象:ヒップ = CALC_BODYSIZE_HIP(対象)
	MAXBASE:対象:ヒップ = BASE:対象:ヒップ
ENDIF

@CALC_BODYSIZE_HIP(対象)
#FUNCTION
#DIM 対象
#DIM 基礎値

基礎値 = BASE:対象:身長 * (IS_MALE(対象) ? 51 # 53 + TALENT:対象:体型) / 100

SELECTCASE TALENT:対象:体格
	CASE 体格_子供, 体格_小柄
		TIMES 基礎値, 1.05
	CASE 体格_巨大
		TIMES 基礎値, 1.1
ENDSELECT

SELECTCASE GET_HIPSIZE(対象)
	CASE -2
		TIMES 基礎値, 0.85
	CASE -1
		TIMES 基礎値, 0.94
	CASE 0
	CASE 1
		TIMES 基礎値, 1.06
	CASE 2
		TIMES 基礎値, 1.15
ENDSELECT

SELECTCASE TALENT:対象:体型
	CASE 体型_痩せすぎ
		TIMES 基礎値, 0.93
	CASE 体型_細身, 体型_スレンダー
		TIMES 基礎値, 0.97
	CASE 体型_グラマー
		TIMES 基礎値, 1.03
	CASE 体型_豊満
		TIMES 基礎値, 1.07
	CASE 体型_肥満
		TIMES 基礎値, 1.13
ENDSELECT

SIF TALENT:対象:美尻
	TIMES 基礎値, 1.05

基礎値 = 基礎値 * RAND(95, 106) / 100

RETURNF 基礎値

;-------------------------
;体重の設定
;-------------------------
@SET_BODYSIZE_WEIGHT(対象)
#DIM 対象
IF BASE:対象:体重 > 30 && BASE:対象:体重 < 200
	BASE:対象:体重 *= 10
ELSEIF BASE:対象:体重 > 300 && BASE:対象:体重 < 1000
	MAXBASE:対象:体重 = BASE:対象:体重
ELSE
	BASE:対象:体重 = CALC_BODYSIZE_WEIGHT(対象)
	MAXBASE:対象:体重 = BASE:対象:体重
ENDIF

@CALC_BODYSIZE_WEIGHT(対象)
#FUNCTION
#DIM 対象
#DIM 基礎値
#DIM 乳重量

IF IS_MALE(対象) && CFLAG:対象:行動不能状態 != 行動不能_子供
	基礎値 = BASE:対象:身長 * BASE:対象:身長 * 20 / 100000
ELSE
	基礎値 = BASE:対象:身長 * BASE:対象:身長 * 19 / 100000
	基礎値 += POWER(BASE:対象:バスト / 100, 3) / 50
	基礎値 += POWER(BASE:対象:ヒップ / 100, 3) / 50
ENDIF

SELECTCASE TALENT:対象:体格
	CASE 体格_子供
		TIMES 基礎値, 0.85
	CASE 体格_小柄
		TIMES 基礎値, 0.95
	CASE 体格_長身
		TIMES 基礎値, 1.05
	CASE 体格_大柄
		TIMES 基礎値, 1.1
	CASE 体格_巨大
		TIMES 基礎値, 1.5
ENDSELECT

SELECTCASE TALENT:対象:体型
	CASE 体型_痩せすぎ
		TIMES 基礎値, 0.85
	CASE 体型_細身
		TIMES 基礎値, 0.90
	CASE 体型_スレンダー
		TIMES 基礎値, 0.95
	CASE 体型_豊満
		TIMES 基礎値, 1.15
	CASE 体型_肥満
		TIMES 基礎値, 1.20
ENDSELECT

基礎値 = 基礎値 * RAND(95, 105) / 100

RETURNF 基礎値
;-------------------------
;チンポ
;-------------------------
@SET_BODYSIZE_PENIS(対象)
#DIM 対象
#DIM サイズ基礎値
IF BASE:対象:ペニス > 3 && BASE:対象:ペニス < 30
	BASE:対象:ペニス *= 10
ELSEIF BASE:対象:ペニス > 30
	MAXBASE:対象:ペニス = BASE:対象:ペニス
ELSE
	BASE:対象:ペニス = CALC_BODYSIZE_PENIS(対象)
	MAXBASE:対象:ペニス = BASE:対象:ペニス
ENDIF

@CALC_BODYSIZE_PENIS(対象)
#FUNCTION
#DIM 対象
#DIM サイズ基礎値

SELECTCASE GET_PENISSIZE(対象)
	CASE -2
		サイズ基礎値 = RAND:3 + 2
	CASE -1
		サイズ基礎値 = RAND:4 + 4
	CASE 0
		サイズ基礎値 = RAND:4 + 8
	CASE 1
		サイズ基礎値 = RAND:4 + 13
	CASE 2
		サイズ基礎値 = RAND:7 + 17
ENDSELECT

サイズ基礎値 = BASE:対象:身長 / 12 * サイズ基礎値 / 10
;身長の6割まで
サイズ基礎値 = MIN(サイズ基礎値, BASE:対象:身長 * 6 / 10)

RETURNF サイズ基礎値

;-------------------------
;胃
;-------------------------
@CALC_STOMACH_SIZE(対象)
#FUNCTION
#DIM 対象
#DIM サイズ

サイズ = LIMIT(BASE:対象:身長 / 5, 100, 1000)

SIF GETBIT(TALENT:対象:淫乱系, 素質_淫乱_蕩唇)
	TIMES サイズ, 1.5

サイズ += SQRT(STOMACH_TOTAL_CREAMPIED_AMOUNT:対象:0 * 3)

サイズ = LIMIT(サイズ, 0, BASE:対象:身長 * 3 / 10)

RETURNF サイズ

;-------------------------
;子宮
;-------------------------
@CALC_WOMB_SIZE(対象)
#FUNCTION
#DIM 対象
#DIM サイズ

サイズ = LIMIT(BASE:対象:身長 / 15, 10, 200)

SIF GETBIT(TALENT:対象:淫乱系, 素質_淫乱_淫壷)
	TIMES サイズ, 1.5

SIF GETBIT(TALENT:対象:淫乱系, 素質_淫乱_孕みたがり)
	TIMES サイズ, 1.5

SIF GETBIT(TALENT:対象:淫乱系, 素質_淫乱_良質母胎)
	TIMES サイズ, 1.5

SIF TALENT:対象:妊娠
	TIMES サイズ, 0.3

サイズ += SQRT(WOMB_TOTAL_CREAMPIED_AMOUNT:対象:0 * 3)
サイズ += EXP:対象:出産経験 * 3
サイズ += (サイズ * WOMB_INFLATION_RATE:対象:0) / 100

サイズ = LIMIT(サイズ, 0, BASE:対象:身長 * 3 / 10)

RETURNF サイズ

;-------------------------
;腸
;-------------------------
@CALC_ANUS_SIZE(対象)
#FUNCTION
#DIM 対象
#DIM サイズ

サイズ = LIMIT(BASE:対象:身長 / 13, 10, 300)

SIF GETBIT(TALENT:対象:淫乱系, 素質_淫乱_尻穴狂い)
	TIMES サイズ, 1.5

サイズ += SQRT(ANUS_TOTAL_CREAMPIED_AMOUNT:対象:0 * 3)

サイズ = LIMIT(サイズ, 0, BASE:対象:身長 * 3 / 10)

RETURNF サイズ

;-------------------------
;子供の重量の取得（妊娠時の体重に加算）
;-------------------------
@GET_BABY_WEIGHT(対象)
#FUNCTION
#DIM 対象
SIF GETBIT(TALENT:対象:淫乱系, 素質_淫乱_良質母胎)
	RETURNF TALENT:対象:妊娠 ? BASE:対象:体重 / ( BASE:対象:体重 <= 200 ? 24 # 40 ) * (CFLAG:対象:妊娠期間 * 2) # 0
RETURNF TALENT:対象:妊娠 ? BASE:対象:体重 / ( BASE:対象:体重 <= 200 ? 24 # 40 ) * CFLAG:対象:妊娠期間 # 0

;-------------------------
;子供のサイズの取得（妊娠時のウェストに加算）
;-------------------------
@GET_BABY_SIZE(対象)
#FUNCTION
#DIM 対象
SIF GETBIT(TALENT:対象:淫乱系, 素質_淫乱_良質母胎)
	RETURNF TALENT:対象:妊娠 ? BASE:対象:ウェスト / 20 * (CFLAG:対象:妊娠期間 * 2) # 0
RETURNF TALENT:対象:妊娠 ? BASE:対象:ウェスト / 20 * CFLAG:対象:妊娠期間 # 0

;-------------------------
;妊娠していることによるバストの膨らみ
;ワコール曰く「2カップ程度」とのことなので5センチ程度？
;-------------------------
@GET_BABY_BUST(対象)
#FUNCTION
#DIM 対象
SIF GETBIT(TALENT:対象:淫乱系, 素質_淫乱_良質母胎)
	RETURNF TALENT:対象:妊娠 ? BASE:対象:バスト / 100 * (CFLAG:対象:妊娠期間 * 2) # 0
RETURNF TALENT:対象:妊娠 ? BASE:対象:バスト / 100 * CFLAG:対象:妊娠期間 # 0

;-------------------------
;スリーサイズその他の表示
;-------------------------
@SHOW_BODYSIZE(対象)
#DIM 対象
#DIM 子供重量
#DIM 子供サイズ
#DIM 子供バスト

子供重量 = GET_BABY_WEIGHT(対象)
子供サイズ = GET_BABY_SIZE(対象)
子供バスト = GET_BABY_BUST(対象)

IF HAS_TAG(対象, タグ_小人)
	PRINTFORM 身長:%DECIMAL_STRING(BASE:対象:身長 / 5, 1), 5, RIGHT%cm
	PRINTFORM 体重:{BASE:対象:体重 * 5 + 子供重量, 5, RIGHT}g
	PRINTL
	PRINTFORM %SMALL_TITLE_SPACE()%
	PRINTFORM Ｂ　:%DECIMAL_STRING((BASE:対象:バスト + 子供バスト) / 5, 1), 6, RIGHT%cm
	SIF TALENT:対象:妊娠
		PRINTFORM (妊娠前%DECIMAL_STRING(BASE:対象:バスト / 5, 1), 6, RIGHT%cm)
	CALL PRINT_CUPSIZE(対象)
	PRINTL
	PRINTFORM %SMALL_TITLE_SPACE()%
	PRINTFORM Ｗ　:%DECIMAL_STRING((BASE:対象:ウェスト + 子供サイズ) / 5, 1), 6, RIGHT%cm
	SIF TALENT:対象:妊娠
		PRINTFORM (妊娠前%DECIMAL_STRING(BASE:対象:ウェスト / 5, 1), 6, RIGHT%cm)
	PRINTL
	PRINTFORM %SMALL_TITLE_SPACE()%
	PRINTFORM Ｈ　:%DECIMAL_STRING(BASE:対象:ヒップ / 5, 1), 6, RIGHT%cm
	PRINTL
	PRINTFORM %SMALL_TITLE_SPACE()%
	CALL PRINT_HIPSIZE(対象)
	IF HAS_PENIS(対象)
		PRINTFORM Ｐ　:%DECIMAL_STRING(BASE:対象:ペニス / 5, 1), 6, RIGHT%cm
	ELSE
		PRINTL
	ENDIF
ELSE
	PRINTFORM 身長:%DECIMAL_STRING(BASE:対象:身長, 1), 6, RIGHT%cm
	PRINTFORM 体重:%DECIMAL_STRING(BASE:対象:体重 + 子供重量, 1), 5, RIGHT%kg
	PRINTL
	PRINTFORM %SMALL_TITLE_SPACE()%
	PRINTFORM Ｂ　:%DECIMAL_STRING(BASE:対象:バスト + 子供バスト, 1), 6, RIGHT%cm
	CALL PRINT_CUPSIZE(対象)
	PRINTL
	PRINTFORM %SMALL_TITLE_SPACE()%
	PRINTFORM Ｗ　:%DECIMAL_STRING(BASE:対象:ウェスト + 子供サイズ, 1), 6, RIGHT%cm
	PRINTL
	PRINTFORM %SMALL_TITLE_SPACE()%
	PRINTFORM Ｈ　:%DECIMAL_STRING(BASE:対象:ヒップ, 1), 6, RIGHT%cm
	CALL PRINT_HIPSIZE(対象)
	PRINTL
	PRINTFORM %SMALL_TITLE_SPACE()%
	IF HAS_PENIS(対象)
		PRINTFORM Ｐ　:%DECIMAL_STRING(BASE:対象:ペニス, 1), 5, RIGHT%cm
	ELSE
		PRINTL
	ENDIF
ENDIF

PRINTL

@TOSTR_CUPSIZE(対象)
#FUNCTIONS
#DIM 対象
#DIMS CONST SIZES = "-","AAA","AA","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","Z+",
#DIMS サイズ
LOCAL = (BASE:対象:バスト + GET_BABY_BUST(対象) - CALC_BODYSIZE_UNDERBUST(対象)) / 25

;文字列変数が若干不自由なので無理やり作成
LOCAL = LIMIT(LOCAL , 1 , 29)
LOCALS:0 = %LOCALS:(LOCAL)%
IF IS_MALE(対象)
	サイズ '= "--"
ELSE
	サイズ = %SIZES:LOCAL%
ENDIF

RETURNF サイズ

;バストのカップサイズ生成及び表示処理
@PRINT_CUPSIZE(対象)
#DIM 対象
PRINTFORM (%TOSTR_CUPSIZE(対象)%)

@PRINT_HIPSIZE(対象)
#DIM 対象
SELECTCASE BASE:対象:ヒップ / 10
	CASE IS <= 71
		LOCALS = XS
	CASE 72 TO 76
		LOCALS = 3S
	CASE 77 TO 81
		LOCALS = SS
	CASE 82 TO 86
		LOCALS = S
	CASE 87 TO 91
		LOCALS = M
	CASE 92 TO 96
		LOCALS = L
	CASE 97 TO 101
		LOCALS = LL
	CASE 102 TO 106
		LOCALS = 3L
	CASE 107 TO 111
		LOCALS = 4L
	CASE 112 TO 116
		LOCALS = 5L
	CASEELSE
		LOCALS = XL
ENDSELECT
SIF IS_MALE(対象)
	LOCALS = --
PRINTFORM (%LOCALS:0%)

;-------------------------
;ボディーサイズを自動入力できるようにする関数
;-------------------------
@CHANGE_BODYSIZE(対象)
#DIM 対象
#DIM VALUE

$INPUT_LOOP
PRINTBUTTON @"[身長]", 0
PRINTL
PRINTBUTTON @"[体重]", 1
PRINTL
PRINTBUTTON @"[バスト]", 2
PRINTL
PRINTBUTTON @"[ウェスト]", 3
PRINTL
PRINTBUTTON @"[ヒップ]", 4
PRINTL
PRINTBUTTON @"[ペニス]", 5
PRINTL

INPUT
IF RESULT == 0
	$INPUT_LOOP0
	PRINTFORML 小数点第一位までを十倍した数を入力してください。例:1550->155.0cm
	INPUT
	VALUE = RESULT
	PRINTFORML {VALUE/10}.{VALUE%10}cmでいいですか？
	CALL ASK_YN
	SIF RESULT
		GOTO INPUT_LOOP0
	BASE:対象:身長 = VALUE
	MAXBASE:対象:身長 = VALUE
ELSEIF RESULT == 1
	$INPUT_LOOP1
	PRINTFORML 小数点第一位までを十倍した数を入力してください。例:550->55.0kg
	INPUT
	VALUE = RESULT
	PRINTFORML {VALUE/10}.{VALUE%10}kgでいいですか？
	CALL ASK_YN
	SIF RESULT
		GOTO INPUT_LOOP1
	BASE:対象:体重 = VALUE
	MAXBASE:対象:体重 = VALUE
ELSEIF RESULT == 2
	$INPUT_LOOP2
	PRINTFORML 小数点第一位までを十倍した数を入力してください。例:800->80.0cm
	INPUT
	VALUE = RESULT
	PRINTFORML {VALUE/10}.{VALUE%10}cmでいいですか？
	CALL ASK_YN
	SIF RESULT
		GOTO INPUT_LOOP2
	BASE:対象:バスト = VALUE
	MAXBASE:対象:バスト = VALUE
ELSEIF RESULT == 3
	$INPUT_LOOP3
	PRINTFORML 小数点第一位までを十倍した数を入力してください。例:600->60.0cm
	INPUT
	VALUE = RESULT
	PRINTFORML {VALUE/10}.{VALUE%10}cmでいいですか？
	CALL ASK_YN
	SIF RESULT
		GOTO INPUT_LOOP3
	BASE:対象:ウェスト = VALUE
	MAXBASE:対象:ウェスト = VALUE
ELSEIF RESULT == 4
	$INPUT_LOOP4
	PRINTFORML 小数点第一位までを十倍した数を入力してください。例:800->80.0cm
	INPUT
	VALUE = RESULT
	PRINTFORML {VALUE/10}.{VALUE%10}cmでいいですか？
	CALL ASK_YN
	SIF RESULT
		GOTO INPUT_LOOP4
	BASE:対象:ヒップ = VALUE
	MAXBASE:対象:ヒップ = VALUE
ELSEIF RESULT == 5
	$INPUT_LOOP5
	PRINTFORML 小数点第一位までを十倍した数を入力してください。例:150->15.0cm
	INPUT
	VALUE = RESULT
	PRINTFORML {VALUE/10}.{VALUE%10}cmでいいですか？
	CALL ASK_YN
	SIF RESULT
		GOTO INPUT_LOOP5
	BASE:対象:ペニス = VALUE
	MAXBASE:対象:ペニス = VALUE
ELSE
	GOTO INPUT_LOOP
ENDIF

repo_name: napo/erafl

license: unknown


code:
;@SET_BODYSIZEの引数のビット位置
#DIM CONST サイズ_身長 = 0
#DIM CONST サイズ_体重 = 1
#DIM CONST サイズ_バスト = 2
#DIM CONST サイズ_ウェスト = 3
#DIM CONST サイズ_ヒップ = 4
#DIM CONST サイズ_ペニス = 5

#DIM CONST 体格_子供 = -2
#DIM CONST 体格_小柄 = -1
#DIM CONST 体格_普通 = 0
#DIM CONST 体格_長身 = 1
#DIM CONST 体格_大柄 = 2
#DIM CONST 体格_巨大 = 3

#DIM CONST 体型_痩せすぎ = -3
#DIM CONST 体型_細身 = -2
#DIM CONST 体型_スレンダー = -1
#DIM CONST 体型_普通 = 0
#DIM CONST 体型_グラマー = 1
#DIM CONST 体型_豊満 = 2
#DIM CONST 体型_肥満 = 3


code:
;情報表示に関わる関数
;-------------------------------------------------
;ARG:0番のキャラの情報を表示
;-------------------------------------------------
@SHOW_INFO(ARG:0, 調教中 = 0, CALL_FROM = "")
#DIM FIRST_LINE
#DIM 調教中
#DIMS CALL_FROM
CALL SHOW_INFO_INIT()
FIRST_LINE = LINECOUNT

IF FLAG:能力表示モード == 能力表示モード_性癖設定
	CALL SHOW_TENDENCY_SETTING(ARG:0)
ELSEIF FLAG:能力表示モード == 能力表示モード_能力成長情報
	CALL SHOW_ABL_DETAIL(ARG:0)
ELSEIF FLAG:能力表示モード == 能力表示モード_記録
	CALL SHOW_PREGNANT_RECORD(ARG:0)
ELSEIF FLAG:能力表示モード == 能力表示モード_スキル
	CALL SHOW_INFO_SHOW_SKILL(ARG:0)
ELSEIF FLAG:能力表示モード == 能力表示モード_衣装
	IF CALL_FROM == "CHARA_EDIT"
		CALL SHOW_CLOTH_SETTING(ARG:0, GROUPMATCH(CFLAG:MASTER:所属, CFLAG:(ARG:0):所属, CFLAG:(ARG:0):捕虜先) && !調教中)
	ELSE
		CALL SHOW_INFO_CLOTH_DRAWER(ARG:0)
	ENDIF
ELSEIF FLAG:能力表示モード == 能力表示モード_説明
	PRINTFORML %NAME_FORMAL(ARG:0)%
	CALL SINGLE_DRAWLINE
	CALL SHOW_INFO_ERO_DESCRIPTION(ARG:0)
ELSEIF FLAG:能力表示モード == 能力表示モード_デイリー
	PRINTFORML %NAME_FORMAL(ARG:0)%の口上デイリー
	IF !IS_UNIQUE_CHARA(ARG:0)
		PRINTFORML ※汎用口上のデイリーイベントのオンオフ状況は同じ汎用口上を適用しているキャラと共有されます
	ENDIF
	CALL SINGLE_DRAWLINE
	CALL LISTUP_KOJO_DAILY_EACH(ARG:0, 100)
	PRINTBUTTON "[全てオン]", 198
	PRINTL
	PRINTBUTTON "[全てオフ]", 199
	PRINTL
ELSEIF FLAG:能力表示モード == 能力表示モード_関係性
	CALL SHOW_RELATION_INFO(ARG:0)
ELSEIF FLAG:能力表示モード == 能力表示モード_ポートレイト
	CALL SHOW_CHARACTER_PORTRAIT_EDIT_MENU(ARG:0)
	CLEARLINE LINECOUNT - FIRST_LINE
	RESTART
ELSEIF FLAG:能力表示モード == 能力表示モード_ステータス
	CALL SHOW_INFO_STATUS(ARG:0)
ELSEIF FLAG:能力表示モード == 能力表示モード_口上設定
	CALL SHOW_CHARACTER_KOJO_EDIT_MENU(ARG:0)
	CLEARLINE LINECOUNT - FIRST_LINE
	RESTART
ELSE
	CALL SHOW_HEADER(ARG:0)
	IF 調教中
		;PRINTL ◇ 今回の調教 ◇
		CALL SMALL_TITLE("今回")
		CALL NEW_PRINT_ORGASM(ARG:0)
		PRINTL
	ENDIF
	;顔グラ表示
	CALL SHOW_PORTRAIT(ARG:0)

	CALL SMALL_TITLE("基礎", 100)
	SIF !GETBIT(SHOW_INFO_FOLD, 0)
		CALL SHOW_BASE(ARG:0)
	PRINTL
	CALL SMALL_TITLE("親交", 105)
	SIF !GETBIT(SHOW_INFO_FOLD, 5)
		CALL SHOW_FRIENDSHIP(ARG:0)
	PRINTL
	CALL SMALL_TITLE("続柄", 108)
	SIF !GETBIT(SHOW_INFO_FOLD, 8)
		CALL SHOW_PARENTS(ARG:0)
	PRINTL
	; CALL SMALL_TITLE("関係", 111)
	; SIF !GETBIT(SHOW_INFO_FOLD, 11)
	; 	CALL SHOW_RELATION(ARG:0)
	; PRINTL
	CALL SMALL_TITLE("一般", 101)
	SIF !GETBIT(SHOW_INFO_FOLD, 1)
		CALL NEW_PRINT_SLG_ABL(ARG:0)
	PRINTL
	;性経験情報
	CALL NEW_PRINT_SEXUAL_INFO(ARG:0)
	CALL SMALL_TITLE("閨事", 102)
	SIF !GETBIT(SHOW_INFO_FOLD, 2)
		CALL NEW_PRINT_ABL(ARG:0)
	PRINTL
	CALL SMALL_TITLE("素質", 103)
	SIF !GETBIT(SHOW_INFO_FOLD, 3)
		CALL NEW_PRINT_TALENT(ARG:0)
	PRINTL
	CALL SMALL_TITLE("経験", 104)
	SIF !GETBIT(SHOW_INFO_FOLD, 4)
		CALL NEW_PRINT_EXP(ARG:0)
	; PRINTL
	; IF !GETBIT(SHOW_INFO_FOLD, 7)
	; 	CALL SMALL_TITLE("ﾃﾞｲﾘｰ")
	; 	CALL NEW_PRINT_DAILY_TALENT(ARG:0)
	; 	CALL SMALL_TITLE("特殊")
	; 	CALL NEW_PRINT_FALLEN_TALENT(ARG:0)
	; ENDIF
	PRINTL
	CALL SMALL_TITLE("身体", 109)
	SIF !GETBIT(SHOW_INFO_FOLD, 9)
		CALL SHOW_BODY(ARG:0)
	PRINTL
	CALL SMALL_TITLE("他", 110)
	SIF !GETBIT(SHOW_INFO_FOLD, 10)
		CALL SHOW_OTHER_INFO(ARG:0)
ENDIF

@SHOW_INFO_WITH_UI(対象, ページ移動, 調教中 = 0, CALL_FROM = "")
#DIM 対象
#DIM ページ移動
#DIM 調教中
#DIMS CALL_FROM
#DIM FIRST_LINE
#DIM 現好みLV
#DIM 経験数

FIRST_LINE = LINECOUNT

;主人公なら性癖設定画面の表示を禁止
SIF 対象 == MASTER && FLAG:能力表示モード == 1
	FLAG:能力表示モード = 0

;対象キャラの情報を表示
CALL DRAW_LINE(, カラー_注釈)
CALL SHOW_INFO(対象, 調教中, CALL_FROM)
CALL DRAW_LINE(, カラー_注釈)

REDRAW 0

PRINTBUTTON " [戻る]", 10
PRINT
CALL PRINTBUTTON_EX(" [基本]", 0, 1, FLAG:能力表示モード == 0)
CALL PRINTBUTTON_EX(" [ｽﾃｰﾀｽ]", 13, 1, FLAG:能力表示モード == 13)
CALL PRINTBUTTON_EX(" [関係]", 11, 1, FLAG:能力表示モード == 11)
CALL PRINTBUTTON_EX(" [性癖]", 1,対象 != MASTER, FLAG:能力表示モード == 1)
CALL PRINTBUTTON_EX(" [能力]", 2, 1, FLAG:能力表示モード == 2)
CALL PRINTBUTTON_EX(" [家系]", 3, 1, FLAG:能力表示モード == 3)
CALL PRINTBUTTON_EX(" [ｽｷﾙ]", 4, 1, FLAG:能力表示モード == 4)
IF CFLAG:MASTER:所属 == CFLAG:対象:所属
	CALL PRINTBUTTON_EX(" [衣装]", 5, 1, FLAG:能力表示モード == 5)
ENDIF
CALL PRINTBUTTON_EX(" [説明]", 6, 1, FLAG:能力表示モード == 6)
CALL PRINTBUTTON_EX(" [ﾃﾞｲﾘｰ]", 7, 1, FLAG:能力表示モード == 7)
IF 対象 == MASTER || (IS_RANDOM_CHARA(対象) || IS_CHILD(対象) || IS_SP_CHARA(対象) || TALENT:(対象):カスタムキャラ) && CFLAG:MASTER:所属 == CFLAG:対象:所属
	CALL PRINTBUTTON_EX(" [ポートレイト]", 12, 1, FLAG:能力表示モード == 12)
	CALL PRINTBUTTON_EX(" [口上]", 14, 1, FLAG:能力表示モード == 14)
ELSEIF (IS_UNIQUE_CHARA(対象) && CFLAG:MASTER:所属 == CFLAG:対象:所属)
	CALL PRINTBUTTON_EX(" [外見設定]", 12, 1, FLAG:能力表示モード == 12)
ENDIF

IF ページ移動
	PRINTL
	PRINTBUTTON " [前のキャラ]", 8
	PRINTBUTTON " [次のキャラ]", 9
ENDIF
PRINTL

$INPUT_LOOP
VARSET RESULTS
INPUTS
CLEARLINE 1
IF ISNUMERIC(RESULTS)
	RESULT = TOINT(RESULTS)
	IF FLAG:能力表示モード == 0
		IF INRANGE(RESULT - 100, 0, 11)
			INVERTBIT SHOW_INFO_FOLD, RESULT - 100
			CLEARLINE LINECOUNT - FIRST_LINE
			RESTART
		ENDIF
	ELSEIF FLAG:能力表示モード == 1
		;「性癖設定」専用の入力処理
		IF RESULT == 101
			FLAG:性癖設定ページ数 --
			CLEARLINE LINECOUNT - FIRST_LINE
			RESTART
		ELSEIF RESULT == 102
			FLAG:性癖設定ページ数 ++
			CLEARLINE LINECOUNT - FIRST_LINE
			RESTART
		ELSEIF RESULT >= 3000 && RESULT < 6000
			現好みLV = COM_TENDENCY:(対象):(RESULT - 3000)
			経験数 = COM_EXP:(対象):(RESULT - 3000) /10
			IF (現好みLV == 0 && 経験数 >= 10) || (現好みLV == 1 && 経験数 >= 35) || (現好みLV == 2 && 経験数 >= 100)
				COM_TENDENCY:(対象):(RESULT - 3000) ++
			ENDIF
			CLEARLINE LINECOUNT - FIRST_LINE
			RESTART
		ELSEIF RESULT >= 6000 && RESULT < 9000
			IF COM_TENDENCY:(対象):(RESULT - 6000) >= 1
				COM_TENDENCY:(対象):(RESULT - 6000) --
			ENDIF
			CLEARLINE LINECOUNT - FIRST_LINE
			RESTART
		ELSEIF GROUPMATCH(RESULT, 10000, 11000, 12000, 13000, 14000, 15000)
			CALL 性癖一括変更(対象, RESULT)
			CLEARLINE LINECOUNT - FIRST_LINE
			RESTART
		ENDIF
	ELSEIF FLAG:能力表示モード == 7 && RESULT >= 100
		LOCAL = RESULT - 100
		IF LOCAL == 98
			CALL SET_ALL_KOJO_DAILY_EACH(対象, 0)
			CLEARLINE LINECOUNT - FIRST_LINE
			RESTART
		ELSEIF LOCAL == 99
			CALL SET_ALL_KOJO_DAILY_EACH(対象, 1)
			CLEARLINE LINECOUNT - FIRST_LINE
			RESTART
		ELSE
			CALL TOGGLE_KOJO_DAILY(対象, LOCAL)
			CLEARLINE LINECOUNT - FIRST_LINE
			RESTART
		ENDIF
	ELSEIF FLAG:能力表示モード == 5 && GROUPMATCH(CFLAG:MASTER:所属, CFLAG:対象:所属, CFLAG:対象:捕虜先)
		IF INRANGE(RESULT, 100, 100 + CLOTH_PART_NUM - 1)
			CALL CLOTH_CHANGE_MENU(対象, RESULT - 100)
			CLEARLINE LINECOUNT - FIRST_LINE
			RESTART
		ENDIF
	ENDIF

	IF RESULT == 10
		REDRAW 1
		RETURN
	ELSEIF RESULT >= 0 && RESULT <= 6 && FLAG:能力表示モード != RESULT && !(RESULT == 1 && 対象 == MASTER)
		FLAG:能力表示モード = RESULT
		CLEARLINE LINECOUNT - FIRST_LINE
		RESTART
	ELSEIF RESULT == 7
		FLAG:能力表示モード = RESULT
		CLEARLINE LINECOUNT - FIRST_LINE
		RESTART
		;前のキャラ
	ELSEIF RESULT == 8 && ページ移動
		CALL SHOW_INFO_INIT
		LOCAL:0 = 0
		LOCAL:1 = 0
		TOGGLE_ALLOW_LOVER_ALL_BUTTON = 0
		TOGGLE_ALLOW_SUBORDINATE_ALL_BUTTON = 0
		TOGGLE_ALLOW_DOMINANCE_ALL_BUTTON = 0
		TOGGLE_ALLOW_UFUFU_ALL_BUTTON = 0
		WHILE 1
			LOCAL:2 = SHOP_CHARA_LIST:(LOCAL:0)
			IF LOCAL:1
				IF LOCAL:2 != -1
					対象 = SHOP_CHARA_LIST:(LOCAL:0)
					BREAK
				ENDIF
			ELSEIF LOCAL:2 == 対象
				LOCAL:1 = 1
			ENDIF
			LOCAL:0 --
			SIF LOCAL:0 < 0
				LOCAL:0 = CHARANUM - 1
		WEND
		CLEARLINE LINECOUNT - FIRST_LINE
		RESTART
		;後ろのキャラ
	ELSEIF RESULT == 9 && ページ移動
		CALL SHOW_INFO_INIT
		LOCAL:0 = 0
		LOCAL:1 = 0
		TOGGLE_ALLOW_LOVER_ALL_BUTTON = 0
		TOGGLE_ALLOW_SUBORDINATE_ALL_BUTTON = 0
		TOGGLE_ALLOW_DOMINANCE_ALL_BUTTON = 0
		TOGGLE_ALLOW_UFUFU_ALL_BUTTON = 0
		WHILE 1
			LOCAL:2 = SHOP_CHARA_LIST:(LOCAL:0)
			IF LOCAL:1
				IF LOCAL:2 != -1
					対象 = SHOP_CHARA_LIST:(LOCAL:0)
					BREAK
				ENDIF
			ELSEIF LOCAL:2 == 対象
				LOCAL:1 = 1
			ENDIF
			LOCAL:0 ++
			SIF LOCAL:0 >= CHARANUM
				LOCAL:0 = 0
		WEND
		CLEARLINE LINECOUNT - FIRST_LINE
		RESTART
		;★
	ELSEIF RESULT == 能力表示モード_関係性
		SHOW_RELATION_CURRENT_CHARA_ID = 対象
		FLAG:能力表示モード = 能力表示モード_関係性
		RESTART
	ELSEIF RESULT == 12
		FLAG:能力表示モード = RESULT
		CLEARLINE LINECOUNT - FIRST_LINE
		RESTART
	ELSEIF RESULT == 13
		FLAG:能力表示モード = RESULT
		CLEARLINE LINECOUNT - FIRST_LINE
		RESTART
	ELSEIF RESULT == 14
		FLAG:能力表示モード = RESULT
		CLEARLINE LINECOUNT - FIRST_LINE
		RESTART
	ELSEIF RESULT == 1000
		FLAG:能力表示モード = 10
		RESTART
	ENDIF
ELSE
	;文字列ボタンの処理
	IF FLAG:能力表示モード == 4
		CALL SHOW_INFO_SHOW_SKILL_INPUT(RESULTS, 対象)
		CLEARLINE LINECOUNT - FIRST_LINE
		IF RESULTS == "SKILL_LEARN"
			SKILL_SELECT_TAB '= ""
			CALL SHOP_LIFE_USERSHOP41(対象)
			CLEARLINE LINECOUNT - FIRST_LINE
		ENDIF
		RESTART
		;衣装設定
	ELSEIF FLAG:能力表示モード == 5
		IF CALL_FROM == "CHARA_EDIT"
		ELSE
			CALL CLOTH_DRAWER_INPUT(RESULTS, 対象)
		ENDIF
		CLEARLINE LINECOUNT - FIRST_LINE
		RESTART
	ELSEIF FLAG:能力表示モード == 能力表示モード_関係性
		CALL SHOW_RELATION_INFO_INPUT(RESULTS)
		CLEARLINE LINECOUNT - FIRST_LINE
		RESTART
	ELSEIF FLAG:能力表示モード == 13
		CLEARLINE LINECOUNT - FIRST_LINE
		SIF CFLAG:対象:所属 != 所属_プレイヤー
			RESTART
		IF DIC_CONTAINSKEY(RESULTS, "CHANGE_WEAPON")
			;CALL HO_ITEM_MENU(3)
			CALL QST_EQUIP_MENU(対象, 3, DIC_GETINT(RESULTS, "CHANGE_WEAPON"), DIC_GETINT(RESULTS, "EDIT_SLOT_ID"))
			CLEARLINE LINECOUNT - FIRST_LINE
		ELSEIF DIC_CONTAINSKEY(RESULTS, "CHANGE_RELIC")
			;CALL HO_ITEM_MENU(4)
			CALL QST_EQUIP_MENU(対象, 4, DIC_GETINT(RESULTS, "CHANGE_RELIC"), DIC_GETINT(RESULTS, "EDIT_SLOT_ID"))
			CLEARLINE LINECOUNT - FIRST_LINE
		ENDIF
		RESTART
	ENDIF
ENDIF
GOTO INPUT_LOOP

;-------------------------------------------------
;キャラARG:0のスキル一覧表示
;-------------------------------------------------
@SHOW_SKILLS(ARG:0)
PRINTFORML ◆%ANAME(ARG:0)%のスキル◆
LOCAL:2 = 0
FOR LOCAL, 0, SKILL_GENRE_NUM
	FOR LOCAL:1, 0, MAX_SKILL_SLOT
		TRYCCALLFORM SKILL_{SKILL_NO_SLOT:(ARG:0):LOCAL:(LOCAL:1)}_%SKILL_GENRE_ENG:LOCAL%_{SKILL_ID_SLOT:(ARG:0):LOCAL:(LOCAL:1)}_EXIST
		CATCH
			CONTINUE
		ENDCATCH
		CALL COLOR_LINE
		SETCOLOR カラー_選択不可
		PRINT   ・
		RESETCOLOR
		CALL SKILL_EXPLANATION(LOCAL, SKILL_NO_SLOT:(ARG:0):LOCAL:(LOCAL:1), SKILL_ID_SLOT:(ARG:0):LOCAL:(LOCAL:1), 5)
		LOCAL:2 = 1
	NEXT
NEXT
IF !LOCAL:2
	PRINTFORML
ELSE
	CALL SINGLE_DRAWLINE
	CALL PRINTBUTTON_EXL("[並べ替え]", 101, IS_COUNTRY(CFLAG:MASTER:所属) && CFLAG:MASTER:所属 == CFLAG:(ARG:0):所属 && !CFLAG:(ARG:0):捕虜先)
ENDIF

;-------------------------------------------------
;キャラARG:0の性癖設定画面  表示処理のみ
;-------------------------------------------------
; #region @SHOW_TENDENCY_SETTING
@SHOW_TENDENCY_SETTING(ARG:0)
;1ページに表示するコマンド数の設定
LOCAL:5 = 18

;表示されないコマンドの数
LOCAL:6 = 48

;定義されているコマンドの数を数える
LOCAL:12 = 0
FOR LOCAL:0, 0, VARSIZE("TRAINNAME")
	IF TRAINNAME:(LOCAL:0) != ""
		LOCAL:12 ++
	ENDIF
NEXT

LOCAL:12 -= LOCAL:6

;ページ数の計算
FLAG:性癖設定最大ページ = MAX(LOCAL:12 - 1, 0) / LOCAL:5 + 1
FLAG:性癖設定ページ数 = LIMIT(FLAG:性癖設定ページ数, 1, FLAG:性癖設定最大ページ)

PRINTFORML ◆%ANAME(ARG:0)%の性癖設定◆
CALL SINGLE_DRAWLINE
PRINTL   各コマンドの実行回数の確認と好みLvの変更が可能です
PRINTL   好みLvが高いほど実行時に中毒充足のソースが多く追加され、おまかせ・逆調教時の実行確率が増加します
PRINTL   好みLvを上げるのに必要な実行回数は  Lv0→1:10回  Lv1→2:35回  Lv2→3:100回
CALL SINGLE_DRAWLINE
PRINTL       < コマンド名称 >      < プレイヤー >      < ターゲット >      <   第三者   >
PRINT
PRINTBUTTON "[+]", 10000
PRINTBUTTON "[-]", 11000
PRINT
PRINTBUTTON "[+]", 12000
PRINTBUTTON "[-]", 13000
PRINT
PRINTBUTTON "[+]", 14000
PRINTBUTTON "[-]", 15000
PRINTL
LOCAL:13 = (FLAG:性癖設定ページ数 - 1) * LOCAL:5
LOCAL:14 = FLAG:性癖設定ページ数 * LOCAL:5
LOCAL:15 = 0
LOCAL:16 = 0
FOR LOCAL:0, 0, 290
	IF TRAINNAME:(LOCAL:0) != ""
		IF LOCAL:15 >= LOCAL:13 && LOCAL:15 < LOCAL:14
			PRINT
			IF COM_EXP:(ARG:0):(LOCAL:0) + COM_EXP:(ARG:0):(LOCAL:0 + 1000) + COM_EXP:(ARG:0):(LOCAL:0 + 2000) >= 1
				PRINTFORM %TRAINNAME:(LOCAL:0), 20, RIGHT%
				CALL PRINT_TENDENCT_CHANGE_BUTTON(ARG:0, LOCAL:0)
				CALL PRINT_TENDENCT_CHANGE_BUTTON(ARG:0, LOCAL:0 + 1000)
				CALL PRINT_TENDENCT_CHANGE_BUTTON(ARG:0, LOCAL:0 + 2000)
			ELSE
				CALL CHECK_COM_KNOWLEDGE(ARG:0, LOCAL:0)
				IF RESULT
					SETCOLOR 0x808080
					PRINTFORM %TRAINNAME:(LOCAL:0), 20, RIGHT%        未経験    知識あり
				ELSE
					SETCOLOR 0x505050
					PRINTFORM %TRAINNAME:(LOCAL:0), 20, RIGHT%        未経験    知識なし
				ENDIF
				RESETCOLOR
			ENDIF
			PRINTL
			LOCAL:16 ++
		ENDIF
		LOCAL:15 ++
	ENDIF
NEXT
FOR LOCAL:0, LOCAL:16, LOCAL:5
	PRINTL
NEXT
CALL SINGLE_DRAWLINE
PRINT
IF FLAG:性癖設定ページ数 >= 2
	PRINTBUTTON "101[←前のページ]", 101
ELSE
	SETCOLOR カラー_選択不可
	PRINT 101[←前のページ]
	RESETCOLOR
ENDIF
PRINTFORM         page{FLAG:性癖設定ページ数, 2, RIGHT}/{FLAG:性癖設定最大ページ, 2, LEFT}
IF FLAG:性癖設定ページ数 < FLAG:性癖設定最大ページ
	PRINTBUTTON "102[次のページ→]", 102
ELSE
	SETCOLOR カラー_選択不可
	PRINT 102[次のページ→]
	RESETCOLOR
ENDIF
PRINTL
; #endregion

;-------------------------------------------------
;性癖設定画面における好みLv変更ボタンの描画 ARG:0=キャラ番号、ARG:1=配列番号
;-------------------------------------------------
@PRINT_TENDENCT_CHANGE_BUTTON(ARG:0, ARG:1)
PRINTFORM {COM_EXP:(ARG:0):(ARG:1) / 10, 8, RIGHT}回

SELECTCASE COM_TENDENCY:(ARG:0):(ARG:1)
	CASE 1
		SETCOLOR 0x00FF00
	CASE 2
		SETCOLOR カラー_オレンジ
	CASE 3
		SETCOLOR 0xFF00FF
ENDSELECT
PRINTFORM Lv{COM_TENDENCY:(ARG:0):(ARG:1)}
RESETCOLOR

LOCAL:0 = COM_TENDENCY:(ARG:0):(ARG:1)
LOCAL:1 = COM_EXP:(ARG:0):(ARG:1) / 10
IF (LOCAL:0 <= 0 && LOCAL:1 >= 10) || (LOCAL:0 <= 1 && LOCAL:1 >= 35) || (LOCAL:0 <= 2 && LOCAL:1 >= 100)
	PRINTBUTTON "[+]", ARG:1 + 3000
ELSE
	SETCOLOR カラー_選択不可
	PRINTPLAIN [+]
	RESETCOLOR
ENDIF
IF LOCAL:0 >= 1
	PRINTBUTTON "[-]", ARG:1 + 6000
ELSE
	SETCOLOR カラー_選択不可
	PRINTPLAIN [-]
	RESETCOLOR
ENDIF

;-------------------------------------------------
;ARG:0番のキャラの名前を表示
;-------------------------------------------------
; #region @SHOW_HEADER
@SHOW_HEADER(ARG:0)
#DIMS DYNAMIC FULL_NAME
#DIMS DYNAMIC NAME_LABEL
#DIMS DYNAMIC FACTION
#DIMS DYNAMIC PRISONER
#DIMS DYNAMIC CHARA_TYPE
#DIMS DYNAMIC SEX
#DIMS DYNAMIC JOB

#DIM CONST NAME_LENGTH_LIMIT  = 40
#DIM CONST REPLACE_LENGTH = 6 ; "◆ " + "…" + 余白全角1文字
;名前の表示
CALL DRAW_LINE

FULL_NAME = %GET_FULL_NAME(ARG:0)%
IF STRLENS(FULL_NAME) > NAME_LENGTH_LIMIT
	LOCALS '= @"<nonbutton title = '%FULL_NAME%'>◆ %SUBSTRING(FULL_NAME, 0, NAME_LENGTH_LIMIT - REPLACE_LENGTH)%…</nonbutton>"
ELSE
	LOCALS '= @"◆ %FULL_NAME%"
ENDIF
NAME_LABEL '= @"%LOCALS, NAME_LENGTH_LIMIT, LEFT%"

LOCAL:4 = GET_COUNTRY_BOSS(CFLAG:(ARG:0):所属)
IF LOCAL:4 >= 0
	LOCALS:0 = %ANAME(LOCAL:4)%
ELSE
	LOCALS:0 = %"----"%
ENDIF
FACTION '= @"所属:%LOCALS:0%"
LOCAL:4 = GET_COUNTRY_BOSS(CFLAG:(ARG:0):捕虜先)
IF LOCAL:4 >= 0
	LOCALS:0 = %ANAME(LOCAL:4)%
ELSE
	LOCALS:0 = %"----"%
ENDIF
IF LOCAL:4 >= 0
	IF CFLAG:(ARG:0):軟禁中 == 0
		LOCALS:0 = %LOCALS:0+"(監禁)"%
	ELSE
		LOCALS:0 = %LOCALS:0+"(軟禁)"%
	ENDIF
ENDIF
PRISONER '= @"捕虜:%LOCALS:0%"

;CALL PRINT_SEX(ARG:0, 0, 0, 10)
CALL GET_STR_SEX(ARG:0)
SEX '= @"性別:%RESULTS:1%"

;キャラ区分
LOCALS:0 '= ""
IF ARG:0 != MASTER
	IF IS_UNIQUE_CHARA(ARG:0)
		SETCOLOR カラー_注意
		LOCALS:0 = ユニーク
	ELSEIF IS_RANDOM_CHARA(ARG:0)
		SETCOLOR カラー_シアン
		LOCALS:0 = 汎用
	ELSEIF IS_CHILD(ARG:0)
		SETCOLOR 0x00FF80
		LOCALS:0 = 子供
	ELSEIF TALENT:(ARG:0):カスタムキャラ
		SETCOLOR カラー_オレンジ
		LOCALS:0 = カスタム
	ELSE
		SETCOLOR カラー_オレンジ
		LOCALS:0 = 特殊
	ENDIF
ENDIF
CHARA_TYPE '= @"%LOCALS%"
RESETCOLOR

JOB '= @"職業:%JOB_NAME:(TALENT:(ARG:0):職業)%　"

;印字部
;-------------------------------------------------
LOCAL = MAX_CHARANAME_LENGTH * 55
LOCALS '= ""
LOCALS += @"
%NAME_LABEL%
"
LOCALS += @"
%SEX%
"
LOCALS += @"
%FACTION%
"
LOCALS += @"
%PRISONER%
"
LOCALS += @"
%CHARA_TYPE%
" + "
"
LOCALS += @"
%JOB%
"
HTML_PRINT @"%LOCALS%", 1
PRINTL
CALL SHOW_TAG(ARG:0)

PRINTL
[IF_DEBUG]
PRINTFORML (DEBUG): CHARA_ID:{ARG:0},CHARA_NO:{NO:(ARG:0)},焦らされ度:{TCVAR:(ARG:0):焦らされ度},行動待機時間:{TCVAR:(ARG:0):行動待機時間},酔い:{PALAM:(ARG:0):酔い},宿泊先IDX:{TCVAR:(ARG:0):宿泊先設備IDX},作業進捗度:{TCVAR:(ARG:0):HO作業進捗量}
[ENDIF]

CALL DRAW_LINE(, カラー_注釈)
; #endregion

;-------------------------------------------------
;ARG:0番のキャラのタグを表示
;-------------------------------------------------
@SHOW_TAG(ARG:0)
FOR LOCAL, 0, MAX_TAG
	SIF TAG:(ARG:0):LOCAL == -1
		CONTINUE
	PRINTPLAINFORM [%TAG_NAME:(TAG:(ARG:0):LOCAL)%]
	;%]
NEXT

;-------------------------------------------------
;ARG:0番のキャラの両親を表示
;-------------------------------------------------
@SHOW_PARENTS(ARG:0)

LOCAL:2 = ID_TO_CHARA(CFLAG:(ARG:0):父親)
LOCAL:3 = ID_TO_CHARA(CFLAG:(ARG:0):母親)
IF LOCAL:2 >= 0
	PRINTFORM 父:%ANAME(LOCAL:2), MAX_CHARANAME_LENGTH, LEFT%
	;特殊キャラ
ELSE
	PRINTFORM 父:%ID_TO_SP_NAME(CFLAG:(ARG:0):父親), MAX_CHARANAME_LENGTH, LEFT%
ENDIF

IF LOCAL:3 >= 0
	PRINTFORM %SMALL_TITLE_SPACE(1)%母:%ANAME(LOCAL:3), MAX_CHARANAME_LENGTH, LEFT%
ELSE
	PRINTFORM %SMALL_TITLE_SPACE(1)%母:%ID_TO_SP_NAME(CFLAG:(ARG:0):母親), MAX_CHARANAME_LENGTH, LEFT%
ENDIF
PRINTL

;-------------------------------------------------
;ARG:0番のキャラの顔グラを表示
;-------------------------------------------------
@SHOW_PORTRAIT(ARG:0)
#DIMS RECT
#DIMS PORTRAIT
SIF CSTR:(ARG:0):キャラ顔グラ == "FACE_DUMMY" && CFLAG:(ARG:0):ポートレイト画像タイプ == 0
	RETURN 0

CALL RESET_FACE_SPRITE(ARG:0)
CALL HO_SET_PORTRAIT_SPRITE(ARG:0, "ステータス画面")
; CALL 画像表示_P(CSTR:(ARG:0):キャラ顔グラ, "RIGHT", 0, 100, 200, 200)
; CALL 画像描画終了
RECT     '=  @"rect = '7200, 0px, 200px, 200px'"
PORTRAIT '= @""
HTML_PRINT @"
%PORTRAIT%
", 1

;-------------------------------------------------
;ARG:0番のキャラのBASE関係を表示
;-------------------------------------------------
; #region @SHOW_BASE
@SHOW_BASE(ARG:0)

PRINTFORM 体力:
CALL PRINT_GRADATIONBAR(BASE:(ARG:0):体力, MAXBASE:(ARG:0):体力, 10, 0xFF5E7E, , 1)
PRINTFORM {BASE:(ARG:0):体力,6, RIGHT}/{MAXBASE:(ARG:0):体力, 6, RIGHT}

PRINTFORM %SMALL_TITLE_SPACE(1)%昼主導度
CALL PRINT_SLIDER(-1000, 1000, ABL:(ARG:0):主導度Ｎ, 24, 0xC040C0, 0x40C040)
PRINTFORM {ABL:(ARG:0):主導度Ｎ, 5}

IF ABL:(ARG:0):主導度Ｎ <= -500
	PRINT 超弱気で
ELSEIF ABL:(ARG:0):主導度Ｎ <= -300
	PRINT 弱気で
ELSEIF ABL:(ARG:0):主導度Ｎ <= -100
	PRINT 落ち着いた
ELSEIF ABL:(ARG:0):主導度Ｎ < 100
	PRINT 友達感覚で
ELSEIF ABL:(ARG:0):主導度Ｎ < 300
	PRINT 元気のいい
ELSEIF ABL:(ARG:0):主導度Ｎ < 500
	PRINT 強気で
ELSE
	PRINT 超強気で
ENDIF

PRINTL

PRINTFORM %SMALL_TITLE_SPACE()%気力:
CALL PRINT_GRADATIONBAR(BASE:(ARG:0):気力, MAXBASE:(ARG:0):気力, 10, 0x60A74E)
PRINTFORM {BASE:(ARG:0):気力,6, RIGHT}/{MAXBASE:(ARG:0):気力, 6, RIGHT}

PRINTFORM %SMALL_TITLE_SPACE(1)%夜倒錯度
CALL PRINT_SLIDER(0, 1000, ABL:(ARG:0):倒錯度, 24, 0x4040C0, 0x4040C0)
PRINTFORM {ABL:(ARG:0):倒錯度, 5}

IF ABL:(ARG:0):倒錯度 >= 800
	PRINT 変態的な
ELSEIF ABL:(ARG:0):倒錯度 >= 500
	PRINT 倒錯的な
ELSEIF ABL:(ARG:0):倒錯度 >= 300
	PRINT ちょっと刺激的な
ELSEIF ABL:(ARG:0):倒錯度 >= 100
	PRINT 好奇心旺盛な
ELSE
	PRINT 甘々な
ENDIF

PRINTL

PRINTFORM %SMALL_TITLE_SPACE()%精神:
CALL PRINT_GRADATIONBAR(BASE:(ARG:0):精神力, MAXBASE:(ARG:0):精神力, 10, 0x5E9AFF)
PRINTFORM {BASE:(ARG:0):精神力,6, RIGHT}/{MAXBASE:(ARG:0):精神力, 6, RIGHT}

PRINTFORM %SMALL_TITLE_SPACE(1)%夜主導度
CALL PRINT_SLIDER(-1000, 1000, ABL:(ARG:0):主導度Ｕ, 24, 0xC040C0, 0x40C040)
PRINTFORM {ABL:(ARG:0):主導度Ｕ, 5}

IF ABL:(ARG:0):主導度Ｕ <= -500
	PRINT ドＭ
ELSEIF ABL:(ARG:0):主導度Ｕ <= -300
	PRINT Ｍ
ELSEIF ABL:(ARG:0):主導度Ｕ <= -100
	PRINT 微Ｍ
ELSEIF ABL:(ARG:0):主導度Ｕ < 100
	PRINT リバ
ELSEIF ABL:(ARG:0):主導度Ｕ < 300
	PRINT 微Ｓ
ELSEIF ABL:(ARG:0):主導度Ｕ < 500
	PRINT Ｓ
ELSE
	PRINT ドＳ
ENDIF

PRINTL
; #endregion

;-------------------------------------------------
;ARG:0番のキャラの外交印象を表示
;-------------------------------------------------
; #region @SHOW_RELATION
@SHOW_RELATION(ARG:0)

SIF FLAG:観戦モード
	RETURN

LOCAL = GET_COUNTRY_BOSS(CFLAG:(ARG:0):所属)
LOCAL:1 = GET_COUNTRY_BOSS(CFLAG:MASTER:所属)

PRINTFORM %ANAME(MASTER), MAX_CHARANAME_LENGTH, LEFT%

SIF LOCAL != LOCAL:1 && LOCAL:1 != MASTER && LOCAL:1 != -1
	PRINTFORM %ANAME(LOCAL:1), MAX_CHARANAME_LENGTH, LEFT%

SIF IS_COUNTRY(CFLAG:(ARG:0):所属) && LOCAL != MASTER && LOCAL != (ARG:0) && LOCAL != -1
	PRINTFORM %ANAME(LOCAL), MAX_CHARANAME_LENGTH, LEFT%

PRINTL

PRINTFORM %SMALL_TITLE_SPACE()%好
CALL PRINT_GRADATIONBAR(REL_LIKE:(ARG:0):MASTER, 1500, 10, 0xFF5E7E)
PRINTFORM %TOSTR_SPACE(MAX_CHARANAME_LENGTH - 12)%

IF LOCAL != LOCAL:1 && LOCAL:1 != MASTER && LOCAL:1 != -1
	PRINTFORM 好
	CALL PRINT_GRADATIONBAR(REL_LIKE:(ARG:0):(LOCAL:1), 1500, 10, 0xFF5E7E)
	PRINTFORM %TOSTR_SPACE(MAX_CHARANAME_LENGTH - 12)%
ENDIF

IF IS_COUNTRY(CFLAG:(ARG:0):所属) && LOCAL != MASTER && LOCAL != (ARG:0) && LOCAL != -1
	PRINTFORM 好
	CALL PRINT_GRADATIONBAR(REL_LIKE:(ARG:0):LOCAL, 1500, 10, 0xFF5E7E)
	PRINTFORM %TOSTR_SPACE(MAX_CHARANAME_LENGTH - 12)%
ENDIF

PRINTL

PRINTFORM %SMALL_TITLE_SPACE()%嫌
CALL PRINT_GRADATIONBAR(REL_HATE:(ARG:0):MASTER, 1500, 10, 0x5E9AFF)
PRINTFORM %TOSTR_SPACE(MAX_CHARANAME_LENGTH - 12)%

IF LOCAL != LOCAL:1 && LOCAL:1 != MASTER && LOCAL:1 != -1
	PRINTFORM 嫌
	CALL PRINT_GRADATIONBAR(REL_HATE:(ARG:0):(LOCAL:1), 1500, 10, 0x5E9AFF)
	PRINTFORM %TOSTR_SPACE(MAX_CHARANAME_LENGTH - 12)%
ENDIF

IF IS_COUNTRY(CFLAG:(ARG:0):所属) && LOCAL != MASTER && LOCAL != (ARG:0) && LOCAL != -1
	PRINTFORM 嫌
	CALL PRINT_GRADATIONBAR(REL_HATE:(ARG:0):LOCAL, 1500, 10, 0x5E9AFF)
	PRINTFORM %TOSTR_SPACE(MAX_CHARANAME_LENGTH - 12)%
ENDIF

PRINTL
; #endregion

;-------------------------------------------------
;ARG:0番のキャラとの親交の深さを表示
;-------------------------------------------------
@SHOW_FRIENDSHIP(ARG:0)

PRINTFORM 好感度:{CFLAG:(ARG:0):好感度, 16, LEFT}
PRINTFORM 依存度:{CFLAG:(ARG:0):依存度, 16, LEFT}
PRINTFORM 従属度:{CFLAG:(ARG:0):従属度, 16, LEFT}
PRINTFORM 支配度:{CFLAG:(ARG:0):支配度, 16, LEFT}
PRINTL

;-------------------------------------------------
;ARG:0番のキャラの肉体について表示
;-------------------------------------------------
@SHOW_BODY(ARG:0)

CALL SHOW_BODYSIZE(ARG:0)

PRINTFORM %SMALL_TITLE_SPACE()%
PRINTFORM 体格: %TOSTR_BODYSIZE(TALENT:(ARG:0):体格), 13, LEFT%
PRINTFORM 体型: %TOSTR_BODYTYPE(TALENT:(ARG:0):体型), 13, LEFT%
SIF IS_FEMALE(ARG:0)
	PRINTFORM 乳房: %TOSTR_BUSTSIZE(GET_BUSTSIZE(ARG:0)), 13, LEFT%
SIF HAS_PENIS(ARG:0)
	PRINTFORM 陰茎: %TOSTR_PENISSIZE(GET_PENISSIZE(ARG:0)), 13, LEFT%
PRINTFORM   尻: %TOSTR_HIPSIZE(GET_HIPSIZE(ARG:0)), 13, LEFT%
PRINTL

PRINTFORM %SMALL_TITLE_SPACE()%
IF HAS_VAGINA(ARG:0)
	PRINTFORM 膣締: %TOSTR_TIGHTNESS(TALENT:(ARG:0):Ｖ締まり), 13, LEFT%
ENDIF
PRINTFORM 尻締: %TOSTR_TIGHTNESS(TALENT:(ARG:0):Ａ締まり), 13, LEFT%
PRINTFORM 陰毛:
CALL COLOR_PRINT(@"%GET_INMOU_NAME(TALENT:(ARG:0):陰毛現在値), 13, LEFT%", TALENT:(ARG:0):陰毛現在値 == 陰毛_ハート型 ? カラー_ピンク # GETDEFCOLOR())
PRINTFORM 腋毛:
CALL PRINT_ARMPIT(ARG:0)
PRINTL

; PRINTFORM %SMALL_TITLE_SPACE()%髪色:
; CALL PRINT_HAIR_COLOR(TALENT:(ARG:0):髪色)
; PRINTFORM    髪長: %TOSTR_HAIR_LENGTH(TALENT:(ARG:0):髪の長さ), 13, LEFT%
; PRINTL

SIF HAS_VAGINA(ARG:0)
	PRINTFORML %SMALL_TITLE_SPACE()%危険日:%TOFULL(TOSTR(TALENT:(ARG:0):危険日))%, %TOFULL(TOSTR(TALENT:(ARG:0):危険日 + 5))%

;-------------------------------------------------
;ARG:0番のキャラのその他
;-------------------------------------------------
@SHOW_OTHER_INFO(CHARA_ID)
#DIM CHARA_ID

PRINTFORM タトゥ:
CALL PRINT_TATTOO(CHARA_ID)
PRINTL

PRINTFORM %SMALL_TITLE_SPACE()%ピアス:
CALL PRINT_PIERCE(CHARA_ID)
PRINTL

LOCAL:0 = 0

IF TALENT:(CHARA_ID):妊娠 || CFLAG:(CHARA_ID):触手産卵実行者
	SETCOLOR カラー_ピンク
	PRINTFORM %SMALL_TITLE_SPACE()%
	IF !CFLAG:(CHARA_ID):触手産卵実行者
		IF CFLAG:(CHARA_ID):行動不能状態 == 行動不能_臨月
			PRINTFORM 臨月:
		ELSE
			PRINTFORM 妊娠:
		ENDIF
		PRINTFORM \@ID_TO_CHARA(CFLAG:(CHARA_ID):子の父親) != -1 ? %ANAME(ID_TO_CHARA(CFLAG:(CHARA_ID):子の父親))% # %GET_SPERM_NAME(CFLAG:(CHARA_ID):子の父親)% \@
		PRINTFORM ({CFLAG:(CHARA_ID):妊娠期間}/\@ GETBIT(TALENT:(CHARA_ID):淫乱系, 素質_淫乱_良質母胎) ? 7 # 14\@)
		RESETCOLOR
		LOCAL:0 = 1
	ELSE
		PRINTFORM Ｖ触手寄生:
		PRINTFORM ({CFLAG:(CHARA_ID):妊娠期間}/\@ GETBIT(TALENT:(CHARA_ID):淫乱系, 素質_淫乱_苗床) ? 4 # 6\@)
		RESETCOLOR
		LOCAL:0 = 1
	ENDIF
ENDIF

IF CFLAG:(CHARA_ID):触手Ａ産卵実行者
	IF !LOCAL:0
		PRINTFORM %SMALL_TITLE_SPACE()%
	ELSE
		PRINTFORM
	ENDIF
	SETCOLOR カラー_ピンク
	PRINTFORM Ａ触手寄生:
	PRINTFORM ({CFLAG:(CHARA_ID):Ａ妊娠期間}/\@ GETBIT(TALENT:(CHARA_ID):淫乱系, 素質_淫乱_苗床) ? 4 # 6\@)
	LOCAL:0 = 1
	RESETCOLOR
ENDIF

IF CFLAG:(CHARA_ID):触手Ｕ産卵実行者
	IF !LOCAL:0
		PRINTFORM %SMALL_TITLE_SPACE()%
	ELSE
		PRINTFORM
	ENDIF
	SETCOLOR カラー_ピンク
	PRINTFORM Ｕ触手寄生:
	PRINTFORM ({CFLAG:(CHARA_ID):Ｕ妊娠期間}/\@ GETBIT(TALENT:(CHARA_ID):淫乱系, 素質_淫乱_苗床) ? 4 # 6\@)
	LOCAL:0 = 1
	RESETCOLOR
ENDIF

IF TALENT:(CHARA_ID):母乳体質
	IF !LOCAL:0
		PRINTFORM %SMALL_TITLE_SPACE()%
	ELSE
		PRINTFORM
	ENDIF
	SETCOLOR カラー_ピンク
	PRINTFORM <母乳体質>
	SIF CFLAG:(CHARA_ID):一時的母乳体質
		PRINTFORM (一時的)
	LOCAL:0 = 1
	RESETCOLOR
ENDIF

SIF LOCAL:0
	PRINTL

;-------------------------------------------------
;ARG:0番のキャラの経験を表示
;-------------------------------------------------
@NEW_PRINT_EXP(ARG:0)
LOCAL:1 = 0
FOR LOCAL:0, 0, 100
	;並べ直したEXPをLOCAL:2に代入
	LOCAL:2 = GET_SORTED_EXP(LOCAL:0)

	;対応するEXPがなければスキップ
	IF LOCAL:2 < 0
		CONTINUE
	ENDIF

	IF EXP:(ARG:0):(LOCAL:2) > 0
		;改行判定
		IF LOCAL:1 > 0 && LOCAL:1 % 3 == 0
			PRINTL
			PRINTFORM %SMALL_TITLE_SPACE()%
			;最初の一回目だけインデントなし
		ELSEIF LOCAL:1 == 0
			PRINTFORM
			;改行しない場合
		ELSE
			PRINTFORM %SMALL_TITLE_SPACE(1)%
		ENDIF
		LOCAL:1 ++

		CALL VALUE_FORM(EXP:(ARG:0):(LOCAL:2), "経験")
		PRINTFORM %REPLACE(EXPNAME:(LOCAL:2),"経験", ""), 10, LEFT%:%RESULTS, 6%
	ENDIF
NEXT

IF LOCAL:1 == 0
	PRINTFORM なし
ENDIF
PRINTL

;------------------------
;ARG:0番のキャラの初めての相手を表示
;-------------------------
@NEW_PRINT_SEXUAL_EXPERIENCE(ARG:0)
LOCALS '= ""
LOCALS += @"Ｍ:%SEXUAL_EXPERIENCE:(ARG:0):初体験_キス, 27, LEFT%"
IF HAS_PENIS(ARG:0)
	LOCALS += @"Ｐ:%SEXUAL_EXPERIENCE:(ARG:0):初体験_童貞, 18, LEFT%"
ENDIF
IF HAS_VAGINA(ARG:0)
	LOCALS += @"Ｖ:%SEXUAL_EXPERIENCE:(ARG:0):初体験_処女, 18, LEFT%"
ENDIF

LOCALS += @"Ａ:%SEXUAL_EXPERIENCE:(ARG:0):初体験_アナル処女, 18, LEFT%"
RESULTS = %LOCALS%

;------------------------
;ARG:0番のキャラの初めての相手を表示
;-------------------------
@NEW_PRINT_LAST_EXPERIENCE(ARG:0)
LOCALS '= ""
LOCALS += @"Ｍ:%SEXUAL_LAST_EXPERIENCE:(ARG:0):初体験_キス, 27, LEFT%"
IF HAS_PENIS(ARG:0)
	LOCALS += @"Ｐ:%SEXUAL_LAST_EXPERIENCE:(ARG:0):初体験_童貞, 18, LEFT%"
ENDIF
IF HAS_VAGINA(ARG:0)
	LOCALS += @"Ｖ:%SEXUAL_LAST_EXPERIENCE:(ARG:0):初体験_処女, 18, LEFT%"
ENDIF

LOCALS += @"Ａ:%SEXUAL_LAST_EXPERIENCE:(ARG:0):初体験_アナル処女, 18, LEFT%"
RESULTS = %LOCALS%

@NEW_PRINT_SEXUAL_INFO(ARG:0)
#DIMS ARG_SPECIAL_TALNET
#DIMS ARG_SEXUAL_EXPERIENCE
#DIMS ARG_LAST_EXPERIENCE
#DIMS ARG_SEX_TALENT
#DIMS ARG_DAILY_TALENT
#DIMS ARG_FALLEN_TALENT
#DIMS ARG_SEXUAL_PREFERENCE_EXP

#DIMS CONST ATR_DIV =  @"rect = '5000, 200, 3600, 300px' border = '1px' bcolor='#C0C0C0' padding='2px'"

CALL NEW_PRINT_SPECIAL_TALENT(ARG:0)
ARG_SPECIAL_TALNET = %RESULTS%
CALL NEW_PRINT_SEX_TALENT(ARG:0)
ARG_SEX_TALENT = %RESULTS%
CALL NEW_PRINT_SEXUAL_EXPERIENCE(ARG:0)
ARG_SEXUAL_EXPERIENCE = %RESULTS%
CALL NEW_PRINT_LAST_EXPERIENCE(ARG:0)
ARG_LAST_EXPERIENCE = %RESULTS%
CALL NEW_PRINT_SEXUAL_PREFERENCE_EXP(ARG:0)
ARG_SEXUAL_PREFERENCE_EXP = %RESULTS%

LOCALS '= ""
LOCALS += "
"
LOCALS += "・陥落
"
LOCALS += "　　" + ARG_SPECIAL_TALNET + "
"
LOCALS += "・淫乱素質
"
LOCALS += "　　" + ARG_SEX_TALENT + "
"
LOCALS += "・嗜好
"
LOCALS += "　　" + ARG_SEXUAL_PREFERENCE_EXP + "
"
LOCALS += "
"
LOCALS += "・初体験
"
LOCALS += "　　" + ARG_SEXUAL_EXPERIENCE + "
"
LOCALS += "・最近の経験
"
LOCALS += "　　" + ARG_LAST_EXPERIENCE + "
"
LOCALS += ARG_DAILY_TALENT + "
"
LOCALS += ARG_FALLEN_TALENT + "
"

HTML_PRINT @"
%LOCALS%
"
;-------------------------------------------------
;ARG:0番のキャラのSLG系能力を表示
;-------------------------------------------------
@NEW_PRINT_SLG_ABL(ARG:0)
;表示するABLの並び順リスト(10ごとに改行)
#DIM SHOW_LIST, 30
VARSET SHOW_LIST, -1
SHOW_LIST:0 = GETNUM(ABL, "身体")
SHOW_LIST:1 = GETNUM(ABL, "器用")
SHOW_LIST:2 = GETNUM(ABL, "知識")
SHOW_LIST:3 = GETNUM(ABL, "社交")
SHOW_LIST:4 = GETNUM(ABL, "魔術")
SHOW_LIST:5 = GETNUM(ABL, "観察")
SHOW_LIST:6 = GETNUM(ABL, "料理")
SHOW_LIST:7 = GETNUM(ABL, "歌唱")
SHOW_LIST:8 = GETNUM(ABL, "話術")
SHOW_LIST:9 = GETNUM(ABL, "戦闘")

; PRINT 評価:
; CALL TMP_PRINT_CHARA_STARS(ARG:0)

PRINTFORML 成長型: %TOSTR_GROWTYPE(TALENT:(ARG:0):成長型)%タイプ(%TOSTR_GROWTYPE_B(TALENT:(ARG:0):成長型)%に適正)

PRINTFORM %SMALL_TITLE_SPACE(1)%
FOR LOCAL:0, 0, VARSIZE("SHOW_LIST")
	;対応するABLがなければスキップ
	SIF SHOW_LIST:(LOCAL:0) < 0
		CONTINUE
	;改行
	IF LOCAL:0 > 0 && LOCAL:0 % 4 == 0
		PRINTL
		PRINTFORM %SMALL_TITLE_SPACE(1)%
	ENDIF

	LOCAL:2 = SHOW_LIST:(LOCAL:0)

	;3桁までは右詰め、それ以上は左詰めで表示
	IF ABL:(ARG:0):(LOCAL:2) <= 99
		PRINTFORM %SMALL_TITLE_SPACE(1)%%ABLNAME:(LOCAL:2), 6, LEFT%:{ABL:(ARG:0):(LOCAL:2), 3}
	ELSE
		PRINTFORM %SMALL_TITLE_SPACE(1)%%ABLNAME:(LOCAL:2), 6, LEFT%:{ABL:(ARG:0):(LOCAL:2), 4, LEFT}
	ENDIF
	;ランクづけ
	CALL PRINT_ALPHABET_RANK(ランク_ＳＬＧ, ABL:(ARG:0):(LOCAL:2))
NEXT
PRINTL
;PRINTFORML     性格: %TOSTR_CHARATYPE(TALENT:(ARG:0):性格)%

;-------------------------------------------------
;ARG:0番のキャラの能力を表示
;-------------------------------------------------
@NEW_PRINT_ABL(ARG:0)
;表示するABLの並び順リスト(10ごとに改行)
#DIM SHOW_LIST, 100

VARSET SHOW_LIST, -1

SHOW_LIST:0 = 0
SHOW_LIST:1 = 1
SHOW_LIST:2 = 2
SHOW_LIST:3 = 3
SHOW_LIST:4 = 4
SHOW_LIST:5 = 5
SHOW_LIST:6 = 12
SHOW_LIST:7 = 13
SHOW_LIST:8 = 14
SHOW_LIST:9 = 20
SHOW_LIST:10 = 21
SHOW_LIST:11 = 22
SHOW_LIST:12 = 23
SHOW_LIST:13 = 24
SHOW_LIST:14 = 25
SHOW_LIST:15 = 26
SHOW_LIST:16 = 27
SHOW_LIST:17 = 28
SHOW_LIST:18 = 29
SHOW_LIST:19 = 30
SHOW_LIST:20 = 31
SHOW_LIST:21 = 33
SHOW_LIST:22 = 34
SHOW_LIST:23 = 35
SHOW_LIST:24 = 32
FOR LOCAL:0, 0, 100
	;対応するABLがなければスキップ
	SIF SHOW_LIST:(LOCAL:0) < 0
		CONTINUE
	;改行
	IF LOCAL:0 > 0 && LOCAL:0 % 5 == 0
		PRINTL
		PRINTFORM %SMALL_TITLE_SPACE()%
		;最初の1回目はインデントなし
	ELSEIF LOCAL:0 == 0
		PRINTFORM
		;改行なし
	ELSE
		PRINTFORM %SMALL_TITLE_SPACE(1)%
	ENDIF

	LOCAL:2 = SHOW_LIST:(LOCAL:0)

	;3桁までは右詰め、それ以上は左詰めで表示
	IF ABL:(ARG:0):(LOCAL:2) <= 99
		PRINTFORM %ABLNAME:(LOCAL:2), 6, LEFT%:{ABL:(ARG:0):(LOCAL:2), 3}
	ELSE
		PRINTFORM %ABLNAME:(LOCAL:2), 6, LEFT%:{ABL:(ARG:0):(LOCAL:2), 4, LEFT}
	ENDIF
	;ランクづけ
	IF LOCAL:2 == GETNUM(ABL, "性知識")
		CALL PRINT_ALPHABET_RANK(ランク_性知識, ABL:(ARG:0):(LOCAL:2))
	ELSE
		CALL PRINT_ALPHABET_RANK(ランク_その他, ABL:(ARG:0):(LOCAL:2))
	ENDIF
NEXT
PRINTL

;-------------------------------------------------
;数値をスライダとして表示する関数
;ARG:0=スライダの最小値、ARG:1=スライダの最大値、ARG:2=スライダの値、ARG:3=スライダの幅、ARG:4=バーの色(正)、ARG:5=バーの色(負)
;-------------------------------------------------
@PRINT_SLIDER(ARG:0, ARG:1, ARG:2, ARG:3, ARG:4, ARG:5)
;スライダの位置を四捨五入で求める
LOCAL:2 = LIMIT((ARG:2 - ARG:0) * (ARG:3 * 2 + 1) / ((ARG:1 - ARG:0) * 2), 0, ARG:3 - 1)

FOR LOCAL:0, 0, ARG:3
	IF LOCAL:0 == LOCAL:2
		PRINTFORM %UNICODE(0x2588)%
	ELSE
		LOCAL:3 = ARG:0 + (ARG:1 - ARG:0) * (LOCAL:0 * 2 + 1) / (ARG:3 * 2)

		IF LOCAL:3 >= 0
			SETCOLOR ARG:4
		ELSE
			SETCOLOR ARG:5
		ENDIF

		FONTSTYLE 4
		IF LOCAL:0 == 0
			PRINTFORM %UNICODE(0x25E3)%
		ELSEIF LOCAL:0 == ARG:3 - 1
			PRINTFORM %UNICODE(0x25E2)%
		ELSE
			PRINTFORM
		ENDIF
		FONTSTYLE 0
	ENDIF
	RESETCOLOR
NEXT

;-------------------------------------------------
;ARG:0番のキャラの素質を表示
;-------------------------------------------------
@NEW_PRINT_TALENT(ARG:0)
#DIMS TN
#DIMS DYNAMIC _XML
#DIMS DYNAMIC _XML_TALENT
#DIMS DYNAMIC TOOLTIP
#DIMS DYNAMIC HTML
#DIM  DYNAMIC FONT_COLOR
LOCAL:1 = 0

FOR LOCAL:0, 1, 300
	IF TALENT:(ARG:0):(LOCAL:0)
		TN = %TALENTNAME:(LOCAL:0)%

		SIF TN == ""
			CONTINUE

		;非表示素質のスキップ
		IF !HAS_VAGINA(ARG:0) && (TN == "処女" || TN == "淫壷" || TN == "Ｖ敏感" || TN == "Ｖ鈍感")
			CONTINUE
		ELSEIF TN == "童貞" || TN == "ペニスサイズ"
			CONTINUE
		ELSEIF TN == "バストサイズ"
			CONTINUE
		ELSEIF TN == "処女" || TN == "アナル処女" || TN == "キス未経験"　|| TN == "童貞"
			CONTINUE
		ELSEIF TN == "恋慕" || TN == "親愛" || TN == "服従" || TN == "隷属" || TN == "恋人" || TN == "烙印" || TN == "主人" || TN == "所有者"
			CONTINUE
		ENDIF

		IF (TN == "正妻" || TN == "妾") && IS_HUSBAND(ARG:0)
			TN = 夫
		ELSEIF TN == "処女" && TALENT:(ARG:0):(LOCAL:0) == 2
			TN = 無自覚非処女
		ELSEIF TN == "童貞" && TALENT:(ARG:0):(LOCAL:0) == 2
			TN = 無自覚非童貞
		ENDIF

		;改行判定
		LOCAL:3 = STRLENS(TN) + 3
		LOCAL:1 += LOCAL:3
		IF LOCAL:1 >= 75
			LOCAL:1 = LOCAL:3
			;PRINTL
			;PRINTFORM %SMALL_TITLE_SPACE()%
			HTML += @"\n%TOSTR_SPACE(8)%"
		ENDIF

		IF XML_GET(XMLID_TALENT, @"//defname[@id='%TOSTR(LOCAL:0)%']/tooltip", TOOLTIP, 1)

			XML_GET XMLID_TALENT, @"//defname[@id='%TOSTR(LOCAL:0)%']", _XML, 3
			TOOLTIP = %REPLACE_TAGGED_VALUE(TOOLTIP, _XML)%

			TOOLTIP = %REPLACE(TOOLTIP, "\\\\n", "
")%
			;行頭のタブまたはスペースを削除する
			TOOLTIP = %REPLACE(TOOLTIP, "[ |\t]+", "")%
			;DEBUGPRINTFORML TOOLTIP %TOOLTIP%
			IF XML_GET(_XML, @"//tooltip/@color", RESULTS, 1)
				IF ISNUMERIC(RESULTS)
					FONT_COLOR = TOINT(RESULTS)
				ELSE
					FONT_COLOR = GETVAR(RESULTS)
				ENDIF
			ELSE
				FONT_COLOR = カラー_素質_通常
			ENDIF
			HTML += @"<nonbutton title = '%TOOLTIP%'><%TN%></nonbutton>"
		ELSE
			HTML += @"<%TN%>"
		ENDIF
	ENDIF
NEXT
HTML_PRINT HTML, 1
PRINTL

;-------------------------------------------------
;ARG:0番の陥落・特殊勢力陥落・デイリー陥落素質を一覧表示
;-------------------------------------------------
@NEW_PRINT_SPECIAL_TALENT(ARG:0)
#DIM 表示
#DIMS TN
#DIM 表示素質 = GETNUM(TALENT, "恋慕"), GETNUM(TALENT, "親愛"), GETNUM(TALENT, "服従"), GETNUM(TALENT, "隷属"), GETNUM(TALENT, "恋人"), GETNUM(TALENT, "烙印"), GETNUM(TALENT, "主人"), GETNUM(TALENT, "所有者")
#DIMS DYNAMIC PRINT_ARGS
LOCAL:1 = 0
表示 = 0
FOR LOCAL:0, 0, VARSIZE("表示素質")
	IF TALENT:(ARG:0):(表示素質:LOCAL)
		TN = %TALENTNAME:(表示素質:LOCAL)%
		;改行判定
		LOCAL:3 = STRLENS(TN) + 3
		LOCAL:1 += LOCAL:3
		IF LOCAL:1 >= 95
			LOCAL:1 = LOCAL:3
			PRINT_ARGS += "
　　"
			; PRINTFORM %SMALL_TITLE_SPACE()%
		ENDIF
		PRINT_ARGS += @"<%TN%> "
		表示 = 1
	ENDIF
NEXT
SIF !表示
	PRINT_ARGS += "なし"
RESULTS = %PRINT_ARGS%
RETURN

@NEW_PRINT_SEX_TALENT(ARG:0)
#DIM 表示
#DIMS TN
#DIMS DYNAMIC PRINT_ARGS
LOCAL:1 = 0
表示 = 0
FOR LOCAL:0, 0, VARSIZE("SEX_TALENT_NAME")
	IF GETBIT(TALENT:(ARG:0):淫乱系, LOCAL) && SEX_TALENT_NAME:(LOCAL:0) != ""
		TN = %SEX_TALENT_NAME:(LOCAL:0)%
		;改行判定
		LOCAL:3 = STRLENS(TN) + 3
		LOCAL:1 += LOCAL:3
		IF LOCAL:1 >= 60
			LOCAL:1 = LOCAL:3
			PRINT_ARGS += "
　　"
			; PRINTFORM %SMALL_TITLE_SPACE()%
		ENDIF
		PRINT_ARGS += @"<%TN%> "
		表示 = 1
	ENDIF
NEXT
SIF !表示
	PRINT_ARGS += "なし"
RESULTS = %PRINT_ARGS%
RETURN

@NEW_PRINT_DAILY_TALENT(ARG:0)
#DIM 表示
#DIMS TN
LOCAL:1 = 0
表示 = 0
FOR LOCAL:0, 0, VARSIZE("DAILY_TALENT_NAME")
	IF GETBIT(TALENT:(ARG:0):デイリー系, LOCAL) && DAILY_TALENT_NAME:LOCAL != ""
		TN = %DAILY_TALENT_NAME:(LOCAL:0)%
		;改行判定
		LOCAL:3 = STRLENS(TN) + 3
		LOCAL:1 += LOCAL:3
		IF LOCAL:1 >= 60
			LOCAL:1 = LOCAL:3
			PRINTL
			PRINTFORM %SMALL_TITLE_SPACE()%
		ENDIF
		PRINTFORM <%TN%>
		表示 = 1
	ENDIF
NEXT
SIF !表示
	PRINTFORM なし
PRINTL

@NEW_PRINT_FALLEN_TALENT(ARG:0)
#DIM 表示
#DIMS TN
LOCAL:1 = 0
表示 = 0
FOR LOCAL:0, 0, MAX_SP_COUNTRY
	IF GETBIT(TALENT:(ARG:0):特殊勢力陥落系, LOCAL) && SP_FALLEN_TALENT_NAME:(LOCAL:0) != ""
		TN = %SP_FALLEN_TALENT_NAME:(LOCAL:0)%
		;改行判定
		LOCAL:3 = STRLENS(TN) + 3
		LOCAL:1 += LOCAL:3
		IF LOCAL:1 >= 95
			LOCAL:1 = LOCAL:3
			PRINTL
			PRINTFORM %SMALL_TITLE_SPACE()%
		ENDIF
		PRINTFORM <%TN%>
		表示 = 1
	ENDIF
NEXT
SIF !表示
	PRINTFORM なし
PRINTL

@NEW_PRINT_SEXUAL_PREFERENCE_EXP(ARG:0)
#DIM 表示
#DIMS TN
#DIMS DYNAMIC PRINT_ARGS
LOCAL:1 = 0
表示 = 0
FOR LOCAL:0, 0, VARSIZE("SEXUAL_PREFERENCE_EXP")
	IF GETBIT(SEXUAL_PREFERENCE:(ARG:0):0, LOCAL)
		TN = %SEXUAL_PREFERENCE_STR:(LOCAL:0)%
		;改行判定
		LOCAL:3 = STRLENS(TN) + 3
		LOCAL:1 += LOCAL:3
		IF LOCAL:1 >= 65
			LOCAL:1 = LOCAL:3
			PRINT_ARGS += "
　　"
		ENDIF
		PRINT_ARGS += @"<%TN%> "
		表示 = 1
	ENDIF
NEXT
SIF !表示
	PRINT_ARGS += "なし"
RESULTS = %PRINT_ARGS%
RETURN

;-------------------------------------------------
;ARG:0番の今回の調教での射精・射精され・絶頂回数を表示
;-------------------------------------------------
@NEW_PRINT_ORGASM(対象)
#DIM 対象
#DIM 部位
#DIM 表示フラグ
表示フラグ = 0

FOR 部位, 0, CUM_SLOT_NUM
	SIF CUM_GET_AMOUNT:対象:部位 <= 0
		CONTINUE
	IF 表示フラグ == 0
		PRINTFORM 今回受け止めた精液:
		表示フラグ = 1
	ENDIF
	SIF GROUPMATCH(部位, 射精部位_膣内, 射精部位_アナル)
		SETCOLOR カラー_ピンク
	PRINTFORM %CUM_SLOT_NAME:部位, 7, RIGHT%:%TOSTR(CUM_GET_AMOUNT:対象:部位) + "ml(" + TOSTR(CUM_GET_COUNT:対象:部位) + "発)", 11, LEFT%
	RESETCOLOR
NEXT
IF 表示フラグ
	PRINTL
	PRINTFORM %SMALL_TITLE_SPACE()%
	表示フラグ = 0
ENDIF

FOR 部位, 0, CUM_SLOT_NUM
	SIF CUM_TO_AMOUNT:対象:部位 <= 0
		CONTINUE
	IF 表示フラグ == 0
		PRINTFORM 今回解き放った精液:
		表示フラグ = 1
	ENDIF

	SIF GROUPMATCH(部位, 射精部位_膣内, 射精部位_アナル)
		SETCOLOR カラー_ピンク
	PRINTFORM %CUM_SLOT_NAME:部位, 7, RIGHT%:%TOSTR(CUM_TO_AMOUNT:対象:部位) + "ml(" + TOSTR(CUM_TO_COUNT:対象:部位) + "発)", 11, LEFT%
	RESETCOLOR
NEXT
IF 表示フラグ
	PRINTL
	PRINTFORM %SMALL_TITLE_SPACE()%
	表示フラグ = 0
ENDIF

FOR 部位, 0, VARSIZE("EX")
	SIF EX:対象:部位 <= 0
		CONTINUE
	IF 表示フラグ == 0
		PRINTFORM     今回の絶頂強度:
		表示フラグ = 1
	ENDIF
	PRINTFORM %EXNAME:部位, 7, RIGHT%:{EX:対象:部位, 4, LEFT}
NEXT
PRINTL

;-------------------------------------------------
;数値表示変更
;-------------------------------------------------
@VALUE_FORM(ARG, ARGS)
VARSET LOCAL, 0
VARSET LOCALS, ""

IF ARGS == "珠"
	IF ARG <= 9999999
		RESULTS = {ARG}
		RETURN
	ENDIF
ELSEIF ARGS == "経験"
	IF ARG <= 999999
		RESULTS = {ARG}
		RETURN
	ENDIF
ELSE
	IF ARG <= 99999999
		RESULTS = {ARG}
		RETURN
	ENDIF
ENDIF

LOCAL:0 = 10000000000000000
LOCAL:1 = 1000000000000
LOCAL:2 = 100000000
LOCAL:3 = 10000
LOCAL:4 = 1
LOCALS:0 = 京
LOCALS:1 = 兆
LOCALS:2 = 億
LOCALS:3 = 万

FOR LOCAL:98, 0, 4
	IF ARG >= LOCAL:(LOCAL:98)
		LOCAL:99 = LOCAL:98
		BREAK
	ENDIF
NEXT

LOCAL:10 = ARG / LOCAL:(LOCAL:99)
LOCAL:11 = (ARG % LOCAL:(LOCAL:99)) / LOCAL:(LOCAL:99 + 1)

IF ARGS == "珠" || ARGS == "経験"
	RESULTS = {LOCAL:10}%LOCALS:(LOCAL:99)%
ELSE
	RESULTS = {LOCAL:10}%LOCALS:(LOCAL:99)%{LOCAL:11}%LOCALS:(LOCAL:99 + 1)%
ENDIF

;-------------------------------------------------
;ARG:0番のキャラの能力成長状況を詳細表示
;-------------------------------------------------
@SHOW_ABL_DETAIL(ARG:0)
;表示するABLの並び順リスト(10ごとに改行)
#DIM SHOW_LIST, 100

VARSET SHOW_LIST, -1

SHOW_LIST:0 = 50
SHOW_LIST:1 = 51
SHOW_LIST:2 = 52
SHOW_LIST:3 = 53
SHOW_LIST:4 = 54
SHOW_LIST:5 = 55
SHOW_LIST:6 = 60
SHOW_LIST:7 = 61
SHOW_LIST:8 = 62
SHOW_LIST:9 = 63
SHOW_LIST:10 = 0
SHOW_LIST:11 = 1
SHOW_LIST:12 = 2
SHOW_LIST:13 = 3
SHOW_LIST:14 = 4
SHOW_LIST:15 = 5
SHOW_LIST:20 = 12
SHOW_LIST:21 = 13
SHOW_LIST:22 = 20
SHOW_LIST:23 = 21
SHOW_LIST:24 = 22
SHOW_LIST:25 = 23
SHOW_LIST:30 = 24
SHOW_LIST:31 = 25
SHOW_LIST:32 = 26
SHOW_LIST:33 = 27
SHOW_LIST:34 = 28
SHOW_LIST:35 = 29
SHOW_LIST:40 = 30
SHOW_LIST:41 = 31
SHOW_LIST:42 = 33
SHOW_LIST:43 = 34
SHOW_LIST:44 = 35
SHOW_LIST:45 = 32

PRINTFORML ◆%ANAME(ARG:0)%の能力成長状況◆
LOCAL:1 = 0
FOR LOCAL:0, 0, 100
	;対応するABLがなければスキップ
	IF SHOW_LIST:(LOCAL:0) >= 0
		;改行判定
		IF LOCAL:1 > 0 && LOCAL:1 % 2 == 0
			PRINTL
		ENDIF
		LOCAL:1 ++

		LOCAL:2 = SHOW_LIST:(LOCAL:0)

		PRINTFORM %ABLNAME:(LOCAL:2), 8%:{ABL:(ARG:0):(LOCAL:2), 4}

		RESULT = 0
		;必要な経験値の計算
		TRYCALLFORM CALC_ABLUP_EXP{LOCAL:2}(ARG:0)
		IF RESULT >= 1 && LOCAL:2 < 9999
			LOCAL:5 = RESULT
			RESULTS =
			;能力に対応する経験値の名称を取得
			TRYCALLFORM ABLUP_EXPNAME{LOCAL:2}
			LOCAL:6 = GETNUM(EXP, RESULTS)
			IF LOCAL:6 >= 0
				LOCAL:7 = EXP:(ARG:0):(LOCAL:6) * 20 / LOCAL:5
				IF LOCAL:7 >= 17
					LOCAL:8 = 0x00FF00
				ELSEIF LOCAL:7 >= 12
					LOCAL:8 = カラー_注意
				ELSE
					LOCAL:8 = 0xC0C0C0
				ENDIF
				FONTSTYLE 4
				FOR LOCAL:4, 0, 20
					IF LOCAL:4 < LOCAL:7
						SETCOLOR LOCAL:8
					ELSE
						SETCOLOR 0x404040
					ENDIF
					PRINTFORM
				NEXT
				FONTSTYLE 0
				RESETCOLOR
			ENDIF
		ELSE
			SETCOLOR 0x8080D0
			FONTSTYLE 4
			PRINT
			FONTSTYLE 0
			PRINT  最大
			FONTSTYLE 4
			PRINT
			FONTSTYLE 0
			RESETCOLOR
		ENDIF
		PRINT
	ENDIF
NEXT
PRINTL

@SHOW_INFO_INIT()
;コンテナの破棄と初期化
CALL UIC_DISPOSE()
SHOW_RELATION_CURRENT_CHARA_ID = -1


code:
#DIM  SHOW_RELATION_CURRENT_CHARA_ID
#DIMS SHOW_INFO_RELATION_EVENT
#DIM  SHOW_RELATION_DEBUG_MODE
#DIM  SHOW_INFO_RELATION_CURRENT_PAGE
#DIM  SHOW_INFO_RELATION_PAGE_NUM

#DIM  TOGGLE_ALLOW_LOVER_ALL_BUTTON
#DIM  TOGGLE_ALLOW_SUBORDINATE_ALL_BUTTON
#DIM  TOGGLE_ALLOW_DOMINANCE_ALL_BUTTON
#DIM  TOGGLE_ALLOW_UFUFU_ALL_BUTTON

#DIM CONST 能力表示モード_性癖設定 = 1
#DIM CONST 能力表示モード_能力成長情報 = 2
#DIM CONST 能力表示モード_記録 = 3
#DIM CONST 能力表示モード_スキル = 4
#DIM CONST 能力表示モード_衣装 = 5
#DIM CONST 能力表示モード_説明 = 6
#DIM CONST 能力表示モード_デイリー = 7
#DIM CONST 能力表示モード_関係性 = 11
#DIM CONST 能力表示モード_ポートレイト = 12
#DIM CONST 能力表示モード_ステータス = 13
#DIM CONST 能力表示モード_口上設定 = 14


code:
;-------------------------------------------------
; 行動一覧画面
;-------------------------------------------------
@SHOW_INFO_ACTION()
#DIM CHARA_ID
#DIM CONST WINDOW_ID = 0
#DIM DYNAMIC LINE_NUM
#DIM DYNAMIC ROOM_IDX

PRINTL
CALL SHOW_INFO_ACTION_TABLE
LINE_NUM = LINECOUNT
;入力受付
$INPUT_LOOP
VARSET RESULTS
INPUTS
CLEARLINE 1

IF DIC_CONTAINSKEY(RESULTS, "EXIT")
    CALL UIC_DISPOSE()
    SHOW_INFO_ACTION_CURRENT_PAGE = 0
    RETURN -1
ELSEIF DIC_CONTAINSKEY(RESULTS, "PREV_PAGE")
    SHOW_INFO_ACTION_CURRENT_PAGE = SHOW_INFO_ACTION_CURRENT_PAGE > 0 ? SHOW_INFO_ACTION_CURRENT_PAGE - 1 # 0
ELSEIF DIC_CONTAINSKEY(RESULTS, "NEXT_PAGE") && SHOW_INFO_RELATION_CURRENT_PAGE < SHOW_INFO_RELATION_PAGE_NUM
    SHOW_INFO_ACTION_CURRENT_PAGE++
ENDIF

GOTO INPUT_LOOP

;-------------------------------------------------
; 行動一覧画面の描画
;-------------------------------------------------
@SHOW_INFO_ACTION_TABLE
#DIM CHARA_ID
VARI DID, 1000
VARI RELATION_NUM
VARI I
VARI J
VARS TEXT
VARS ROWS, 1000
VARI MAX_ROW = UI_MAXHEIGHT - 4 ;ヘッダー、フッター表示行分減らす
VARI R_CNT
VARS COLUMNS, 9

VARI DID, 1000
VARI RELATION_NUM
DT_SELECT "CHARA_RELATION", @"REL_FROM_ID = {CHARA_ID}", "REL_FROM_ID ASC", DID
RELATION_NUM = RESULT

;ページ数算出
SHOW_INFO_ACTION_PAGE_NUM = RELATION_NUM / MAX_ROW - 1

;UIコンテナの作成
VARI UIC_ID
VARI WIDTH  = UI_MAXWIDTH * 100
VARI HEIGHT = UI_MAXHEIGHT * 100
CALL UIC_INIT()

UIC_ID = RESULT

CALL UIC_ADD(UIC_ID, "UIC_PARENT", "", @"[BORDER:0PX][SIZE:{WIDTH},{HEIGHT}]")
CALL UIC_SET_LAYOUT(UIC_ID, "UIC_PARENT", "[TARGET:LINE_LEFT][ANCHOR:LEFT_TOP][TARGET_PIVOT:LEFT_TOP][PADDING:50,0]")
CALL UIC_ADD(UIC_ID, "UIC_TITLE", "", @"[BORDER:1PX][SIZE:{WIDTH},200][PADDING:25][COLOR:%C2H(カラー_ダークグレー)%]")
CALL UIC_SET_LAYOUT(UIC_ID, "UIC_TITLE", "[TARGET:UIC_PARENT][ANCHOR:TOP][TARGET_PIVOT:TOP]")
CALL UIC_ADD(UIC_ID, "UIC_MAIN", "", @"[BORDER:1PX][SIZE:{WIDTH},{HEIGHT - 200}][PADDING:25]")
CALL UIC_SET_LAYOUT(UIC_ID, "UIC_MAIN", "[TARGET:UIC_TITLE][ANCHOR:TOP][TARGET_PIVOT:BOTTOM]")
CALL UIC_ADD(UIC_ID, "UIC_FOOTER", "", @"[BORDER:0PX][SIZE:{WIDTH},150][PADDING:0]")
CALL UIC_SET_LAYOUT(UIC_ID, "UIC_FOOTER", "[TARGET:UIC_MAIN][ANCHOR:BOTTOM][TARGET_PIVOT:BOTTOM]")
CALL UIC_ADD(UIC_ID, "UIC_FOOTER_LEFT", CONV_TAG2H(@"@B:[EXIT:1]@[戻る]@/B@"), @"[BORDER:0PX][SIZE:{WIDTH},150][PADDING:0]")
CALL UIC_SET_LAYOUT(UIC_ID, "UIC_FOOTER_LEFT", "[TARGET:UIC_MAIN][ANCHOR:BOTTOM][TARGET_PIVOT:BOTTOM]")

;ヘッダー作成
I = 0
COLUMNS:(I++) = %TAG_PRINT_SHAPE("種別", 8, 1, 2)%
COLUMNS:(I++) = %TAG_PRINT_SHAPE("名前", 18, 1, 2)%
COLUMNS:(I++) = %TAG_PRINT_SHAPE("エリア", 8, 1, 2)%
COLUMNS:(I++) = %TAG_PRINT_SHAPE("利用設備", 18, 1, 2)%
COLUMNS:(I++) = %TAG_PRINT_SHAPE("行動", 8, 1, 2)%
COLUMNS:(I++) = %TAG_PRINT_SHAPE("移動先エリア", 12, 1, 2)%
COLUMNS:(I++) = %TAG_PRINT_SHAPE("状態", 8, 1, 2)%
COLUMNS:(I++) = %TAG_PRINT_SHAPE("予定", 8, 1, 2)%
COLUMNS:(I++) = %TAG_PRINT_SHAPE("来訪目的", 8, 1, 2)%

FOR I, 0, VARSIZE("COLUMNS")
    ROWS:(R_CNT) += @"%CONV_TAG2H(COLUMNS:I)%" + "｜"
NEXT
R_CNT++
ROWS:(R_CNT) = %DRAW_LINEH(UI_MAXWIDTH - 1)%
R_CNT++

;レコードデータ取得
VARI CHARA_IDX
VARI TARGET_ID
VARS MOVELIST
VARS MOVELIST_LAST
VARS 種別
VARS 名前
VARS 部屋
VARS 設備
VARS 行動
VARS 移動先エリア
VARS 状態
VARS 予定
VARS 来訪目的
VARS TOOLTIP
FOR CHARA_IDX, 0, VARSIZE("_DIC_HO_CHARALIST")
    SIF _DIC_HO_CHARALIST:CHARA_IDX == "-1"
        BREAK
    SIF _DIC_HO_CHARALIST:CHARA_IDX == "DELETED"
        CONTINUE

    TARGET_ID = DIC_GETINT(_DIC_HO_CHARALIST:CHARA_IDX, "CHARA_ID")
    ;CHARA_IDの状態を保持する連想配列を更新
    CALL C_COND_SET_INFO_TO_MAP(TARGET_ID, "SHOW_STATUS_TOP")

    名前 = %ANAME(TARGET_ID)%
    部屋 '= @"%C_COND_MAP_GETS(TARGET_ID,"エリア名")%"
    SIF 部屋 == ""
        部屋 '= "不明"

    設備 '= @"%C_COND_MAP_GETS(TARGET_ID,"設備名")%"
    SIF 設備 == ""
        設備 '= "-"

    行動 '= @"%DIC_GET(_DIC_HO_CHARALIST:CHARA_IDX, "ACTION")%"
    SIF 行動 == ""
        行動 '= "待機"

    ;移動先エリア
    MOVELIST '= @"%DIC_GET(_DIC_HO_CHARALIST:CHARA_IDX, "MOVELIST")%"
    IF MOVELIST == ""
        移動先エリア '= "-"
    ELSE
        MOVELIST_LAST = %LIST_GET(MOVELIST, LIST_COUNT(MOVELIST)-1)%
        CALL HO_GET_ROOM_NAME(TOINT(MOVELIST_LAST))
        移動先エリア = %RESULTS%
    ENDIF

    ;状態
    IF IS_TIRED(TARGET_ID)
        状態 '= "疲労"
    ELSE
        状態 '= "-"
    ENDIF

    ;来訪目的
    来訪目的 '= @"%DIC_GET(_DIC_HO_CHARALIST:CHARA_IDX, "GUEST_TYPE")%"
    IF 来訪目的 == ""
        来訪目的 '= "-"
        種別 '= "住人"
        CALL HO_GET_TASK_SCH(TARGET_ID)
        予定 = %RESULTS%
    ELSE
        種別 '= "来客"
        予定 '= "-"
    ENDIF

    ;各セルの表示
    I = 0
    COLUMNS:(I++) = %TAG_PRINT_SHAPE(種別, 8, 1, 2)%
    COLUMNS:(I++) = %TAG_PRINT_SHAPE(名前, 18, 1, 0)%
    COLUMNS:(I++) = %TAG_PRINT_SHAPE(部屋, 8, 1, 2)%
    COLUMNS:(I++) = %TAG_PRINT_SHAPE(設備, 18, 1, 2)%
    COLUMNS:(I++) = %TAG_PRINT_SHAPE(行動, 8, 1, 2)%
    COLUMNS:(I++) = %TAG_PRINT_SHAPE(移動先エリア, 12, 1, 2)%
    COLUMNS:(I++) = %TAG_PRINT_SHAPE(状態, 8, 1, 2)%
    COLUMNS:(I++) = %TAG_PRINT_SHAPE(予定, 8, 1, 2)%
    COLUMNS:(I++) = %TAG_PRINT_SHAPE(来訪目的, 8, 1, 2)%

    ;行を作成
    FOR I, 0, VARSIZE("COLUMNS")
        ;ゲストは緑文字にする
        IF 種別 == "来客"
            ROWS:(R_CNT) += @""
            ROWS:(R_CNT) += @"%CONV_TAG2H(COLUMNS:I)%" + "｜"
            ROWS:(R_CNT) += @""
        ELSE
            ROWS:(R_CNT) += @"%CONV_TAG2H(COLUMNS:I)%" + "｜"
        ENDIF
    NEXT
    R_CNT++
NEXT

FOR I, 0, R_CNT
    TEXT += @"%ROWS:I%" + "
"
NEXT
CALL UIC_SET_TEXT(UIC_ID, "UIC_MAIN", TEXT)

;ページコントロール用の領域
TEXT '= ""
TEXT += @"%SHOW_INFO_RELATION_CURRENT_PAGE > 0 ? "@B:[PREV_PAGE:1]@＜@/B@" # @"@C:{カラー_選択不可}@＜@/C@"%"
TEXT += @" {SHOW_INFO_RELATION_CURRENT_PAGE + 1} "
TEXT += @"%SHOW_INFO_RELATION_CURRENT_PAGE < SHOW_INFO_RELATION_PAGE_NUM ? "@B:[NEXT_PAGE:1]@＞@/B@" # @"@C:{カラー_選択不可}@＞@/C@"%"
TEXT = %CONV_TAG2H(TAG_PRINT_SHAPE(TEXT, UI_MAXWIDTH * 2, 1, 2))%
CALL UIC_SET_TEXT(UIC_ID, "UIC_FOOTER", TEXT)

;表示部
CALL UIC_SET_TEXT(UIC_ID, "UIC_TITLE", CONV_TAG2H(@"@S:1@◆　キャラの行動一覧@/S@"))
CALL UIC_SHOW(UIC_ID)

;表示領域分改行
CALL NEWLINE(UI_MAXHEIGHT)


code:
;-------------------------------------------------
;エロステータス表示
;-------------------------------------------------
@SHOW_INFO_ERO_DESCRIPTION(対象)
#DIM 対象
CALL SINGLE_DRAWLINE
PRINTFORML 肉体
CALL COLOR_LINE

CALL SHOW_INFO_ERO_DESCRIPTION_BODY(対象)

CALL SINGLE_DRAWLINE
PRINTFORML 感覚
CALL COLOR_LINE

CALL SHOW_INFO_ERO_DESCRIPTION_SENSE(対象)

CALL SINGLE_DRAWLINE
PRINTFORML 性的嗜好
CALL COLOR_LINE

CALL SHOW_INFO_ERO_DESCRIPTION_FETISH(対象)

CALL SINGLE_DRAWLINE
PRINTFORML 陥落
CALL COLOR_LINE

CALL SHOW_INFO_ERO_DESCRIPTION_FALLEN(対象)

CALL SINGLE_DRAWLINE
PRINTFORML 特殊な陥落
CALL COLOR_LINE

CALL SHOW_INFO_ERO_DESCRIPTION_SP_FALLEN(対象)

CALL SINGLE_DRAWLINE
PRINTFORML キャラクター説明
PRINTFORML 職業：%JOB_NAME:(TALENT:対象:職業)%
CALL COLOR_LINE
TRYCCALLFORM SHOW_CHARA_EXPLANATION_{NO:(対象)}
	CALL SINGLE_EMPTY_LINE()
CATCH
	PRINTFORML キャラクター説明なし
	CALL SINGLE_EMPTY_LINE()
ENDCATCH

;-------------------------------------------------
;エロステータス表示　肉体
;-------------------------------------------------
@SHOW_INFO_ERO_DESCRIPTION_BODY(対象)
#DIM 対象
#DIMS 性転換文

IF TALENT:対象:キス未経験
	PRINTFORML 口づけを交わしたことがない
ELSE
	CALL COLOR_PRINT(SEXUAL_EXPERIENCE:対象:初体験_キス == "不明" ? "誰か" # SEXUAL_EXPERIENCE:対象:初体験_キス, カラー_ピンク, "に", GETDEFCOLOR())
	SIF SEXUAL_EXPERIENCE_SITUATION:対象:初体験_キス != ""
		CALL COLOR_PRINT(SEXUAL_EXPERIENCE_SITUATION:対象:初体験_キス, カラー_ピンク, "で", GETDEFCOLOR())
	PRINTFORML 唇の初めてを捧げた
	IF SEXUAL_LAST_EXPERIENCE:対象:初体験_キス != ""
		CALL COLOR_PRINT("直近では", GETDEFCOLOR(), SEXUAL_LAST_EXPERIENCE:対象:初体験_キス == "不明" ? "誰か" # SEXUAL_LAST_EXPERIENCE:対象:初体験_キス, カラー_ピンク, "に", GETDEFCOLOR())
		SIF SEXUAL_LAST_EXPERIENCE_SITUATION:対象:初体験_キス != ""
			CALL COLOR_PRINT(SEXUAL_LAST_EXPERIENCE_SITUATION:対象:初体験_キス, カラー_ピンク, "で", GETDEFCOLOR())
		PRINTFORML 口づけている
	ENDIF
ENDIF

IF HAS_VAGINA(対象)
	IF TALENT:対象:処女
		PRINTFORML 膣穴は純潔を保っている
	ELSE
		CALL COLOR_PRINT(SEXUAL_EXPERIENCE:対象:初体験_処女 == "不明" ? "誰か" # SEXUAL_EXPERIENCE:対象:初体験_処女, カラー_ピンク, "に", GETDEFCOLOR())
		SIF SEXUAL_EXPERIENCE_SITUATION:対象:初体験_処女 != ""
			CALL COLOR_PRINT(SEXUAL_EXPERIENCE_SITUATION:対象:初体験_処女, カラー_ピンク, "で", GETDEFCOLOR())
		PRINTFORML 純潔を捧げた
		IF SEXUAL_LAST_EXPERIENCE:対象:初体験_処女 != ""
			CALL COLOR_PRINT("直近では", GETDEFCOLOR(), SEXUAL_LAST_EXPERIENCE:対象:初体験_処女 == "不明" ? "誰か" # SEXUAL_LAST_EXPERIENCE:対象:初体験_処女, カラー_ピンク, "と", GETDEFCOLOR())
			SIF SEXUAL_LAST_EXPERIENCE_SITUATION:対象:初体験_処女 != ""
				CALL COLOR_PRINT(SEXUAL_LAST_EXPERIENCE_SITUATION:対象:初体験_処女, カラー_ピンク, "で", GETDEFCOLOR())
			PRINTFORML 交わっている
		ENDIF
	ENDIF
ENDIF

IF TALENT:対象:アナル処女
	PRINTFORML 尻穴は純潔を保っている
ELSE
	CALL COLOR_PRINT(SEXUAL_EXPERIENCE:対象:初体験_アナル処女 == "不明" ? "誰か" # SEXUAL_EXPERIENCE:対象:初体験_アナル処女, カラー_ピンク, "に", GETDEFCOLOR())
	SIF SEXUAL_EXPERIENCE_SITUATION:対象:初体験_アナル処女 != ""
		CALL COLOR_PRINT(SEXUAL_EXPERIENCE_SITUATION:対象:初体験_アナル処女, カラー_ピンク, "で", GETDEFCOLOR())
	PRINTFORML 尻穴での初体験を捧げた
	IF SEXUAL_LAST_EXPERIENCE:対象:初体験_アナル処女 != ""
		CALL COLOR_PRINT("直近では", GETDEFCOLOR(), SEXUAL_LAST_EXPERIENCE:対象:初体験_アナル処女 == "不明" ? "誰か" # SEXUAL_LAST_EXPERIENCE:対象:初体験_アナル処女, カラー_ピンク, "と", GETDEFCOLOR())
		SIF SEXUAL_LAST_EXPERIENCE_SITUATION:対象:初体験_アナル処女 != ""
			CALL COLOR_PRINT(SEXUAL_LAST_EXPERIENCE_SITUATION:対象:初体験_アナル処女, カラー_ピンク, "で", GETDEFCOLOR())
		PRINTFORML 交わっている
	ENDIF
ENDIF

IF HAS_PENIS(対象)
	IF TALENT:対象:童貞
		PRINTFORML 未だ童貞だ
	ELSE
		CALL COLOR_PRINT(SEXUAL_EXPERIENCE:対象:初体験_童貞 == "不明" ? "誰か" # SEXUAL_EXPERIENCE:対象:初体験_童貞, カラー_ピンク, "に", GETDEFCOLOR())
		SIF SEXUAL_EXPERIENCE_SITUATION:対象:初体験_童貞 != ""
			CALL COLOR_PRINT(SEXUAL_EXPERIENCE_SITUATION:対象:初体験_童貞, カラー_ピンク, "で", GETDEFCOLOR())
		PRINTFORML 童貞を捧げた
		IF SEXUAL_LAST_EXPERIENCE:対象:初体験_童貞 != ""
			CALL COLOR_PRINT("直近では", GETDEFCOLOR(), SEXUAL_LAST_EXPERIENCE:対象:初体験_童貞 == "不明" ? "誰か" # SEXUAL_LAST_EXPERIENCE:対象:初体験_童貞, カラー_ピンク, "と", GETDEFCOLOR())
			SIF SEXUAL_LAST_EXPERIENCE_SITUATION:対象:初体験_童貞 != ""
				CALL COLOR_PRINT(SEXUAL_LAST_EXPERIENCE_SITUATION:対象:初体験_童貞, カラー_ピンク, "で", GETDEFCOLOR())
			PRINTFORML 交わっている
		ENDIF
	ENDIF
ENDIF

IF IS_FEMALE(対象)
	SELECTCASE GET_BUSTSIZE(対象)
		CASE -2
			PRINTFORML 胸にはふくらみがなく、まったくの平らだ
		CASE -1
			PRINTFORML 乳房は小ぶりながらも整った形をしている
		CASE 0
			PRINTFORML 乳房はちょうどいい大きさの魅力的な形をしている
		CASE 1
			PRINTFORML 豊かで柔らかそうな乳房が目をひく
		CASE 2
			PRINTFORML はちきれんほどたわわに実った乳房が視線をくぎ付けにする
		CASE IS > 2
			PRINTFORML 常軌を逸した大きさの乳房に否が応にも視線が吸い込まれる…
	ENDSELECT
	SELECTCASE GET_HIPSIZE(対象)
		CASE -2
			PRINTFORML 尻の肉付きはかなり薄く、まったくの平らだ
		CASE -1
			PRINTFORML 尻は小ぶりながらも整った形をしている
		CASE 0
			PRINTFORML 尻はちょうどいい大きさの魅力的な形をしている
		CASE 1
			PRINTFORML 豊かで弾力のある尻が目をひく
		CASE 2
			PRINTFORML はちきれんほど肉の詰まった尻が視線をくぎ付けにする
	ENDSELECT
	SIF TALENT:対象:母乳体質
		CALL COLOR_PRINTL("乳房からは母乳が分泌されている", カラー_ピンク)
	SIF TALENT:対象:美脚
		PRINTFORML すらりとした美しい脚が異性を魅了する
	SIF TALENT:対象:美尻
		PRINTFORML 尻肉は美しく、きゅっと引き締まっている
ENDIF

IF TALENT:対象:妊娠
	CALL ICPRINT(@"<\@ GET_SPERM_NAME(CFLAG:対象:子の父親) == "不明" ? 父親不明 # %GET_SPERM_NAME(CFLAG:(対象):子の父親)% \@>の子を宿している", "L", カラー_ピンク)
	SIF CFLAG:対象:行動不能状態 == 行動不能_臨月
		CALL COLOR_PRINTL("臨月を迎えた腹は大きく膨れている", カラー_ピンク)
ENDIF

FOR LOCAL, 0, 2
	IF LOCAL == 0
		SIF !HAS_VAGINA(対象)
			CONTINUE
		LOCAL:1 = TALENT:対象:Ｖ締まり
		LOCALS = 女穴
	ELSE
		LOCAL:1 = TALENT:対象:Ａ締まり
		LOCALS = 尻穴
	ENDIF
	SELECTCASE LOCAL:1
		CASE IS >= 締まり_ぎちぎち
			PRINTFORML %LOCALS%は小指すら拒むほど狭い
		CASE IS >= 締まり_きつきつ
			PRINTFORML %LOCALS%は小指でもきゅうと締め付ける狭さだ
		CASE IS >= 締まり_きゅっきゅっ
			PRINTFORML %LOCALS%は指をきゅうきゅうと締め付けてくる
		CASE IS >= 締まり_名器
			PRINTFORML %LOCALS%は咥えたものに快感を与える名器だ
		CASE IS >= 締まり_普通
			PRINTFORML %LOCALS%の締まりは普通といったところだ
		CASE IS >= 締まり_ゆるめ
			PRINTFORML %LOCALS%の締まりはゆるめだ
		CASE IS >= 締まり_ゆるゆる
			PRINTFORML %LOCALS%はずいぶん緩くなってしまっている
		CASE IS >= 締まり_ぽっかり
			PRINTFORML 使い込まれた%LOCALS%はぽっかりと開いて閉じなくなっている
		CASE IS >= 締まり_がばがば
			PRINTFORML 使い込まれすぎて、%LOCALS%は型崩れしてがばがばになっている
		CASE IS >= 締まり_崩壊
			PRINTFORML 使い込まれすぎて、%LOCALS%は元の形がわからないほど崩れてしまっている
		CASEELSE
			PRINTFORML 使い込まれすぎて、%LOCALS%は醜く黒ずみ、ぐずぐずになり、濃厚な牝臭を放っている
	ENDSELECT
NEXT

SELECTCASE TALENT:対象:陰毛現在値
	CASE 陰毛_パイパン
		PRINTFORML 陰毛は脱毛され、陰部はつるつるとしている
	CASE 陰毛_つるつる
		PRINTFORML 陰毛の生えていない陰部はつるつるとしている
	CASE 陰毛_うっすら
		PRINTFORML 股間にはうっすらと、陰毛が陰部のように生えている
	CASE 陰毛_柔毛
		PRINTFORML 陰毛は生えかけのようだ
	CASE 陰毛_ふんわり
		PRINTFORML 薄めの陰毛が陰部で草むらを形作っている
	CASE 陰毛_標準
		PRINTFORML 陰毛は平均的に生えそろっている
	CASE 陰毛_多め
		PRINTFORML 陰毛は普通よりやや多めだ
	CASE 陰毛_ふさふさ
		PRINTFORML 陰毛はふさふさと生い茂っている
	CASE 陰毛_もっさり
		PRINTFORML かなり濃い陰毛がもっさりと生い茂っている
	CASE 陰毛_剛毛
		PRINTFORML 太い陰毛が密林のように生い茂り、陰部を覆っている
	CASE 陰毛_尻毛
		PRINTFORML 手入れされていない陰毛は、生え放題で尻まで達している
	CASE 陰毛_ハート型
		CALL COLOR_PRINTL("陰毛は異性を誘うようなハート形に整えられている", カラー_ピンク)
	CASEELSE
		PRINTFORML 陰毛は平均的に生えそろっている
ENDSELECT

SELECTCASE TALENT:対象:腋毛現在値
	CASE 腋毛_脱毛済み
		PRINTFORML 腋毛は脱毛され、腋窩はつるつるとしている
	CASE 腋毛_つるつる
		PRINTFORML 腋毛の生えていない腋窩はつるつるとしている
	CASE 腋毛_手入れ済み
		PRINTFORML 腋はきちんと手入れされている
	CASE 腋毛_うっすら
		PRINTFORML 腋窩にはうっすらと、腋毛が産毛のように生えている
	CASE 腋毛_ふんわり
		PRINTFORML 薄めの腋毛が腋窩で草むらを形作っている
	CASE 腋毛_普通
		PRINTFORML 腋毛は平均的に生えそろっている
	CASE 腋毛_多め
		PRINTFORML 腋毛は普通よりやや多めだ
	CASE 腋毛_ふさふさ
		PRINTFORML 腋毛はふさふさと生い茂っている
	CASE 腋毛_もっさり
		PRINTFORML かなり濃い腋毛がもっさりと生い茂っている
	CASE 腋毛_剛毛
		PRINTFORML 濃い腋毛が密林のように生い茂り、腋窩を覆っている
	CASE 腋毛_密林
		PRINTFORML 手入れされていない腋毛は、生え放題で腋窩からはみ出している
	CASEELSE
		PRINTFORML 腋毛は平均的に生えそろっている
ENDSELECT

IF TS_IS_O(対象)
	性転換文 = 元々は
	SELECTCASE TALENT:対象:元性別
		CASE 10
			性転換文 += "普通の男性だったが、"
		CASE 13
			性転換文 += "子宮とヴァギナのある男性だったが、"
		CASE 11
			性転換文 += "普通の女性だったが、"
		CASE 12
			性転換文 += "ペニスの生えた女性だったが、"
		CASE 14
			性転換文 += "普通の男の娘だったが、"
		CASE 15
			性転換文 += "子宮とヴァギナのある男の娘だったが、"
	ENDSELECT
	IF TS_IS_O(対象, 1)
		IF TS_IS_F(対象, 1) == 1
			IF TS_LOST_V(対象)
				性転換文 += "それらを失いつつも容姿は可愛らしく変化し、普通の"
			ELSEIF TS_GET_V(対象)
				性転換文 += "可愛らしい容姿になったうえに肉体の一部は女性化して、"
			ELSE
				性転換文 += "容姿が可愛らしく変化して"
			ENDIF
		ELSEIF TS_IS_M(対象, 1) == 2
			IF TS_LOST_V(対象)
				性転換文 += "外見も肉体も男らしく変化して、普通の"
			ELSEIF TS_GET_V(対象)
				性転換文 += "男らしい容姿になったものの肉体の一部は女性化して、"
			ELSE
				性転換文 += "容姿が男らしく変化して"
			ENDIF
		ELSE
			性転換文 += "性転換して"
		ENDIF
	ELSE
		性転換文 += "肉体が変化して"
		SIF TS_LOST_P(対象) || TS_LOST_V(対象)
			性転換文 += "普通の"
	ENDIF
	SELECTCASE TALENT:対象:性別
		CASE 0
			性転換文 += "男性になった"
		CASE 3
			性転換文 += "子宮とヴァギナのある男性になった"
		CASE 1
			性転換文 += "女性になった"
		CASE 2
			性転換文 += "ペニスの生えた女性になった"
		CASE 4
			性転換文 += "男の娘になった"
		CASE 5
			性転換文 += "子宮とヴァギナのある男の娘になった"
	ENDSELECT
	PRINTFORML %性転換文%
ENDIF

SIF IS_PIERCED(対象, ピアス_乳首) || IS_PIERCED(対象, ピアス_クリトリス) || IS_PIERCED(対象, ピアス_ペニス) || IS_PIERCED(対象, ピアス_ラビア)
	CALL COLOR_PRINTL("卑猥な部位にピアスがなされている", カラー_ピンク)

SIF IS_TATTOOED(対象, タトゥー_頬) || IS_TATTOOED(対象, タトゥー_額)
	CALL COLOR_PRINTL("顔の目立つあたりにタトゥーがいれられている", カラー_ピンク)

SIF IS_TATTOOED(対象, タトゥー_胸) || IS_TATTOOED(対象, タトゥー_秘部) || IS_TATTOOED(対象, タトゥー_尻)
	CALL COLOR_PRINTL("卑猥な部位にタトゥーがいれられている", カラー_ピンク)

CALL SINGLE_EMPTY_LINE()

;-------------------------------------------------
;エロステータス表示　感覚
;-------------------------------------------------
@SHOW_INFO_ERO_DESCRIPTION_SENSE(対象)
#DIM 対象
#DIM 表示項目 = GETNUM(ABL, "Ｃ感"), GETNUM(ABL, "Ｖ感"), GETNUM(ABL, "Ａ感"), GETNUM(ABL, "Ｂ感"), GETNUM(ABL, "Ｍ感"), GETNUM(ABL, "Ｕ感")

FOR LOCAL, 0, VARSIZE("表示項目")
	TRYCALLFORM SHOW_INFO_ERO_DESCRIPTION_{表示項目:LOCAL}(対象, ABL:対象:(表示項目:LOCAL))
NEXT

CALL SINGLE_EMPTY_LINE()

;-------------------------------------------------
;エロステータス表示　性癖
;-------------------------------------------------
@SHOW_INFO_ERO_DESCRIPTION_FETISH(対象)
#DIM 対象
{
	#DIM 表示項目 =
		GETNUM(ABL, "欲望"), GETNUM(ABL, "性技"), GETNUM(ABL, "性知識"), GETNUM(ABL, "奉仕"), GETNUM(ABL, "性交"),
		GETNUM(ABL, "レズ"), GETNUM(ABL, "ＢＬ"), GETNUM(ABL, "露出"), GETNUM(ABL, "自慰"), GETNUM(ABL, "精愛"),
		GETNUM(ABL, "射精"), GETNUM(ABL, "噴乳"), GETNUM(ABL, "触手"), GETNUM(ABL, "出産"), GETNUM(ABL, "マゾ"), GETNUM(ABL, "サド")
}

FOR LOCAL, 0, VARSIZE("表示項目")
	TRYCALLFORM SHOW_INFO_ERO_DESCRIPTION_{表示項目:LOCAL}(対象, ABL:対象:(表示項目:LOCAL))
NEXT

TRYCALLFORM SHOW_INFO_SEXUAL_PREFERENCE_DESCRIPTION(対象)

CALL SINGLE_EMPTY_LINE()

;-------------------------------------------------
;エロステータス表示　陥落
;-------------------------------------------------
@SHOW_INFO_ERO_DESCRIPTION_FALLEN(対象)
#DIM 対象
IF TALENT:対象:親愛
	PRINTFORML %ANAME(MASTER)%のことをいつも想っているようだ
ELSEIF TALENT:対象:恋慕
	PRINTFORML %ANAME(MASTER)%に慕情を抱いている
ENDIF

IF TALENT:対象:隷属
	PRINTFORML %ANAME(MASTER)%に魂の底からの忠誠を誓っている
ELSEIF TALENT:対象:服従
	PRINTFORML %ANAME(MASTER)%に屈し、忠誠を誓っている
ENDIF

SIF TALENT:対象:烙印
	PRINTFORML %ANAME(MASTER)%のものだという烙印を押されている

IF TALENT:対象:所有者
	PRINTFORML %ANAME(MASTER)%を心の底から屈服させ、所有している
ELSEIF TALENT:対象:主人
	PRINTFORML %ANAME(MASTER)%を屈服させた主人である
ENDIF

IF TALENT:対象:崩壊
	CALL COLOR_PRINTL("その心は破壊され、二度と戻ることはない", カラー_警告)
ELSEIF TALENT:対象:虚ろ
	CALL COLOR_PRINTL("度を越した負担により、心に傷を負っている", カラー_注意)
ENDIF
CALL SINGLE_EMPTY_LINE()

;-------------------------------------------------
;エロステータス表示　特殊な陥落
;-------------------------------------------------
@SHOW_INFO_ERO_DESCRIPTION_SP_FALLEN(対象)
#DIM 対象
SIF GETBIT(TALENT:対象:淫乱系, 素質_淫乱_淫乱)
	CALL COLOR_PRINTL("淫らなことが大好きな淫乱だ", カラー_ピンク)
IF HAS_PENIS(対象)
	SIF GETBIT(TALENT:対象:淫乱系, 素質_淫乱_淫核)
		CALL COLOR_PRINTL("敏感な淫棒は常に快楽を求め、先端からねっとりとした涎を溢れさせている", カラー_ピンク)
ELSE
	SIF GETBIT(TALENT:対象:淫乱系, 素質_淫乱_淫核)
		CALL COLOR_PRINTL("敏感な秘核は常に快楽を求め、恥ずかしげもなくぴんと尖っている", カラー_ピンク)
ENDIF
SIF GETBIT(TALENT:対象:淫乱系, 素質_淫乱_淫壷)
	CALL COLOR_PRINTL("女穴は常に疼き、貫かれなくては落ち着いていられず、涎のように蜜を垂らしている", カラー_ピンク)
SIF GETBIT(TALENT:対象:淫乱系, 素質_淫乱_尻穴狂い)
	CALL COLOR_PRINTL("肛門は性器として作り替えられ、常に性の悦びに疼いて貪欲にヒクついている", カラー_ピンク)
SIF GETBIT(TALENT:対象:淫乱系, 素質_淫乱_淫乳)
	CALL COLOR_PRINTL("淫らに開発されきった乳房は、風が吹いただけで感じるほど敏感になっている", カラー_ピンク)
SIF GETBIT(TALENT:対象:淫乱系, 素質_淫乱_蕩唇)
	CALL COLOR_PRINTL("性感帯として生まれ変わった唇は、いつでも接吻や口淫の快感を求めている", カラー_ピンク)
SIF GETBIT(TALENT:対象:淫乱系, 素質_淫乱_射精狂い)
	CALL COLOR_PRINTL("幾度となく子種を放った肉棒は常に勃起したままで、射精欲で頭を埋め尽くしている", カラー_ピンク)
SIF GETBIT(TALENT:対象:淫乱系, 素質_淫乱_尿道狂い)
	CALL COLOR_PRINTL(@"尿道は性感帯として作り変えられ、排尿しただけで感じるほど敏感になっている", カラー_ピンク)
SIF GETBIT(TALENT:対象:淫乱系, 素質_淫乱_サド)
	CALL COLOR_PRINTL("他者を嬲ることを至上の悦びとしており、暴力をふるうことで絶頂してしまう", カラー_ピンク)
SIF GETBIT(TALENT:対象:淫乱系, 素質_淫乱_マゾ)
	CALL COLOR_PRINTL("他者に嬲られることを至上の悦びとしており、暴力を振るわれて絶頂してしまう", カラー_ピンク)
SIF GETBIT(TALENT:対象:淫乱系, 素質_淫乱_雌犬)
	CALL COLOR_PRINTL("獣との交わりに快楽を見出しており、彼らの子種を受け止めたいと願っている", カラー_ピンク)
SIF GETBIT(TALENT:対象:淫乱系, 素質_淫乱_精液便女)
	CALL COLOR_PRINTL("慰み者にされることに快楽を見出しており、望まれれば誰にでも股を開く", カラー_ピンク)
SIF GETBIT(TALENT:対象:淫乱系, 素質_淫乱_苗床)
	CALL COLOR_PRINTL("触手との交わりに快楽を見出しており、彼らの母体となるのを悦びとしている", カラー_ピンク)
SIF GETBIT(TALENT:対象:淫乱系, 素質_淫乱_薬物中毒)
	CALL COLOR_PRINTL("薬物に依存しきっており、それなしではもはや生きていられない", カラー_ピンク)
SIF GETBIT(TALENT:対象:淫乱系, 素質_淫乱_娼婦)
	CALL COLOR_PRINTL("金のために股を開くことに快感を見出した、卑しい娼婦に成り果てている", カラー_ピンク)
SIF GETBIT(TALENT:対象:淫乱系, 素質_淫乱_生ハメ依存)
	CALL COLOR_PRINTL("生のペニスの快感に溺れ、もはやゴムありのセックスなど考えられない", カラー_ピンク)
SIF GETBIT(TALENT:対象:淫乱系, 素質_淫乱_孕みたがり)
	CALL COLOR_PRINTL("子宮で精を受け止める感覚に溺れ、いつでも子を宿し産みたいと考えている", カラー_ピンク)
SIF GETBIT(TALENT:対象:淫乱系, 素質_淫乱_娼妓)
	CALL COLOR_PRINTL("自らの痴態を売り物にすることに快感を見出し、ＡＶ女優として活動している", カラー_ピンク)
SIF GETBIT(TALENT:対象:淫乱系, 素質_淫乱_露出狂)
	CALL COLOR_PRINTL("自らの肉体を衆目にさらして悦ぶ変態だ", カラー_ピンク)
SIF GETBIT(TALENT:対象:淫乱系, 素質_淫乱_良質母胎)
	CALL COLOR_PRINTL("何度も子を孕み産んできた子宮は母胎として最適だ", カラー_ピンク)
SIF GETBIT(TALENT:対象:淫乱系, 素質_淫乱_濃厚精液)
	CALL COLOR_PRINTL("一発妊娠間違いなしの濃厚な精液の持ち主だ", カラー_ピンク)
SIF GETBIT(TALENT:対象:淫乱系, 素質_淫乱_傀儡)
	CALL COLOR_PRINTL("自我の根底まで催眠により絡め取られた人形だ", カラー_ピンク)
SIF GETBIT(TALENT:対象:淫乱系, 素質_淫乱_浮気癖)
	CALL COLOR_PRINTL("少し優しくされただけで誰にでも股を開く尻軽だ", カラー_ピンク)
SIF GETBIT(TALENT:対象:淫乱系, 素質_淫乱_自慰狂い)
	CALL COLOR_PRINTL("オナニーが大好きで、気づけば体を弄っている", カラー_ピンク)
SIF GETBIT(TALENT:対象:淫乱系, 素質_淫乱_雌牛)
	CALL COLOR_PRINTL("母乳を絞られる悦びに乳房を疼かせており、常に乳首が尖がり勃っている", カラー_ピンク)

SIF GETBIT(TALENT:対象:特殊勢力陥落系, 特殊勢力_野盗)
	CALL COLOR_PRINTL(@"野盗の果てしない輪姦に屈し、性奴隷に成り果てた", カラー_ピンク)
SIF GETBIT(TALENT:対象:特殊勢力陥落系, 特殊勢力_ゴブリン)
	CALL COLOR_PRINTL(@"ゴブリンのペニスに負け、肉便器の立場を受け入れた", カラー_ピンク)
SIF GETBIT(TALENT:対象:特殊勢力陥落系, 特殊勢力_外来人)
	CALL COLOR_PRINTL(@"外来人からの研究によって、実験動物に成り下がった", カラー_ピンク)
SIF GETBIT(TALENT:対象:特殊勢力陥落系, 特殊勢力_触手)
	CALL COLOR_PRINTL(@"触手に寄生され、繁殖のため使われている", カラー_ピンク)
SIF GETBIT(TALENT:対象:特殊勢力陥落系, 特殊勢力_自警団)
	CALL COLOR_PRINTL(@"自警団の維持のためならば、異性と寝ることも当然と考えている", カラー_ピンク)
SIF GETBIT(TALENT:対象:特殊勢力陥落系, 特殊勢力_サキュバス)
	CALL COLOR_PRINTL(@"人々の夢に現れる淫魔として生まれ変わった", カラー_ピンク)
SIF GETBIT(TALENT:対象:特殊勢力陥落系, 特殊勢力_狂信者)
	CALL COLOR_PRINTL(@"邪悪な神のもと性交を教義とする狂信者だ", カラー_ピンク)

SIF GETBIT(TALENT:対象:デイリー系, 素質_デイリー_薬売りの性奴隷)
	CALL COLOR_PRINTL(@"薬売りの薬と調教に堕ち、性奴隷に成り果てた", カラー_ピンク)
SIF GETBIT(TALENT:対象:デイリー系, 素質_デイリー_貴族の虜)
	CALL COLOR_PRINTL(@"貴族の性技巧の前に、虜にされてしまった", カラー_ピンク)
SIF GETBIT(TALENT:対象:デイリー系, 素質_デイリー_貴族の愛人)
	CALL COLOR_PRINTL(@"貴族の愛人の一人として、日々寵愛を受けている", カラー_ピンク)
SIF GETBIT(TALENT:対象:デイリー系, 素質_デイリー_淫紋)
	CALL COLOR_PRINTL(@"下腹に刻まれた淫紋が、頭の中を淫らな考えで埋め尽くしている", カラー_ピンク)
SIF GETBIT(TALENT:対象:デイリー系, 素質_デイリー_愛欲の淫紋)
	CALL COLOR_PRINTL(@"下腹に刻まれた淫紋が、頭の中を%ANAME(MASTER)%への淫らな愛欲で埋め尽くしている", カラー_ピンク)
SIF GETBIT(TALENT:対象:デイリー系, 素質_デイリー_富豪の愛妾)
	CALL COLOR_PRINTL(@"富豪からの陵辱で堕ち、愛妾の立場を受け入れた", カラー_ピンク)
SIF GETBIT(TALENT:対象:デイリー系, 素質_デイリー_元愛妾)
	CALL COLOR_PRINTL(@"かつては富豪の愛妾だったが、今や飽きて捨てられた", カラー_ピンク)
SIF GETBIT(TALENT:対象:デイリー系, 素質_デイリー_催眠中毒)
	CALL COLOR_PRINTL(@"催眠術に人格を作り替えられ、都合の良い淫らな穴となった", カラー_ピンク)
SIF GETBIT(TALENT:対象:デイリー系, 素質_デイリー_カジノの従業員)
	CALL COLOR_PRINTL(@"カジノの景品として引き渡され、従業員として働かされている", カラー_ピンク)
SIF GETBIT(TALENT:対象:デイリー系, 素質_デイリー_マセガキの奴隷)
	CALL COLOR_PRINTL(@"マセガキの性奴隷として、可愛がられる日々を送っている", カラー_ピンク)
CALL SINGLE_EMPTY_LINE()