code:
;SOURCE_CHECKで使用する関数(雑多なもの)

;-------------------------------------------------
;;; MASTERに対する好感度上昇の処理
;-------------------------------------------------
@LOVE_UP_CHECK_MASTER(ARG:0)
; #region 好感度上昇の処理

;能力固定フラグが立っているなら処理しない
IF CFLAG:(ARG:0):能力固定フラグ
	RETURN
ENDIF

;MASTER不在なら処理しない
SIF !IS_PARTICIPATE_TRAIN(MASTER)
	RETURN

;催眠術実行中はダメ
SIF TCVAR:(ARG:0):催眠中 > 0
	RETURN

SIF FLAG:調教モード == 7
	RETURN

VARI 好感度上昇量
VARI 好感度減少量
VARI 依存度上昇量
VARI 依存度減少量
VARI 従属度上昇量
VARI 従属度減少量
VARI 支配度上昇量
VARI 支配度減少量

CALL LOVE_UP_CHECK_好感度(ARG:0)
好感度上昇量 = RESULT:0
好感度減少量 = RESULT:1

CALL LOVE_UP_CHECK_依存度(ARG:0)
依存度上昇量 = RESULT:0
依存度減少量 = RESULT:1

CALL LOVE_UP_CHECK_従属度(ARG:0)
従属度上昇量 = RESULT:0
従属度減少量 = RESULT:1

CALL LOVE_UP_CHECK_支配度(ARG:0)
支配度上昇量 = RESULT:0
支配度減少量 = RESULT:1

;●ウフフ中は好感度上昇量が低下
IF FLAG:ウフフフラグ
	TIMES 好感度上昇量, 0.30
ENDIF

;●特殊勢力に堕ちていると好感度・依存度・従属度全ての上昇率が低下
;ただし救済策として最低保証がつく
;なお支配度は上昇
IF IS_FALLEN_TO_SP_COUNTRY(ARG:0) && !IS_SP_COUNTRY(CFLAG:MASTER:所属)
	FOR LOCAL:0, 10, 13
		TIMES TCVAR:(ARG:0):(LOCAL:0), 0.20
		TCVAR:(ARG:0):(LOCAL:0) = MAX(TCVAR:(ARG:0):(LOCAL:0), RAND:10)
	NEXT
	TIMES 支配度上昇量, 1.25
ENDIF

;●浮気癖の場合上昇率が低下
IF GETBIT(TALENT:(ARG:0):淫乱系, 素質_淫乱_浮気癖)
	TIMES 好感度上昇量, 0.6
	TIMES 依存度上昇量, 0.6
	TIMES 従属度上昇量, 0.6
	;TIMES TCVAR:(ARG:0):処女喪失フラグ, 0.6
	TIMES 支配度上昇量, 0.6
ENDIF

;●実際の変動量をLOCAL:1～3にセット
LOCAL:1 = (好感度上昇量 - 好感度減少量) / 100
LOCAL:2 = (依存度上昇量 - 依存度減少量) / 100
LOCAL:3 = (従属度上昇量 - 従属度減少量) / 100
LOCAL:4 = (支配度上昇量 - 支配度減少量) / 100

;依存度の変動は最低でも-1
LOCAL:2 = MAX(LOCAL:2, -1)

;●天の御遣いで上昇好感度が低い時さらに＋補正
IF TALENT:MASTER:天の御遣い
	SELECTCASE LOCAL:1
		CASE IS < 0
			LOCAL:1 += 10
		CASE IS < 15
			LOCAL:1 += 5
		CASE IS < 25
			LOCAL:1 += 3
		CASE IS < 50
			LOCAL:1 += 1
	ENDSELECT
ENDIF

;●求心力で上昇依存度が低いときさらに＋補正
IF TALENT:MASTER:求心力
	SELECTCASE LOCAL:2
		CASE IS < 0
			LOCAL:2 += 10
		CASE IS < 15
			LOCAL:2 += 5
		CASE IS < 25
			LOCAL:2 += 3
		CASE IS < 50
			LOCAL:2 += 1
	ENDSELECT
ENDIF

;●君主の器で上昇従属度が低いときさらに＋補正
IF TALENT:MASTER:君主の器
	SELECTCASE LOCAL:3
		CASE IS < 0
			LOCAL:3 += 10
		CASE IS < 15
			LOCAL:3 += 5
		CASE IS < 25
			LOCAL:3 += 3
		CASE IS < 50
			LOCAL:3 += 1
	ENDSELECT
ENDIF

IF FLAG:主導権所有者 == ARG:0
	SELECTCASE LOCAL:4
		CASE IS < 0
			LOCAL:4 += 3
		CASE IS < 15
			LOCAL:4 += 2
		CASE IS < 25
			LOCAL:4 += 1
	ENDSELECT
ENDIF

IF TALENT:(ARG:0):君主の器 || GROUPMATCH(FLAG:調教モード, 調教_逆調教特殊, 調教_逆調教通常, 調教_慰安)
	SELECTCASE LOCAL:4
		CASE IS < 0
			LOCAL:4 += 10
		CASE IS < 15
			LOCAL:4 += 5
		CASE IS < 25
			LOCAL:4 += 3
		CASE IS < 50
			LOCAL:4 += 1
	ENDSELECT
ENDIF

;●主人公以外からの行為は好感度・依存度・従属度全ての変動量が低下
;ただし浮気癖がある場合は無効化
IF ((!IS_MPLY(MASTER) && !IS_MTAR(MASTER)) || (!IS_MPLY(ARG:0) && !IS_MTAR(ARG:0))) && !GETBIT(TALENT:(ARG:0):淫乱系, 素質_淫乱_浮気癖)
	;捕虜調教のメインターゲットは影響緩和
	IF FLAG:調教モード == 2 && FINDELEMENT(PRISONER_TARGET, ARG:0) != -1
		TIMES LOCAL:1, 0.50
		TIMES LOCAL:2, 0.50
		TIMES LOCAL:3, 0.50
		TIMES LOCAL:4, 0.50
	ELSE
		TIMES LOCAL:1, 0.25
		TIMES LOCAL:2, 0.25
		TIMES LOCAL:3, 0.25
		TIMES LOCAL:4, 0.25
	ENDIF
ENDIF

;●失神中・離脱中は好感度・依存度・従属度が変動しない
IF TCVAR:(ARG:0):失神フラグ || TCVAR:(ARG:0):離脱フラグ
	LOCAL:1 = 0
	LOCAL:2 = 0
	LOCAL:3 = 0
	LOCAL:4 = 0
ENDIF

;FL用の好感度補正
TIMES LOCAL:1, 0.6
TIMES LOCAL:2, 0.6
TIMES LOCAL:3, 0.6
TIMES LOCAL:4, 0.6

;●好感度・依存度・従属度を加算
CFLAG:(ARG:0):好感度 = LIMIT(CFLAG:(ARG:0):好感度 + LOCAL:1, -1000, 999999999999)
CFLAG:(ARG:0):依存度 = LIMIT(CFLAG:(ARG:0):依存度 + LOCAL:2, -1000, 999999999999)
CFLAG:(ARG:0):従属度 = LIMIT(CFLAG:(ARG:0):従属度 + LOCAL:3, -1000, 999999999999)
CFLAG:(ARG:0):支配度 = LIMIT(CFLAG:(ARG:0):支配度 + LOCAL:4, -1000, 999999999999)

IF LOCAL:1 || LOCAL:2 || LOCAL:3 || LOCAL:4
	PRINTFORM (%SNAME(ARG:0), 12, LEFT% ⇒ %SNAME(MASTER), 12, LEFT%)
	SIF ABS(LOCAL:1) > 0
		PRINTFORM 好感度%TOSTR_SIGN(LOCAL:1)%{ABS(LOCAL:1), 3, RIGHT}(計:{CFLAG:(ARG:0):好感度, 5})
	SIF ABS(LOCAL:2) > 0
		PRINTFORM 依存度%TOSTR_SIGN(LOCAL:2)%{ABS(LOCAL:2), 3, RIGHT}(計:{CFLAG:(ARG:0):依存度, 5})
	SIF ABS(LOCAL:3) > 0
		PRINTFORM 従属度%TOSTR_SIGN(LOCAL:3)%{ABS(LOCAL:3), 3, RIGHT}(計:{CFLAG:(ARG:0):従属度, 5})
	SIF ABS(LOCAL:4) > 0
		PRINTFORM 支配度%TOSTR_SIGN(LOCAL:4)%{ABS(LOCAL:4), 3, RIGHT}(計:{CFLAG:(ARG:0):支配度, 5})
	PRINTL
ENDIF

;関係を改善
LOCAL:4 = LIMIT((LOCAL:1 + LOCAL:3) / 10, 0, 20)
CALL CHANGE_RELATION_O_TO_O(ARG:0, MASTER, LOCAL:4, LOCAL:4 * -1)

SIF FLAG:調教モード == 調教_捕虜調教 && CFLAG:(ARG:0):所属 != CFLAG:MASTER:所属 && IS_COUNTRY(CFLAG:(ARG:0):所属)
	CALL CHANGE_RELATION_O_TO_C(ARG:0, CFLAG:(ARG:0):所属, LOCAL:4 * -1 / 2, 0)

;●今回の好感度・依存度・従属度の変動量をTCVAR:70～72に記録
TCVAR:(ARG:0):今回の好感度の変動量 = LOCAL:1
TCVAR:(ARG:0):今回の依存度の変動量 = LOCAL:2
TCVAR:(ARG:0):今回の従属度の変動量 = LOCAL:3
TCVAR:(ARG:0):今回の支配度の変動量 = LOCAL:4

;-------------------------------------------------
;●好感度の処理
;-------------------------------------------------
@LOVE_UP_CHECK_好感度(ARG:0, TO_ID = 0)
; #region 好感度
#DIM TO_ID
;素質による増減
;LOCAL:1は上昇成分に掛かる補正
LOCAL:1 = 100
;LOCAL:2は減少成分に掛かる補正
LOCAL:2 = 100

SIF !TO_ID
	TO_ID = MASTER

SIF TALENT:(ARG:0):素直
	LOCAL:1 += 10
SIF TALENT:(ARG:0):献身的
	LOCAL:1 += 5
IF TO_ID == MASTER
	SIF TALENT:(ARG:0):恋慕
		LOCAL:1 += 10
	SIF TALENT:(ARG:0):親友
		LOCAL:1 += 10
	SIF TALENT:(ARG:0):親愛
		LOCAL:1 += 10
	SIF TALENT:(ARG:0):恋人
		LOCAL:1 += 10
	SIF TALENT:(ARG:0):服従
		LOCAL:1 += 10
	SIF TALENT:(ARG:0):隷属
		LOCAL:1 += 10
	SIF TALENT:(ARG:0):主人
		LOCAL:1 += 10
	SIF TALENT:(ARG:0):所有者
		LOCAL:1 += 10
	SIF TALENT:MASTER:天の御遣い
		LOCAL:1 += 20
	SIF TALENT:MASTER:魅惑
		LOCAL:1 += 10
	SIF TALENT:MASTER:謎の魅力
		LOCAL:1 += 10
	SIF TALENT:MASTER:人気
		LOCAL:1 += 10
ENDIF
SIF TALENT:(ARG:0):幼稚
	LOCAL:1 += 10
SIF TALENT:(ARG:0):チョロイン
	LOCAL:1 += 10

SIF TALENT:(ARG:0):反抗的
	LOCAL:2 += 10
SIF TALENT:(ARG:0):生意気
	LOCAL:2 += 10
SIF TALENT:(ARG:0):プライド高い
	LOCAL:2 += 10
SIF TALENT:(ARG:0):男嫌い && IS_MALE(TO_ID)
	LOCAL:2 += 10
SIF TALENT:(ARG:0):女嫌い && IS_FEMALE(TO_ID)
	LOCAL:2 += 10
SIF TALENT:(ARG:0):幼稚
	LOCAL:2 += 10
SIF TALENT:(ARG:0):チョロイン
	LOCAL:2 -= 10

SIF TALENT:(ARG:0):反抗的
	TIMES LOCAL:1, 0.90
SIF TALENT:(ARG:0):生意気
	TIMES LOCAL:1, 0.90
SIF TALENT:(ARG:0):無関心
	TIMES LOCAL:1, 0.90
SIF TALENT:(ARG:0):感情乏しい
	TIMES LOCAL:1, 0.90
SIF TALENT:(ARG:0):孤高
	TIMES LOCAL:1, 0.90
SIF TALENT:(ARG:0):男嫌い && IS_MALE(TO_ID)
	TIMES LOCAL:1, 0.90
SIF TALENT:(ARG:0):女嫌い && IS_FEMALE(TO_ID)
	TIMES LOCAL:1, 0.90
SIF TALENT:(ARG:0):抑圧
	LOCAL:1 = LOCAL:1 * (180 - YOKUATSU_RATE(ARG:0)) / 180
SIF TALENT:(ARG:0):孤高
	LOCAL:1 = LOCAL:1 * (250 - KOKOU_RATE(ARG:0)) / 250

SIF TALENT:(ARG:0):献身的
	TIMES LOCAL:2, 0.95
SIF TALENT:(ARG:0):大人しい
	TIMES LOCAL:2, 0.90
IF TO_ID == MASTER
	SIF TALENT:(ARG:0):恋慕
		TIMES LOCAL:2, 0.90
	SIF TALENT:(ARG:0):親友
		TIMES LOCAL:2, 0.90
	SIF TALENT:(ARG:0):親愛
		TIMES LOCAL:2, 0.90
	SIF TALENT:(ARG:0):服従
		TIMES LOCAL:2, 0.90
	SIF TALENT:(ARG:0):隷属
		TIMES LOCAL:2, 0.90
	SIF TALENT:(ARG:0):主人
		TIMES LOCAL:2, 0.90
	SIF TALENT:(ARG:0):所有者
		TIMES LOCAL:2, 0.90
	SIF TALENT:(ARG:0):烙印
		TIMES LOCAL:2, 0.90
	SIF TALENT:MASTER:魅惑
		TIMES LOCAL:2, 0.90
	SIF TALENT:MASTER:謎の魅力
		TIMES LOCAL:2, 0.90
	SIF TALENT:MASTER:人気
		TIMES LOCAL:2, 0.90
ENDIF
SIF TALENT:(ARG:0):無関心
	TIMES LOCAL:2, 0.90
SIF TALENT:(ARG:0):感情乏しい
	TIMES LOCAL:2, 0.90
SIF TALENT:(ARG:0):チョロイン
	TIMES LOCAL:2, 0.90
SIF TALENT:(ARG:0):抑圧
	LOCAL:2 = LOCAL:2 * (180 - YOKUATSU_RATE(ARG:0)) / 180

;素質による補正の最低値を50、最高値を180とする
LOCAL:1 = LIMIT(LOCAL:1, 50, 180)
LOCAL:2 = LIMIT(LOCAL:2, 50, 180)

;機嫌に応じた上下
SELECTCASE TOSTR_EMOTION(ARG:0)
	CASE "幸"
		TIMES LOCAL:1, 2.20
		TIMES LOCAL:2, 0.50
	CASE "悦"
		TIMES LOCAL:1, 1.80
		TIMES LOCAL:2, 0.60
	CASE "良"
		TIMES LOCAL:1, 1.30
		TIMES LOCAL:2, 0.80
	CASE "恨"
		TIMES LOCAL:1, 0.30
		TIMES LOCAL:2, 3.50
	CASE "怒"
		TIMES LOCAL:1, 0.60
		TIMES LOCAL:2, 1.80
	CASE "憤"
		TIMES LOCAL:1, 0.85
		TIMES LOCAL:2, 1.40
	CASE "鬱"
		TIMES LOCAL:1, 0.10
		TIMES LOCAL:2, 1.50
	CASE "悲"
		TIMES LOCAL:1, 0.40
		TIMES LOCAL:2, 1.20
	CASE "憂"
		TIMES LOCAL:1, 0.70
		TIMES LOCAL:2, 1.10
	CASE "狂"
		TIMES LOCAL:1, 0.20
		TIMES LOCAL:2, 2.00
	CASE "恐"
		TIMES LOCAL:1, 0.50
		TIMES LOCAL:2, 1.50
	CASE "怯"
		TIMES LOCAL:1, 0.80
		TIMES LOCAL:2, 1.20
	CASE "壊"
		LOCAL:1 = 0
		LOCAL:2 = 0
	CASE "虚"
		TIMES LOCAL:1, 0.10
		TIMES LOCAL:2, 0.10
ENDSELECT

VARI 好感度上昇量
VARI 好感度減少量

好感度上昇量 = TCVAR:(ARG:0):好感度上昇値 * LOCAL:1 / 100
好感度減少量 = TCVAR:(ARG:0):好感度減少値 * LOCAL:2 / 100

;機嫌に応じた上下
IF GROUPMATCH(TOSTR_EMOTION(ARG:0), "悦", "幸")
	;絶頂による好感度上昇
	好感度上昇量 += SUM_NOWEX(ARG:0) * 5
ENDIF

;体力が尽きていると好感度にペナルティ
IF TCVAR:(ARG:0):行動不能フラグ
	TIMES 好感度上昇量, 0.20
	TIMES 好感度減少量, 2.00
ENDIF

RETURN 好感度上昇量, 好感度減少量
; #endregion

;-------------------------------------------------
;●依存度の処理
;-------------------------------------------------
@LOVE_UP_CHECK_依存度(ARG:0)
; #region 依存度
LOCAL:0 = 0

;素質による増減
;LOCAL:1は上昇成分に掛かる補正
LOCAL:1 = 100
;LOCAL:2は減少成分に掛かる補正
LOCAL:2 = 100

SIF TALENT:(ARG:0):素直
	LOCAL:1 += 10
SIF TALENT:(ARG:0):抑圧
	LOCAL:1 += 20
SIF TALENT:(ARG:0):孤高
	LOCAL:1 += 20
SIF TALENT:(ARG:0):恋慕
	LOCAL:1 += 10
SIF TALENT:(ARG:0):親友
	LOCAL:1 += 10
SIF TALENT:(ARG:0):親愛
	LOCAL:1 += 10
SIF TALENT:(ARG:0):恋人
	LOCAL:1 += 10
SIF TALENT:(ARG:0):服従
	LOCAL:1 += 10
SIF TALENT:(ARG:0):隷属
	LOCAL:1 += 10
SIF TALENT:(ARG:0):烙印
	LOCAL:1 += 10
SIF TALENT:(ARG:0):主人
	LOCAL:1 += 10
SIF TALENT:(ARG:0):所有者
	LOCAL:1 += 10
SIF TALENT:(ARG:0):プライド低い
	LOCAL:1 += 10
SIF TALENT:MASTER:求心力
	LOCAL:1 += 20
SIF TALENT:MASTER:小悪魔
	LOCAL:1 += 10
SIF TALENT:MASTER:魅惑
	LOCAL:1 += 10
SIF TALENT:MASTER:謎の魅力
	LOCAL:1 += 10

SIF TALENT:(ARG:0):プライド高い
	LOCAL:2 += 10
SIF TALENT:(ARG:0):反抗的
	LOCAL:2 += 10
SIF TALENT:(ARG:0):自制心
	LOCAL:2 += 10
SIF TALENT:(ARG:0):男嫌い && IS_MALE(MASTER)
	LOCAL:2 += 10
SIF TALENT:(ARG:0):女嫌い && IS_FEMALE(MASTER)
	LOCAL:2 += 10

SIF TALENT:(ARG:0):気丈
	TIMES LOCAL:1, 0.90
SIF TALENT:(ARG:0):プライド高い
	TIMES LOCAL:1, 0.90
SIF TALENT:(ARG:0):反抗的
	TIMES LOCAL:1, 0.90
SIF TALENT:(ARG:0):無関心
	TIMES LOCAL:1, 0.90
SIF TALENT:(ARG:0):感情乏しい
	TIMES LOCAL:1, 0.90
SIF TALENT:(ARG:0):自制心
	TIMES LOCAL:1, 0.90
SIF TALENT:(ARG:0):男嫌い && IS_MALE(MASTER)
	TIMES LOCAL:1, 0.90
SIF TALENT:(ARG:0):女嫌い && IS_FEMALE(MASTER)
	TIMES LOCAL:1, 0.90

SIF TALENT:(ARG:0):恋慕
	TIMES LOCAL:2, 0.90
SIF TALENT:(ARG:0):親友
	TIMES LOCAL:2, 0.90
SIF TALENT:(ARG:0):親愛
	TIMES LOCAL:2, 0.90
SIF TALENT:(ARG:0):服従
	TIMES LOCAL:2, 0.90
SIF TALENT:(ARG:0):隷属
	TIMES LOCAL:2, 0.90
SIF TALENT:(ARG:0):主人
	TIMES LOCAL:2, 0.90
SIF TALENT:(ARG:0):所有者
	TIMES LOCAL:2, 0.90
SIF TALENT:(ARG:0):プライド低い
	TIMES LOCAL:2, 0.90
SIF TALENT:MASTER:魅惑
	TIMES LOCAL:2, 0.90
SIF TALENT:MASTER:謎の魅力
	TIMES LOCAL:2, 0.90
SIF TALENT:(ARG:0):無関心
	TIMES LOCAL:2, 0.90
SIF TALENT:(ARG:0):感情乏しい
	TIMES LOCAL:2, 0.90
SIF TALENT:(ARG:0):抑圧
	TIMES LOCAL:2, 0.30

;素質による補正の最低値を50、最高値を180とする
LOCAL:1 = LIMIT(LOCAL:1, 50, 180)
LOCAL:2 = LIMIT(LOCAL:2, 50, 180)

;機嫌に応じた上下
SELECTCASE TOSTR_EMOTION(ARG:0)
	CASE "幸"
		TIMES LOCAL:1, 2.00
		TIMES LOCAL:2, 0.50
	CASE "悦"
		TIMES LOCAL:1, 1.50
		TIMES LOCAL:2, 0.70
	CASE "良"
		TIMES LOCAL:1, 1.20
		TIMES LOCAL:2, 0.90
	CASE "恨"
		TIMES LOCAL:1, 0.70
		TIMES LOCAL:2, 1.30
	CASE "怒"
		TIMES LOCAL:1, 0.80
		TIMES LOCAL:2, 1.20
	CASE "憤"
		TIMES LOCAL:1, 0.90
		TIMES LOCAL:2, 1.10
	CASE "鬱"
		TIMES LOCAL:1, 0.70
		TIMES LOCAL:2, 1.30
	CASE "悲"
		TIMES LOCAL:1, 0.80
		TIMES LOCAL:2, 1.20
	CASE "憂"
		TIMES LOCAL:1, 0.90
		TIMES LOCAL:2, 1.10
	CASE "狂"
		TIMES LOCAL:1, 2.00
		TIMES LOCAL:2, 0.50
	CASE "恐"
		TIMES LOCAL:1, 1.60
		TIMES LOCAL:2, 0.70
	CASE "怯"
		TIMES LOCAL:1, 1.30
		TIMES LOCAL:2, 0.90
	CASE "壊"
		LOCAL:1 = 0
		LOCAL:2 = 0
	CASE "虚"
		TIMES LOCAL:1, 0.10
		TIMES LOCAL:2, 0.10
ENDSELECT

VARI 依存度上昇量
VARI 依存度減少量

依存度上昇量 = TCVAR:(ARG:0):依存度上昇値 * LOCAL:1 / 100
依存度減少量 = TCVAR:(ARG:0):依存度減少値 * LOCAL:2 / 100

;機嫌に応じた上下
IF GROUPMATCH(TOSTR_EMOTION(ARG:0), "壊", "虚") == 0
	;絶頂による依存度上昇
	依存度上昇量 += SUM_NOWEX(ARG:0) * 50
ENDIF

RETURN 依存度上昇量, 依存度減少量
; #endregion

;-------------------------------------------------
;●従属度の処理
;-------------------------------------------------
@LOVE_UP_CHECK_従属度(ARG:0)
; #region 従属度
;素質による増減
;LOCAL:1は上昇成分に掛かる補正
LOCAL:1 = 100
;LOCAL:2は減少成分に掛かる補正
LOCAL:2 = 100

SIF TALENT:(ARG:0):素直
	LOCAL:1 += 10
SIF TALENT:(ARG:0):臆病
	LOCAL:1 += 10
SIF TALENT:(ARG:0):プライド低い
	LOCAL:1 += 10
SIF TALENT:(ARG:0):服従
	LOCAL:1 += 10
SIF TALENT:(ARG:0):隷属
	LOCAL:1 += 10
SIF TALENT:(ARG:0):烙印
	LOCAL:1 += 10
SIF TALENT:MASTER:君主の器
	LOCAL:1 += 20
SIF TALENT:MASTER:小悪魔
	LOCAL:1 += 10
SIF TALENT:MASTER:魅惑
	LOCAL:1 += 10
SIF TALENT:MASTER:謎の魅力
	LOCAL:1 += 10
SIF TALENT:(ARG:0):チョロイン
	LOCAL:1 += 10

SIF TALENT:(ARG:0):プライド高い
	LOCAL:2 += 10
SIF TALENT:(ARG:0):反抗的
	LOCAL:2 += 10
SIF TALENT:(ARG:0):孤高
	LOCAL:2 += 10
SIF TALENT:(ARG:0):自制心
	LOCAL:2 += 10
SIF TALENT:(ARG:0):チョロイン
	LOCAL:2 -= 10

SIF TALENT:(ARG:0):気丈
	TIMES LOCAL:1, 0.90
SIF TALENT:(ARG:0):プライド高い
	TIMES LOCAL:1, 0.90
SIF TALENT:(ARG:0):反抗的
	TIMES LOCAL:1, 0.90
SIF TALENT:(ARG:0):無関心
	TIMES LOCAL:1, 0.90
SIF TALENT:(ARG:0):感情乏しい
	TIMES LOCAL:1, 0.90
SIF TALENT:(ARG:0):孤高
	TIMES LOCAL:1, 0.90
SIF TALENT:(ARG:0):自制心
	TIMES LOCAL:1, 0.90
SIF TALENT:(ARG:0):男嫌い && IS_MALE(MASTER)
	TIMES LOCAL:1, 0.90
SIF TALENT:(ARG:0):女嫌い && IS_FEMALE(MASTER)
	TIMES LOCAL:1, 0.90
SIF TALENT:(ARG:0):抑圧
	LOCAL:1 = LOCAL:1 * (180 - YOKUATSU_RATE(ARG:0)) / 180
SIF TALENT:(ARG:0):孤高
	LOCAL:1 = LOCAL:1 * (250 - KOKOU_RATE(ARG:0)) / 250

SIF TALENT:(ARG:0):臆病
	TIMES LOCAL:2, 0.90
SIF TALENT:(ARG:0):プライド低い
	TIMES LOCAL:2, 0.90
SIF TALENT:(ARG:0):服従
	TIMES LOCAL:2, 0.90
SIF TALENT:(ARG:0):隷属
	TIMES LOCAL:2, 0.90
SIF TALENT:(ARG:0):烙印
	TIMES LOCAL:2, 0.90
SIF TALENT:(ARG:0):無関心
	TIMES LOCAL:2, 0.90
SIF TALENT:(ARG:0):感情乏しい
	TIMES LOCAL:2, 0.90
SIF TALENT:(ARG:0):チョロイン
	TIMES LOCAL:2, 0.90
SIF TALENT:(ARG:0):抑圧
	LOCAL:2 = LOCAL:2 * (180 - YOKUATSU_RATE(ARG:0)) / 180

;最低値を50、最高値を180とする
LOCAL:1 = LIMIT(LOCAL:1, 50, 180)
LOCAL:2 = LIMIT(LOCAL:2, 50, 180)

;機嫌に応じた上下
SELECTCASE TOSTR_EMOTION(ARG:0)
	CASE "幸"
		TIMES LOCAL:1, 1.50
		TIMES LOCAL:2, 0.70
	CASE "悦"
		TIMES LOCAL:1, 1.30
		TIMES LOCAL:2, 0.80
	CASE "良"
		TIMES LOCAL:1, 1.15
		TIMES LOCAL:2, 0.90
	CASE "恨"
		TIMES LOCAL:1, 0.20
		TIMES LOCAL:2, 2.50
	CASE "怒"
		TIMES LOCAL:1, 0.50
		TIMES LOCAL:2, 1.60
	CASE "憤"
		TIMES LOCAL:1, 0.80
		TIMES LOCAL:2, 1.20
	CASE "鬱"
		TIMES LOCAL:1, 0.10
		TIMES LOCAL:2, 1.50
	CASE "悲"
		TIMES LOCAL:1, 0.40
		TIMES LOCAL:2, 1.25
	CASE "憂"
		TIMES LOCAL:1, 0.75
		TIMES LOCAL:2, 1.10
	CASE "狂"
		TIMES LOCAL:1, 3.00
		TIMES LOCAL:2, 0.20
	CASE "恐"
		TIMES LOCAL:1, 2.20
		TIMES LOCAL:2, 0.50
	CASE "怯"
		TIMES LOCAL:1, 1.50
		TIMES LOCAL:2, 0.75
	CASE "壊"
		LOCAL:1 = 0
		LOCAL:2 = 0
	CASE "虚"
		TIMES LOCAL:1, 0.10
		TIMES LOCAL:2, 0.10
ENDSELECT

VARI 従属度上昇量
VARI 従属度減少量

従属度上昇量 = TCVAR:(ARG:0):従属度上昇値
従属度減少量 = TCVAR:(ARG:0):従属度減少値

IF FLAG:主導権所有者
	TIMES 従属度上昇量, 0.7
	TIMES 従属度減少量, 1.2
ENDIF
従属度上昇量 = 従属度上昇量 * LOCAL:1 / 100
従属度減少量 = 従属度減少量 * LOCAL:2 / 100

;機嫌に応じた上下
IF GROUPMATCH(TOSTR_EMOTION(ARG:0), "壊", "虚", "狂", "恐") == 0
	;絶頂による従属度上昇
	従属度上昇量 += SUM_NOWEX(ARG:0)
ENDIF

RETURN 従属度上昇量, 従属度減少量
; #endregion

;-------------------------------------------------
;●支配度の処理
;-------------------------------------------------
@LOVE_UP_CHECK_支配度(ARG:0)
; #region 支配度
;素質による増減
;LOCAL:1は上昇成分に掛かる補正
LOCAL:1 = 100
;LOCAL:2は減少成分に掛かる補正
LOCAL:2 = 100

SIF TALENT:(ARG:0):反抗的
	LOCAL:1 += 10
SIF TALENT:(ARG:0):気丈
	LOCAL:1 += 10
SIF TALENT:(ARG:0):プライド高い
	LOCAL:1 += 10
SIF TALENT:(ARG:0):主人
	LOCAL:1 += 10
SIF TALENT:(ARG:0):所有者
	LOCAL:1 += 10
SIF TALENT:(ARG:0):君主の器
	LOCAL:1 += 20
SIF TALENT:(ARG:0):小悪魔
	LOCAL:1 += 10
SIF TALENT:(ARG:0):魅惑
	LOCAL:1 += 10
SIF TALENT:(ARG:0):謎の魅力
	LOCAL:1 += 10

SIF TALENT:(ARG:0):プライド低い
	LOCAL:2 += 10
SIF TALENT:(ARG:0):素直
	LOCAL:2 += 10
SIF TALENT:(ARG:0):臆病
	LOCAL:2 += 10
SIF TALENT:(ARG:0):自制心
	LOCAL:2 += 10
SIF TALENT:(ARG:0):チョロイン
	LOCAL:2 -= 10

SIF TALENT:(ARG:0):素直
	TIMES LOCAL:1, 0.90
SIF TALENT:(ARG:0):プライド低い
	TIMES LOCAL:1, 0.90
SIF TALENT:(ARG:0):大人しい
	TIMES LOCAL:1, 0.90
SIF TALENT:(ARG:0):無関心
	TIMES LOCAL:1, 0.90
SIF TALENT:(ARG:0):感情乏しい
	TIMES LOCAL:1, 0.90

SIF TALENT:(ARG:0):男嫌い && IS_MALE(MASTER)
	TIMES LOCAL:1, 0.90
SIF TALENT:(ARG:0):女嫌い && IS_FEMALE(MASTER)
	TIMES LOCAL:1, 0.90
SIF TALENT:(ARG:0):抑圧
	LOCAL:1 = LOCAL:1 * (180 - YOKUATSU_RATE(ARG:0)) / 180
SIF TALENT:(ARG:0):孤高
	LOCAL:1 = LOCAL:1 * (250 - KOKOU_RATE(ARG:0)) / 250

SIF TALENT:(ARG:0):反抗的
	TIMES LOCAL:2, 0.90
SIF TALENT:(ARG:0):プライド高い
	TIMES LOCAL:2, 0.90
SIF TALENT:(ARG:0):主人
	TIMES LOCAL:2, 0.90
SIF TALENT:(ARG:0):所有者
	TIMES LOCAL:2, 0.90
SIF TALENT:(ARG:0):小悪魔
	TIMES LOCAL:2, 0.90
SIF TALENT:(ARG:0):気丈
	TIMES LOCAL:2, 0.90
SIF TALENT:(ARG:0):感情乏しい
	TIMES LOCAL:2, 0.90
SIF TALENT:(ARG:0):チョロイン
	TIMES LOCAL:2, 0.90

SIF TALENT:(ARG:0):抑圧
	LOCAL:2 = LOCAL:2 * (180 - YOKUATSU_RATE(ARG:0)) / 180

;最低値を50、最高値を180とする
LOCAL:1 = LIMIT(LOCAL:1, 50, 180)
LOCAL:2 = LIMIT(LOCAL:2, 50, 180)

;機嫌に応じた上下
SELECTCASE TOSTR_EMOTION(ARG:0)
	CASE "幸"
		TIMES LOCAL:1, 1.50
		TIMES LOCAL:2, 0.70
	CASE "悦"
		TIMES LOCAL:1, 1.30
		TIMES LOCAL:2, 0.80
	CASE "良"
		TIMES LOCAL:1, 1.15
		TIMES LOCAL:2, 0.90
	CASE "恨"
		TIMES LOCAL:1, 1.00
		TIMES LOCAL:2, 1.50
	CASE "怒"
		TIMES LOCAL:1, 1.00
		TIMES LOCAL:2, 1.30
	CASE "憤"
		TIMES LOCAL:1, 1.30
		TIMES LOCAL:2, 1.00
	CASE "鬱"
		TIMES LOCAL:1, 0.10
		TIMES LOCAL:2, 1.50
	CASE "悲"
		TIMES LOCAL:1, 0.40
		TIMES LOCAL:2, 1.25
	CASE "憂"
		TIMES LOCAL:1, 0.75
		TIMES LOCAL:2, 1.10
	CASE "狂"
		TIMES LOCAL:1, 0.75
		TIMES LOCAL:2, 1.50
	CASE "恐"
		TIMES LOCAL:1, 0.75
		TIMES LOCAL:2, 1.25
	CASE "怯"
		TIMES LOCAL:1, 1.00
		TIMES LOCAL:2, 1.25
	CASE "壊"
		LOCAL:1 = 0
		LOCAL:2 = 0
	CASE "虚"
		TIMES LOCAL:1, 0.10
		TIMES LOCAL:2, 0.10
ENDSELECT

VARI 支配度上昇量
VARI 支配度減少量

支配度上昇量 = TCVAR:(ARG:0):支配度上昇値
支配度減少量 = TCVAR:(ARG:0):支配度減少値

IF FLAG:主導権所有者 == ARG:0
	TIMES 支配度上昇量, 1.2
	TIMES 支配度減少量, 0.7
ENDIF

IF GROUPMATCH(FLAG:調教モード, 調教_逆調教特殊, 調教_逆調教通常, 調教_慰安)
	TIMES 支配度上昇量, 1.3
	TIMES 支配度減少量, 0.7
ENDIF

支配度上昇量 = 支配度上昇量 * LOCAL:1 / 100
支配度減少量 = 支配度減少量 * LOCAL:2 / 100

;機嫌に応じた上下
IF GROUPMATCH(TOSTR_EMOTION(ARG:0), "壊", "虚") == 0
	;絶頂による支配度上昇
	支配度上昇量 += SUM_NOWEX(MASTER) * 50
ENDIF

RETURN 支配度上昇量, 支配度減少量
; #endregion

;-------------------------------------------------
;ARG:0番のキャラに対してソース以外の各種変動処理を行う
;-------------------------------------------------
@SOURCE_CHANGE_OTHER_STATUS(ARG:0)
;ウフフ中限定
IF FLAG:ウフフフラグ
	;恐怖によるおもらしの設定が有効の場合
	IF CONFIG:91 == 1
		;尿意がある程度の状態で恐怖上昇量3000以上、または尿意が高い状態で恐怖上昇量1000以上
		IF (CUP:(ARG:0):怖主 >= 1000 && TCVAR:(ARG:0):尿残量 >= 3000) || (CUP:(ARG:0):怖主 >= 2500 && TCVAR:(ARG:0):尿残量 >= 1000)
			IF TCVAR:(ARG:0):尿残量 >= 3000
				TCVAR:(ARG:0):失禁量 = 2
			ELSE
				TCVAR:(ARG:0):失禁量 = 1
			ENDIF

			TCVAR:(ARG:0):失禁種類 = 4
			EXP:(ARG:0):排泄経験値 += 1
			EXP:(ARG:0):おもらし経験 += TCVAR:(ARG:0):失禁量

			;尿残量を0にする
			TCVAR:(ARG:0):尿残量 = 0
		ENDIF
	ENDIF

	;利尿剤使用中なら尿残量を追加
	IF TCVAR:(ARG:0):利尿剤
		IF TALENT:(ARG:0):おもらし癖
			TCVAR:(ARG:0):尿残量 += 500
		ELSE
			TCVAR:(ARG:0):尿残量 += 300
		ENDIF
		;おもらし癖なら常に尿残量を補充
	ELSEIF TALENT:(ARG:0):おもらし癖 && TCVAR:(ARG:0):尿残量 < 2000
		TCVAR:(ARG:0):尿残量 += 200
	ENDIF

	;絶頂・尿意限界によるおもらしの設定が無効の場合
	IF CONFIG:90 == 0
		;尿残量が最大でも2000までしか溜まらない
		TCVAR:(ARG:0):尿残量 = MIN(TCVAR:(ARG:0):尿残量, 2000)

		;設定が有効の場合
	ELSE
		;蜂蜜水を使用しても尿残量がたまっていく
		IF TCVAR:(ARG:0):エインズの露 >= 1
			TCVAR:(ARG:0):尿残量 += TCVAR:(ARG:0):エインズの露 * 50
			TCVAR:(ARG:0):エインズの露 --
		ENDIF
	ENDIF
ENDIF

;スケベモブは無条件で焦らされ度上昇
IF CFLAG:(ARG:0):スケベモブ
	TCVAR:(ARG:0):焦らされ度 += RAND(10, 15) * (1 + GET_PALAMLV(PALAM:(ARG:0):欲情))
ENDIF

;PALAMの値だけ気力が削れていく
DOWNBASE:(ARG:0):気力 += MIN((CUP:(ARG:0):怖主 + (CUP:(ARG:0):哀主 / 2)) / 30, 300)

;体力・気力・精神力の減少
DOWNBASE:(ARG:0):体力 = CALC_LOSEBASE_EXP_CORRECTION(ARG:0, DOWNBASE:(ARG:0):体力)
DOWNBASE:(ARG:0):気力 = CALC_LOSEBASE_EXP_CORRECTION(ARG:0, DOWNBASE:(ARG:0):気力)

;素質<絶倫>またはアイテム「メイガスの夜」使用で消耗を軽減
IF TCVAR:(ARG:0):メイガスの夜
	DOWNBASE:(ARG:0):体力 /= 5
	DOWNBASE:(ARG:0):気力 /= 5
ELSEIF TALENT:(ARG:0):絶倫
	DOWNBASE:(ARG:0):体力 /= 3
	DOWNBASE:(ARG:0):気力 /= 3
ENDIF

IF CFLAG:(ARG:0):調教中BASE減らない
	DOWNBASE:(ARG:0):体力 = 0
	DOWNBASE:(ARG:0):気力 = 0
ENDIF

SIF DOWNBASE:(ARG:0):体力 > 0
	BASE:(ARG:0):体力 -= DOWNBASE:(ARG:0):体力

SIF DOWNBASE:(ARG:0):気力 > 0
	BASE:(ARG:0):気力 -= DOWNBASE:(ARG:0):気力

IF FLAG:ハウジングモード
	BASE:(ARG:0):体力 += TCVAR:(ARG:0):HO体力増減値
	BASE:(ARG:0):体力 = LIMIT(BASE:(ARG:0):体力, 0, MAXBASE:(ARG:0):体力)
	BASE:(ARG:0):気力 += TCVAR:(ARG:0):HO気力増減値
	BASE:(ARG:0):気力 = LIMIT(BASE:(ARG:0):気力, 0, MAXBASE:(ARG:0):気力)
ENDIF

IF FLAG:調教モード == 2 && FINDELEMENT(PRISONER_TARGET, ARG:0) != -1
	;気絶してたら回復
	IF TCVAR:(ARG:0):失神フラグ
		LOCAL = RAND(-100, 0)
	ELSE
		LOCAL = LIMIT(CUP:(ARG:0):怖主 * 50 / 100 - CUP:(ARG:0):怒主 * 10 / 100 - MAXBASE:(ARG:0):精神力 / RAND(14, 20), -500, MAXBASE:(ARG:0):精神力 / 4)
		SIF LOCAL > 0
			LOCAL = LOCAL * MAX(10000 - MAX(CFLAG:(ARG:0):好感度, CFLAG:(ARG:0):従属度, 0), 5000) / 10000
	ENDIF
	SELECTCASE INRANGEARRAY(PRISONER_TARGET, 0, CHARANUM + 1)
		CASE 2
			SIF LOCAL >= 0
				TIMES LOCAL, 1.30
		CASE 3
			SIF LOCAL >= 0
				TIMES LOCAL, 1.50
	ENDSELECT
	IF BASE:(ARG:0):精神力 - LOCAL < 0
		TIMES LOCAL, 0.75
	ENDIF
	BASE:(ARG:0):精神力 = LIMIT(BASE:(ARG:0):精神力 - LOCAL, -500, MAXBASE:(ARG:0):精神力)
	IF BASE:(ARG:0):精神力 < 0
		CFLAG:(ARG:0):崩壊 += (100 - BASE:(ARG:0):精神力 / 2) * 1000 / (MAX(MAXBASE:(ARG:0):精神力, 1000))
	ENDIF
ENDIF

;-------------------------------------------------
;体力気力消費量の、絶頂経験での補正
;絶頂経験に比例して減る
;-------------------------------------------------
@CALC_LOSEBASE_EXP_CORRECTION(対象, 消費量)
#FUNCTION
#DIM 対象
#DIM 消費量
;PRINTFORML 消費量{消費量}
;PRINTFORML 補正後{消費量 - 消費量 * MIN(EXP:対象:絶頂経験, 5000) / 10000}
;絶頂経験1につき0.1%、700で70%で打ち止め
RETURNF 消費量 - 消費量 * MIN(EXP:対象:絶頂経験, 700) / 1000

;RETURNF 消費量 * (10000 / MAX(EXP:対象:絶頂経験 / 50, 1)) / 10000

;-------------------------------------------------
;@PRINT_EXP_UP内で使用する関数
;-------------------------------------------------
@PRINT_COM_RESULT(ARGS:0)
IF TFLAG:95
	TFLAG:95 = 0
	PRINTFORM 　%ANAME(TFLAG:94), 16, LEFT%:
	LOCAL:0 = 9
ELSE
	PRINT
ENDIF

LOCAL:0 += STRLENS(ARGS:0) + 1

IF LOCAL:0 >= 80
	PRINTL
	PRINTFORM %TOSTR_SPACE(19)%
	LOCAL:0 = 9
ENDIF

PRINTFORM %ARGS:0%

;-------------------------------------------------
;ARG:0番のキャラがコマンド実行により得た失った体力を表示
;-------------------------------------------------
@PRINT_BASE_LOSE(ARG:0)
;●体力・気力の表示
TFLAG:94 = ARG:0
TFLAG:95 = 1

FOR LOCAL:0, 0, 2
	IF DOWNBASE:(ARG:0):(LOCAL:0) > 0
		CALL PRINT_COM_RESULT(@"%BASENAME:(LOCAL:0)%-{DOWNBASE:(ARG:0):(LOCAL:0)}")
	ENDIF
NEXT

IF FLAG:ハウジングモード
	IF TCVAR:(ARG:0):HO体力増減値 > 0
		CALL PRINT_COM_RESULT(@"%BASENAME:0%+{TCVAR:(ARG:0):HO体力増減値}")
	ELSEIF TCVAR:(ARG:0):HO体力増減値 < 0
		CALL PRINT_COM_RESULT(@"%BASENAME:0%{TCVAR:(ARG:0):HO体力増減値}")
	ENDIF
	IF TCVAR:(ARG:0):HO気力増減値 > 0
		CALL PRINT_COM_RESULT(@"%BASENAME:1%+{TCVAR:(ARG:0):HO気力増減値}")
	ELSEIF TCVAR:(ARG:0):HO気力増減値 < 0
		CALL PRINT_COM_RESULT(@"%BASENAME:1%{TCVAR:(ARG:0):HO気力増減値}")
	ENDIF
ENDIF

IF !TFLAG:95
	PRINTL
ENDIF

;-------------------------------------------------
;ARG:0番のキャラがコマンド実行により得たEXPを表示
;主導度・倒錯度の変化もここで処理
;-------------------------------------------------
@PRINT_EXP_UP(対象)
#DIM 対象
#DIM 主導度変化量
#DIM 倒錯度変化量
#DIM 倒錯度変化基準
LOCAL:5 = 1

TFLAG:94 = 対象
TFLAG:95 = 1

;●主導度・倒錯度の変動と表示
;能力固定フラグが立っている場合も変動させない
IF !CFLAG:対象:能力固定フラグ
	主導度変化量 = TFLAG:主導度変化基準値
	倒錯度変化量 = TFLAG:倒錯度変化基準値 + TCVAR:対象:50
	倒錯度変化基準 = TCVAR:対象:50

	IF TALENT:対象:Ｓ気質 && TFLAG:主導度変化基準値 > 0
		TIMES 主導度変化量, 2.00
	ENDIF
	IF TALENT:対象:Ｍ気質 && TFLAG:主導度変化基準値 < 0
		TIMES 主導度変化量, 2.00
	ENDIF
	IF TALENT:対象:倒錯的 && TFLAG:倒錯度変化基準値 > 0
		TIMES 倒錯度変化量, 2.00
		TIMES 倒錯度変化基準, 2.00
	ENDIF
	;自動コマンド実行では主導度変化量を減らす
	IF TFLAG:リアクションコマンド実行 || TFLAG:奉仕モード
		TIMES 主導度変化量, 0.25
	ENDIF

	IF IS_MPLY(対象)
		;ウフフ中
		IF FLAG:ウフフフラグ
			SELECTCASE GET_COM_INITIATIVE()
				CASE 0
				CASE 1
					主導度変化量 *= -1
				CASE 2
					主導度変化量 = 1
				CASE 3
					主導度変化量 = -1
			ENDSELECT
			ABL:対象:主導度Ｕ = LIMIT(ABL:対象:主導度Ｕ + 主導度変化量, -1000, 1000)
			;非ウフフ
		ELSE
			SELECTCASE GET_COM_INITIATIVE()
				CASE 0
				CASE 1
					主導度変化量 *= -1
			ENDSELECT
			ABL:対象:主導度Ｎ = LIMIT(ABL:対象:主導度Ｎ + 主導度変化量, -1000, 1000)
		ENDIF

	ELSEIF IS_MTAR(対象)
		;ウフフ中
		IF FLAG:ウフフフラグ
			SELECTCASE GET_COM_INITIATIVE()
				CASE 0
					主導度変化量 *= -1
				CASE 1
				CASE 2
					主導度変化量 = -1
				CASE 3
					主導度変化量 = 1
			ENDSELECT
			;非ウフフ
		ELSE
			SELECTCASE GET_COM_INITIATIVE()
				CASE 0
					主導度変化量 *= -1
				CASE 1
			ENDSELECT
		ENDIF

	ELSE
		主導度変化量 = 0
		倒錯度変化量 = 倒錯度変化基準
	ENDIF

	IF FLAG:ウフフフラグ
		;コマンドに参加しているほど、回復しにくくなる
		FOR LOCAL:0, 0, MEQUIP_NUM
			FOR LOCAL:1, 0, MEQUIP_PLAYER_NUM:(LOCAL:0)
				IF MEQUIP_PLAYER:(LOCAL:0):(LOCAL:1) == 対象
					FOR LOCAL:3, 0, MEQUIP_PLAYER_NUM:(LOCAL:0)
						IF MEQUIP_INITIATIVE:(LOCAL:0) == MEQUIP_PLAYER:(LOCAL:0):(LOCAL:3)
							主導度変化量 ++
							GOTO FOUND
						ENDIF
					NEXT
					FOR LOCAL:3, 0, MEQUIP_TARGET_NUM:(LOCAL:0)
						IF MEQUIP_INITIATIVE:(LOCAL:0) == MEQUIP_TARGET:(LOCAL:0):(LOCAL:3)
							主導度変化量 --
							GOTO FOUND
						ENDIF
					NEXT
					GOTO FOUND
				ENDIF
			NEXT
			FOR LOCAL:1, 0, MEQUIP_TARGET_NUM:(LOCAL:0)
				IF MEQUIP_TARGET:(LOCAL:0):(LOCAL:1) == 対象
					FOR LOCAL:3, 0, MEQUIP_TARGET_NUM:(LOCAL:0)
						IF MEQUIP_INITIATIVE:(LOCAL:0) == MEQUIP_TARGET:(LOCAL:0):(LOCAL:3)
							主導度変化量 ++
							GOTO FOUND
						ENDIF
					NEXT
					FOR LOCAL:3, 0, MEQUIP_PLAYER_NUM:(LOCAL:0)
						IF MEQUIP_INITIATIVE:(LOCAL:0) == MEQUIP_PLAYER:(LOCAL:0):(LOCAL:3)
							主導度変化量 --
							GOTO FOUND
						ENDIF
					NEXT
					GOTO FOUND
				ENDIF
			NEXT
			$FOUND
		NEXT
	ENDIF

	ABL:対象:倒錯度 = LIMIT(ABL:対象:倒錯度 + 倒錯度変化量, 0, 1000)

	IF FLAG:ウフフフラグ
		;スキルによる補正
		IF HAS_SKILL(対象, "WPN_SEXUAL_INITIATIVE", スキル_大分類_武器)
			IF 主導度変化量 > 0
				TIMES 主導度変化量, 4.00
			ELSE
				TIMES 主導度変化量, 0.50
			ENDIF
		ELSEIF HAS_SKILL(対象, "WPN_SEXUAL_FOLLOWER", スキル_大分類_武器)
			IF 主導度変化量 > 0
				TIMES 主導度変化量, 0.50
			ELSE
				TIMES 主導度変化量, 4.00
			ENDIF
		ENDIF
		ABL:対象:主導度Ｕ = LIMIT(ABL:対象:主導度Ｕ + 主導度変化量, -1000, 1000)
	ELSE
		ABL:対象:主導度Ｎ = LIMIT(ABL:対象:主導度Ｎ + 主導度変化量, -1000, 1000)
	ENDIF

	IF 主導度変化量 != 0
		CALL PRINT_COM_RESULT(@"主導度%TOSTR_SIGN(主導度変化量)%{ABS(主導度変化量)}")
	ENDIF
	IF 倒錯度変化量 != 0
		CALL PRINT_COM_RESULT(@"倒錯度%TOSTR_SIGN(倒錯度変化量)%{ABS(倒錯度変化量)}")
	ENDIF
ENDIF

;●主人公が取得できない経験をリセット
;IF 対象 == MASTER
;	EXP:MASTER:奉仕経験値 = TCVAR:MASTER:110
;	EXP:MASTER:性交経験値 = TCVAR:MASTER:111
;	EXP:MASTER:レズ経験値 = TCVAR:MASTER:112
;	EXP:MASTER:ＢＬ経験値 = TCVAR:MASTER:113
;	EXP:MASTER:露出経験値 = TCVAR:MASTER:114
;	EXP:MASTER:自慰経験値 = TCVAR:MASTER:115
;	EXP:MASTER:精愛経験値 = TCVAR:MASTER:116
;	EXP:MASTER:排泄経験値 = TCVAR:MASTER:119
;	EXP:MASTER:触手経験値 = TCVAR:MASTER:120
;	EXP:MASTER:出産経験値 = TCVAR:MASTER:121
;	EXP:MASTER:欲望経験値 = TCVAR:MASTER:131
;ENDIF

;●能力固定フラグが立っている場合、全ての経験をリセット
IF CFLAG:対象:能力固定フラグ
	FOR LOCAL:0, 0, 100
		EXP:対象:(LOCAL:0) = TCVAR:対象:(LOCAL:0 + 100)
	NEXT
ENDIF

;●経験の表示
FOR LOCAL:0, 0, 94
	IF EXP:対象:(LOCAL:0) > TCVAR:対象:(LOCAL:0 + 100)
		CALL PRINT_COM_RESULT(@"%EXPNAME:(LOCAL:0)%+{EXP:対象:(LOCAL:0) - TCVAR:対象:(LOCAL:0 + 100)}")
	ENDIF
NEXT

IF !TFLAG:95
	PRINTL
ENDIF

;-------------------------------------------------
;キャラARG:0にレベルARG:1の既成事実を取得させる関数(既に指定以上のレベルなら無視)
;-------------------------------------------------
@SET_COUPLE_STEP(ARG:0, ARG:1)
IF ARG:0 != MASTER && ARG:1 > MARK:(ARG:0):既成事実
	MARK:(ARG:0):既成事実 = ARG:1
	PRINTFORM %ANAME(ARG:0)%が
	SETCOLOR カラー_注意
	PRINTFORM 既成事実Lv{ARG:1}
	RESETCOLOR
	PRINTW を取得
ENDIF

;-------------------------------------------------
;同性の場合のソース補正
;-------------------------------------------------
@SOURCE_SEX_CHECK(ARG:0)
LOCAL:5 = -1
;自身がターゲットなら、プレイヤーに少なくとも一人同性のキャラが必要
IF IS_MTAR(ARG:0)
	FOR LOCAL:0, 0, MPLY_NUM
		IF IS_SAMESEX(MPLY:(LOCAL:0), ARG:0)
			IF IS_MALE(ARG:0, 1)
				LOCAL:5 = ABL:(ARG:0):ＢＬ
			ELSE
				LOCAL:5 = ABL:(ARG:0):レズ
			ENDIF
			BREAK
		ENDIF
	NEXT
	;自身がプレイヤーなら、ターゲットに少なくとも一人同性のキャラが必要
ELSEIF IS_MPLY(ARG:0)
	FOR LOCAL:0, 0, MTAR_NUM
		IF IS_SAMESEX(MTAR:(LOCAL:0), ARG:0)
			IF IS_MALE(ARG:0, 1)
				LOCAL:5 = ABL:(ARG:0):ＢＬ
			ELSE
				LOCAL:5 = ABL:(ARG:0):レズ
			ENDIF
			BREAK
		ENDIF
	NEXT
ENDIF

;同性補正を受ける状況でないなら戻る
IF LOCAL:5 == -1
	RETURN
ENDIF

;●快感ソースの補正
SELECTCASE LOCAL:5
	CASE 0
		LOCAL:6 = 700
	CASE 1
		LOCAL:6 = 850
	CASE 2
		LOCAL:6 = 1000
	CASE 3
		LOCAL:6 = 1050
	CASE 4
		LOCAL:6 = 1100
	CASEELSE
		LOCAL:6 = MIN(1150 + (LOCAL:5 - 5) * 5, 2000)
ENDSELECT
FOR LOCAL:0, 0, 5
	SOURCE:(ARG:0):(LOCAL:0) = SOURCE:(ARG:0):(LOCAL:0) * LOCAL:6 / 1000
NEXT

;●快感以外のソースの補正
;[両刀]がない相手にウフフコマンドを行った場合
IF !TALENT:(ARG:0):両刀 && FLAG:ウフフフラグ
	SELECTCASE LOCAL:5
		CASE 0
			SOURCE:(ARG:0):逸脱 += MIN(SOURCE:(ARG:0):接触, 150) * 3
		CASE 1
			SOURCE:(ARG:0):逸脱 += MIN(SOURCE:(ARG:0):接触, 150) * 2
		CASE 2
			SOURCE:(ARG:0):逸脱 += MIN(SOURCE:(ARG:0):接触, 150) * 1
		CASE 3
			SOURCE:(ARG:0):逸脱 += MIN(SOURCE:(ARG:0):接触, 150) / 2
		CASE 4
			SOURCE:(ARG:0):逸脱 += MIN(SOURCE:(ARG:0):接触, 150) / 5
	ENDSELECT
ENDIF

SELECTCASE LOCAL:5
	CASE 0
		TIMES SOURCE:(ARG:0):愛情, 0.20
		SOURCE:(ARG:0):中毒充足 += 0
	CASE 1
		TIMES SOURCE:(ARG:0):愛情, 0.50
		SOURCE:(ARG:0):中毒充足 += MIN(SOURCE:(ARG:0):接触, 150) / 10
	CASE 2
		TIMES SOURCE:(ARG:0):愛情, 0.80
		SOURCE:(ARG:0):中毒充足 += MIN(SOURCE:(ARG:0):接触, 150) / 3
	CASE 3
		TIMES SOURCE:(ARG:0):愛情, 1.00
		SOURCE:(ARG:0):中毒充足 += MIN(SOURCE:(ARG:0):接触, 150) * 1
	CASE 4
		TIMES SOURCE:(ARG:0):愛情, 1.05
		SOURCE:(ARG:0):中毒充足 += MIN(SOURCE:(ARG:0):接触, 150) * 3 / 2
	CASEELSE
		SOURCE:(ARG:0):愛情 = SOURCE:(ARG:0):愛情 * MIN(110 + (LOCAL:5 - 5), 150) / 100
		SOURCE:(ARG:0):中毒充足 += MIN(SOURCE:(ARG:0):接触, 150) * ((LOCAL:5 - 5) * 1 + 20) / 10
ENDSELECT

;-------------------------------------------------
;快感系の経験を取得
;ARG:0=キャラ番号 ARG:1=EXP番号 ARG:2=変動前のPALAM
;-------------------------------------------------
@ADD_EXP_SENSE(ARG:0, ARG:1, ARG:2)

IF NOWEX:(ARG:0):(ARG:1) >= 1
	SELECTCASE CUP:(ARG:0):(ARG:1)
		CASE IS < 1500
			LOCAL:5 = 3
		CASE IS < 3000
			LOCAL:5 = 5
		CASE IS < 6000
			LOCAL:5 = 15
		CASE IS < 30000
			LOCAL:5 = 25
		CASE IS < 50000
			LOCAL:5 = 35
		CASE IS < 100000
			LOCAL:5 = 60
		CASE IS < 200000
			LOCAL:5 = 80
		CASE IS < 400000
			LOCAL:5 = 120
		CASEELSE
			LOCAL:5 = 160
	ENDSELECT
	GOTO FINALLY
ENDIF

SIF PALAM:(ARG:0):(ARG:1) - ARG:2 == 0
	RETURN 0

SELECTCASE PALAM:(ARG:0):(ARG:1) - ARG:2
	CASE IS < 500
		LOCAL:5 = 1
	CASE IS < 1500
		LOCAL:5 = 2
	CASE IS < 3000
		LOCAL:5 = 4
	CASE IS < 5000
		LOCAL:5 = 8
	CASE IS < 7500
		LOCAL:5 = 12
	CASE IS < 10000
		LOCAL:5 = 17
	CASEELSE
		LOCAL:5 = 22
ENDSELECT

$FINALLY

SIF LOCAL:5 <= 0
	RETURN

FOR LOCAL, 0, 9
	SIF LOCAL == ARG:1
		CONTINUE
	LOCAL:5 += NOWEX:(ARG:0):LOCAL
NEXT
EXP:(ARG:0):(ARG:1) += LOCAL:5

;-------------------------------------------------
;各種経験の取得
;-------------------------------------------------
@EXP_GOT_CHECK(ARG:0)

;経験とコマンド実行回数を加算
IF IS_MPLY(ARG:0)
	COM_EXP:(ARG:0):SELECTCOM = MIN(COM_EXP:(ARG:0):SELECTCOM + 10, 99999990)
	COM_COUNT_THIS_TURN:(ARG:0):SELECTCOM:(COM_OPTION:SELECTCOM) ++
	COM_COUNT_THIS_TRAIN:(ARG:0):SELECTCOM:(COM_OPTION:SELECTCOM) ++
ELSEIF IS_MTAR(ARG:0)
	COM_EXP:(ARG:0):(SELECTCOM + 1000) = MIN(COM_EXP:(ARG:0):(SELECTCOM + 1000) + 10, 99999990)
	COM_COUNT_THIS_TURN:(ARG:0):(SELECTCOM + 1000):(COM_OPTION:SELECTCOM) ++
	COM_COUNT_THIS_TRAIN:(ARG:0):(SELECTCOM + 1000):(COM_OPTION:SELECTCOM) ++
ELSE
	COM_EXP:(ARG:0):(SELECTCOM + 2000) = MIN(COM_EXP:(ARG:0):(SELECTCOM + 2000) + 10, 99999990)
	COM_COUNT_THIS_TURN:(ARG:0):(SELECTCOM + 2000):(COM_OPTION:SELECTCOM) ++
	COM_COUNT_THIS_TRAIN:(ARG:0):(SELECTCOM + 2000):(COM_OPTION:SELECTCOM) ++
ENDIF

;継続中のコマンドにも半分の経験が入る
FOR LOCAL:0, 0, MAX_MEQUIP
	IF MEQUIP:(LOCAL:0) >= 0 && MEQUIP:(LOCAL:0) != SELECTCOM
		IF IS_MPLY_EQUIP(ARG:0, LOCAL:0)
			COM_EXP:(ARG:0):(MEQUIP:(LOCAL:0)) = MIN(COM_EXP:(ARG:0):(MEQUIP:(LOCAL:0)) + 5, 99999990)
			COM_COUNT_THIS_TURN:(ARG:0):(SELECTCOM):(COM_OPTION:SELECTCOM) ++
			COM_COUNT_THIS_TRAIN:(ARG:0):(SELECTCOM):(COM_OPTION:SELECTCOM) ++
		ELSEIF IS_MTAR_EQUIP(ARG:0, LOCAL:0)
			COM_EXP:(ARG:0):(MEQUIP:(LOCAL:0) + 1000) = MIN(COM_EXP:(ARG:0):(MEQUIP:(LOCAL:0) + 1000) + 5, 99999990)
			COM_COUNT_THIS_TURN:(ARG:0):(SELECTCOM + 1000):(COM_OPTION:SELECTCOM) ++
			COM_COUNT_THIS_TRAIN:(ARG:0):(SELECTCOM + 1000):(COM_OPTION:SELECTCOM) ++
		ELSE
			COM_EXP:(ARG:0):(MEQUIP:(LOCAL:0) + 2000) = MIN(COM_EXP:(ARG:0):(MEQUIP:(LOCAL:0) + 2000) + 5, 99999990)
			COM_COUNT_THIS_TURN:(ARG:0):(SELECTCOM + 2000):(COM_OPTION:SELECTCOM) ++
			COM_COUNT_THIS_TRAIN:(ARG:0):(SELECTCOM + 2000):(COM_OPTION:SELECTCOM) ++
		ENDIF
	ENDIF
NEXT

IF TCVAR:(ARG:0):催眠中 > 0
	EXP:(ARG:0):催眠経験値 += MAX(TCVAR:(ARG:0):催眠中 / 2 , 1)
	EXP:(ARG:0):被催眠経験 ++
	SEXUAL_PREFERENCE_EXP:(ARG:0):性的嗜好_催眠をかけられたい ++
	IF TCVAR:(ARG:0):催眠実行者 != -1
		EXP:(TCVAR:(ARG:0):催眠実行者):催眠経験値 ++
	ENDIF
ENDIF

;コマンド実行分
IF IS_MPLY(ARG:0)
	FOR LOCAL, 0, MTAR_NUM
		;獣姦経験
		IF FLAG:ウフフフラグ && IS_ANIMAL(MTAR:(LOCAL))
			EXP:(ARG:0):獣姦経験 ++
			SEXUAL_PREFERENCE_EXP:(ARG:0):性的嗜好_獣と交わりたい ++
		ENDIF
		;触手経験
		SIF TALENT:(MTAR:LOCAL):特殊勢力素質 == 特殊勢力_触手
			EXP:(ARG:0):触手経験値 ++
		;近親相姦経験
		IF FLAG:ウフフフラグ && (HAS_SAME_FATHER(ARG:0, MTAR:LOCAL) || HAS_SAME_MOTHER(ARG:0, MTAR:LOCAL) || IS_FATHER(ARG:0, MTAR:LOCAL) || IS_MOTHER(ARG:0, MTAR:LOCAL) || IS_FATHER(MTAR:LOCAL, ARG:0) || IS_MOTHER(MTAR:LOCAL, ARG:0))
			EXP:(ARG:0):近親相姦経験 ++
			SEXUAL_PREFERENCE_EXP:(ARG:0):性的嗜好_近親相姦したい ++
		ENDIF
	NEXT
ENDIF

IF IS_MTAR(ARG:0)
	FOR LOCAL, 0, MPLY_NUM
		;獣姦経験
		IF FLAG:ウフフフラグ && IS_ANIMAL(MPLY:(LOCAL))
			EXP:(ARG:0):獣姦経験 ++
			SEXUAL_PREFERENCE_EXP:(ARG:0):性的嗜好_獣と交わりたい ++
		ENDIF
		;触手経験
		IF TALENT:(MPLY:LOCAL):特殊勢力素質 == 特殊勢力_触手
			EXP:(ARG:0):触手経験値 ++
			SEXUAL_PREFERENCE_EXP:(ARG:0):性的嗜好_触手で犯されたい ++
		ENDIF
		;近親相姦経験
		IF FLAG:ウフフフラグ && (HAS_SAME_FATHER(ARG:0, MPLY:LOCAL) || HAS_SAME_MOTHER(ARG:0, MPLY:LOCAL) || IS_FATHER(ARG:0, MPLY:LOCAL) || IS_MOTHER(ARG:0, MPLY:LOCAL) || IS_FATHER(MPLY:LOCAL, ARG:0) || IS_MOTHER(MPLY:LOCAL, ARG:0))
			EXP:(ARG:0):近親相姦経験 ++
			SEXUAL_PREFERENCE_EXP:(ARG:0):性的嗜好_近親相姦したい ++
		ENDIF
	NEXT
ENDIF

;継続分
;獣姦経験(MEQUIP)
FOR LOCAL:0, 0, MEQUIP_NUM
	IF MEQUIP:(LOCAL:0) >= 0 && MEQUIP:(LOCAL:0) != SELECTCOM
		;対象のがプレイヤーになっているMEQUIPに関して、ターゲットに動物がいたら獣姦経験を加算
		IF IS_MPLY_EQUIP(ARG:0, LOCAL:0)
			FOR LOCAL:1, 0, MEQUIP_TARGET_NUM:(LOCAL:0)
				LOCAL:2 = MEQUIP_TARGET:(LOCAL:0):(LOCAL:1)
				IF FLAG:ウフフフラグ && IS_ANIMAL(LOCAL:2)
					EXP:(ARG:0):獣姦経験 ++
					SEXUAL_PREFERENCE_EXP:(ARG:0):性的嗜好_獣と交わりたい ++
				ENDIF
				IF FLAG:ウフフフラグ && (HAS_SAME_FATHER(ARG:0, LOCAL:2) || HAS_SAME_MOTHER(ARG:0, LOCAL:2) || IS_FATHER(ARG:0, LOCAL:2) || IS_MOTHER(ARG:0, LOCAL:2) || IS_FATHER(LOCAL:2, ARG:0) || IS_MOTHER(LOCAL:2, ARG:0))
					EXP:(ARG:0):近親相姦経験 ++
					SEXUAL_PREFERENCE_EXP:(ARG:0):性的嗜好_近親相姦したい ++
				ENDIF
				IF IS_SAMESEX(LOCAL:2, ARG:0)
					IF IS_MALE(ARG:0, 1)
						EXP:(ARG:0):ＢＬ経験値 += 1
					ELSE
						EXP:(ARG:0):レズ経験値 += 1
					ENDIF
					SEXUAL_PREFERENCE_EXP:(ARG:0):性的嗜好_同性と交わりたい ++
				ENDIF
			NEXT

			;上記のターゲットとプレイヤーが逆のバージョン
		ELSEIF IS_MTAR_EQUIP(ARG:0, LOCAL:0)
			FOR LOCAL:1, 0, MEQUIP_PLAYER_NUM:(LOCAL:0)
				LOCAL:2 = MEQUIP_PLAYER:(LOCAL:0):(LOCAL:1)
				IF FLAG:ウフフフラグ && IS_ANIMAL(LOCAL:2)
					EXP:(ARG:0):獣姦経験 ++
					SEXUAL_PREFERENCE_EXP:(ARG:0):性的嗜好_獣と交わりたい ++
				ENDIF
				IF FLAG:ウフフフラグ && (HAS_SAME_FATHER(ARG:0, LOCAL:2) || HAS_SAME_MOTHER(ARG:0, LOCAL:2) || IS_FATHER(ARG:0, LOCAL:2) || IS_MOTHER(ARG:0, LOCAL:2) || IS_FATHER(LOCAL:2, ARG:0) || IS_MOTHER(LOCAL:2, ARG:0))
					EXP:(ARG:0):近親相姦経験 ++
					SEXUAL_PREFERENCE_EXP:(ARG:0):性的嗜好_近親相姦したい ++
				ENDIF
				IF IS_SAMESEX(LOCAL:2, ARG:0)
					IF IS_MALE(ARG:0, 1)
						EXP:(ARG:0):ＢＬ経験値 += 1
					ELSE
						EXP:(ARG:0):レズ経験値 += 1
					ENDIF
					SEXUAL_PREFERENCE_EXP:(ARG:0):性的嗜好_同性と交わりたい ++
				ENDIF
			NEXT
		ENDIF
	ENDIF
NEXT

;●レズ・ＢＬ経験
IF TFLAG:レズ・ＢＬ経験基準値 > 0
	IF IS_MTAR(ARG:0)
		FOR LOCAL:0, 0, MPLY_NUM
			IF IS_SAMESEX(MPLY:(LOCAL:0), ARG:0) && MPLY:(LOCAL:0) != ARG:0
				IF IS_MALE(ARG:0, 1)
					EXP:(ARG:0):ＢＬ経験値 += TFLAG:レズ・ＢＬ経験基準値
				ELSE
					EXP:(ARG:0):レズ経験値 += TFLAG:レズ・ＢＬ経験基準値
				ENDIF
				SEXUAL_PREFERENCE_EXP:(ARG:0):性的嗜好_同性と交わりたい ++
			ENDIF
		NEXT
	ELSEIF IS_MPLY(ARG:0)
		FOR LOCAL:0, 0, MTAR_NUM
			IF IS_SAMESEX(MTAR:(LOCAL:0), ARG:0) && MTAR:(LOCAL:0) != ARG:0
				IF IS_MALE(ARG:0, 1)
					EXP:(ARG:0):ＢＬ経験値 += TFLAG:レズ・ＢＬ経験基準値
				ELSE
					EXP:(ARG:0):レズ経験値 += TFLAG:レズ・ＢＬ経験基準値
				ENDIF
				SEXUAL_PREFERENCE_EXP:(ARG:0):性的嗜好_同性と交わりたい ++
			ENDIF
		NEXT
	ENDIF
ENDIF

IF TFLAG:売春フラグ && TCVAR:(ARG:0):奉仕者フラグ == 1
	SEXUAL_PREFERENCE_EXP:(ARG:0):性的嗜好_春を売りたい ++
ELSEIF FLAG:調教モード == 調教_捕虜調教 && FINDELEMENT(PRISONER_TARGET, ARG:0) != -1
	SEXUAL_PREFERENCE_EXP:(ARG:0):性的嗜好_調教されたい ++
ENDIF

;●奉仕経験値
;奉仕経験値を得られるコマンドのフラグ
IF TCVAR:(ARG:0):奉仕経験取得可能
	LOCAL:0 = CUP_SENSE(ARG:0)
	LOCAL:1 = 0
	IF LOCAL:0 >= 12000
		LOCAL:1 = 16
		IF CUP:(ARG:0):怒主 > 0
			TIMES CUP:(ARG:0):怒主, 0.40
		ENDIF
	ELSEIF LOCAL:0 >= 8000
		LOCAL:1 = 12
		IF CUP:(ARG:0):怒主 > 0
			TIMES CUP:(ARG:0):怒主, 0.50
		ENDIF
	ELSEIF LOCAL:0 >= 5000
		LOCAL:1 = 8
		IF CUP:(ARG:0):怒主 > 0
			TIMES CUP:(ARG:0):怒主, 0.60
		ENDIF
	ELSEIF LOCAL:0 >= 3000
		LOCAL:1 = 4
		IF CUP:(ARG:0):怒主 > 0
			TIMES CUP:(ARG:0):怒主, 0.70
		ENDIF
	ELSEIF LOCAL:0 >= 1000
		LOCAL:1 = 2
		IF CUP:(ARG:0):怒主 > 0
			TIMES CUP:(ARG:0):怒主, 0.80
		ENDIF
	ELSEIF LOCAL:0 >= 300
		LOCAL:1 = 1
		IF CUP:(ARG:0):怒主 > 0
			TIMES CUP:(ARG:0):怒主, 0.90
		ENDIF
	ENDIF
	CALL CALC_ABLUP_EXP20(ARG:0)
	LOCAL:1 = MIN(LOCAL:1, RESULT * 2)

	EXP:(ARG:0):奉仕経験値 += LOCAL:1
ENDIF

;●苦痛快楽経験
LOCAL:0 = CUP_SENSE(ARG:0)
LOCAL:1 = 0
IF LOCAL:0 >= 3000 && SOURCE:(ARG:0):苦痛 >= 2000
	LOCAL:1 = 16
	IF CUP:(ARG:0):怒主 > 0
		TIMES CUP:(ARG:0):怒主, 0.40
	ENDIF
ELSEIF LOCAL:0 >= 2500 && SOURCE:(ARG:0):苦痛 >= 1500
	LOCAL:1 = 12
	IF CUP:(ARG:0):怒主 > 0
		TIMES CUP:(ARG:0):怒主, 0.50
	ENDIF
ELSEIF LOCAL:0 >= 1500 && SOURCE:(ARG:0):苦痛 >= 1000
	LOCAL:1 = 8
	IF CUP:(ARG:0):怒主 > 0
		TIMES CUP:(ARG:0):怒主, 0.60
	ENDIF
ELSEIF LOCAL:0 >= 1000 && SOURCE:(ARG:0):苦痛 >= 500
	LOCAL:1 = 4
	IF CUP:(ARG:0):怒主 > 0
		TIMES CUP:(ARG:0):怒主, 0.70
	ENDIF
ELSEIF LOCAL:0 >= 600 && SOURCE:(ARG:0):苦痛 >= 300
	LOCAL:1 = 2
	IF CUP:(ARG:0):怒主 > 0
		TIMES CUP:(ARG:0):怒主, 0.80
	ENDIF
ELSEIF LOCAL:0 >= 300 && SOURCE:(ARG:0):苦痛 >= 100
	LOCAL:1 = 1
	IF CUP:(ARG:0):怒主 > 0
		TIMES CUP:(ARG:0):怒主, 0.90
	ENDIF
ENDIF
EXP:(ARG:0):苦痛快楽経験 += LOCAL:1

;●露出快楽経験
LOCAL:0 = CUP_SENSE(ARG:0)
LOCAL:1 = 0
IF LOCAL:0 >= 10000 && SOURCE:(ARG:0):露出保存 >= 2000
	LOCAL:1 = 16
ELSEIF LOCAL:0 >= 6000 && SOURCE:(ARG:0):露出保存 >= 1500
	LOCAL:1 = 12
ELSEIF LOCAL:0 >= 3000 && SOURCE:(ARG:0):露出保存 >= 1000
	LOCAL:1 = 8
ELSEIF LOCAL:0 >= 1500 && SOURCE:(ARG:0):露出保存 >= 600
	LOCAL:1 = 4
ELSEIF LOCAL:0 >= 600 && SOURCE:(ARG:0):露出保存 >= 300
	LOCAL:1 = 2
ELSEIF LOCAL:0 >= 300 && SOURCE:(ARG:0):露出保存 >= 100
	LOCAL:1 = 1
ENDIF
EXP:(ARG:0):露出経験値 += LOCAL:1

;●トラウマ経験の取得
LOCAL:0 = CUP:(ARG:0):怖主
IF LOCAL:0 >= 10000
	EXP:(ARG:0):トラウマ経験 += 16
ELSEIF LOCAL:0 >= 5000
	EXP:(ARG:0):トラウマ経験 += 8
ELSEIF LOCAL:0 >= 3000
	EXP:(ARG:0):トラウマ経験 += 4
ELSEIF LOCAL:0 >= 1500
	EXP:(ARG:0):トラウマ経験 += 2
ELSEIF LOCAL:0 >= 500
	EXP:(ARG:0):トラウマ経験 += 1
ENDIF

;-------------------------------------------------
;性癖設定に応じたソースの追加
;-------------------------------------------------
@ADD_SOURCE_TENDENCY(ARG:0)
;今回実行したコマンドの処理
IF IS_MPLY(ARG:0)
	SELECTCASE COM_TENDENCY:(ARG:0):SELECTCOM
		CASE 1
			SOURCE:(ARG:0):中毒充足 += 200
		CASE 2
			SOURCE:(ARG:0):中毒充足 += 500
		CASE 3
			SOURCE:(ARG:0):中毒充足 += 1000
	ENDSELECT
ELSEIF IS_MTAR(ARG:0)
	SELECTCASE COM_TENDENCY:(ARG:0):(SELECTCOM + 1000)
		CASE 1
			SOURCE:(ARG:0):中毒充足 += 200
		CASE 2
			SOURCE:(ARG:0):中毒充足 += 500
		CASE 3
			SOURCE:(ARG:0):中毒充足 += 1000
	ENDSELECT
ELSE
	SELECTCASE COM_TENDENCY:(ARG:0):(SELECTCOM + 2000)
		CASE 1
			SOURCE:(ARG:0):中毒充足 += 100
		CASE 2
			SOURCE:(ARG:0):中毒充足 += 250
		CASE 3
			SOURCE:(ARG:0):中毒充足 += 500
	ENDSELECT
ENDIF

;EQUIP関係の処理
FOR LOCAL:0, 0, MAX_MEQUIP
	IF MEQUIP:(LOCAL:0) >= 0
		LOCAL:5 = 2
		FOR LOCAL:1, 0, MEQUIP_PLAYER_NUM:(LOCAL:0)
			IF MEQUIP_PLAYER:(LOCAL:0):(LOCAL:1) == ARG:0
				LOCAL:5 = 0
				BREAK
			ENDIF
		NEXT
		IF LOCAL:5 == 2
			FOR LOCAL:1, 0, MEQUIP_TARGET_NUM:(LOCAL:0)
				IF MEQUIP_TARGET:(LOCAL:0):(LOCAL:1) == ARG:0
					LOCAL:5 = 1
					BREAK
				ENDIF
			NEXT
		ENDIF
		IF SELECTCOM >= 0 && SELECTCOM <= 299
			IF LOCAL:5 == 0
				SELECTCASE COM_TENDENCY:(ARG:0):SELECTCOM
					CASE 1
						SOURCE:(ARG:0):中毒充足 += 100
					CASE 2
						SOURCE:(ARG:0):中毒充足 += 250
					CASE 3
						SOURCE:(ARG:0):中毒充足 += 500
				ENDSELECT
			ELSEIF LOCAL:5 == 1
				SELECTCASE COM_TENDENCY:(ARG:0):(SELECTCOM + 1000)
					CASE 1
						SOURCE:(ARG:0):中毒充足 += 100
					CASE 2
						SOURCE:(ARG:0):中毒充足 += 250
					CASE 3
						SOURCE:(ARG:0):中毒充足 += 500
				ENDSELECT
			ELSE

				SELECTCASE COM_TENDENCY:(ARG:0):(SELECTCOM + 2000)
					CASE 1
						SOURCE:(ARG:0):中毒充足 += 50
					CASE 2
						SOURCE:(ARG:0):中毒充足 += 125
					CASE 3
						SOURCE:(ARG:0):中毒充足 += 250
				ENDSELECT
			ENDIF
		ENDIF
	ENDIF
NEXT


code:
;SOURCE_CHECKで使用する関数(TALENT系)

;-------------------------------------------------
;素質などによるパラメータ上昇の補正(快楽系)
;-------------------------------------------------
@UP_TALENT_CHECK1(ARG:0)
IF TALENT:(ARG:0):自制心 && !GETBIT(TALENT:(ARG:0):淫乱系, 素質_淫乱_淫乱)
	IF !IS_FALLEN(ARG:0)
		TIMES CUP:(ARG:0):快Ｃ, 0.75
		TIMES CUP:(ARG:0):快Ｖ, 0.70
		TIMES CUP:(ARG:0):快Ａ, 0.80
		TIMES CUP:(ARG:0):快Ｂ, 0.60
		TIMES CUP:(ARG:0):快Ｍ, 0.80
		TIMES CUP:(ARG:0):快Ｕ, 0.80
	ENDIF
ENDIF

;機嫌の影響
SELECTCASE TOSTR_EMOTION(ARG:0)
	CASE "幸"
		TIMES CUP:(ARG:0):快Ｃ, 1.30
		TIMES CUP:(ARG:0):快Ｖ, 1.30
		TIMES CUP:(ARG:0):快Ａ, 1.30
		TIMES CUP:(ARG:0):快Ｂ, 1.30
		TIMES CUP:(ARG:0):快Ｍ, 1.30
		TIMES CUP:(ARG:0):快Ｕ, 1.30
	CASE "悦"
		TIMES CUP:(ARG:0):快Ｃ, 1.20
		TIMES CUP:(ARG:0):快Ｖ, 1.20
		TIMES CUP:(ARG:0):快Ａ, 1.20
		TIMES CUP:(ARG:0):快Ｂ, 1.20
		TIMES CUP:(ARG:0):快Ｍ, 1.20
		TIMES CUP:(ARG:0):快Ｕ, 1.20
	CASE "良"
		TIMES CUP:(ARG:0):快Ｃ, 1.10
		TIMES CUP:(ARG:0):快Ｖ, 1.10
		TIMES CUP:(ARG:0):快Ａ, 1.10
		TIMES CUP:(ARG:0):快Ｂ, 1.10
		TIMES CUP:(ARG:0):快Ｍ, 1.10
		TIMES CUP:(ARG:0):快Ｕ, 1.10
	CASE "恨"
	CASE "怒"
	CASE "憤"
	CASE "鬱"
		TIMES CUP:(ARG:0):快Ｃ, 0.60
		TIMES CUP:(ARG:0):快Ｖ, 0.60
		TIMES CUP:(ARG:0):快Ａ, 0.60
		TIMES CUP:(ARG:0):快Ｂ, 0.60
		TIMES CUP:(ARG:0):快Ｍ, 0.60
		TIMES CUP:(ARG:0):快Ｕ, 0.60
	CASE "悲"
		TIMES CUP:(ARG:0):快Ｃ, 0.75
		TIMES CUP:(ARG:0):快Ｖ, 0.75
		TIMES CUP:(ARG:0):快Ａ, 0.75
		TIMES CUP:(ARG:0):快Ｂ, 0.75
		TIMES CUP:(ARG:0):快Ｍ, 0.75
		TIMES CUP:(ARG:0):快Ｕ, 0.75
	CASE "憂"
		TIMES CUP:(ARG:0):快Ｃ, 0.80
		TIMES CUP:(ARG:0):快Ｖ, 0.80
		TIMES CUP:(ARG:0):快Ａ, 0.80
		TIMES CUP:(ARG:0):快Ｂ, 0.80
		TIMES CUP:(ARG:0):快Ｍ, 0.80
		TIMES CUP:(ARG:0):快Ｕ, 0.80
	CASE "狂"
	CASE "恐"
	CASE "怯"
	CASE "壊"
		TIMES CUP:(ARG:0):快Ｃ, 0.50
		TIMES CUP:(ARG:0):快Ｖ, 0.50
		TIMES CUP:(ARG:0):快Ａ, 0.50
		TIMES CUP:(ARG:0):快Ｂ, 0.50
		TIMES CUP:(ARG:0):快Ｍ, 0.50
		TIMES CUP:(ARG:0):快Ｕ, 0.50
	CASE "虚"
		TIMES CUP:(ARG:0):快Ｃ, 0.85
		TIMES CUP:(ARG:0):快Ｖ, 0.85
		TIMES CUP:(ARG:0):快Ａ, 0.85
		TIMES CUP:(ARG:0):快Ｂ, 0.85
		TIMES CUP:(ARG:0):快Ｍ, 0.85
		TIMES CUP:(ARG:0):快Ｕ, 0.85
ENDSELECT

;男性・男の娘
IF !HAS_VAGINA(ARG:0)
	TIMES CUP:(ARG:0):快Ａ, 1.20
ENDIF

;目隠し
IF IS_EQUIP_TARGET(ARG:0, 84)
	TIMES CUP:(ARG:0):快Ｃ, 1.10
	TIMES CUP:(ARG:0):快Ｖ, 1.10
	TIMES CUP:(ARG:0):快Ａ, 1.10
	TIMES CUP:(ARG:0):快Ｂ, 1.10
	TIMES CUP:(ARG:0):快Ｍ, 1.10
	TIMES CUP:(ARG:0):快Ｕ, 1.10
ENDIF

IF GETBIT(TALENT:(ARG:0):淫乱系, 素質_淫乱_浮気癖)
	IF ((IS_MPLY(MASTER) && IS_MTAR(ARG:0)) || (IS_MPLY(ARG:0) && IS_MTAR(MASTER)))
		TIMES CUP:(ARG:0):快Ｃ, 0.7
		TIMES CUP:(ARG:0):快Ｖ, 0.7
		TIMES CUP:(ARG:0):快Ａ, 0.7
		TIMES CUP:(ARG:0):快Ｂ, 0.7
		TIMES CUP:(ARG:0):快Ｍ, 0.7
		TIMES CUP:(ARG:0):快Ｕ, 0.7
	ELSE
		TIMES CUP:(ARG:0):快Ｃ, 1.15
		TIMES CUP:(ARG:0):快Ｖ, 1.15
		TIMES CUP:(ARG:0):快Ａ, 1.15
		TIMES CUP:(ARG:0):快Ｂ, 1.15
		TIMES CUP:(ARG:0):快Ｍ, 1.15
		TIMES CUP:(ARG:0):快Ｕ, 1.15
	ENDIF
ENDIF

;-------------------------------------------------
;素質などによるパラメータ上昇の補正(快楽系以外)
;-------------------------------------------------
@UP_TALENT_CHECK2(ARG:0)
;TRAINの外で欲情がリセットされないままこの関数が呼び出されたことでオーバーフローの可能性があった
;機嫌系を別関数に切り出してこっちから呼び出す

IF TALENT:(ARG:0):反抗的
	TIMES CUP:(ARG:0):欲情, 0.70
ENDIF

IF TALENT:(ARG:0):気丈
	TIMES CUP:(ARG:0):欲情, 0.8
ENDIF

IF TALENT:(ARG:0):大人しい
	TIMES CUP:(ARG:0):欲情, 0.8
ENDIF

IF TALENT:(ARG:0):無関心
	TIMES CUP:(ARG:0):欲情, 0.7
ENDIF

IF TALENT:(ARG:0):感情乏しい
	TIMES CUP:(ARG:0):欲情, 0.7
ENDIF

IF TALENT:(ARG:0):抑圧
	CUP:(ARG:0):欲情 = CUP:(ARG:0):欲情 * (125 - YOKUATSU_RATE(ARG:0)) / 125
ENDIF

IF TALENT:(ARG:0):解放
	TIMES CUP:(ARG:0):欲情, 1.5
ENDIF

IF TALENT:(ARG:0):孤高
	TIMES CUP:(ARG:0):欲情, 0.80
ENDIF

SIF TALENT:(ARG:0):快感に素直
	TIMES CUP:(ARG:0):欲情, 1.8
SIF TALENT:(ARG:0):快感の否定
	TIMES CUP:(ARG:0):欲情, 0.7

IF GETBIT(TALENT:(ARG:0):淫乱系, 素質_淫乱_浮気癖)
	IF ((IS_MPLY(MASTER) && IS_MTAR(ARG:0)) || (IS_MPLY(ARG:0) && IS_MTAR(MASTER)))
		TIMES CUP:(ARG:0):欲情, 0.8
	ELSE
		TIMES CUP:(ARG:0):欲情, 1.5
	ENDIF
ENDIF

;機嫌の影響
SELECTCASE TOSTR_EMOTION(ARG:0)
	CASE "幸"
		TIMES CUP:(ARG:0):欲情, 1.15
	CASE "悦"
		TIMES CUP:(ARG:0):欲情, 1.10
	CASE "良"
		TIMES CUP:(ARG:0):欲情, 1.05
	CASE "恨"
	CASE "怒"
	CASE "憤"
	CASE "鬱"
		TIMES CUP:(ARG:0):欲情, 0.30
	CASE "悲"
		TIMES CUP:(ARG:0):欲情, 0.60
	CASE "憂"
		TIMES CUP:(ARG:0):欲情, 0.80
	CASE "狂"
	CASE "恐"
	CASE "怯"
	CASE "壊"
		TIMES CUP:(ARG:0):欲情, 0.20
	CASE "虚"
		TIMES CUP:(ARG:0):欲情, 0.60
ENDSELECT

;機嫌系を後から呼び出す
CALL UP_TALENT_CHECK3(ARG:0)

;素質などによるパラメータ上昇の補正(機嫌系)
;TRAINの外でCUPを安全に扱うために機嫌を隔離
@UP_TALENT_CHECK3(ARG:0)
;目隠し
IF IS_EQUIP_TARGET(ARG:0, 84)
	TIMES CUP:(ARG:0):怖主, 1.20
ENDIF

IF TALENT:(ARG:0):臆病
	IF CUP:(ARG:0):怒主 > 0
		TIMES CUP:(ARG:0):怒主, 0.75
	ENDIF
	IF CUP:(ARG:0):哀主 > 0
		TIMES CUP:(ARG:0):哀主, 1.2
	ENDIF
	IF CUP:(ARG:0):怖主 > 0
		TIMES CUP:(ARG:0):怖主, 1.3
	ENDIF
ENDIF

IF TALENT:(ARG:0):反抗的
	IF CUP:(ARG:0):怒主 > 0
		IF TALENT:(ARG:0):子供人質
			TIMES CUP:(ARG:0):怒主, 1.2
		ELSE
			TIMES CUP:(ARG:0):怒主, 1.4
		ENDIF
	ENDIF
ENDIF

IF TALENT:(ARG:0):気丈
	IF CUP:(ARG:0):怒主 > 0
		IF TALENT:(ARG:0):子供人質
			TIMES CUP:(ARG:0):怒主, 1.1
		ELSE
			TIMES CUP:(ARG:0):怒主, 1.2
		ENDIF
	ENDIF
	IF CUP:(ARG:0):哀主 > 0
		TIMES CUP:(ARG:0):哀主, 0.7
	ENDIF
	IF CUP:(ARG:0):怖主 > 0
		TIMES CUP:(ARG:0):怖主, 0.7
	ENDIF
ENDIF

IF TALENT:(ARG:0):素直
	IF CUP:(ARG:0):怒主 > 0
		TIMES CUP:(ARG:0):怒主, 0.8
	ENDIF
ENDIF

IF TALENT:(ARG:0):大人しい
	IF CUP:(ARG:0):怒主 > 0
		TIMES CUP:(ARG:0):怒主, 0.6
	ENDIF
	IF CUP:(ARG:0):哀主 > 0
		TIMES CUP:(ARG:0):哀主, 1.5
	ENDIF
ENDIF

IF TALENT:(ARG:0):プライド高い
	IF CUP:(ARG:0):怒主 > 0
		IF TALENT:(ARG:0):子供人質
			TIMES CUP:(ARG:0):怒主, 1.2
		ELSE
			TIMES CUP:(ARG:0):怒主, 1.4
		ENDIF
	ENDIF
	IF CUP:(ARG:0):怖主 > 0
		TIMES CUP:(ARG:0):怖主, 0.8
	ENDIF
ENDIF

IF TALENT:(ARG:0):プライド低い
	IF CUP:(ARG:0):怒主 > 0
		TIMES CUP:(ARG:0):怒主, 0.8
	ENDIF
	IF CUP:(ARG:0):怖主 > 0
		TIMES CUP:(ARG:0):怖主, 1.2
	ENDIF
ENDIF

IF TALENT:(ARG:0):無関心
	TIMES CUP:(ARG:0):怒主, 0.7
	TIMES CUP:(ARG:0):哀主, 0.7
	TIMES CUP:(ARG:0):怖主, 0.7
ENDIF

IF TALENT:(ARG:0):感情乏しい
	TIMES CUP:(ARG:0):怒主, 0.5
	TIMES CUP:(ARG:0):哀主, 0.5
	TIMES CUP:(ARG:0):怖主, 0.5
ENDIF

IF TALENT:(ARG:0):好奇心
	IF CUP:(ARG:0):怒主 > 0
		TIMES CUP:(ARG:0):怒主, 0.9
	ENDIF
	IF CUP:(ARG:0):怖主 > 0
		TIMES CUP:(ARG:0):怖主, 0.9
	ENDIF
ENDIF

IF TALENT:(ARG:0):保守的
	IF CUP:(ARG:0):怒主 > 0
		IF TALENT:(ARG:0):子供人質
			TIMES CUP:(ARG:0):怒主, 1.1
		ELSE
			TIMES CUP:(ARG:0):怒主, 1.2
		ENDIF
	ENDIF
	IF CUP:(ARG:0):怖主 > 0
		TIMES CUP:(ARG:0):怖主, 1.20
	ENDIF
ENDIF

IF TALENT:(ARG:0):楽観的
	IF CUP:(ARG:0):哀主 > 0
		TIMES CUP:(ARG:0):哀主, 0.6
	ENDIF
	IF CUP:(ARG:0):怖主 > 0
		TIMES CUP:(ARG:0):怖主, 0.80
	ENDIF
ENDIF

IF TALENT:(ARG:0):悲観的
	IF CUP:(ARG:0):哀主 > 0
		TIMES CUP:(ARG:0):哀主, 1.5
	ENDIF
	IF CUP:(ARG:0):怖主 > 0
		TIMES CUP:(ARG:0):怖主, 1.1
	ENDIF
ENDIF

IF TALENT:(ARG:0):抑圧
	CUP:(ARG:0):怒主 = CUP:(ARG:0):怒主 * (150 - YOKUATSU_RATE(ARG:0)) / 150
	CUP:(ARG:0):哀主 = CUP:(ARG:0):哀主 * (150 - YOKUATSU_RATE(ARG:0)) / 150
	CUP:(ARG:0):怖主 = CUP:(ARG:0):怖主 * (150 - YOKUATSU_RATE(ARG:0)) / 150
ENDIF

IF TALENT:(ARG:0):解放
	TIMES CUP:(ARG:0):怒主, 1.15
	TIMES CUP:(ARG:0):哀主, 1.15
	TIMES CUP:(ARG:0):怖主, 0.9
ENDIF

IF TALENT:(ARG:0):孤高
	TIMES CUP:(ARG:0):哀主, 0.75
	TIMES CUP:(ARG:0):怖主, 0.5
	IF CUP:(ARG:0):怒主 > 0
		IF TALENT:(ARG:0):子供人質
			TIMES CUP:(ARG:0):怒主, 1.15
		ELSE
			TIMES CUP:(ARG:0):怒主, 1.2
		ENDIF
	ENDIF
ENDIF

IF TALENT:(ARG:0):Ｓ気質
	IF CUP:(ARG:0):怒主 > 0
		IF TALENT:(ARG:0):子供人質
			TIMES CUP:(ARG:0):怒主, 1.1
		ELSE
			TIMES CUP:(ARG:0):怒主, 1.15
		ENDIF
	ENDIF
	IF CUP:(ARG:0):怖主 > 0
		TIMES CUP:(ARG:0):怖主, 0.80
	ENDIF
ENDIF

IF TALENT:(ARG:0):小悪魔
	IF CUP:(ARG:0):怒主 > 0
		TIMES CUP:(ARG:0):怒主, 0.90
	ENDIF
	IF CUP:(ARG:0):哀主 > 0
		TIMES CUP:(ARG:0):哀主, 0.60
	ENDIF
	IF CUP:(ARG:0):怖主 > 0
		TIMES CUP:(ARG:0):怖主, 0.60
	ENDIF
ENDIF

IF (IS_MPLY(ARG:0) && IS_MTAR(MASTER)) || (IS_MTAR(ARG:0) && IS_MPLY(MASTER))
	IF TALENT:(ARG:0):親愛
		CUP:(ARG:0):怒主 = SET_RATE_EMOTION(CUP:(ARG:0):怒主,  60, 200)
		CUP:(ARG:0):哀主 = SET_RATE_EMOTION(CUP:(ARG:0):哀主,  60, 200)
		CUP:(ARG:0):怖主 = SET_RATE_EMOTION(CUP:(ARG:0):怖主,  60, 200)
	ELSEIF TALENT:(ARG:0):恋慕 || TALENT:(ARG:0):親友
		CUP:(ARG:0):怒主 = SET_RATE_EMOTION(CUP:(ARG:0):怒主,  80, 150)
		CUP:(ARG:0):哀主 = SET_RATE_EMOTION(CUP:(ARG:0):哀主,  80, 150)
		CUP:(ARG:0):怖主 = SET_RATE_EMOTION(CUP:(ARG:0):怖主,  80, 150)
	ELSEIF TALENT:(ARG:0):恋人
		CUP:(ARG:0):怒主 = SET_RATE_EMOTION(CUP:(ARG:0):怒主,  80, 120)
		CUP:(ARG:0):哀主 = SET_RATE_EMOTION(CUP:(ARG:0):哀主,  80, 120)
		CUP:(ARG:0):怖主 = SET_RATE_EMOTION(CUP:(ARG:0):怖主,  80, 120)
	ENDIF

	IF TALENT:(ARG:0):隷属
		CUP:(ARG:0):怒主 = SET_RATE_EMOTION(CUP:(ARG:0):怒主,  10, 300)
		CUP:(ARG:0):哀主 = SET_RATE_EMOTION(CUP:(ARG:0):哀主,  20, 250)
		CUP:(ARG:0):怖主 = SET_RATE_EMOTION(CUP:(ARG:0):怖主, 150,  50)
	ELSEIF TALENT:(ARG:0):服従
		CUP:(ARG:0):怒主 = SET_RATE_EMOTION(CUP:(ARG:0):怒主,  50, 200)
		CUP:(ARG:0):哀主 = SET_RATE_EMOTION(CUP:(ARG:0):哀主,  50, 200)
		CUP:(ARG:0):怖主 = SET_RATE_EMOTION(CUP:(ARG:0):怖主, 125,  75)
	ENDIF

	IF TALENT:(ARG:0):所有者
		CUP:(ARG:0):怒主 = SET_RATE_EMOTION(CUP:(ARG:0):怒主,  60, 200)
		CUP:(ARG:0):哀主 = SET_RATE_EMOTION(CUP:(ARG:0):哀主,  60, 200)
		CUP:(ARG:0):怖主 = SET_RATE_EMOTION(CUP:(ARG:0):怖主,  60, 200)
	ELSEIF TALENT:(ARG:0):主人
		CUP:(ARG:0):怒主 = SET_RATE_EMOTION(CUP:(ARG:0):怒主,  80, 150)
		CUP:(ARG:0):哀主 = SET_RATE_EMOTION(CUP:(ARG:0):哀主,  80, 150)
		CUP:(ARG:0):怖主 = SET_RATE_EMOTION(CUP:(ARG:0):怖主,  80, 150)
	ENDIF

	IF TALENT:(ARG:0):烙印
		CUP:(ARG:0):怒主 = SET_RATE_EMOTION(CUP:(ARG:0):怒主,  75, 125)
		CUP:(ARG:0):怖主 = SET_RATE_EMOTION(CUP:(ARG:0):怖主, 110,  75)
	ENDIF
ENDIF

;Ａ快楽による補正
LOCAL:0 = CUP:(ARG:0):快Ａ
IF LOCAL:0 >= 12000
	IF CUP:(ARG:0):怒主 > 0
		TIMES CUP:(ARG:0):怒主, 0.70
	ENDIF
ELSEIF LOCAL:0 >= 8000
	IF CUP:(ARG:0):怒主 > 0
		TIMES CUP:(ARG:0):怒主, 0.75
	ENDIF
ELSEIF LOCAL:0 >= 5000
	IF CUP:(ARG:0):怒主 > 0
		TIMES CUP:(ARG:0):怒主, 0.80
	ENDIF
ELSEIF LOCAL:0 >= 3000
	IF CUP:(ARG:0):怒主 > 0
		TIMES CUP:(ARG:0):怒主, 0.85
	ENDIF
ELSEIF LOCAL:0 >= 2000
	IF CUP:(ARG:0):怒主 > 0
		TIMES CUP:(ARG:0):怒主, 0.90
	ENDIF
ELSEIF LOCAL:0 >= 1000
	IF CUP:(ARG:0):怒主 > 0
		TIMES CUP:(ARG:0):怒主, 0.95
	ENDIF
ENDIF

;機嫌の影響
SELECTCASE TOSTR_EMOTION(ARG:0)
	CASE "幸"
	CASE "悦"
	CASE "良"
	CASE "恨"
	CASE "怒"
	CASE "憤"
	CASE "鬱"
	CASE "悲"
	CASE "憂"
	CASE "狂"
	CASE "恐"
	CASE "怯"
	CASE "壊"
		CUP:(ARG:0):怒主 = 0
		CUP:(ARG:0):哀主 = 0
		CUP:(ARG:0):怖主 = 0
	CASE "虚"
ENDSELECT

;精神力の影響
IF MAXBASE:(ARG:0):精神力 > 0
	LOCAL:0 = BASE:(ARG:0):精神力 * 100 / MAXBASE:(ARG:0):精神力
ELSE
	LOCAL:0 = 100
ENDIF
IF LOCAL:0 < 50
	TIMES CUP:(ARG:0):怒主, 0.10
	TIMES CUP:(ARG:0):哀主, 0.10
	TIMES CUP:(ARG:0):怖主, 1.7
ELSEIF LOCAL:0 < 75
	TIMES CUP:(ARG:0):怒主, 0.50
	TIMES CUP:(ARG:0):哀主, 0.50
	TIMES CUP:(ARG:0):怖主, 1.25
ENDIF

;酔いの影響
IF PALAM:(ARG:0):酔い >= 150
	CUP:(ARG:0):怒主 = MIN(CUP:(ARG:0):怒主 * (15000 - PALAM:(ARG:0):酔い) / 15000, CUP:(ARG:0):怒主) - PALAM:(ARG:0):酔い / 150
	CUP:(ARG:0):哀主 = MIN(CUP:(ARG:0):哀主 * (15000 - PALAM:(ARG:0):酔い) / 15000, CUP:(ARG:0):哀主) - PALAM:(ARG:0):酔い / 150
	CUP:(ARG:0):怖主 = MIN(CUP:(ARG:0):怖主 * (15000 - PALAM:(ARG:0):酔い) / 15000, CUP:(ARG:0):怖主) - PALAM:(ARG:0):酔い / 150
ENDIF

IF TALENT:(ARG:0):抑圧
	;全ての感情が自動的に0に近づく
	CUP:(ARG:0):怒主 -= SIGN(PALAM:(ARG:0):怒主 + CUP:(ARG:0):怒主) * MIN(100, ABS(PALAM:(ARG:0):怒主 + CUP:(ARG:0):怒主))
	CUP:(ARG:0):哀主 -= SIGN(PALAM:(ARG:0):哀主 + CUP:(ARG:0):哀主) * MIN(100, ABS(PALAM:(ARG:0):哀主 + CUP:(ARG:0):哀主))
	CUP:(ARG:0):怖主 -= SIGN(PALAM:(ARG:0):怖主 + CUP:(ARG:0):怖主) * MIN(100, ABS(PALAM:(ARG:0):怖主 + CUP:(ARG:0):怖主))
	CUP:(ARG:0):怒外 -= SIGN(PALAM:(ARG:0):怒外 + CUP:(ARG:0):怒外) * MIN(100, ABS(PALAM:(ARG:0):怒外 + CUP:(ARG:0):怒外))
	CUP:(ARG:0):哀外 -= SIGN(PALAM:(ARG:0):哀外 + CUP:(ARG:0):哀外) * MIN(100, ABS(PALAM:(ARG:0):哀外 + CUP:(ARG:0):哀外))
	CUP:(ARG:0):怖外 -= SIGN(PALAM:(ARG:0):怖外 + CUP:(ARG:0):怖外) * MIN(100, ABS(PALAM:(ARG:0):怖外 + CUP:(ARG:0):怖外))
ENDIF

;ツンデレ＆恋慕＆非恋人＆「会いに行く」＆非ウフフ
IF TALENT:(ARG:0):ツンデレ && !IS_LOVER(ARG:0) && !IS_SLAVE(ARG:0) && FLAG:調教モード == 0 && !FLAG:ウフフフラグ
	;怒・哀の感情が下がらない
	CUP:(ARG:0):怒主 = MAX(CUP:(ARG:0):怒主, 0)
	CUP:(ARG:0):哀主 = MAX(CUP:(ARG:0):哀主, 0)
ENDIF
;-------------------------------------------------
;素質<抑圧>による諸々の補正率を返す関数 ARG:0は対象のキャラ番号
;-------------------------------------------------
@YOKUATSU_RATE(ARG:0)
#FUNCTION
IF CFLAG:(ARG:0):依存度 < 10
	RETURNF 70
ELSEIF CFLAG:(ARG:0):依存度 < 50
	RETURNF 60
ELSEIF CFLAG:(ARG:0):依存度 < 100
	RETURNF 50
ELSEIF CFLAG:(ARG:0):依存度 < 200
	RETURNF 40
ELSEIF CFLAG:(ARG:0):依存度 < 300
	RETURNF 30
ELSEIF CFLAG:(ARG:0):依存度 < 500
	RETURNF 20
ELSEIF CFLAG:(ARG:0):依存度 < 800
	RETURNF 10
ELSEIF CFLAG:(ARG:0):依存度 < 1500
	RETURNF 5
ELSEIF CFLAG:(ARG:0):依存度 < 3000
	RETURNF 1
ENDIF
RETURNF 1

;-------------------------------------------------
;素質<孤高>による諸々の補正率を返す関数 ARG:0は対象のキャラ番号
;-------------------------------------------------
@KOKOU_RATE(ARG:0)
#FUNCTION
IF TALENT:(ARG:0):子供人質
	IF CFLAG:(ARG:0):依存度 < 10
		RETURNF 49
	ELSEIF CFLAG:(ARG:0):依存度 < 50
		RETURNF 42
	ELSEIF CFLAG:(ARG:0):依存度 < 100
		RETURNF 35
	ELSEIF CFLAG:(ARG:0):依存度 < 200
		RETURNF 28
	ELSEIF CFLAG:(ARG:0):依存度 < 300
		RETURNF 21
	ELSEIF CFLAG:(ARG:0):依存度 < 500
		RETURNF 14
	ELSEIF CFLAG:(ARG:0):依存度 < 800
		RETURNF 7
	ELSEIF CFLAG:(ARG:0):依存度 < 1500
		RETURNF 4
	ELSEIF CFLAG:(ARG:0):依存度 < 3000
		RETURNF 1
	ENDIF
ELSE
	IF CFLAG:(ARG:0):依存度 < 10
		RETURNF 70
	ELSEIF CFLAG:(ARG:0):依存度 < 50
		RETURNF 60
	ELSEIF CFLAG:(ARG:0):依存度 < 100
		RETURNF 50
	ELSEIF CFLAG:(ARG:0):依存度 < 200
		RETURNF 40
	ELSEIF CFLAG:(ARG:0):依存度 < 300
		RETURNF 30
	ELSEIF CFLAG:(ARG:0):依存度 < 500
		RETURNF 20
	ELSEIF CFLAG:(ARG:0):依存度 < 800
		RETURNF 10
	ELSEIF CFLAG:(ARG:0):依存度 < 1500
		RETURNF 5
	ELSEIF CFLAG:(ARG:0):依存度 < 3000
		RETURNF 1
	ENDIF
ENDIF
RETURNF 1

;-------------------------------------------------
;値ARG:0に、正なら(ARG:1)/100を、負なら(ARG:2)/100を掛ける関数
;-------------------------------------------------
@SET_RATE_EMOTION(ARG:0, ARG:1, ARG:2)
#FUNCTION
IF ARG:0 >= 0
	RETURNF ARG:0 * ARG:1 / 100
ENDIF
RETURNF -(ABS(ARG:0) * ARG:2 / 100)

repo_name: pervysquirrelz/erafl

license: unknown


code:
;調教関連のシステム関数を管理

;-------------------------------------------------
;調教開始時の処理
;-------------------------------------------------
@FL_EVENTTRAIN
CALL FL_EVENTTRAIN_KOJO

FLAG:継続コマンド表示絞り込み = 0
FLAG:継続コマンド表示絞り込み選択中キャラ = MASTER
FLAG:逆調教コマンド強制 = -1

LINES_TRAIN = LINECOUNT
;調教に参加している人数を数える
TFLAG:参加者数 = 0
FOR LOCAL:0, 0, CHARANUM
	IF CFLAG:(LOCAL:0):調教参加フラグ
		TFLAG:参加者数 ++
	ENDIF
NEXT

;機嫌パラメータに退避しておいた値を代入
FOR LOCAL:0, 0, CHARANUM
	FOR LOCAL:1, 0, 10
		PALAM:(LOCAL:0):(LOCAL:1 + 10) = CFLAG:(LOCAL:0):(LOCAL:1 + 190)
	NEXT
NEXT

;強制友好化フラグが立っているなら、負の感情をリセットする
FOR LOCAL:0, 0, CHARANUM
	IF CFLAG:(LOCAL:0):強制友好化
		FOR LOCAL:1, 0, 10
			SIF PALAM:(LOCAL:0):(LOCAL:1 + 10) > 0
				PALAM:(LOCAL:0):(LOCAL:1 + 10) = 0
		NEXT
	ENDIF
NEXT

;衣装データを一時領域にコピー
FOR LOCAL, 0, CHARANUM
	CALL SET_CHARA_CLOTH_DATA(LOCAL)
NEXT

;「会いに行く」モード
IF FLAG:調教モード == 0
	FOR LOCAL:0, 0, CHARANUM
		;ツンデレ＆恋慕＆非恋人の場合
		IF TALENT:(LOCAL:0):ツンデレ && TALENT:(LOCAL:0):恋慕 && !TALENT:(LOCAL:0):恋人
			;最初から怒・哀の感情が高めの状態に
			PALAM:(LOCAL:0):怒主 = MAX(PALAM:(LOCAL:0):怒主, 300 + RAND:100)
			PALAM:(LOCAL:0):哀主 = MAX(PALAM:(LOCAL:0):哀主, 300 + RAND:100)
		ENDIF
	NEXT
ENDIF

;時間の設定
IF FLAG:調教モード == 調教_会う
	;臨月
	IF CFLAG:(MTAR:0):行動不能状態 == 行動不能_臨月
		TFLAG:調教ターン数 = 5
		;育児中
	ELSEIF CFLAG:(MTAR:0):行動不能状態 == 行動不能_育児
		TFLAG:調教ターン数 = 5
		;怪我
	ELSEIF CFLAG:(MTAR:0):行動不能状態 == 3
		TFLAG:調教ターン数 = 3
	ELSE
		TFLAG:調教ターン数 = 10
	ENDIF
ELSEIF FLAG:クエストモード
	TFLAG:調教ターン数 = QST_調教ターン数
ELSEIF FLAG:調教モード == 調教_子育て
	TFLAG:調教ターン数 = 5
ELSEIF FLAG:調教モード == 調教_捕虜会話
	TFLAG:調教ターン数 = 10
ELSEIF FLAG:ウフフフラグ
	TFLAG:調教ターン数 = 20
ELSEIF FLAG:調教モード == 調教_居住区
	TFLAG:調教ターン数 = 20
ENDIF

;情報表示モードのリセット
FLAG:能力表示モード = 0

;捕虜調教・子育てなら常に主人公が主導権を握る
IF GROUPMATCH(FLAG:調教モード, 2, 3)
	FOR LOCAL, 0, CHARANUM
		IF IS_PARTICIPATE_TRAIN(LOCAL)
			FLAG:主導権所有者 = LOCAL
			BREAK
		ENDIF
	NEXT
	;それ以外なら通常は「成り行き」で開始
ELSE
	FLAG:主導権所有者 = -1
ENDIF

;EQUIPの初期化
CALL INIT_EQUIP()

;捕虜逆調教なら縛られた状態からスタート
IF GROUPMATCH(FLAG:調教モード, 4, 5) && !GROUPMATCH(1, FLAG:閨逆調教)
	CALL CLEAR_MPLY
	CALL CLEAR_MTAR
	FOR LOCAL:0, 0, CHARANUM
		IF CFLAG:(LOCAL:0):調教参加フラグ && LOCAL:0 != MASTER
			CALL ADD_MPLY(LOCAL:0)
		ENDIF
	NEXT
	CALL ADD_MTAR(MASTER)
	;縄は捕虜であるか1/3
	SIF CFLAG:(MASTER):捕虜先 || !RAND:3
		CALL SET_EQUIP(85, 1)
	SIF !RAND:3
		CALL SET_EQUIP(84, 1)
	SIF !RAND:3
		CALL SET_EQUIP(86, 1)
	CALL CLEAR_MPLY
	CALL CLEAR_MTAR
	FOR LOCAL, 0, CHARANUM
		IF CFLAG:(LOCAL:0):調教参加フラグ && TALENT:LOCAL:特殊勢力素質 == 特殊勢力_触手
			CALL ADD_MPLY(LOCAL:0)
		ENDIF
	NEXT
	IF MPLY_NUM > 0
		CALL SET_EQUIP(200, 1)
	ENDIF
ENDIF

IF CONFIG:10 && GROUPMATCH(FLAG:調教モード, 調教_閨, 調教_捕虜調教)
	CALL CLEAR_MPLY
	CALL CLEAR_MTAR
	FOR LOCAL, 0, CHARANUM
		IF IS_PARTICIPATE_TRAIN(LOCAL) && HAS_PENIS(LOCAL)
			;ゴムがなければ補給
			IF ITEM:コンドーム <= 0
				IF ITEMPRICE:コンドーム > MONEY
					PRINTFORML コンドーム購入のための資金が不足しています
					BREAK
				ELSE
					PRINTFORML コンドームを補充します
					ITEM:コンドーム ++
					MONEY -= ITEMPRICE:コンドーム
				ENDIF
			ENDIF
			IF (LOCAL == MASTER && CONFIG:10 == 2) || LOCAL != MASTER
				CALL ADD_MPLY(LOCAL)
				ITEM:コンドーム --
			ENDIF
		ENDIF
	NEXT
	SIF MPLY_NUM > 0
		CALL SET_EQUIP(GETNUM(TRAINNAME, "コンドーム"), 1)
ENDIF

;特殊勢力による調教は、出来上がった状態からスタート
IF FLAG:調教モード == 調教_逆調教特殊
	FOR LOCAL:0, 0, CHARANUM
		IF CFLAG:(LOCAL:0):調教参加フラグ
			PALAM:(LOCAL:0):潤滑 = 30000
			PALAM:(LOCAL:0):欲情 = 30000
		ENDIF
	NEXT
ENDIF

;下戸でなく妊娠していなかったら、たまに酔っ払った状態でスタート
;種族名が鬼の場合高確率、酒豪でもそこそこの確率
;ただし鬼じゃない場合、捕虜調教時は含めない
IF FLAG:調教モード == 調教_会う
	FOR LOCAL, 0, CHARANUM
		IF CFLAG:(LOCAL:0):調教参加フラグ && !TALENT:(LOCAL:0):下戸 && !TALENT:(LOCAL:0):妊娠 && CFLAG:(LOCAL:0):行動不能状態 != 行動不能_子供 && !TALENT:(LOCAL:0):霊体
			IF HAS_TAG(LOCAL:0, タグ_鬼) && !RAND:3
				PRINTFORMW %ANAME(LOCAL:0)%は酔っ払っているようだ……
				PALAM:(LOCAL:0):酔い = RAND(3000, 6000)
			ELSEIF TALENT:(LOCAL:0):酒豪 && FLAG:調教モード != 2 && !RAND:5
				PRINTFORMW %ANAME(LOCAL:0)%は酔っ払っているようだ……
				PALAM:(LOCAL:0):酔い = RAND(1500, 3000)
			ELSEIF FLAG:調教モード != 2 && !RAND:10
				PRINTFORMW %ANAME(LOCAL:0)%は酔っ払っているようだ……
				PALAM:(LOCAL:0):酔い = RAND(500, 1500)
			ENDIF
		ENDIF
	NEXT
ENDIF

;ハウジングモード用の初期化処理
IF  FLAG:調教モード == 調教_居住区
	CALL HO_INIT_DATA_EVENTTRAIN_START
ENDIF

;クエストモード用の初期化処理 空腹からスタート
IF  FLAG:調教モード == 調教_クエスト
	CVARSET TCVAR, GETNUM(TCVAR, "空腹度"), 300
ENDIF

;プレイヤーとターゲットをクリア
CALL CLEAR_MPLY
CALL CLEAR_MTAR

;初期プレイヤー、ターゲット設定
;指定しとかないと何かと不具合起こしがちなので
CALL SET_TMP_MPLY
CALL SET_TMP_MTAR

;尿残量と屁残量をリセット
CVARSET TCVAR, 54, 1000
CVARSET TCVAR, 55, 1000

PLAYER = -1
TARGET = -1
TFLAG:31 = -1

SELECTCASE FLAG:調教モード
	CASE 調教_会う, 調教_子育て, 調教_捕虜会話
		TFLAG:調教タブ設定 = 7
	CASE 調教_居住区
		TFLAG:調教タブ設定 = 9
	CASE 調教_クエスト
		TFLAG:調教タブ設定 = 13
	CASEELSE
		TFLAG:調教タブ設定 = 0
ENDSELECT

SIF EVENTTRAIN_CALLEE_NUM > 0
	CALL TRAIN_CALL(0)

IF TRAIN_PLACE == ""
	IF FLAG:調教モード == 調教_慰安 && GROUPMATCH(FLAG:慰安モード,1, 3)
		TRAIN_PLACE = %IAN_PLACE:(FLAG:慰安場所)%
	ELSEIF FLAG:夜這い
		TRAIN_PLACE = %ANAME(PRISONER_TARGET:0)%の寝室
	ELSEIF GROUPMATCH(FLAG:調教モード, 2, 4, 5)
		TRAIN_PLACE = 牢屋
	ELSEIF CFLAG:MASTER:所属
		TRAIN_PLACE = 拠点内
	ELSE
		TRAIN_PLACE = 仮拠点
	ENDIF
ENDIF

PRINTL

JUMP FL_SHOW_STATUS

;-------------------------------------------------
;DESC  :MPLY:0が-1だとまずい時用の仮決め
;-------------------------------------------------
@SET_TMP_MPLY()
SIF MPLY:0 >= 0
	RETURN 0
IF GROUPMATCH(FLAG:調教モード, 調教_会う, 調教_閨, 調教_捕虜調教, 調教_捕虜会話, 調教_子育て, 調教_居住区, 調教_クエスト) && !FLAG:クエスト_あなた不参加
	CALL ADD_MPLY(MASTER)
ELSEIF GROUPMATCH(FLAG:調教モード, 調教_逆調教特殊, 調教_逆調教通常) || FLAG:クエスト_あなた不参加
	FOR LOCAL, 1, CHARANUM
		IF IS_PARTICIPATE_TRAIN(LOCAL)
			CALL ADD_MPLY(LOCAL)
			BREAK
		ENDIF
	NEXT
ELSE
	FOR LOCAL, 0, CHARANUM
		IF TALENT:LOCAL:慰安モブ
			CALL ADD_MPLY(LOCAL)
			BREAK
		ENDIF
	NEXT
ENDIF
RETURN 1

;-------------------------------------------------
;DESC  :MTAR:0が-1だとまずい時用の仮決め
;-------------------------------------------------
@SET_TMP_MTAR()
#DIM DYNAMIC CNT
SIF MTAR:0 >= 0
	RETURN 0
IF GROUPMATCH(FLAG:調教モード, 調教_会う, 調教_閨, 調教_捕虜調教, 調教_捕虜会話, 調教_子育て, 調教_居住区, 調教_クエスト) && !FLAG:クエスト_あなた不参加
	FOR LOCAL, 1, CHARANUM
		IF IS_PARTICIPATE_TRAIN(LOCAL) && LOCAL != MASTER && !TCVAR:(LOCAL):53
			CALL ADD_MTAR(LOCAL)
			RETURN 1
		ENDIF
	NEXT
	;誰もいなければMASTERで仮置き
	CALL ADD_MTAR(MASTER)
ELSEIF GROUPMATCH(FLAG:調教モード, 調教_逆調教特殊, 調教_逆調教通常)
	CALL ADD_MTAR(MASTER)
ELSEIF FLAG:クエスト_あなた不参加
	FOR LOCAL, 0, CHARANUM
		IF IS_PARTICIPATE_TRAIN(LOCAL) && !TCVAR:(LOCAL):53
			;二人目の参加者をMTARとしてセットする
			IF CNT > 0
				CALL ADD_MTAR(LOCAL)
				RETURN 1
			ENDIF
			CNT++
		ENDIF
	NEXT
	;二人目がいなければとりあえず参加してるキャラをMTARとしてセット
	FOR LOCAL, 0, CHARANUM
		IF IS_PARTICIPATE_TRAIN(LOCAL) && !TCVAR:(LOCAL):53
			CALL ADD_MTAR(LOCAL)
			RETURN 1
		ENDIF
	NEXT
ELSE
	FOR LOCAL, 0, CHARANUM
		IF IS_PARTICIPATE_TRAIN(LOCAL) && !TCVAR:(LOCAL):53
			CALL ADD_MTAR(LOCAL)
			RETURN 1
		ENDIF
	NEXT
ENDIF
RETURN 1

;-------------------------------------------------
;;; コマンド実行前の処理
;-------------------------------------------------
@FL_EVENTCOM_INIT
; #region EVENTCOM_INIT
VARI I
FOR I, 0, CHARANUM
	VARSET CUP:I:0, 0
	VARSET CDOWN:I:0, 0
	VARSET NOWEX:I:0, 0
	VARSET DOWNBASE:I:0, 0
NEXT
FOR LOCAL:0, 0, 20
	CVARSET TCVAR, LOCAL:0, 0
NEXT
FOR LOCAL:0, 400, 420
	CVARSET TCVAR, LOCAL:0, -1
NEXT

FOR LOCAL:0, 420, 440
	CVARSET TCVAR, LOCAL:0, 0
NEXT

CVARSET TCVAR, 74, 0
CVARSET TCVAR, 75, 0

CVARSET TCVAR, 24, -10000
CVARSET TCVAR, 25, 10000
CVARSET TCVAR, 50, 0
CVARSET TCVAR, 90, -1 ;催眠実行者
TFLAG:3 = 0
TFLAG:5 = 0
TFLAG:17 = 0
TFLAG:コマンド成否 = 0
TFLAG:主導度変化基準値 = 0
TFLAG:倒錯度変化基準値 = 0
TFLAG:レズ・ＢＬ経験基準値 = 0
TFLAG:欲情上昇量 = 0
TFLAG:絶頂数 = 0
TFLAG:58 = 0
;TFLAG:母乳採集量 = 0
TFLAG:リアクションコマンド予約 = -1
; #endregion

;-------------------------------------------------
;;; コマンド実行時の処理
;-------------------------------------------------
@FL_EVENTCOM
; #region EVENTCOM
#DIM 主導権奪取候補者配列, MAX_CHARANUM

;コマンド実行前の初期処理
CALL FL_EVENTCOM_INIT

;地の文カットフラグをOFF
VARSET MEQUIP_CUT, 0

;現在のEXPを保存
FOR LOCAL:0, 0, CHARANUM

	{
		IF (FLAG:調教モード == 調教_居住区 && LOCAL == MASTER || CFLAG:(LOCAL:0):ゲストモブ || CFLAG:(LOCAL:0):交流参加 == 1)
			|| (IS_PARTICIPATE_TRAIN(LOCAL:0))
	}
		FOR LOCAL:1, 0, 100
			TCVAR:(LOCAL:0):(LOCAL:1 + 100) = EXP:(LOCAL:0):(LOCAL:1)
		NEXT
	ENDIF
NEXT

;●主導権判定
;プレイヤーの中に行動不能のキャラがいれば、全てのプレイヤーは主導権を取れない
LOCAL:5 = 0
FOR LOCAL:0, 0, MPLY_NUM
	IF !IS_PLAYABLE(MPLY:(LOCAL:0))
		LOCAL:5 = 1
		BREAK
	ENDIF
NEXT

;ターゲットの中に行動不能のキャラがいれば、全てのターゲットは主導権を取れない
LOCAL:6 = 0
FOR LOCAL:0, 0, MTAR_NUM
	IF !IS_PLAYABLE(MTAR:(LOCAL:0))
		LOCAL:6 = 1
		BREAK
	ENDIF
NEXT
;コマンド「脅す」は必ずプレイヤーが主導権を握る
IF SELECTCOM == 80
	LOCAL:6 = 1
ENDIF

;主導権を握ることが可能なキャラをLOCAL:50以降に記録
VARI 候補者数 = 0
VARI CHARA_ID
IF !LOCAL:5
	FOR LOCAL:0, 0, MPLY_NUM
		CHARA_ID = MPLY:(LOCAL:0)
		SIF CFLAG:(CHARA_ID):主導除外
			CONTINUE
		CALL CHECK_COM_KNOWLEDGE(CHARA_ID, SELECTCOM)
		IF RESULT
			主導権奪取候補者配列:候補者数 = CHARA_ID
			候補者数 ++
		ENDIF
	NEXT
ENDIF
IF !LOCAL:6
	FOR LOCAL:0, 0, MTAR_NUM
		CHARA_ID = MTAR:(LOCAL:0)
		SIF CFLAG:(CHARA_ID):主導除外
			CONTINUE
		CALL CHECK_COM_KNOWLEDGE(CHARA_ID, SELECTCOM)
		IF RESULT
			主導権奪取候補者配列:候補者数 = CHARA_ID
			候補者数 ++
		ENDIF
	NEXT
ENDIF

;主導度が最大のキャラの主導度を求める
;ただし主導権奪取を命令できる状態でないキャラ(口枷中のキャラ、催眠中のキャラは-1000とする)
VARI 最大主導度 = -9999
FOR LOCAL:0, 0, 候補者数
	CHARA_ID = 主導権奪取候補者配列:LOCAL
	IF TCVAR:(CHARA_ID):催眠中 || IS_EQUIP_TARGET(CHARA_ID, 86)
		最大主導度 = -1000
	ELSE
		IF FLAG:ウフフフラグ
			最大主導度 = ABL:(CHARA_ID):主導度Ｕ
		ELSE
			最大主導度 = ABL:(CHARA_ID):主導度Ｎ
		ENDIF
	ENDIF
NEXT

;主導度の大きさに応じてランダムに主導権を持つキャラを決定

VARI 参照主導度 = 0
VARI 判定値
VARI I
FOR I, 0, 候補者数
	CHARA_ID = 主導権奪取候補者配列:I
	IF CHARA_ID == MASTER
		参照主導度 += MAX(-最大主導度+ 800, 0)
	ELSEIF FLAG:ウフフフラグ
		参照主導度 += MAX(ABL:(CHARA_ID):主導度Ｕ - 最大主導度 + 800, 0)
	ELSE
		参照主導度 += MAX(ABL:(CHARA_ID):主導度Ｎ - 最大主導度 + 800, 0)
	ENDIF
NEXT
IF 参照主導度 <= 0
	TFLAG:主導権所有者 = MASTER
ELSE
	判定値 = RAND:(参照主導度)
	FOR I, 0, 候補者数
		CHARA_ID = 主導権奪取候補者配列:I
		IF CHARA_ID == MASTER
			判定値 -= MAX(-最大主導度+ 800, 0)
		ELSEIF FLAG:ウフフフラグ
			判定値 -= MAX(ABL:(CHARA_ID):主導度Ｕ - 最大主導度 + 800, 0)
		ELSE
			判定値 -= MAX(ABL:(CHARA_ID):主導度Ｎ - 最大主導度 + 800, 0)
		ENDIF
		IF 判定値 < 0
			TFLAG:主導権所有者 = CHARA_ID
			BREAK
		ENDIF
	NEXT
ENDIF
;クエストモードでMASTER不在時の考慮
IF FLAG:クエストモード && TFLAG:主導権所有者 == 0 && !IS_PARTICIPATE_TRAIN(MASTER)
	TFLAG:主導権所有者 = QST_LEADER_ID()
ENDIF
;主導権を持つキャラが設定されていない場合は以上で決定

;主導権を持つキャラが設定されているなら、基本的にそのキャラに主導権を持たせる
;ただし、上で決定された仮の主導権者との主導度に大きな差があると、その差に応じた確率で主導権を奪われる

IF TFLAG:おまかせ中 && FLAG:主導権所有者 >= 0 || TFLAG:リアクションコマンド実行 == 1 || TFLAG:割込コマンド実行
	;おまかせフラグが立っているなら主導権奪取は起こらない
	TFLAG:主導権所有者 = FLAG:主導権所有者

ELSEIF FLAG:主導権所有者 >= 0 && FLAG:主導権所有者 != TFLAG:主導権所有者 && !(IS_MPLY(FLAG:主導権所有者) && IS_MPLY(TFLAG:主導権所有者)) && !(IS_MTAR(FLAG:主導権所有者) && IS_MTAR(TFLAG:主導権所有者))
	IF FLAG:ウフフフラグ
		LOCAL:9 = ABL:(FLAG:主導権所有者):主導度Ｕ
		LOCAL:7 = ABL:(TFLAG:主導権所有者):主導度Ｕ - LOCAL:9 - 300
	ELSE
		LOCAL:9 = ABL:(FLAG:主導権所有者):主導度Ｎ
		LOCAL:7 = ABL:(TFLAG:主導権所有者):主導度Ｎ - LOCAL:9 - 300
	ENDIF

	IF LOCAL:7 < 0
		TFLAG:主導権所有者 = FLAG:主導権所有者
	ELSE
		LOCAL:8 = MIN(LOCAL:7 * SQRT(LOCAL:7 * 10000) * 70 / 18520 + 500, 4000)
		IF RAND:10000 >= LOCAL:8
			TFLAG:主導権所有者 = FLAG:主導権所有者
		ELSEIF CFLAG:(TFLAG:主導権所有者):主導除外
			TFLAG:主導権所有者 = FLAG:主導権所有者
		ELSE
			IF FLAG:主導権所有者 == MASTER
				PRINTFORMW %ANAME(FLAG:主導権所有者)%が主導権を握っていたはずが、気が付くと%ANAME(TFLAG:主導権所有者)%に主導権を奪われていた…
			ELSEIF TFLAG:主導権所有者 == MASTER
				PRINTFORMW %ANAME(FLAG:主導権所有者)%に主導権を握らせていたはずが、気が付くと%ANAME(TFLAG:主導権所有者)%が主導権を握ってしまっていた…
			ELSE
				PRINTFORMW %ANAME(FLAG:主導権所有者)%が主導権を握っていたはずだが、いつの間にか%ANAME(TFLAG:主導権所有者)%が主導権を奪っていた…
			ENDIF
		ENDIF
	ENDIF
ENDIF

;主導権が「成り行き」の場合のメッセージ
IF FLAG:主導権所有者 == -1
	LOCAL:1 = 0
	FOR LOCAL:0, 0, CHARANUM
		IF IS_PARTICIPATE_TRAIN(LOCAL:0)
			IF IS_PLAYABLE(LOCAL:0)
				IF IS_MPLY(LOCAL:0)
					LOCAL:1 |= 1
				ELSEIF IS_MTAR(LOCAL:0)
					LOCAL:1 |= 2
				ELSE
					LOCAL:1 |= 4
				ENDIF
			ENDIF
		ENDIF
	NEXT
	;主導権が自明の場合には表示しない
	;	IF LOCAL:1 != 1 && LOCAL:1 != 2
	;		PRINTFORML %ANAME(MASTER)%は主導権をその場の雰囲気に任せた
	;		PRINTL
	;	ENDIF
ENDIF

;コマンド名称の表示
LOCALS:0 =
VARSET RESULTS, ""
TRYCALLFORM COM_NAME{SELECTCOM}
;主人公が実行者
IF IS_MPLY(MASTER)
	;主導権が実行者(主人公) (~する)
	IF IS_INITIATIVE(MASTER)
		LOCALS:0 = %RESULTS:0%
	;主導権が対象者 (~されられる)
	ELSE
		LOCALS:0 = %RESULTS:1%
	ENDIF
;主人公が対象者
ELSEIF IS_MTAR(MASTER)
	;主導権が対象者(主人公) (~させる)
	IF IS_INITIATIVE(MASTER)
		LOCALS:0 = %RESULTS:2%
	;主導権が実行者 (~される)
	ELSE
		LOCALS:0 = %RESULTS:3%
	ENDIF
ELSEIF TCVAR:(MPLY:0):覗き見対象 == 1 && TCVAR:(MTAR:0):覗き見対象 == 1
	;キャラIDが若いキャラ視点でコマンドを表示する
	IF MPLY:0 < MTAR:0
		;主導権が実行者 (~する)
		IF IS_INITIATIVE(MPLY:0)
			LOCALS:0 = %RESULTS:0%
		;主導権が対象者 (~されられる)
		ELSE
			LOCALS:0 = %RESULTS:1%
		ENDIF
	ELSE
		;主導権が実行者 (~される)
		IF IS_INITIATIVE(MPLY:0)
			LOCALS:0 = %RESULTS:3%
		;主導権が対象者 (~させる)
		ELSE
			LOCALS:0 = %RESULTS:2%
		ENDIF
	ENDIF
;主人公が実行者でも対象者でもない
ELSE
	IF FLAG:調教モード == 調教_慰安
		IF MTAR_NUM == 0
			LOCALS:0 = %RESULTS:0%
		ELSEIF CFLAG:(MTAR:0):慰安参加者 && CFLAG:(MPLY:0):慰安参加者
			LOCALS:0 = %RESULTS:5%
		ELSEIF CFLAG:(MTAR:0):慰安参加者
			LOCALS:0 = %RESULTS:1%
		ELSE
			LOCALS:0 = %RESULTS:3%
		ENDIF
	;主導権が主人公 (~させる)
	ELSEIF IS_INITIATIVE(MASTER)
		LOCALS:0 = %RESULTS:4%
	;主導権が主人公でない (~見せつけ)
	ELSE
		LOCALS:0 = %RESULTS:5%
	ENDIF
ENDIF
IF LOCALS:0 == ""
	LOCALS:0 = %TRAINNAME:SELECTCOM%
ENDIF
PRINTL
IF FLAG:DO_DUMMYCOM && TSTR:ダミーコマンド表示名 != ""
	LOCALS:0 = %TSTR:ダミーコマンド表示名%
	CALL PRINT_TITLE(LOCALS:0, "コマンド")
ELSE
	IF !TFLAG:リアクションコマンド実行 && !TFLAG:割込コマンド実行
		SIF SELECTCOM != T_N("ダミーコマンド")
			CALL PRINT_TITLE(LOCALS:0, "コマンド")
	ELSEIF TFLAG:リアクションコマンド実行 || TFLAG:割込コマンド実行
		IF !TFLAG:割込コマンド実行
			CALL PRINT_TITLE(@"→ %LOCALS:0%", "リアクション")
			WAIT
		ELSEIF TFLAG:割込コマンド実行
			CALL PRINT_TITLE(@"→ %LOCALS:0%", "割込")
			WAIT
		ENDIF
	ENDIF
ENDIF

DEBUGPRINTFORML ;-------------------------------------------------
DEBUGPRINTFORML ; %LOCALS:0%を実行(SELECTCOM = {SELECTCOM}),TRAINNAME = %TRAINNAME:SELECTCOM%
DEBUGPRINTFORML ; MOUSE_X = {MOUSEX()}, MOUSE_Y = {MOUSEY()}
DEBUGPRINTFORML ;-------------------------------------------------

;今回のコマンド名称を保存
SELECTCOM_NAME = %RESULTS%

;実行タイプの設定
IF IS_MPLY(MASTER)
	SELECTCOM_TYPE = 0
ELSEIF IS_MTAR(MASTER)
	SELECTCOM_TYPE = 1
ELSE
	SELECTCOM_TYPE = 2
ENDIF

; #endregion

;-------------------------------------------------
;コマンド実行後の処理
;-------------------------------------------------
@FL_EVENTCOMEND
; #region EVENTCOMEND
#DIM DYNAMIC 行動可能人数
#DIM DYNAMIC ITER_I
#DIM DYNAMIC ITER_J

VARSET LOCAL, 0
;コマンドの実行済みフラグをONにする
FOR LOCAL:0, 0, MPLY_NUM
	CALL SET_COM_FIRST_FLAG(MPLY:(LOCAL:0))
NEXT
FOR LOCAL:0, 0, MTAR_NUM
	CALL SET_COM_FIRST_FLAG(MTAR:(LOCAL:0))
NEXT

;継続コマンドロック用フラグを初期化
TFLAG:継続ロックフラグ = 0

;実行したコマンドの知識を獲得
FOR LOCAL:0, 0, CHARANUM
	;居住区モードで情事を目撃していない場合獲得できない
	{
		IF FLAG:ハウジングモード == 1
			&& (FLAG:調教モード == 調教_居住区 || TFLAG:奉仕モード)
			&& LOCAL:0 != MASTER
			&& IS_PARTICIPATE_TRAIN(LOCAL:0)
	}
		CALL HO_CHECK_UFUFU(LOCAL:0)
		SIF !RESULT
			CONTINUE
	ENDIF
	;調教に参加していても、行動不能だと獲得できない
	IF IS_PARTICIPATE_TRAIN(LOCAL:0) && IS_PLAYABLE(LOCAL:0)
		CALL SET_COM_KNOWLEDGE(LOCAL:0, SELECTCOM)
	ENDIF
NEXT

;コマンドの実行状況に応じて発生するイベントの処理
CALL TRAIN_COM_FLAG_EVENT

;;SELECTCOM系変数の操作
PREVCOM = SELECTCOM
PREVCOM_NAME = %SELECTCOM_NAME%
PREVCOM_TYPE = SELECTCOM_TYPE

;前回コマンドのオプションを保持
ARRAYCOPY "COM_OPTION", "PREVCOM_OPTION"

;前回コマンド実行時のMPLY,MTARを保持
ARRAYCOPY "MPLY", "PREV_MPLY"
ARRAYCOPY "MTAR", "PREV_MTAR"

;時間経過
IF !FLAG:ハウジングモード || FLAG:クエストモード
	{
		IF FLAG:クエストモード && FLAG:調教モード != 調教_クエスト && !FLAG:クエスト_交流コマンド許可
			|| !(FLAG:クエストモード && FLAG:クエスト_交流コマンド許可 && GROUPMATCH(FLAG:調教モード, 調教_クエスト, 調教_閨))
	}
		;[IF_NDEBUG]
		TFLAG:調教経過時間 ++
		;[ENDIF]
		IF TFLAG:57 > 0
			TFLAG:57 ++
		ENDIF
	ENDIF
ENDIF

;ハウジング関連のコマンド実行後処理
IF FLAG:ハウジングモード == 1
	CALL HOUSING_TIME_PROGRESS
	;ハウジングモードの定刻(27:00)による時間切れ、またはクエストが規定する終了時刻に到達
	IF (!FLAG:クエストモード && HO_TIME >= 1620) || (FLAG:QST_終了時刻 > 0 && FLAG:クエストモード && HO_TIME >= FLAG:QST_終了時刻)
		CALL TRAIN_EXIT(0)
		LINES_TRAIN = LINECOUNT
		RETURN
	ENDIF
	;奉仕モード時間切れ判定
	IF TFLAG:奉仕モード
		TRYCALLFORM COM_EXIT_SERVICE860()
		IF RESULT
			CALL TRAIN_EXIT(0)
			LINES_TRAIN = LINECOUNT
			RETURN
		ENDIF
	ENDIF
ENDIF

;ダミーコマンド実行フラグクリア
FLAG:DO_DUMMYCOM = -1
TSTR:ダミーコマンド表示名 '= ""

;ハウジング・クエストモードのコマンド実行後処理
IF FLAG:ハウジングモード == 1 && FLAG:クエストモード != 1
	CALL HOUSING_EVENTCOMEND()
ELSEIF FLAG:クエストモード == 1
	CALL QST_EVENTCOMEND()
ENDIF

;継続状態の継続ターンを加算
FOR LOCAL:0, 0, MAX_MEQUIP
	IF MEQUIP:(LOCAL:0) >= 0
		MEQUIP_TURN:(LOCAL:0) ++
	ENDIF
NEXT

IF GROUPMATCH(FLAG:調教モード, 調教_捕虜調教, 調教_逆調教特殊, 調教_逆調教通常)
	LOCALS:0 = 調教
ELSEIF FLAG:ウフフフラグ && FLAG:ハウジングモード != 1
	LOCALS:0 = 夜伽
ELSEIF FLAG:ウフフフラグ && FLAG:ハウジングモード == 1
	LOCALS:0 = 逢瀬
ELSEIF FLAG:クエストモード
	LOCALS:0 = 行動
ELSE
	LOCALS:0 = 交流
ENDIF

;-------------------------------------------------
;ここでウェイト
PRINTW
;-------------------------------------------------

;強制終了フラグが立っている場合は調教を中断
IF TFLAG:調教強制終了フラグ
	CALL FL_TRAINEXIT
	RETURN
ENDIF

;主人公が行動不能(逆調教除く)
IF !GROUPMATCH(FLAG:調教モード, 調教_逆調教特殊, 調教_逆調教通常, 調教_慰安, 調教_閨) && !IS_PLAYABLE(MASTER)
	;ウフフ中は継続判定
	IF FLAG:ウフフフラグ
		FOR LOCAL:0, 0, CHARANUM
			IF LOCAL:0 != MASTER && CFLAG:(LOCAL:0):調教参加フラグ && (ABL:(LOCAL:0):主導度Ｕ >= 500 || ABL:(LOCAL:0):欲望 >= 10)
				;行動可能でウフフ主導度500以上または欲望10以上のキャラが1人以上入れば継続
				行動可能人数 ++
				IF !IS_AUTOSELECT(LOCAL:0)
					LOCAL:21 ++
				ENDIF
			ENDIF
		NEXT
	ENDIF
	IF 行動可能人数 <= 0 && FLAG:ハウジングモード != 1
		WAIT
		PRINTL
		PRINTFORMW （%ANAME(MASTER)%が行動不能であるため、%LOCALS:0%を終了します）
		CALL FL_TRAINEXIT
		RETURN
	ELSEIF LOCAL:21 == 行動可能人数 && FLAG:ハウジングモード != 1
		WAIT
		PRINTL
		PRINTFORMW （%LOCALS:0%は終了しました）
		CALL FL_TRAINEXIT
		RETURN
	ELSEIF 行動可能人数 <= 0 && FLAG:ハウジングモード == 1 && !FLAG:クエストモード
		WAIT
		PRINTL
		IF TFLAG:覗き見モード
			PRINTFORMW （%ANAME(MASTER)%が行動不能であるため、%LOCALS:0%を終了します）
		ELSE
			PRINTFORMW （全員が行動不能であるため、%LOCALS:0%を終了します）
		ENDIF
		CALL RELEASE_ALL_EQUIP(MASTER)
		IF !TFLAG:覗き見モード
			CALL HOUSING_EVENTEND
			CALL HO_FORCE_MASTER_REST
			CALL HO_CHARAACT_DESC
		ELSE
			;TFLAG:覗き見モードを解除し調教継続
			CALL TRAIN_EXIT(0)
		ENDIF
		;キャラの状態描写文を更新
	ENDIF
ENDIF

;逆調教で行動可能な調教者がいなければ終了
IF GROUPMATCH(FLAG:調教モード, 4, 5, 7)
	LOCAL:10 = 0
	FOR LOCAL:0, 0, CHARANUM
		IF IS_AUTOSELECT(LOCAL:0)
			LOCAL:10 ++
		ENDIF
	NEXT
	IF LOCAL:10 <= 0 && FLAG:ハウジングモード != 1 && !FLAG:クエストモード
		WAIT
		PRINTL
		PRINTFORMW （行動可能な調教者がいないため、%LOCALS:0%を終了します）
		CALL FL_TRAINEXIT
	ELSEIF LOCAL:10 <= 0 && FLAG:クエストモード
		WAIT
		PRINTL
		PRINTFORMW （行動可能なキャラクターがいなくなりました）
		CALL TRAIN_EXIT(0)
	ELSEIF LOCAL:10 <= 0 && FLAG:ハウジングモード == 1
		WAIT
		PRINTL
		PRINTFORMW （行動可能なキャラクターがいないため、%LOCALS:0%を終了します）
		CALL RELEASE_ALL_EQUIP(MASTER)
		IF !TFLAG:覗き見モード
			CALL HOUSING_EVENTEND
			SIF !IS_PLAYABLE(MASTER)
				CALL HO_FORCE_MASTER_REST
			;キャラの状態描写文を更新
			CALL HO_CHARAACT_DESC
		ELSE
			;TFLAG:覗き見モードを解除し調教継続
			CALL TRAIN_EXIT(0)
		ENDIF
	ENDIF
ENDIF

LOCAL:2 = 1
LOCAL:3 = 0
FOR LOCAL:0, 0, CHARANUM
	IF CFLAG:(LOCAL:0):調教参加フラグ
		IF !TCVAR:(LOCAL:0):離脱フラグ
			LOCAL:2 = 0
		ENDIF
		LOCAL:3 ++
	ENDIF
NEXT

;調教参加者全員が行動不能
IF LOCAL:2 && !TFLAG:睡姦中フラグ && !FLAG:ハウジングモード
	WAIT
	PRINTL

	;調教参加者が１人のとき
	IF LOCAL:3 == 1
		FOR LOCAL:0, 0, CHARANUM
			IF CFLAG:(LOCAL:0):調教参加フラグ
				IF TCVAR:(LOCAL:0):離脱フラグ == 1
					IF TFLAG:デート場所 == 1
						PRINTFORML すっかり酔い潰れた%ANAME(LOCAL:0)%は%ANAME(MASTER)%にもたれかかって眠っている
					ELSEIF TFLAG:デート場所 == 7
						PRINTFORML すっかり酔い潰れた%ANAME(LOCAL:0)%は湯船に浸かったまま%ANAME(MASTER)%に無防備な姿で寄りかかり、眠っている
					ELSEIF TFLAG:デート場所
						PRINTFORML すっかり酔い潰れた%ANAME(LOCAL:0)%は地面に\@ RAND:2 == 0 ? 酒瓶を抱きかかえて # 大の字に横になって \@眠っている
					ELSE
						PRINTFORML すっかり酔い潰れた%ANAME(LOCAL:0)%は床の上で\@ RAND:2 == 0 ? 酒瓶を抱きかかえて # 大の字に横になって \@眠っている
					ENDIF
					PRINTFORML この分では、ちょっとやそっとでは目を覚まさないだろう…
					IF ABL:MASTER:性知識 <= 1
						RESULT = 0
					ELSEIF TFLAG:デート場所
						CALL ASK_YN("連れて帰る", "イタズラする")
					ELSE
						CALL ASK_YN("寝かせて帰る", "イタズラする")
					ENDIF

					IF RESULT == 0
						IF TFLAG:デート場所
							IF ABL:(MASTER):身体 >= 60
								PRINTFORMW %ANAME(MASTER)%は%ANAME(LOCAL:0)%を担ぎ上げると、%ANAME(LOCAL:0)%を背負ったまま帰路についた…
							ELSE
								PRINTFORMW %ANAME(MASTER)%は%ANAME(LOCAL:0)%を引きずるようにしながら、どうにか拠点まで辿り着いた…
							ENDIF
						ELSE
							PRINTFORMW %ANAME(MASTER)%は%ANAME(LOCAL:0)%を寝台に寝かせ、部屋を後にした…
						ENDIF
						PRINTFORMW (%ANAME(LOCAL:0)%が行動不能であるため、%LOCALS:0%を終了します)

						;睡姦実行
					ELSE
						;イベント口上の表示
						CALL KOJO_EVENT(LOCAL:0, 110)
						;睡姦中フラグをＯＮ
						TFLAG:睡姦中フラグ = 1
						;ウフフフラグをＯＮ
						FLAG:ウフフフラグ = 1
						;時間を再設定
						TFLAG:調教経過時間 = 0
						TFLAG:調教ターン数 = 15
						;タブ設定をリセット
						TFLAG:調教タブ設定 = 0
					ENDIF

				ELSEIF GROUPMATCH(TCVAR:(LOCAL:0):離脱フラグ, 3, 4)
					PRINTFORMW (%ANAME(LOCAL:0)%に追い返されてしまったため、%LOCALS:0%を終了します)
				ELSEIF GROUPMATCH(TCVAR:(LOCAL:0):離脱フラグ, 5, 6)
					PRINTFORMW (%ANAME(LOCAL:0)%が帰ってしまったため、%LOCALS:0%を終了します)
				ELSE
					PRINTFORMW (%ANAME(LOCAL:0)%が行動不能であるため、%LOCALS:0%を終了します)
				ENDIF
				BREAK
			ENDIF
		NEXT
		;調教参加者が２人以上のとき
	ELSEIF !FLAG:クエストモード
		PRINTFORMW （行動可能なキャラがいないため、%LOCALS:0%を終了します）
	ENDIF
	IF !TFLAG:睡姦中フラグ && !FLAG:クエストモード
		CALL FL_TRAINEXIT
		RETURN
	ENDIF
ENDIF

;時間切れ
IF TFLAG:調教経過時間 >= TFLAG:調教ターン数
	CALL TRAIN_EXIT(0)
	LINES_TRAIN = LINECOUNT
	RETURN
ENDIF

;おまかせ中
IF TFLAG:おまかせ中
	;おまかせ時の自動EQUIP解除
	CALL AUTO_EQUIP_RELEASE
ENDIF

;主人公が行動不能かつ調教が継続した場合
IF !TFLAG:MASTER行動不能 && 行動可能人数
	FOR LOCAL:0, 0, CHARANUM
		IF LOCAL:0 != MASTER && CFLAG:(LOCAL:0):調教参加フラグ && IS_AUTOSELECT(LOCAL:0) && (ABL:(LOCAL:0):主導度Ｕ >= 500 || ABL:(LOCAL:0):欲望 >= 10)
			TFLAG:MASTER行動不能 = 1
			IF 行動可能人数 >= 2
				LOCALS:0 = たち
			ELSE
				LOCALS:0 =
			ENDIF
			IF BASE:MASTER:気力 <= 0
				LOCALS:1 = 気絶して意識のない
			ELSE
				LOCALS:1 = 疲れ果てて動けない
			ENDIF

			WAIT
			PRINTL
			IF 行動可能人数 == 1
				IF BASE:MASTER:気力 <= 0
					CALL KOJO_EVENT(LOCAL:0, 111)
				ELSE
					CALL KOJO_EVENT(LOCAL:0, 112)
				ENDIF
			ENDIF
			IF ABL:(LOCAL:0):主導度Ｕ >= 500
				PRINTFORMW %ANAME(LOCAL:0)%%LOCALS:0%は嗜虐的な表情を浮かべると、%LOCALS:1%%ANAME(MASTER)%の体を弄び始めた
			ELSE
				PRINTFORMW %ANAME(LOCAL:0)%%LOCALS:0%は性欲を抑えることができず、%LOCALS:1%%ANAME(MASTER)%の体を弄び始めた
			ENDIF
			BREAK
		ENDIF
	NEXT

	;逆調教で主人公が疲労・失神状態になった場合
ELSEIF !TFLAG:MASTER行動不能 && GROUPMATCH(FLAG:調教モード, 4, 5) && !IS_PLAYABLE(MASTER)
	TFLAG:MASTER行動不能 = 1
	LOCAL:1 = 0
	FOR LOCAL:0, 0, CHARANUM
		IF CFLAG:(LOCAL:0):調教参加フラグ && IS_PLAYABLE(LOCAL:0)
			LOCAL:1 ++
			LOCAL:2 = LOCAL:0
		ENDIF
	NEXT
	IF LOCAL:1 == 1
		IF BASE:MASTER:気力 <= 0
			CALL KOJO_EVENT(LOCAL:2, 111)
		ELSE
			CALL KOJO_EVENT(LOCAL:2, 112)
		ENDIF
	ENDIF
ENDIF

;キャラによるリアクション処理
IF (TFLAG:リアクションコマンド実行 || TFLAG:割込コマンド実行) && TFLAG:リアクションコマンド予約 == -1
	;NEXTCOM初期化
	NEXTCOM = -1
	TFLAG:リアクションコマンド実行 = 0
	TFLAG:割込コマンド実行 = 0
	TFLAG:割込キャラ = -1
	TFLAG:割込人数 = 0
	TFLAG:割込まれたキャラ = -1
	TFLAG:割込ターゲット = -1
	;MTAR,MPLYを退避前の状態に復元
	CALL CLEAR_MPLY()
	CALL CLEAR_MTAR()
	FOR LOCAL, 0, 100
		IF COM_REACTION_実行前MPLY:LOCAL != -1 && (CFLAG:(COM_REACTION_実行前MPLY:LOCAL):調教参加フラグ == 1 || COM_REACTION_実行前MPLY:LOCAL == MASTER)
			CALL ADD_MPLY(COM_REACTION_実行前MPLY:LOCAL)
			DEBUGPRINTFORML @SYSTEM_TRAIN(MPLY:{LOCAL}に%ANAME(COM_REACTION_実行前MPLY:LOCAL)%が追加された)
		ENDIF
		IF COM_REACTION_実行前MTAR:LOCAL != -1 && !IS_MPLY(COM_REACTION_実行前MTAR:LOCAL) && (CFLAG:(COM_REACTION_実行前MTAR:LOCAL):調教参加フラグ == 1 || COM_REACTION_実行前MTAR:LOCAL == MASTER)
			CALL ADD_MTAR(COM_REACTION_実行前MTAR:LOCAL)
			DEBUGPRINTFORML @SYSTEM_TRAIN(MTAR:{LOCAL}に(%ANAME(COM_REACTION_実行前MTAR:LOCAL)%が追加された)
		ENDIF
	NEXT
	IF COM_REACTION_実行前主導権 != -1
		IF CFLAG:COM_REACTION_実行前主導権:調教参加フラグ == 1 || COM_REACTION_実行前主導権 == MASTER
			FLAG:主導権所有者 = COM_REACTION_実行前主導権
		ELSE
			FLAG:主導権所有者 = -1
		ENDIF
	ELSE
		FLAG:主導権所有者 = -1
	ENDIF
ELSE
	;リアクション実行判定
	CALL COM_REACTION_MAIN()
	IF RESULT != -1
		;DOTRAIN RESULT
		CALL FL_DOTRAIN(RESULT)
	ENDIF
ENDIF

IF FLAG:調教モード == 調教_居住区
	FOR ITER_I, 0, CHARANUM
		IF TCVAR:ITER_I:調教一時参加扱い
			TCVAR:ITER_I:調教一時参加扱い = 0
			IF C_COND_MAP_GET(ITER_I, "設備IDX") != HO_MASTER_USE_MODULE_LIST_IDX
				CFLAG:(ITER_I):調教参加フラグ = 0
				TFLAG:参加者数 --
			ENDIF
			CALL RELEASE_ALL_EQUIP(ITER_I, 1)
			CALL DEL_MTAR(ITER_I)
		ENDIF
	NEXT
ENDIF

;実行済みコマンドオプションの消去
VARSET COM_OPTION

;LINES_TRAINを更新
LINES_TRAIN = LINECOUNT

;-------------------------------------------------
;交流終了時の共通処理  時間切れならARG:0に0を、コマンドによる終了なら1を指定する
;AFTERTRAIN より@EVENTEND が呼び出され@SHOPに遷移する
;-------------------------------------------------
@TRAIN_EXIT(ARG:0)
#DIM DYNAMIC ITER_I
#DIM DYNAMIC ITER_J
#DIM DYNAMIC ITER_K

FLAG:調教スキップ可 = 0
FLAG:調教シチュエーション指定 = 0

IF !FLAG:ハウジングモード
	;EQUIPの初期化
	CALL INIT_EQUIP()
ENDIF

;一時禁止コマンド制御変数のリセット
FOR ITER_I, 0, CHARANUM
	VARSET COM_FORBIDDEN:ITER_I:0, 0
	;この調教でのコマンド実行回数をこのターンのコマンド実行回数に加算
	FOR ITER_J, 0, 3000
		FOR ITER_K, 0, COM_OPTION_NUM
			COM_COUNT_THIS_TRAIN:ITER_I:ITER_J:ITER_K = 0
		NEXT
	NEXT
NEXT

;ハウジングモードでの調教終了処理,TRAINは継続する
{
	IF FLAG:ハウジングモード
		&& (FLAG:調教モード != 調教_居住区 && FLAG:調教モード != 調教_クエスト)
		&& (ARG:0 == 1 || TFLAG:奉仕モード)
		&& !FLAG:クエストモード
}
	CALL HOUSING_TRAIN_EXIT(ARG:0)
	SIF !RESULT
		RETURN
	;クエストモードでの終了処理
ELSEIF FLAG:クエストモード
	CALL INIT_EQUIP()
	;規定時間に到達
	IF (FLAG:QST_終了時刻 > 0 && FLAG:クエストモード && HO_TIME >= FLAG:QST_終了時刻) && !FLAG:クエスト_刻限による終了無効
		CALL QST_TRAIN_EXIT(ARG:0)
		FLAG:QST_終了時刻 = 0
		PRINTL
		PRINTFORMW (すっかり夜も更けたため、一度拠点に帰還します)
		CALL FL_TRAINEXIT
		RETURN
	ENDIF

	;クエスト完了フラグが立っていない状態で調教が終了された場合は調教終了処理を実行し、TRAINフロー自体は継続
	IF !TFLAG:クエスト_完了フラグ
		;コマンドカテゴリを{ｸｴｽﾄ}に
		TFLAG:調教タブ設定 = 13
		CALL QST_TRAIN_EXIT(ARG:0)
	ELSE
		CALL QST_TRAIN_EXIT(ARG:0)
		PRINTFORMW (クエストが終了しました)
		CALL FL_TRAINEXIT
	ENDIF
	RETURN
ELSEIF FLAG:調教モード == 調教_居住区 && ARG:0 == 1
	CALL INIT_EQUIP()
	CALL HOUSING_TRAIN_EXIT(ARG:0)
	PRINTL
	PRINTFORMW (交流を終了します)
	CALL FL_TRAINEXIT
	RETURN
ELSEIF (FLAG:調教モード == 調教_居住区 || FLAG:ハウジングモード) && ARG:0 == 0
	CALL INIT_EQUIP()
	CALL HOUSING_TRAIN_EXIT(ARG:0)
	PRINTL
	PRINTFORMW (すっかり夜も更けたため、交流を終了します)
	CALL FL_TRAINEXIT
	RETURN
ENDIF

;子育てモード
IF FLAG:調教モード == 3
	PRINTL
	PRINTFORMW (そろそろ日が暮れます。今日はここまでにしてゆっくり過ごすことにしました)
	CALL FL_TRAINEXIT

ELSEIF FLAG:調教モード == 4 || FLAG:調教モード == 5
	PRINTL
	PRINTFORMW (どうやら今日の調教は終了したようです…)
	CALL FL_TRAINEXIT

ELSEIF FLAG:調教モード == 7
	PRINTL
	PRINTFORMW (逢瀬の時間が終了しました…)
	CALL FL_TRAINEXIT

	;ウフフモードの場合
ELSEIF FLAG:ウフフフラグ
	;睡姦中
	IF TFLAG:睡姦中フラグ
		PRINTL
		PRINTFORMW (目を覚まされるとまずいため、後始末をして早めに帰ることにしました)

		;主人公がターゲット側の場合、ターゲットとプレイヤーを入れ替えておく
		;(MTAR:0が必ず会いに行った相手を指すようにしておく)
		IF MTAR:0 == MASTER
			SWAP MTAR:0, MPLY:0
		ENDIF
		;真名を許すイベント
		;		CALL AFTER_ALLOW_NAME

		;主人公が行動不能
	ELSEIF TFLAG:MASTER行動不能
		PRINTL
		PRINTFORMW (さすがに夜も更けてきたため、なんとか解放してもらえました)
		;デート中
	ELSEIF TFLAG:デート場所
		PRINTL
		PRINTFORMW (もう夜も遅い時間です。今日はここまでにして帰ることにしました)
	ELSEIF FLAG:夜這い
		PRINTL
		PRINTFORMW (これ以上留まるのは危険です。今日はここまでにして逃げることにしました)
	ELSEIF FLAG:デイリーイベント
		PRINTL
		PRINTFORMW (刻限がきたようです。逢瀬を終了します)
	ELSE
		PRINTL
		PRINTFORMW (もう夜も更ける時間帯です。今日はここまでにして眠ることにしました)
	ENDIF
	CALL FL_TRAINEXIT

ELSE
	;主人公がターゲット側の場合、ターゲットとプレイヤーを入れ替えておく
	;(MTAR:0が必ず会いに行った相手を指すようにしておく)
	IF MTAR:0 == MASTER
		SWAP MTAR:0, MPLY:0
	ENDIF

	;真名を許すイベント
	;	CALL AFTER_ALLOW_NAME

	WAIT
	CALL SINGLE_DRAWLINE
	PRINTFORMW そろそろ遅い時間になってきました…
	PRINTL

	PRINTPLAIN
	PRINTBUTTON "0[このまま別れる]", 0
	PRINTPLAIN
	IF GET_PLACENAME(TFLAG:デート場所) == "市街地"
		IF (IS_FEMALE(MASTER) && IS_MALE(MTAR:0)) || (GROUPMATCH(TALENT:MASTER:性別, 4, 5) && GROUPMATCH(TALENT:(MTAR:0):性別, 0, 3) && TALENT:(MTAR:0):恋人)
			PRINTBUTTON "1[宿に連れ込む(宿代は相手持ち)]", 1
		ELSE
			PRINTBUTTON "1[宿に連れ込む(所持金－2000)]", 1
		ENDIF
	ELSEIF GET_PLACENAME(TFLAG:デート場所) == "温泉"
		PRINTBUTTON "1[抱き寄せる]", 1
	ELSE
		PRINTBUTTON "1[押し倒す]", 1
	ENDIF
	PRINTPLAIN
	PRINTBUTTON "2[誘惑する]", 2
	PRINTL

	$INPUT_LOOP
	INPUT

	LOCAL:1 = 0
	LOCAL:2 = RESULT

	;このまま別れる
	IF LOCAL:2 == 0
		;ムードが60以上または相手が肉便器で通常または育児中なら押し倒し／おねだりの判定
		IF (TFLAG:ムード >= 60 || GETBIT(TALENT:(MTAR:0):淫乱系, 素質_淫乱_精液便女)) && ARG:0 == 0 && GROUPMATCH(CFLAG:(MTAR:0):行動不能状態, 0, 2)
			;押し倒し／おねだり判定
			CALL PUSH_OVER
			;押し倒された場合
			IF RESULT == 1
				;ウフフフラグをＯＮ
				FLAG:ウフフフラグ = 1
				;時間を再設定
				TFLAG:調教経過時間 = 0
				TFLAG:調教ターン数 = 20
				;タブ設定をリセット
				TFLAG:調教タブ設定 = 0
				;主導権を相手側に渡す
				FLAG:主導権所有者 = MTAR:0
				;おねだりされた場合
			ELSEIF RESULT == 2
				CALL ASK_YN("抱く", "おあずけ")
				IF RESULT == 0
					LOCAL:1 = 1
				ELSE
					TCVAR:(MTAR:0):おねだりフラグ = 1
					CALL KOJO_EVENT(MTAR:0, 103)
					PRINTFORMW （%LOCALS:0%%ANAME(MTAR:0)%と一旦別れました）
					CALL FL_TRAINEXIT
				ENDIF
				;押し倒し／おねだりが発生せず、捕虜会話でない場合
			ELSEIF FLAG:調教モード != 6
				;相手からのキス・告白の判定
				CALL CHECK_EXIT_ACTION
			ENDIF
		ENDIF
	ENDIF

	;押し倒す
	IF LOCAL:2 == 1
		;押し倒した時の判定
		CALL JUDGE_PUSHDOWN
		IF RESULT
			LOCAL:1 = 2
		ENDIF
	ENDIF

	;誘惑する
	IF LOCAL:2 == 2
		IF HAS_VAGINA(MASTER) && HAS_PENIS(MTAR:0)
			IF GET_BUSTSIZE(ARG:0) < 0
				PRINTFORMW %ANAME(MASTER)%は体を擦り付けて%ANAME(MTAR:0)%を誘惑した…
			ELSE
				PRINTFORMW %ANAME(MASTER)%は胸を押し付けて%ANAME(MTAR:0)%を誘惑した…
			ENDIF
		ELSEIF TALENT:MASTER:霊体 || TALENT:(MTAR:0):霊体
			PRINTFORMW %ANAME(MASTER)%は%ANAME(MTAR:0)%の体を焦らすようにまさぐって誘惑しようとした…
		ELSE
			PRINTFORMW %ANAME(MASTER)%は%ANAME(MTAR:0)%の体を焦らすようにまさぐって誘惑した…
		ENDIF
		;誘惑した時の判定
		CALL JUDGE_PUSHDOWN2
		IF RESULT
			LOCAL:1 = 3
		ENDIF
	ENDIF

	;ウフフ突入の場合
	IF LOCAL:1
		IF LOCAL:1 == 3
			IF GET_PLACENAME(TFLAG:デート場所) == "市街地"
				PRINTFORMW すっかりその気になった%ANAME(MTAR:0)%は、%ANAME(MASTER)%を市街地の宿へと連れ込んだ…
			ELSEIF GET_PLACENAME(TFLAG:デート場所) == "温泉"
				PRINTFORMW すっかりその気になった%ANAME(MTAR:0)%は、息を荒らげて%ANAME(MASTER)%の体に抱きついた
			ELSEIF GETBIT(TALENT:(MTAR:0):淫乱系, 素質_淫乱_精液便女)
				PRINTFORMW すっかりその気になった%ANAME(MTAR:0)%は、%ANAME(MASTER)%に自分を使ってくれと頼んできた…
			ELSEIF GETBIT(TALENT:MASTER:淫乱系, 素質_淫乱_精液便女)
				PRINTFORMW すっかりその気になった%ANAME(MTAR:0)%は、%ANAME(MASTER)%を使うことにしたようだ
			ELSE
				PRINTFORMW すっかりその気になった%ANAME(MTAR:0)%は、息を荒らげて%ANAME(MASTER)%を押し倒した
			ENDIF
		ELSE
			IF GET_PLACENAME(TFLAG:デート場所) == "市街地"
				PRINTFORMW %ANAME(MASTER)%と%ANAME(MTAR:0)%は市街地の宿へと入った…
			ELSEIF GET_PLACENAME(TFLAG:デート場所) == "温泉"
				PRINTFORMW %ANAME(MASTER)%は%ANAME(MTAR:0)%を抱き寄せた
			ELSEIF GETBIT(TALENT:(MTAR:0):淫乱系, 素質_淫乱_精液便女)
				PRINTFORMW %ANAME(MASTER)%は%ANAME(MTAR:0)%を使ってやることにした
			ELSEIF GETBIT(TALENT:MASTER:淫乱系, 素質_淫乱_精液便女)
				PRINTFORMW %ANAME(MASTER)%は%ANAME(MTAR:0)%に、自分を使ってくれと頼んだ…
			ELSE
				PRINTFORMW %ANAME(MASTER)%は%ANAME(MTAR:0)%を押し倒した
			ENDIF
		ENDIF
		;ウフフフラグをＯＮ
		FLAG:ウフフフラグ = 1
		;時間を再設定
		TFLAG:調教経過時間 = 0
		TFLAG:調教ターン数 = 20
		;タブ設定をリセット
		TFLAG:調教タブ設定 = 0
	ENDIF

	;ウフフモードに入らないなら終了
	IF !FLAG:ウフフフラグ
		PRINTFORMW （%LOCALS:0%%ANAME(MTAR:0)%と一旦別れました）
		CALL FL_TRAINEXIT
	ENDIF
ENDIF

;-------------------------------------------------
;真名を許すイベント
;-------------------------------------------------
;@AFTER_ALLOW_NAME
;ターゲットが複数いる場合は戻る
;IF MTAR_NUM != 1
;	RETURN 0
;ENDIF

;既に真名を許してもらった場合、真名が定義されていない場合は戻る
;IF CFLAG:(MTAR:0):8 || CALLNAME:(MTAR:0) == "" || CALLNAME:(MTAR:0) == NAME:(MTAR:0)
;	RETURN 0
;ENDIF
;
;好感度500以上
;IF CFLAG:(MTAR:0):好感度 < 500
;	RETURN 0
;ENDIF

;PRINTL
;CALL SINGLE_DRAWLINE

;睡姦を行った場合
;IF TFLAG:睡姦中フラグ
;	PRINTFORMW 後日、%ANAME(MASTER)%は%ANAME(MTAR:0)%からの呼び出しを受けた…
;ENDIF

;口上独自のイベント
;CALL KOJO_EVENT(MTAR:0, 10)

;真名許可フラグ
;CFLAG:(MTAR:0):8 = 1

;PRINTL
;SETCOLOR カラー_注意
;PRINTFORML %ANAME(MTAR:0)%から真名「%CALLNAME:(MTAR:0)%」を許されました
;RESETCOLOR
;CALL SINGLE_DRAWLINE
;WAIT
;RETURN 1

;-------------------------------------------------
;押し倒した時の判定
;-------------------------------------------------
@JUDGE_PUSHDOWN
;ターゲットが複数いる場合は戻る
IF MTAR_NUM != 1
	RETURN 0
ENDIF

;●実行値の計算
CVARSET TCVAR, 24, -10000
CVARSET TCVAR, 25, 10000

;実行値の設定
TCVAR:(MTAR:0):実行値 = 100

CALL COM_ORDER(MTAR:0)

CALL COM_ORDER_ELEMENT(MTAR:0, "欲情", GET_PALAMLV(PALAM:(MTAR:0):欲情))
IF HAS_VAGINA(MTAR:0)
	CALL COM_ORDER_ELEMENT(MTAR:0, "潤滑", GET_PALAMLV(PALAM:(MTAR:0):潤滑))
ENDIF
CALL COM_ORDER_ELEMENT(MTAR:0, "欲望", ABL:(MTAR:0):欲望 * 4)
CALL COM_ORDER_ELEMENT(MTAR:0, "奉仕", ABL:(MTAR:0):奉仕 * 2)

IF TALENT:(MTAR:0):貞操観念
	CALL COM_ORDER_ELEMENT(MTAR:0, "貞操観念", -10)
ENDIF

IF TALENT:(MTAR:0):貞操無頓着
	CALL COM_ORDER_ELEMENT(MTAR:0, "貞操無頓着", 10)
ENDIF

IF TALENT:(MTAR:0):恥じらい
	CALL COM_ORDER_ELEMENT(MTAR:0, "恥じらい", -6)
ENDIF

IF TALENT:(MTAR:0):恥薄い
	CALL COM_ORDER_ELEMENT(MTAR:0, "恥薄い", 3)
ENDIF

IF TALENT:(MTAR:0):快感に素直
	CALL COM_ORDER_ELEMENT(MTAR:0, "快感に素直", 5)
ENDIF

IF TALENT:(MTAR:0):快感の否定
	CALL COM_ORDER_ELEMENT(MTAR:0, "快感の否定", -5)
ENDIF

IF TALENT:(MTAR:0):一線越えない
	CALL COM_ORDER_ELEMENT(MTAR:0, "一線越えない", -15)
ENDIF

IF TALENT:(MTAR:0):恋慕
	CALL COM_ORDER_ELEMENT(MTAR:0, "恋慕", 12)
ENDIF

IF TALENT:(MTAR:0):親友
	CALL COM_ORDER_ELEMENT(MTAR:0, "親友", 6)
ENDIF

IF TALENT:(MTAR:0):親愛
	CALL COM_ORDER_ELEMENT(MTAR:0, "親愛", 20)
ENDIF

IF TALENT:(MTAR:0):恋人
	CALL COM_ORDER_ELEMENT(MTAR:0, "恋人", 6)
ENDIF

IF TALENT:(MTAR:0):キス未経験
	CALL COM_ORDER_ELEMENT(MTAR:0, "キス未経験", -5)
ENDIF

IF TALENT:(MTAR:0):霊体 || TALENT:(MPLY:0):霊体
	CALL COM_ORDER_ELEMENT(MTAR:0, "霊体", -1000)
ENDIF

;ムードボーナス
IF TFLAG:ムード < 60
	CALL COM_ORDER_ELEMENT(MTAR:0, "ムード", 0)
ELSE
	CALL COM_ORDER_ELEMENT(MTAR:0, "ムード", 5 + TFLAG:ムード / 30)
ENDIF

;好感度
IF CFLAG:(MTAR:0):好感度 < 700
	IF CFLAG:(MTAR:0):好感度 < 300
		LOCAL:0 = -20
	ELSEIF CFLAG:(MTAR:0):好感度 < 500
		LOCAL:0 = -10
	ELSE
		LOCAL:0 = -5
	ENDIF
	CALL COM_ORDER_ELEMENT(MTAR:0, "好感度不足", LOCAL:0)
ENDIF

;第三者　○○に恋慕に関する処理
;CALL JUDGE_PUSHDOWN_SUB

;性知識
IF ABL:(MTAR:0):性知識 == 0
	CALL COM_ORDER_ELEMENT(MTAR:0, "性知識なし", 80)
ENDIF

;合意
IF TALENT:(MTAR:0):合意
	CALL COM_ORDER_ELEMENT(MTAR:0, "合意", 10)
ENDIF

;判定結果を表示
PRINTFORMW  = {TCVAR:(MTAR:0):判定値} %TOSTR_COMPARE(TCVAR:(MTAR:0):判定値, TCVAR:(MTAR:0):実行値)% 実行値{TCVAR:(MTAR:0):実行値}

;実行判定
IF TCVAR:(MTAR:0):判定値 >= TCVAR:(MTAR:0):実行値
	;既に[合意]済み
	IF TALENT:(MTAR:0):合意
		CALL KOJO_EVENT(MTAR:0, 7)

		;酔いによる補正を除いても成功
	ELSEIF TCVAR:(MTAR:0):判定値 - PALAM:(MTAR:0):酔い / 150 >= 100
		TFLAG:酔った勢いで成功 = 0
		CALL KOJO_EVENT(MTAR:0, 5)
		IF TCVAR:(MTAR:0):催眠中 <= 0
			PRINTFORMW %ANAME(MTAR:0)%の<合意>を得た
			TALENT:(MTAR:0):合意 = 1
		ENDIF

		;酔った勢いで成功
	ELSE
		TFLAG:酔った勢いで成功 = 1
		CALL KOJO_EVENT(MTAR:0, 4)
	ENDIF
	RETURN 1

	;失敗
ELSE
	CALL KOJO_EVENT(MTAR:0, 6)
	IF !TALENT:(MTAR:0):合意 && !TALENT:(MTAR:0):恋慕 && !TALENT:(MTAR:0):親友 && !TALENT:(MTAR:0):霊体 && !TALENT:(MPLY:0):霊体
		PRINTFORMW %ANAME(MTAR:0)%の好感度が100下がりました
		CFLAG:(MTAR:0):好感度 -= 100
	ENDIF
	RETURN 0
ENDIF

;-------------------------------------------------
;誘惑した時の判定
;-------------------------------------------------
@JUDGE_PUSHDOWN2
;ターゲットが複数いる場合は戻る
IF MTAR_NUM != 1
	RETURN 0
ENDIF

;●実行値の計算
CVARSET TCVAR, 24, -10000
CVARSET TCVAR, 25, 10000

;実行値の設定
TCVAR:(MTAR:0):実行値 = 110

CALL COM_ORDER(MTAR:0)

CALL COM_ORDER_ELEMENT(MTAR:0, "欲情", GET_PALAMLV(PALAM:(MTAR:0):欲情) * 2)
IF HAS_VAGINA(MTAR:0)
	CALL COM_ORDER_ELEMENT(MTAR:0, "潤滑", GET_PALAMLV(PALAM:(MTAR:0):潤滑))
ENDIF
CALL COM_ORDER_ELEMENT(MTAR:0, "欲望", ABL:(MTAR:0):欲望 * 5)
CALL COM_ORDER_ELEMENT(MTAR:0, "奉仕", ABL:(MTAR:0):奉仕 * 1)

IF TALENT:(MTAR:0):貞操観念
	CALL COM_ORDER_ELEMENT(MTAR:0, "貞操観念", -10)
ENDIF

IF TALENT:(MTAR:0):貞操無頓着
	CALL COM_ORDER_ELEMENT(MTAR:0, "貞操無頓着", 10)
ENDIF

IF TALENT:(MTAR:0):大人しい
	CALL COM_ORDER_ELEMENT(MTAR:0, "大人しい", -8)
ENDIF

IF TALENT:(MTAR:0):恥じらい
	CALL COM_ORDER_ELEMENT(MTAR:0, "恥じらい", -8)
ENDIF

IF TALENT:(MTAR:0):恥薄い
	CALL COM_ORDER_ELEMENT(MTAR:0, "恥薄い", 3)
ENDIF

IF TALENT:(MTAR:0):一線越えない
	CALL COM_ORDER_ELEMENT(MTAR:0, "一線越えない", -15)
ENDIF

IF TALENT:(MTAR:0):快感に素直
	CALL COM_ORDER_ELEMENT(MTAR:0, "快感に素直", 12)
ENDIF

IF TALENT:(MTAR:0):快感の否定
	CALL COM_ORDER_ELEMENT(MTAR:0, "快感の否定", -10)
ENDIF

IF TALENT:(MTAR:0):保守的
	CALL COM_ORDER_ELEMENT(MTAR:0, "保守的", -4)
ENDIF

IF TALENT:(MTAR:0):自制心
	CALL COM_ORDER_ELEMENT(MTAR:0, "自制心", -10)
ENDIF

IF TALENT:(MTAR:0):恋慕
	CALL COM_ORDER_ELEMENT(MTAR:0, "恋慕", 12)
ENDIF

IF TALENT:(MTAR:0):親友
	CALL COM_ORDER_ELEMENT(MTAR:0, "親友", 6)
ENDIF

IF TALENT:(MTAR:0):親愛
	CALL COM_ORDER_ELEMENT(MTAR:0, "親愛", 20)
ENDIF

IF TALENT:(MTAR:0):恋人
	CALL COM_ORDER_ELEMENT(MTAR:0, "恋人", 6)
ENDIF

IF TALENT:(MTAR:0):キス未経験
	CALL COM_ORDER_ELEMENT(MTAR:0, "キス未経験", -5)
ENDIF

IF HAS_PENIS(MTAR:0) && HAS_VAGINA(MPLY:0)
	CALL COM_ORDER_ELEMENT(MTAR:0, "性別", 20)
ENDIF

IF TALENT:(MTAR:0):霊体 || TALENT:(MPLY:0):霊体
	CALL COM_ORDER_ELEMENT(MTAR:0, "霊体", -1000)
ENDIF

;ムードボーナス
IF TFLAG:ムード < 60
	CALL COM_ORDER_ELEMENT(MTAR:0, "ムード", 0)
ELSE
	CALL COM_ORDER_ELEMENT(MTAR:0, "ムード", 5 + TFLAG:ムード / 30)
ENDIF

;好感度
IF CFLAG:(MTAR:0):好感度 < 700
	IF CFLAG:(MTAR:0):好感度 < 300
		LOCAL:0 = -20
	ELSEIF CFLAG:(MTAR:0):好感度 < 500
		LOCAL:0 = -10
	ELSE
		LOCAL:0 = -5
	ENDIF
	CALL COM_ORDER_ELEMENT(MTAR:0, "好感度不足", LOCAL:0)
ENDIF
;
;性知識
IF ABL:(MTAR:0):性知識 == 0
	CALL COM_ORDER_ELEMENT(MTAR:0, "性知識なし", -80)
ENDIF

;合意
IF TALENT:(MTAR:0):合意
	CALL COM_ORDER_ELEMENT(MTAR:0, "合意", 10)
ENDIF

;判定結果を表示
PRINTFORMW  = {TCVAR:(MTAR:0):判定値} %TOSTR_COMPARE(TCVAR:(MTAR:0):判定値, TCVAR:(MTAR:0):実行値)% 実行値{TCVAR:(MTAR:0):実行値}

;実行判定
IF TCVAR:(MTAR:0):判定値 >= TCVAR:(MTAR:0):実行値
	;既に[合意]済み
	IF TALENT:(MTAR:0):合意
		CALL KOJO_EVENT(MTAR:0, 107)

		;酔いによる補正を除いても成功
	ELSEIF TCVAR:(MTAR:0):判定値 - PALAM:(MTAR:0):酔い / 150 >= 100
		TFLAG:酔った勢いで成功 = 0
		CALL KOJO_EVENT(MTAR:0, 105)
		IF TCVAR:(MTAR:0):催眠中 <= 0
			PRINTFORMW %ANAME(MTAR:0)%の<合意>を得た
			TALENT:(MTAR:0):合意 = 1
		ENDIF

		;酔った勢いで成功
	ELSE
		TFLAG:酔った勢いで成功 = 1
		CALL KOJO_EVENT(MTAR:0, 104)
	ENDIF
	RETURN 1

	;失敗
ELSE
	CALL KOJO_EVENT(MTAR:0, 106)
	IF !TALENT:(MTAR:0):合意 && !TALENT:(MTAR:0):恋慕 && !TALENT:(MTAR:0):親友 && !TALENT:(MTAR:0):霊体 && !TALENT:(MPLY:0):霊体
		PRINTFORMW %ANAME(MTAR:0)%の好感度が50下がりました
		CFLAG:(MTAR:0):好感度 -= 50
	ENDIF
	RETURN 0
ENDIF

;-------------------------------------------------
;押し倒され／おねだり判定(戻り値:0=何もしない、1=押し倒し、2=おねだり)
;-------------------------------------------------
@PUSH_OVER
;既にウフフ中なら戻る
IF FLAG:ウフフフラグ
	RETURN 0
ENDIF

SIF TCVAR:(MTAR:0):催眠中 > 0
	RETURN 0

;最低でも[恋慕][恋人][服従][烙印][肉便器]のいずれかが必要
IF !TALENT:(MTAR:0):恋慕 && !TALENT:(MTAR:0):恋人 && !TALENT:(MTAR:0):服従 && !TALENT:(MTAR:0):烙印 && !TALENT:(MTAR:0):主人 && !GETBIT(TALENT:(MTAR:0):淫乱系, 素質_淫乱_精液便女)
	RETURN 0
ENDIF

;[霊体]持ちは不可能
IF TALENT:(MTAR:0):霊体 || TALENT:(MPLY:0):霊体
	RETURN 0
ENDIF

;性知識Lv1以上が必要
IF ABL:(MTAR:0):性知識 < 1
	RETURN 0
ENDIF

;霖之助に恋慕 or 霖之助の恋人なら戻る
;IF TALENT:(MTAR:0):霖之助に恋慕 || TALENT:(MTAR:0):霖之助の恋人
;	RETURN
;ENDIF

;●実行値の計算
CVARSET TCVAR, 24, -10000
CVARSET TCVAR, 25, 10000

;◆↓表示スキップここから↓◆
SKIPDISP 1

CALL COM_ORDER(MTAR:0)

CALL COM_ORDER_ELEMENT(MTAR:0, "欲情", GET_PALAMLV(PALAM:(MTAR:0):欲情))
CALL COM_ORDER_ELEMENT(MTAR:0, "潤滑", GET_PALAMLV(PALAM:(MTAR:0):潤滑))
CALL COM_ORDER_ELEMENT(MTAR:0, "欲望", ABL:(MTAR:0):欲望 * 4)

SIF TALENT:(MTAR:0):臆病
	CALL COM_ORDER_ELEMENT(MTAR:0, "臆病", -6)
SIF TALENT:(MTAR:0):反抗的
	CALL COM_ORDER_ELEMENT(MTAR:0, "反抗的", -5)
SIF TALENT:(MTAR:0):大人しい
	CALL COM_ORDER_ELEMENT(MTAR:0, "大人しい", -10)
SIF TALENT:(MTAR:0):プライド高い
	CALL COM_ORDER_ELEMENT(MTAR:0, "プライド高い", -6)
SIF TALENT:(MTAR:0):ツンデレ
	CALL COM_ORDER_ELEMENT(MTAR:0, "ツンデレ", 15)
SIF TALENT:(MTAR:0):自制心
	CALL COM_ORDER_ELEMENT(MTAR:0, "自制心", -15)
SIF TALENT:(MTAR:0):無関心
	CALL COM_ORDER_ELEMENT(MTAR:0, "無関心", -15)
SIF TALENT:(MTAR:0):感情乏しい
	CALL COM_ORDER_ELEMENT(MTAR:0, "感情乏しい", -15)
SIF TALENT:(MTAR:0):楽観的
	CALL COM_ORDER_ELEMENT(MTAR:0, "楽観的", 5)
SIF TALENT:(MTAR:0):悲観的
	CALL COM_ORDER_ELEMENT(MTAR:0, "悲観的", -5)
SIF TALENT:(MTAR:0):一線越えない
	CALL COM_ORDER_ELEMENT(MTAR:0, "一線越えない", -20)
SIF TALENT:(MTAR:0):貞操観念
	CALL COM_ORDER_ELEMENT(MTAR:0, "貞操観念", -10)
SIF TALENT:(MTAR:0):貞操無頓着
	CALL COM_ORDER_ELEMENT(MTAR:0, "貞操無頓着", 10)
SIF TALENT:(MTAR:0):孤高
	CALL COM_ORDER_ELEMENT(MTAR:0, "孤高", -10)
SIF TALENT:(MTAR:0):抑圧
	CALL COM_ORDER_ELEMENT(MTAR:0, "抑圧", -25)
SIF TALENT:(MTAR:0):解放
	CALL COM_ORDER_ELEMENT(MTAR:0, "解放", 10)
SIF TALENT:(MTAR:0):恥じらい
	CALL COM_ORDER_ELEMENT(MTAR:0, "恥じらい", -12)
SIF TALENT:(MTAR:0):恥薄い
	CALL COM_ORDER_ELEMENT(MTAR:0, "恥薄い", 4)
SIF TALENT:(MTAR:0):恋慕
	CALL COM_ORDER_ELEMENT(MTAR:0, "恋慕", 12)
SIF TALENT:(MTAR:0):親愛
	CALL COM_ORDER_ELEMENT(MTAR:0, "親愛", 20)
SIF TALENT:(MTAR:0):恋人
	CALL COM_ORDER_ELEMENT(MTAR:0, "恋人", 6)
SIF TALENT:(MTAR:0):キス未経験
	CALL COM_ORDER_ELEMENT(MTAR:0, "キス未経験", -15)

;ムードボーナス
IF TFLAG:ムード < 60
	CALL COM_ORDER_ELEMENT(MTAR:0, "ムード", 0)
ELSE
	CALL COM_ORDER_ELEMENT(MTAR:0, "ムード", 5 + TFLAG:ムード / 30)
ENDIF

CALL COM_ORDER_ELEMENT(MTAR:0, "好感度", CFLAG:(MTAR:0):好感度 / 500)
CALL COM_ORDER_ELEMENT(MTAR:0, "依存度", CFLAG:(MTAR:0):依存度 / 500)

IF TALENT:(MTAR:0):合意
	;二回目以降は条件が厳しくなる
	TCVAR:(MTAR:0):実行値 = 240 + RAND:200
ELSE
	TCVAR:(MTAR:0):実行値 = 220
ENDIF

;判定結果を表示
PRINTFORMW  = {TCVAR:(MTAR:0):判定値} %TOSTR_COMPARE(TCVAR:(MTAR:0):判定値, TCVAR:(MTAR:0):実行値)% 実行値{TCVAR:(MTAR:0):実行値}

;◆↑表示スキップここまで↑◆
SKIPDISP 0

;主人公の主導権ポイントが低ければ押し倒し
IF GET_INITIATIVE_RATE(MTAR:0) > 0
	;酔い補正を除いても成功
	IF TCVAR:(MTAR:0):判定値 - PALAM:(MTAR:0):酔い / 150 >= TCVAR:(MTAR:0):実行値
		;酔った勢いフラグOFF
		TFLAG:酔った勢いで成功 = 0

		IF TALENT:(MTAR:0):合意
			;口上表示
			CALL KOJO_EVENT(MTAR:0, 24)

			;合意なし
		ELSE
			;口上表示
			CALL KOJO_EVENT(MTAR:0, 22)

			TALENT:(MTAR:0):合意 = 1
			PRINTFORMW %ANAME(MTAR:0)%の<合意>を得た
		ENDIF
		RETURN 1

		;酔った勢い
	ELSEIF TCVAR:(MTAR:0):判定値 >= TCVAR:(MTAR:0):実行値
		;酔った勢いフラグON
		TFLAG:酔った勢いで成功 = 1

		;合意あり
		IF TALENT:(MTAR:0):親愛
			;口上表示
			CALL KOJO_EVENT(MTAR:0, 25)

			;合意なし
		ELSE
			;口上表示
			CALL KOJO_EVENT(MTAR:0, 23)
		ENDIF
		RETURN 1
	ENDIF

	;主人公の主導権ポイントが高ければおねだり
ELSE
	;酔い補正を除いても成功
	IF TCVAR:(MTAR:0):判定値 - PALAM:(MTAR:0):酔い / 150 >= TCVAR:(MTAR:0):実行値
		;酔った勢いフラグOFF
		TFLAG:酔った勢いで成功 = 0

		IF TALENT:(MTAR:0):合意
			;口上表示
			CALL KOJO_EVENT(MTAR:0, 28)

			;合意なし
		ELSE
			;口上表示
			CALL KOJO_EVENT(MTAR:0, 26)

			TALENT:(MTAR:0):合意 = 1
			PRINTFORMW %ANAME(MTAR:0)%の<合意>を得た
		ENDIF
		RETURN 2

		;酔った勢い
	ELSEIF TCVAR:(MTAR:0):判定値 >= TCVAR:(MTAR:0):実行値
		;酔った勢いフラグON
		TFLAG:酔った勢いで成功 = 1

		;合意あり
		IF TALENT:(MTAR:0):親愛
			;口上表示
			CALL KOJO_EVENT(MTAR:0, 29)

			;合意なし
		ELSE
			;口上表示
			CALL KOJO_EVENT(MTAR:0, 27)
		ENDIF
		RETURN 2
	ENDIF
ENDIF

RETURN 0

;-------------------------------------------------
;別れるときのキスや告白の判定
;-------------------------------------------------
@CHECK_EXIT_ACTION
;ムードが60未満なら戻る
IF TFLAG:ムード < 60
	RETURN
ENDIF

;Modding
;this out because there's no reason a female PC should never get kisses or confessions
;Todo think about the m/m case
;IF IS_SAMESEX(MPLY:0, MTAR:0) && !TALENT:(MTAR:0):両刀
;	RETURN
;ENDIF

;既に恋人 or 服従系なら戻る
IF TALENT:(MTAR:0):恋人 || IS_SLAVE(MTAR:0) || IS_SLAVED_BY(MTAR:0)
	RETURN
ENDIF

;霖之助に恋慕 or 霖之助の恋人なら戻る
;IF TALENT:(MTAR:0):霖之助に恋慕 || TALENT:(MTAR:0):霖之助の恋人
;	RETURN
;ENDIF

;●実行値の計算
CVARSET TCVAR, 24, -10000
CVARSET TCVAR, 25, 10000

;◆↓表示スキップここから↓◆
SKIPDISP 1

CALL COM_ORDER_BASE(MTAR:0)

CALL COM_ORDER_ELEMENT(MTAR:0, "追加好感度補正", CFLAG:(MTAR:0):好感度 / 50)

SIF TALENT:(MTAR:0):臆病
	CALL COM_ORDER_ELEMENT(MTAR:0, "臆病", -12)
SIF TALENT:(MTAR:0):反抗的
	CALL COM_ORDER_ELEMENT(MTAR:0, "反抗的", -15)
SIF TALENT:(MTAR:0):気丈
	CALL COM_ORDER_ELEMENT(MTAR:0, "気丈", 6)
SIF TALENT:(MTAR:0):素直
	CALL COM_ORDER_ELEMENT(MTAR:0, "素直", 5)
SIF TALENT:(MTAR:0):大人しい
	CALL COM_ORDER_ELEMENT(MTAR:0, "大人しい", -10)
SIF TALENT:(MTAR:0):プライド高い
	CALL COM_ORDER_ELEMENT(MTAR:0, "プライド高い", -10)
SIF TALENT:(MTAR:0):ツンデレ
	CALL COM_ORDER_ELEMENT(MTAR:0, "ツンデレ", -25)
SIF TALENT:(MTAR:0):自制心
	CALL COM_ORDER_ELEMENT(MTAR:0, "自制心", -7)
SIF TALENT:(MTAR:0):無関心
	CALL COM_ORDER_ELEMENT(MTAR:0, "無関心", -20)
SIF TALENT:(MTAR:0):感情乏しい
	CALL COM_ORDER_ELEMENT(MTAR:0, "感情乏しい", -20)
SIF TALENT:(MTAR:0):楽観的
	CALL COM_ORDER_ELEMENT(MTAR:0, "楽観的", 15)
SIF TALENT:(MTAR:0):悲観的
	CALL COM_ORDER_ELEMENT(MTAR:0, "悲観的", -20)
SIF TALENT:(MTAR:0):一線越えない
	CALL COM_ORDER_ELEMENT(MTAR:0, "一線越えない", -20)
SIF TALENT:(MTAR:0):目立ちたがり
	CALL COM_ORDER_ELEMENT(MTAR:0, "目立ちたがり", 10)
SIF TALENT:(MTAR:0):貞操観念
	CALL COM_ORDER_ELEMENT(MTAR:0, "貞操観念", -10)
SIF TALENT:(MTAR:0):貞操無頓着
	CALL COM_ORDER_ELEMENT(MTAR:0, "貞操無頓着", 10)
SIF TALENT:(MTAR:0):孤高
	CALL COM_ORDER_ELEMENT(MTAR:0, "孤高", -15)
SIF TALENT:(MTAR:0):抑圧
	CALL COM_ORDER_ELEMENT(MTAR:0, "抑圧", -25)
SIF TALENT:(MTAR:0):解放
	CALL COM_ORDER_ELEMENT(MTAR:0, "解放", 12)
SIF TALENT:(MTAR:0):恥じらい
	CALL COM_ORDER_ELEMENT(MTAR:0, "恥じらい", -12)
SIF TALENT:(MTAR:0):恥薄い
	CALL COM_ORDER_ELEMENT(MTAR:0, "恥薄い", 4)
SIF TALENT:(MTAR:0):恋慕
	CALL COM_ORDER_ELEMENT(MTAR:0, "恋慕", 30)
SIF TALENT:(MTAR:0):親愛
	CALL COM_ORDER_ELEMENT(MTAR:0, "親愛", 30)
SIF TALENT:(MTAR:0):キス未経験
	CALL COM_ORDER_ELEMENT(MTAR:0, "キス未経験", -10)

IF CFLAG:(MTAR:0):捕虜先 == CFLAG:MASTER:所属
	CALL COM_ORDER_ELEMENT(MTAR:0, "捕虜", -50)
ENDIF

CALL COM_ORDER_ELEMENT(MTAR:0, "主導権基準値", GET_INITIATIVE_RATE(MTAR:0))

IF TFLAG:ムード < 10
	LOCAL:0 = -20
ELSEIF TFLAG:ムード < 30
	LOCAL:0 = -15
ELSEIF TFLAG:ムード < 50
	LOCAL:0 = 0
ELSEIF TFLAG:ムード < 100
	LOCAL:0 = (TFLAG:ムード - 50) / 10
ELSE
	LOCAL:0 = MIN(10, (TFLAG:ムード - 100) / 50 + 5)
ENDIF
CALL COM_ORDER_ELEMENT(MTAR:0, "ムード", LOCAL:0)

IF PALAM:(MTAR:0):酔い >= 150
	CALL COM_ORDER_ELEMENT(MTAR:0, "酔い", PALAM:(MTAR:0):酔い / 150)
ENDIF

;振られた回数の影響
LOCAL:0 = CFLAG:(MTAR:0):振られた回数 * 50
SIF TALENT:(MTAR:0):楽観的
	TIMES LOCAL:0, 0.50
SIF TALENT:(MTAR:0):悲観的
	TIMES LOCAL:0, 2.50
SIF TALENT:(MTAR:0):臆病
	TIMES LOCAL:0, 1.80
SIF TALENT:(MTAR:0):気丈
	TIMES LOCAL:0, 1.50
SIF TALENT:(MTAR:0):恥じらい
	TIMES LOCAL:0, 1.50
SIF TALENT:(MTAR:0):恥薄い
	TIMES LOCAL:0, 0.80
SIF TALENT:(MTAR:0):大人しい
	TIMES LOCAL:0, 1.30
SIF TALENT:(MTAR:0):自制心
	TIMES LOCAL:0, 1.50
SIF TALENT:(MTAR:0):無関心
	TIMES LOCAL:0, 1.50
SIF TALENT:(MTAR:0):感情乏しい
	TIMES LOCAL:0, 1.50
SIF TALENT:(MTAR:0):一線越えない
	TIMES LOCAL:0, 1.50
SIF TALENT:(MTAR:0):目立ちたがり
	TIMES LOCAL:0, 0.80
SIF TALENT:(MTAR:0):解放
	TIMES LOCAL:0, 0.60
SIF TALENT:(MTAR:0):抑圧
	TIMES LOCAL:0, 1.80
SIF TALENT:(MTAR:0):献身的
	TIMES LOCAL:0, 1.40
SIF TALENT:(MTAR:0):小悪魔
	TIMES LOCAL:0, 0.80
CALL COM_ORDER_ELEMENT(MTAR:0, "失恋回数", -LOCAL:0)

;告白の実行値を設定
TCVAR:(MTAR:0):実行値 = 190

;判定結果を表示
PRINTFORMW  = {TCVAR:(MTAR:0):判定値} %TOSTR_COMPARE(TCVAR:(MTAR:0):判定値, TCVAR:(MTAR:0):実行値)% 実行値{TCVAR:(MTAR:0):実行値}

;◆↑表示スキップここまで↑◆
SKIPDISP 0

;●告白判定
;最低でも恋慕が必要
IF TALENT:(MTAR:0):恋慕
	;判定成功
	IF TCVAR:(MTAR:0):判定値 >= TCVAR:(MTAR:0):実行値
		;口上表示
		CALL KOJO_EVENT(MTAR:0, 21)

		;了承した場合
		IF TFLAG:告白成功
			;キスの共通処理
			IF !TALENT:(MTAR:0):霊体 && !TALENT:(MPLY:0):霊体
				CALL KISS_COMMON(MTAR:0, @"%ANAME(MPLY:0)%の唇", "告白を受けての和姦", 0)
				CALL KISS_COMMON(MPLY:0, @"%ANAME(MTAR:0)%の唇", "告白を受けての和姦", 0)
			ENDIF

			;恋人になる処理
			CALL GET_LOVERS(MTAR:0)

			SOURCE:(MTAR:0):歓喜 += 3000

			;断った場合
		ELSE
			;主人公に振られた回数を加算
			CFLAG:(MTAR:0):振られた回数 ++

			SOURCE:(MTAR:0):反感 += 600
			SOURCE:(MTAR:0):悲哀 += 6000
		ENDIF
	ENDIF
ENDIF

;◆↓表示スキップここから↓◆
SKIPDISP 1

;キスの実行値を設定
TCVAR:(MTAR:0):実行値 = 120

;判定結果を表示
PRINTFORMW  = {TCVAR:(MTAR:0):判定値} %TOSTR_COMPARE(TCVAR:(MTAR:0):判定値, TCVAR:(MTAR:0):実行値)% 実行値{TCVAR:(MTAR:0):実行値}

;◆↑表示スキップここまで↑◆
SKIPDISP 0

;●ファーストキス判定
;最低でも好感度800が必要、少なくとも一方がキス未経験、どちらかが霊体ではない
IF CFLAG:(MTAR:0):好感度 >= 800 && (TALENT:(MTAR:0):キス未経験 || TALENT:(MPLY:0):キス未経験) && !TALENT:(MTAR:0):霊体 && !TALENT:(MPLY:0):霊体
	;判定成功
	IF TCVAR:(MTAR:0):判定値 >= TCVAR:(MTAR:0):実行値
		;口上表示
		CALL KOJO_EVENT(MTAR:0, 20)

		;キスの共通処理
		CALL KISS_COMMON(MTAR:0, @"%ANAME(MPLY:0)%の唇", "和姦", 1)
		CALL KISS_COMMON(MPLY:0, @"%ANAME(MTAR:0)%の唇", "和姦", 1)
		EXP:(MTAR:0):キス経験 += 1
		EXP:(MPLY:0):キス経験 += 1

		SOURCE:(MTAR:0):歓喜 += 500
	ENDIF
ENDIF

RETURN