code:
;-------------------------------------------------
;아이와 만나다
;-------------------------------------------------
@COM337
#DIM CHARA
#DIM CHILDNUM

;自立後
IF TFLAG:묘사중인아이 > 1000
	CHARA = TFLAG:묘사중인아이 % 1000
	CHILDNUM = TFLAG:묘사중인아이 / 1000
;육아중
ELSE
	CHARA = TFLAG:묘사중인아이
	CHILDNUM = TALENT:CHARA:육아중
	;同室の場合のみソースを獲得する
	IF TARGET == CHARA
		;ソースの量はかなり適当
		IF CHILD_LOVE:CHARA:CHILDNUM < 0
			SOURCE:반감 = 300
		ELSEIF CHILD_LOVE:CHARA:CHILDNUM < 200
			SOURCE:환락 = 200 + (ABL:친밀 * 20)
			SOURCE:사랑 = 100 + (ABL:친밀 * 10)
		ELSEIF CHILD_LOVE:CHARA:CHILDNUM < 300
			SOURCE:환락 = 400 + (ABL:친밀 * 30)
			SOURCE:사랑 = 200 + (ABL:친밀 * 20)
		ELSEIF CHILD_LOVE:CHARA:CHILDNUM < 400
			SOURCE:환락 = 800 + (ABL:친밀 * 60)
			SOURCE:사랑 = 500 + (ABL:친밀 * 40)
		ELSE
			SOURCE:환락 = 1600 + (ABL:친밀 * 90)
			SOURCE:사랑 = 1000 + (ABL:친밀 * 60)
		ENDIF
	ENDIF
ENDIF
IF CHILD_LOVE:CHARA:CHILDNUM < 0
	TFLAG:193 = -1
ELSEIF CHILD_LOVE:CHARA:CHILDNUM < 200
	TFLAG:193 = 1
ELSEIF CHILD_LOVE:CHARA:CHILDNUM < 300
	TFLAG:193 = 2
ELSEIF CHILD_LOVE:CHARA:CHILDNUM < 400
	TFLAG:193 = 3
ELSE
	TFLAG:193 = 4
ENDIF

;口上用にTARGETを変える,TFLAG:194にはCHILDNUMを入れる
;口上側で行動による分岐をしたい場合はCHILD_ACT:[[キャラ番号]]:(TFLAG:194)に行動内容が文字列で入ってます
;TFLAG:193は愛情度による分岐
TFLAG:현재의TARGET = TARGET
TARGET = CHARA
TFLAG:194 = CHILDNUM

SELECTCASE CHILD_ACT:CHARA:CHILDNUM
CASE "식사"
	;같이 식사
	IF CFLAG:CHARA:출산경과일 >= CHILD_젖떼기
		TCVAR:MASTER:공복시각 = 1440 * DAY + TIME + 20
		CALL RECOVER_PERMIL(MASTER, 30, "체력", 0, "식사에 의한 회복")
		CALL RECOVER_PERMIL(MASTER, 30, "기력", 0, "식사에 의한 회복")
	ENDIF
CASE "料理"
	SIF !RAND:2
		EXP:MASTER:요리경험 ++
CASE "読書"
	SIF !RAND:2
		EXP:MASTER:학습경험 ++
CASE "歌唱"
	;演奏できる
	SIF GROUPMATCH(1, MUSIC_ABLE(30), MUSIC_ABLE(31), MUSIC_ABLE(32), MUSIC_ABLE(33), MUSIC_ABLE(34), MUSIC_ABLE(35))
		EXP:MASTER:연주경험 ++
CASE "掃除"
	EXP:MASTER:청소경험 ++
CASE "勉強"
	EXP:MASTER:학습경험 ++
ENDSELECT

;子供の愛情度アップ（メッセージでなんちゃって表示する）
SIF TFLAG:묘사중인아이 < 1000
	CHILD_LOVE:CHARA:CHILDNUM ++

TIME += 10
RETURN 1

;-------------------------------------------------
;実行判定
;-------------------------------------------------
@COM_ABLE337
;아이와 만나다実行判定
SIF !TFLAG:100
	RETURN 0
;一括管理
SIF GLOBAL_COMABLE(337)
	RETURN RESULT
SIF FLAG:시간정지
	RETURN 0
;TARGETではなくMASTER
SIF CFLAG:MASTER:동침중
	RETURN 0
SIF !TFLAG:묘사중인아이
	RETURN 0
;육아중のキャラと同室の場合はTARGETにしないと実行できない（描写はされる）
IF TFLAG:묘사중인아이 < 1000
	IF CFLAG:MASTER:현재위치 == CFLAG:(TFLAG:묘사중인아이):현재위치
		SIF TARGET != TFLAG:묘사중인아이
			RETURN 0
	ENDIF
ENDIF
;기력0
SIF BASE:MASTER:기력 <= 0
	RETURN 0
RETURN 1

;-------------------------------------------------
;[아이와 만나다]の表示するコマンド名
;ARG  TFLAG:묘사중인아이
;-------------------------------------------------
@아이소개명칭(ARG)
#FUNCTIONS
#DIM CHARA
#DIM CHILDNUM
#DIMS 아이의행동
#DIMS 아이의이름

;自立後
IF TFLAG:묘사중인아이 > 1000
	CHARA = ARG % 1000
	CHILDNUM = ARG / 1000
;육아중
ELSE
	CHARA = ARG
	CHILDNUM = TALENT:CHARA:육아중
ENDIF

아이의행동 = %CHILD_ACT:CHARA:CHILDNUM%
아이의이름 = %CHILDNAME:CHARA:CHILDNUM%
SELECTCASE 아이의행동
CASE "睡眠"
	RETURNF 조사처리(아이의이름,"을") + " 쓰다듬다"
CASE "起床"
	IF CFLAG:CHARA:출산경과일 < CHILD_어휘
		RETURNF 조사처리(아이의이름,"을") + " 달래다"
	ELSE
		RETURNF 조사처리(아이의이름,"과") + " 회화"
	ENDIF
CASE "入浴"
	RETURNF 조사처리(아이의이름,"을") + " 씻기다"
CASE "식사"
	IF CFLAG:CHARA:출산경과일 < CHILD_젖떼기
		RETURNF 조사처리(아이의이름,"을") + " 어루만지다"
	ELSE
		RETURNF 조사처리(아이의이름,"과") + " 같이 식사"
	ENDIF
CASE "玩具"
	IF CFLAG:CHARA:출산경과일 < CHILD_자립전
		RETURNF 조사처리(아이의이름,"과") + " 놀다"
	ELSE
		RETURNF 조사처리(아이의이름,"과") + " 회화"
	ENDIF
CASE "お絵かき"
	RETURNF 조사처리(아이의이름,"과") + " 놀다"
CASE "遊び"
	RETURNF 조사처리(아이의이름,"과") + " 놀다"
CASE "勉強"
	RETURNF 조사처리(아이의이름,"을") + " 거들다"
CASE "読書"
	RETURNF 조사처리(아이의이름,"과") + " 회화"
CASE "料理"
	RETURNF 조사처리(아이의이름,"을") + " 거들다"
CASE "絵描き"
	RETURNF 조사처리(아이의이름,"과") + " 회화"
CASE "歌唱"
	;演奏できる
	IF GROUPMATCH(1, MUSIC_ABLE(30), MUSIC_ABLE(31), MUSIC_ABLE(32), MUSIC_ABLE(33), MUSIC_ABLE(34), MUSIC_ABLE(35))
		RETURNF 아이의이름 + "의 반주를 하다"
	ELSE
		RETURNF 조사처리(아이의이름,"과") + " 놀다"
	ENDIF
CASE "掃除"
	RETURNF 조사처리(아이의이름,"을") + " 거들다"
CASE "支度"
	RETURNF 조사처리(아이의이름,"과") + " 회화"
CASE "登校"
	RETURNF 조사처리(아이의이름,"과") + " 회화"
CASE "授業"
	RETURNF "수업 참관"
CASE "帰宅"
	RETURNF 조사처리(아이의이름,"과") + " 회화"
CASE "仕事"
	RETURNF 조사처리(아이의이름,"과") + " 회화"
CASE "散歩"
	RETURNF 조사처리(아이의이름,"과") + " 회화"

CASE "幼児期_抱かれる"
	RETURNF 조사처리(아이의이름,"을") + " 어루만지다"
CASE "幼児期_眠たそう"
	RETURNF 조사처리(아이의이름,"을") + " 어루만지다"
CASE "幼児期_大人しい"
	RETURNF 조사처리(아이의이름,"을") + " 어루만지다"
CASE "幼児期_こちらを見る"
	RETURNF 조사처리(아이의이름,"을") + " 어르다"
CASE "幼児期_何かを訴える"
	RETURNF 조사처리(아이의이름,"을") + " 어르다"
CASE "幼児期_何かを目で追う"
	RETURNF 조사처리(아이의이름,"을") + " 어르다"
CASE "幼児期_あやされる"
	RETURNF 조사처리(아이의이름,"을") + " 어르다"

CASE "幼少期_会話"
	RETURNF 조사처리(아이의이름,"과") + " 회화"
CASE "幼少期_教わる"
	RETURNF 조사처리(아이의이름,"과") + " 회화"
CASE "幼少期_しつけられる"
	RETURNF 조사처리(아이의이름,"과") + " 회화"
CASE "幼少期_親子遊び"
	RETURNF 조사처리(아이의이름,"과") + " 놀다"
CASE "幼少期_一人遊び"
	RETURNF 조사처리(아이의이름,"과") + " 놀다"
CASE "幼少期_大人しい"
	RETURNF 조사처리(아이의이름,"과") + " 회화"
CASE "幼少期_考え事"
	RETURNF 조사처리(아이의이름,"과") + " 회화"
CASE "幼少期_眠そう"
	RETURNF 조사처리(아이의이름,"과") + " 회화"
CASE "幼少期_はしゃぐ"
	RETURNF 조사처리(아이의이름,"과") + " 놀다"
CASE "幼少期_うろちょろ"
	RETURNF 조사처리(아이의이름,"과") + " 놀다"
CASE "幼少期_うずうず"
	RETURNF 조사처리(아이의이름,"과") + " 놀다"
CASE "幼少期_見つめる"
	RETURNF 조사처리(아이의이름,"과") + " 회화"
CASE "幼少期_遊ぼう"
	RETURNF 조사처리(아이의이름,"과") + " 놀다"
CASE "幼少期_ぺたぺた"
	RETURNF 조사처리(아이의이름,"과") + " 놀다"
CASE "幼少期_かまって"
	RETURNF 조사처리(아이의이름,"과") + " 놀다"

CASE "自立前_会話"
	RETURNF 조사처리(아이의이름,"과") + " 회화"
CASE "自立前_教わる"
	RETURNF 조사처리(아이의이름,"과") + " 회화"
CASE "自立前_しつけられる"
	RETURNF 조사처리(아이의이름,"과") + " 회화"
CASE "自立前_ひそひそ話"
	RETURNF 조사처리(아이의이름,"과") + " 회화"
CASE "自立前_文句"
	RETURNF 조사처리(아이의이름,"과") + " 회화"
CASE "自立前_主張"
	RETURNF 조사처리(아이의이름,"과") + " 회화"
CASE "自立前_笑い合う"
	RETURNF 조사처리(아이의이름,"과") + " 회화"
CASE "自立前_教えて"
	RETURNF 조사처리(아이의이름,"과") + " 회화"
CASE "自立前_手伝い"
	RETURNF 조사처리(아이의이름,"과") + " 회화"
CASE "自立前_一人遊び"
	RETURNF 조사처리(아이의이름,"과") + " 놀다"
CASE "自立前_考え事"
	RETURNF 조사처리(아이의이름,"과") + " 회화"
CASE "自立前_眠そう"
	RETURNF 조사처리(아이의이름,"과") + " 회화"
CASE "自立前_話したい"
	RETURNF 조사처리(아이의이름,"과") + " 회화"
CASE "自立前_気にする"
	RETURNF 조사처리(아이의이름,"과") + " 회화"
CASE "自立前_遠慮"
	RETURNF 조사처리(아이의이름,"과") + " 회화"
CASE "自立前_睨む"
	RETURNF 조사처리(아이의이름,"과") + " 회화"
CASEELSE
	RETURNF "아이와 만나다"
ENDSELECT

path: ERB/커맨드관련/COMF/일상계/COMF337 아이와 만나다.ERB


code:
;-------------------------------------------------
;밀어넘어뜨린다
;일상계 커맨드, 레벨 1
;-------------------------------------------------
@COM350
#DIM NUM_TARGET
#DIM C_ID
;밀어넘어뜨린다
NUM_TARGET = GET_TARGETNUM()
IF FLAG:생활능력무
	DRAWLINE
	PRINTFORMW %CALLNAME:MASTER%에게 그런 담력은 없다
	RETURN -1
ENDIF
IF TFLAG:펄기한
	IF TARGET == TFLAG:펄넣은사람
		PRINTFORML %타겟은% 시간이 올 때까지 보류, 라고 말하며 %마스터를% 거절했다
	ELSE
		PRINTFORML 이런 상태로는 정사를 할 처지가 못 된다
	ENDIF
	RETURN -1
ENDIF
IF FLAG:70
	;시간정지는 무조건 돌파
	FOR LOCAL,1, NUM_TARGET + 1
		CFLAG:(TARGET:LOCAL):우후후 = 1
	NEXT
ELSE
	;시선에 의한 중단 판정
	IF EYEWITNESS() == 1
		TFLAG:194 = 1
		TFLAG:밀어넘어뜨릴수없다 ++
	ENDIF
	;MASTER적으로 많은 사람은 무리였다
	IF NUM_TARGET > 1 && TCVAR:MASTER:친해져 < 2
		TFLAG:194 = 3
		TFLAG:밀어넘어뜨릴수없다 ++
	ENDIF

	FOR LOCAL,1, NUM_TARGET + 1
		C_ID = TARGET:LOCAL
		;만취
		IF TCVAR:C_ID:만취 == 1
			CFLAG:C_ID:우후후 = 1
			SIF CFLAG:C_ID:만취간 < 2
				CFLAG:C_ID:만취간 = 1
			IF INROOM(CFLAG:MASTER:현재위치) == 2
				CALL DATUI_SHOES(LOCAL,0)
				CALL DATUI_SHOES(MASTER,0)
			ENDIF
		;합의미취득
		ELSEIF !GETBIT(CFLAG:C_ID:기정사실 , 1)
			;미취득이라면 많은 사람은 안 돼
			IF NUM_TARGET > 1
				TFLAG:194 = 3
				TFLAG:밀어넘어뜨릴수없다 ++
				BREAK
			;口上側による制御
			ELSEIF CFLAG:C_ID:구상내껴안기판정_첫회
				CALL KOJO_MESSAGE_SEND("PERMISSION", 1, C_ID)
				SELECTCASE RESULT
					CASE -1
						TCVAR:C_ID:껴안고첫회 = 98
						TFLAG:밀어넘어뜨릴수없다 ++
						BREAK
					CASE 0
						CALL 껴안고(C_ID)
					CASE 1
						TCVAR:C_ID:껴안고첫회 = 99
						SETBIT CFLAG:C_ID:기정사실 , 1
						CALL COLORMESSAGE(@"%CALLNAME:C_ID%의 합의를 얻은", C_YELLOW,2)
				ENDSELECT
			ELSE
				CALL 껴안고(C_ID)
			ENDIF
		;합의 취득이 끝난 상태
		ELSE
			IF FLAG:모리야복권데이트상대 == C_ID || TALENT:C_ID:걸레 || CFLAG:C_ID:우후후
				GOTO OK
			ELSEIF (BASE:C_ID:무드 < 300 || TCVAR:MASTER:친해져 < 2)
				TFLAG:194 = 4
				TFLAG:밀어넘어뜨릴수없다 ++
			;口上側による制御
			ELSEIF CFLAG:C_ID:구상내껴안기판정_통상
				CALL KOJO_MESSAGE_SEND("PERMISSION", 2, C_ID)
				IF RESULT == -1
					TFLAG:194 = 100
					TFLAG:밀어넘어뜨릴수없다 ++
				ELSE
					GOTO OK
				ENDIF
			ELSE
				$OK
				SIF BASE:C_ID:무드 < 300
					BASE:C_ID:무드 = 300
				CFLAG:C_ID:우후후 = 1
				IF INROOM(CFLAG:MASTER:현재위치) == 2
					CALL DATUI_SHOES(LOCAL,0)
					CALL DATUI_SHOES(MASTER,0)
				ENDIF
			ENDIF
		ENDIF
	NEXT
ENDIF

IF TFLAG:밀어넘어뜨릴수없다
	FOR LOCAL,1, NUM_TARGET + 1
		CALL ENDUFUFU(TARGET:LOCAL)
	NEXT
	DOWNBASE:MASTER:기력 = 50
	BASE:TARGET:무드 /= 2
ELSE
;공수 교대
;ELSEIF CFLAG:MASTER:우후후 == 1 && !FLAG:70
;	FOR LOCAL, 0, CHARANUM
;		CFLAG:(TARGET:LOCAL):우후후 == 2
;	NEXT
;	TIME += 1
;	RETURN 1
	IF !FLAG:70
		FOR LOCAL,1, NUM_TARGET + 1
			CALL UWAKI_RECORD(TARGET:LOCAL, 1)
		NEXT
	ENDIF
	CFLAG:MASTER:우후후 = 1
	SIF !FLAG:70
		TIME += 1
ENDIF
;経過時間表示用に개시시간を取っておく
IF !UFUFU_START_TIME
	UFUFU_START_TIME = TIME
	UFUFU_START_DAY = DAY
ENDIF
RETURN 1

;혼숙여관 러브호텔 이외가 나가고 앞으로 우후후하기 위한 특수 조건
@특수우후후조건(ARG)
#FUNCTION
SELECTCASE ARG
	CASE 67
		SIF TCVAR:ARG:특수이벤트 >= 4 && CFLAG:ARG:행동 != 5 && GETBIT(CFLAG:ARG:기정사실 , 1) && TCVAR:ARG:친해져 >= 2 && CFLAG:ARG:현재위치 == 서당 && GET_TARGETNUM() < 2
			RETURNF 1
ENDSELECT

;-------------------------------------------------
;실행 판정
;-------------------------------------------------
@COM_ABLE350
#DIM NUM_TARGET
;망상이므로 전노선 개통해
SIF TFLAG:망상중 == 1 && CFLAG:우후후 != 1
	RETURN 1
;밀어 넘어뜨리는 실행 판정
SIF !TFLAG:100
	RETURN 0
;일괄관리
SIF GLOBAL_COMABLE(350)
	RETURN RESULT
;시간정지중은 스킵
IF !FLAG:70
	;많은 사람
	NUM_TARGET = GET_TARGETNUM()
	SELECTCASE NUM_TARGET
	CASE 0
		RETURN 0
	CASE 1
	CASEELSE
		FOR LOCAL, 1, NUM_TARGET + 1
			;전캐릭터에게 합의가 없으면 안 돼
			SIF !GETBIT(CFLAG:(TARGET:LOCAL):기정사실 , 1)
				RETURN 0
			;자고 있는 캐릭터가 있으면(자) 안 돼
			SIF CFLAG:(TARGET:LOCAL):수면
				RETURN 0
			;취하고 있는 캐릭터가 있으면(자) 안 돼
			SIF TCVAR:(TARGET:LOCAL):만취
				RETURN 0
		NEXT
	ENDSELECT
	SIF TFLAG:키스마크 != TARGET && TFLAG:키스마크
		RETURN 0
	;수면중
	SIF CFLAG:수면
		RETURN 0
	;동침중
	SIF CFLAG:동침중
		RETURN 0
	;업무중
	SIF CFLAG:행동 == 5 && !TCVAR:TARGET:만취
		RETURN 0
	SIF TCVAR:마음대로해
		RETURN 0
	;데이트중
	SIF (CHK_DATENOW(CFLAG:MASTER:데이트중) && CFLAG:현재위치 != 혼숙여관 && CFLAG:현재위치 != 러브호텔 && CFLAG:현재위치 != OMANEKIBEYA()) && !특수우후후조건(TARGET)
		RETURN 0
	;SIF MONEY < 3000 && (CFLAG:현재위치 == 혼숙여관 || CFLAG:현재위치 == 러브호텔)
		;RETURN 0
ENDIF
;기력 0
SIF BASE:MASTER:기력 <= 0
	RETURN 0
RETURN 1

;명째가 있을지 어떨지 돌려주는 식중함수
;보고 있는 캐릭터가 있으면(자) 1, 모브라면 2
@EYEWITNESS()
#FUNCTION
FOR LOCAL, 1, CHARANUM
	SIF CFLAG:LOCAL:현재위치 == CFLAG:MASTER:현재위치
		CONTINUE
	SIF CAN_MOVE(CFLAG:LOCAL:현재위치, CFLAG:MASTER:현재위치) & 2
		RETURNF 1
NEXT
SIF WITH_MOB()
	RETURNF 2
SIF DATE_HITOGOMI()
	RETURNF 2

RETURNF 0

path: ERB/커맨드관련/COMF/일상계/COMF350 덮친다_t.ERB

license: mit


code:
;-------------------------------------------------
;데리고나간다
;일상계 커맨드, 레벨 2
;-------------------------------------------------
@COM351
#DIM NUM_TARGET
#DIM N_TO_M
NUM_TARGET = GET_TARGETNUM()
N_TO_M = 0
;데리고나간다
VARSET LOCAL
SIF !NUM_TARGET
	RETURN -1
FOR LOCAL, 1, NUM_TARGET + 1
	IF COM_351_CONDITION(TARGET:LOCAL) >= 2
		LOCAL:97 += 1
	ENDIF
NEXT
IF NUM_TARGET == 1 || LOCAL:97 == 1
	IF COM_351_CONDITION(TARGET) < 1
		RETURN -1
	ELSEIF COM_351_CONDITION(TARGET) < 2
		DRAWLINE
		PRINTFORMW %타겟은% 지금 바쁩니다.
		RETURN -1
	ENDIF
	IF CFLAG:TARGET:동행
		CFLAG:TARGET:동행 = 0
		CFLAG:MASTER:동행 = 0
		PRINTFORMW 동행 해제합니다.
	ELSE
		CFLAG:TARGET:동행 = 60
		;우＋외＋우산 or상대가 우산때는 한우산을씀
		SIF TIME:5 > 3 && TIME:5 < 14 && OUTROOF(CFLAG:MASTER:현재위치) && (ITEM:36 || EQUIP:TARGET:액세서리== 6)
			TEQUIP:TARGET:201 = 1
		PRINTFORMW %타겟을% 데리고 나갑니다
		CFLAG:MASTER:동행 = 60
	ENDIF
	TIME += 1
	SIF CFLAG:TARGET:동행
		CALL KOJO_MESSAGE_SEND("DIRECT",351,TARGET,-1,-1)
	RETURN 1
ENDIF

DO
	PRINTL 누구를 권합니까?
	FOR LOCAL, 1, NUM_TARGET + 1
		SIF COM_351_CONDITION(TARGET:LOCAL) <= 0
			CONTINUE
		IF CFLAG:(TARGET:LOCAL):동행
			SETCOLOR 255, 200, 100
		ELSEIF CFLAG:(TARGET:LOCAL):동행준비
			SETCOLOR C_AQUA
		ENDIF
		PRINTFORML [{LOCAL}] - %CALLNAME:(TARGET:LOCAL)%
		RESETCOLOR
	NEXT
	PRINTL [97] - 데리고 나간다
	PRINTL [98] - 전원 데리고 나간다
	PRINTL [99] - 동행 해제
	PRINTL [100] - 그만둔다

	INPUT
	SELECTCASE RESULT
	CASE 100
		FOR LOCAL, 1, NUM_TARGET + 1
			CFLAG:(TARGET:LOCAL):동행준비 = 0
		NEXT
		RETURN -1
	CASE 99
		FOR LOCAL, 1, NUM_TARGET + 1
			CFLAG:(TARGET:LOCAL):동행 = 0
			CFLAG:(TARGET:LOCAL):동행준비 = 0
			;한우산을씀도 없어진다
			TEQUIP:(TARGET:LOCAL):한우산을씀 = 0
		NEXT
		PRINTFORMW 동행 해제합니다
		CFLAG:MASTER:동행 = 0
		RETURN 1
	CASE 98
		FOR LOCAL, 1, NUM_TARGET + 1
			SIF COM_351_CONDITION(TARGET:LOCAL) == 2
				N_TO_M = 1
		NEXT
		IF N_TO_M > 0
			PRINTFORMW 동시에 데리고 나갈 수 없는 캐릭터가 있습니다
			N_TO_M = 0
			CONTINUE
		ENDIF
		FOR LOCAL, 1, NUM_TARGET + 1
			IF COM_351_CONDITION(TARGET:LOCAL) >= 3
				CFLAG:(TARGET:LOCAL):동행 = 60
				LOCAL:98 += 1
			ENDIF
		NEXT
		PRINTFORMW {LOCAL:98}인 정리해 데리고 나갑니다
		CFLAG:MASTER:동행 = 60
		TIME += LOCAL:98
		SIF CFLAG:TARGET:동행
			CALL KOJO_MESSAGE_SEND("DIRECT",351,TARGET,-1,-1)
		RETURN 1
	CASE 97
		FOR LOCAL, 1, NUM_TARGET + 1
			IF (COM_351_CONDITION(TARGET:LOCAL) >= 2) && (CFLAG:(TARGET:LOCAL):동행준비 || CFLAG:(TARGET:LOCAL):동행)
				LOCAL:98 += 1
				SIF COM_351_CONDITION(TARGET:LOCAL) == 2
					N_TO_M = 1
			ENDIF
		NEXT
		SIF LOCAL:98 == 0
			CONTINUE
		IF LOCAL:98 == 1
			TIME += 1
			LOCAL = 0
			LOCAL:98 = 0
			FOR LOCAL, 1, NUM_TARGET + 1
				IF (COM_351_CONDITION(TARGET:LOCAL) >= 2) && (CFLAG:(TARGET:LOCAL):동행준비 || CFLAG:(TARGET:LOCAL):동행)
					PRINTFORMW %조사처리(CALLNAME:(TARGET:LOCAL),"를")% 데리고 나갑니다
					CFLAG:(TARGET:LOCAL):동행 = 60
					CFLAG:(TARGET:LOCAL):동행준비 = 0
					;雨＋外＋傘or相手が傘の時は相合い傘
					SIF TIME:5 > 3 && TIME:5 < 14 && OUTROOF(CFLAG:MASTER:현재위치) && (ITEM:36 || EQUIP:(TARGET:LOCAL):액세서리 == 6)
						TEQUIP:(TARGET:LOCAL):한우산을씀 = 1
				ENDIF
			NEXT
		ELSE
			IF N_TO_M > 0
				PRINTFORMW 동시에 데리고 나갈 수 없는 캐릭터가 있습니다
				N_TO_M = 0
				CONTINUE
			ENDIF
			PRINTFORMW {LOCAL:98}인 모아서 데리고 나갑니다
			TIME += LOCAL:98
			LOCAL = 0
			LOCAL:98 = 0
			FOR LOCAL, 1, NUM_TARGET + 1
				IF (COM_351_CONDITION(TARGET:LOCAL) >= 3) && (CFLAG:(TARGET:LOCAL):동행준비 || CFLAG:(TARGET:LOCAL):동행)
					CFLAG:(TARGET:LOCAL):동행 = 60
					CFLAG:(TARGET:LOCAL):동행준비 = 0
				ENDIF
			NEXT
		ENDIF
		CFLAG:MASTER:동행 = 60
		SIF CFLAG:TARGET:동행
			CALL KOJO_MESSAGE_SEND("DIRECT",351,TARGET,-1,-1)
		RETURN 1
	CASEELSE
		IF !INRANGE(RESULT, 1, NUM_TARGET)
			CLEARLINE 1
			CONTINUE
		ELSEIF COM_351_CONDITION(TARGET:RESULT) < 1
			CLEARLINE 1
			CONTINUE
		ELSEIF COM_351_CONDITION(TARGET:RESULT) < 2
			PRINTFORMW %조사처리(CALLNAME:(TARGET:RESULT),"는")% 지금 바쁩니다.
			CLEARLINE 2
			CONTINUE
		ENDIF
		CFLAG:(TARGET:RESULT):동행준비 ^= 1
	ENDSELECT
LOOP 1

@EQUIP_COM351(ARG)
;소스는 조심스럽게 적당. 애정 너무 들어갔으므로 자중
IF FLAG:70 == 1

ELSE
	SOURCE:환락 += ABL:친밀 * 5
	SOURCE:사랑 += ABL:친밀 * 5
	SOURCE:반감 += 100 - MIN(ABL:친밀 * 10,100)
	SIF ABL:친밀 > 9 && TIME_PROGRESS(TIME:1) > 10
	EXP:ARG:애정경험 += RAND:2
ENDIF
RETURN 1

;-------------------------------------------------
;실행 판정
;-------------------------------------------------
@COM_ABLE351
;정지 중에는 불가
SIF FLAG:70
	RETURN 0
;데리고 나가는 실행 판정
SIF !TFLAG:100
	RETURN 0
;일괄관리
SIF GLOBAL_COMABLE(351)
	RETURN RESULT
;기력 0
SIF BASE:MASTER:기력 <= 0
	RETURN 0
SIF CFLAG:우후후
	RETURN 0
;데이트중
SIF CHK_DATENOW(CFLAG:MASTER:데이트중)
	RETURN 0
SIF IN_HOME(CFLAG:현재위치) == 0
	RETURN 0
SIF COM_351_CONDITION(TARGET) == 0
	RETURN 0
;;TARGET의 친해져 강도 1
;FOR LOCAL,0,CHARANUM
;	;TARGET:1~를 찾는다
;	SIF !TARGET:LOCAL
;		CONTINUE
;	;동침중
;	SIF CFLAG:(TARGET:LOCAL):동침중
;		CONTINUE
;	;업무중은 제외
;	SIF CFLAG:(TARGET:LOCAL):행동 == 5 && CFLAG:(TARGET:LOCAL):350 != 49 && CFLAG:(TARGET:LOCAL):350 != 51
;		CONTINUE
;	;가능한 캐릭터가 있으면 1을 돌려준다
;	SIF COM_351_CONDITION(TARGET:LOCAL) > 0
;		RETURN 1
;NEXT
RETURN 1

;반환값
; 3 정리해 데리고 나갈 수 있다
; 2 개별 선택으로 데리고 나갈 수 있다
; 1 데리고 나갈 수 없다(바쁜 와중 메시지)
; 0 데리고 나갈 수 없다
@COM_351_CONDITION(CHARA)
#FUNCTION
#DIM CHARA
SIF CHARA == MASTER
	RETURNF 0
SIF CFLAG:CHARA:태도 > 0 && CFLAG:CHARA:수면 == 0 && CFLAG:CHARA:행동 != 5
	RETURNF 3

;현재 동행중의 캐릭터는 허가(동행 조건을 채우지 않게 되었을 경우에 수동으로 동행 해제할 수 있도록(듯이) 한다)
SIF CFLAG:CHARA:동행
	RETURNF 2
SIF CFLAG:CHARA:패배자
	RETURNF 2
SIF CFLAG:CHARA:태도 < 1 && TCVAR:CHARA:만취 == 0 && !CAN_IRAI_CHARA_GO_TOGATHER(CHARA)
	RETURNF 0
SIF CFLAG:CHARA:수면
	RETURNF 0
SIF CFLAG:CHARA:행동 == 5 && !TCVAR:CHARA:만취
	RETURNF 1

RETURNF 2

path: ERB/커맨드관련/COMF/일상계/COMF351 데리고간다_t.ERB


code:
;-------------------------------------------------
;고백한다
;일상계 커맨드, 레벨 2
;-------------------------------------------------
@COM352
LOCAL = 0
IF FLAG:생활능력무
	DRAWLINE
	PRINTFORMW %CALLNAME:MASTER%에겐 그런 배짱이 없다
	RETURN -1
ENDIF
;고백 대상 확인
PRINTFORM %CALLNAME:TARGET%에게 고백합니다.
IF 스친연인수 == 100 && TALENT:스침
	PRINTFORML 　- 포말의 사랑의 상대는 100명까지밖에 기억할 수 없습니다
	PRINTFORML 　　【연인】이 되었을 경우, 지금까지 함께 한 누군가의 이름을 잊어버립니다 -
ELSEIF FLAG:추가연인수 > 0
	PRINTFORM 【연인】은{1 + FLAG:추가연인수}명까지밖에 취득할 수 없습니다.
ELSE
;나올 수 없는 경우의 수
	PRINTFORM 【연인】의 수에 제한은 없습니다.
ENDIF
PRINTW 괜찮겠습니까?
CALL ASK_YN("그만둔다","고백한다")
IF !RESULT
	RETURN -1
ENDIF

;파라미터에 의해 성공 기초치 판정
SETBIT TFLAG:일일일회, 12

SELECTCASE TFLAG:192
	;통상
	CASE 0
		IF  CFLAG:합의판정 > 350 + TALENT:일선을넘지않음 * 100
			TFLAG:193 = 1
		ELSE
			TFLAG:193 = 0
		ENDIF
	;강제 성공 or대성공
	CASE 1
		TFLAG:193 = 1
	;강제 실패
	CASE -1
		TFLAG:193 = 0
	;커맨드 종료
	CASE -2
		TFLAG:193 = 0
		RETURN 0
ENDSELECT

IF TFLAG:193 == 1
	SOURCE:환락 = 1000
	SOURCE:수동 = 500 + 100 * ABL:순종
	SOURCE:정복 = 500 + 100 * ABL:새드끼
ENDIF
RETURN 1

;-------------------------------------------------
;실행 판정
;-------------------------------------------------
@COM_ABLE352
;정지 중에는 불가
SIF FLAG:70
	RETURN 0
;망상중은 고백할 수 없다
SIF TFLAG:망상중 == 1
	RETURN 0
;고백하는 실행 판정
SIF !TFLAG:100
	RETURN 0
;일괄관리
SIF GLOBAL_COMABLE(352)
	RETURN RESULT
;둘이서 없으면 안 돼
SIF GET_TARGETNUM() > 1
	RETURN 0
;친해져 강도 2
SIF TCVAR:MASTER:친해져 < 2
	RETURN 0
;벌써 연인의 경우는 안 돼
SIF TALENT:연인
	RETURN 0
SIF GETBIT(TFLAG:일일일회, 12)
	RETURN 0
;연인의 수가 상한에 이르고 있어 안 돼
SIF !CAN_MAKE_연인()
	RETURN 0
;KR판 구잔재 스침인연 대응용 주석처리
;SIF TALENT:TARGET:스침
;	RETURN 0
;수면중
SIF CFLAG:수면
	RETURN 0
;동침중
SIF CFLAG:동침중
	RETURN 0
;기력 0
SIF BASE:MASTER:기력 <= 0
	RETURN 0
RETURN 1

path: ERB/커맨드관련/COMF/일상계/COMF352 고백한다_t.ERB


code:
;-------------------------------------------------
;장난한다
;일상계 커맨드, 레벨 1
;-------------------------------------------------
@COM353
IF FLAG:생활능력무
	DRAWLINE
	PRINTFORMW %CALLNAME:MASTER%에게 그런 담력은 없다
	RETURN -1
ENDIF
;복수를 상정하고 있는 것 같지만 ABLE의 (분)편으로 많은 사람을 연주하고 있다
FOR LOCAL, 1, GET_TARGETNUM() + 1
	CALL SET_PRANK(1, TARGET:LOCAL, 1)
NEXT
SIF CFLAG:TARGET:수면간 < 1
	CFLAG:TARGET:수면간 = 1
RETURN 1

;-------------------------------------------------
;실행 판정
;-------------------------------------------------
@COM_ABLE353
;장난 실행 판정
SIF !TFLAG:100
	RETURN 0
;일괄관리
SIF GLOBAL_COMABLE(353)
	RETURN RESULT
;수면중만
SIF CFLAG:수면 == 0
	RETURN 0
;타겟의 방에서만
SIF CFLAG:MASTER:현재위치 != CFLAG:311
	RETURN 0

;시간정지중 불가
SIF FLAG:70
	RETURN 0
;벌써 장난 모드
SIF CFLAG:장난
	RETURN 0
;동침중은 할 수 없다
SIF CFLAG:동침중
	RETURN 0
;그 밖에 누군가 있다
SIF GET_TARGETNUM() > 1
	RETURN 0
;기력 0
SIF BASE:MASTER:기력 <= 0
	RETURN 0
;약해지고 있으면(자) 없음
SIF CFLAG:쇠약 > 0
	RETURN 0
RETURN 1

path: ERB/커맨드관련/COMF/일상계/COMF353 장난한다_t.ERB


code:
;-------------------------------------------------
;동침한다
;일상계 커맨드, 레벨 2
;-------------------------------------------------
@COM354
;동침한다
;이것도 둘이서 밖에 할 수 없을 것
FOR LOCAL, 1, GET_TARGETNUM() + 1
	CALL SET_TOGETHER(1, TARGET:LOCAL, 1)
	SIF !CFLAG:(TARGET:LOCAL):쇠약 && !CFLAG:(TARGET:LOCAL):초대
		CALL SET_SLEEP(0, TARGET:LOCAL, 0)
	CALL SET_DERAY(4, TARGET:LOCAL)
NEXT

RETURN 1

;-------------------------------------------------
;실행 판정
;-------------------------------------------------
@COM_ABLE354
;정지 중에는 불가
SIF FLAG:70
	RETURN 0
;동침 실행 판정
SIF !TFLAG:100
	RETURN 0
;일괄관리
SIF GLOBAL_COMABLE(354)
	RETURN RESULT
;수면중만
SIF CFLAG:수면 == 0
	RETURN 0
;연모를 가지고 있지 않다
SIF TALENT:연모 == 0
	RETURN 0
;타겟의 방에서만
;SIF CFLAG:MASTER:현재위치 != CFLAG:311
;	RETURN 0
;벌써 동침 모드
SIF CFLAG:동침중
	RETURN 0
;장난 모드중은 할 수 없다
SIF CFLAG:장난
	RETURN 0
;데이트중
SIF CHK_DATENOW(CFLAG:데이트중)
	RETURN 0
;그 밖에 누군가 있다
SIF GET_TARGETNUM() > 1
	RETURN 0
RETURN 1

path: ERB/커맨드관련/COMF/일상계/COMF354 동침한다_t.ERB


code:
;-------------------------------------------------
;시간정지
;일상계 커맨드, 레벨 1
;-------------------------------------------------
@COM355
FOR LOCAL, 1, GET_TARGETNUM() + 1
	SIF CHK_DATENOW(CFLAG:LOCAL:데이트중)
		CONTINUE
	CFLAG:(TARGET:LOCAL):동행 = 0
	SIF EX:(TARGET:LOCAL):처녀상실체크 == 1
		EX:(TARGET:LOCAL):처녀상실체크 = 0
NEXT
SIF !CHK_DATENOW(CFLAG:MASTER:데이트중)
	CFLAG:MASTER:동행 = 0
FLAG:시간정지 = 1
SETBGCOLOR C_THE_WORLD

RETURN 1

;-------------------------------------------------
;실행 판정
;-------------------------------------------------
@COM_ABLE355
;시간정지 실행 판정
SIF !TFLAG:100
	RETURN 0
;일괄관리
SIF GLOBAL_COMABLE(355)
	RETURN RESULT
;정지 중에는 불가
SIF FLAG:70
	RETURN 0
;우후후중은 불가
SIF CFLAG:우후후
	RETURN 0
;수면 장난중은 불가
SIF CFLAG:장난
	RETURN 0
;동침중
SIF CFLAG:동침중
	RETURN 0
;데이트중
;SIF CHK_DATENOW(CFLAG:데이트중) && CFLAG:현재위치 != OMANEKIBEYA()
;	RETURN 0
;기력 0
SIF BASE:MASTER:기력 <= 0
	RETURN 0
;TSP 0
SIF BASE:MASTER:TSP <= 0
	RETURN 0
RETURN 1

path: ERB/커맨드관련/COMF/일상계/COMF355 시간정지_t.ERB


code:
;-------------------------------------------------
;物陰に誘う
;日常系コマンド、レベル1
;-------------------------------------------------
@COM356
;物陰に誘う
;LOCAL:1 잠복장소

IF FLAG:생활능력무
	DRAWLINE
	PRINTFORMW %CALLNAME:MASTER%에게 그런 배짱은 없다
	RETURN -1
ENDIF
;口上処理による強制成功
SIF TFLAG:192 == 1
	GOTO SENPUKU
;口上処理による強制失敗
SIF TFLAG:192 == -1
	RETURN -1
;무지でない場合、노출벽3以上(수치심で増減)必須
IF !TALENT:무지 && ABL:노출벽 + TALENT:수치심 < 3
	DRAWLINE
	PRINTFORMW %타겟은% 아직 밖에서 하는 것에 저항이 있는 것 같다
	TFLAG:193 = -1
	RETURN -1
ENDIF

$SENPUKU
CALL 잠복장소결정처리

IF TALENT:무지
	DRAWLINE
	PRINTFORMW %마스터는% 아무것도 모르는 %타겟을% 교묘하겍 %조사처리(NAME_HIDING_PLACE(),"으로")% 꾀어냈다……
ELSE
	DRAWLINE
	PRINTFORMW %마스터는% 뺨을 붉히는 %타겟을% %조사처리(NAME_HIDING_PLACE(),"으로")% 권유했다……
ENDIF

CFLAG:MASTER:우후후 = 1
CFLAG:TARGET:우후후 = 1

SETBIT CFLAG:TARGET:잠복상태,0
SETBIT FLAG:잠복,0

;開始時に잠복율を100%に
BASE:MASTER:잠복율 = 100

;経過時間表示用に開始時間を取っておく
IF !UFUFU_START_TIME
	UFUFU_START_TIME = TIME
	UFUFU_START_DAY = DAY
ENDIF

;-------------------------------------------------
;実行判定
;-------------------------------------------------
@COM_ABLE356
SIF !TFLAG:100
	RETURN 0
;時間停止中は不可
SIF FLAG:시간정지
	RETURN 0
;一括管理
SIF GLOBAL_COMABLE(356)
	RETURN RESULT
;自室不可
;21/06/25,注記どおり動作するよう変更しました
;SIF CFLAG:MASTER:현재위치 == (CFLAG:MASTER:초기위치 || CFLAG:TARGET:초기위치)
SIF GROUPMATCH(CFLAG:MASTER:현재위치, CFLAG:MASTER:초기위치, CFLAG:TARGET:초기위치)
	RETURN 0
SIF CFLAG:MASTER:현재위치 == OMANEKIBEYA()
	RETURN 0
SIF CFLAG:우후후
	RETURN 0
SIF !(CFLAG:기정사실 & 합의_우후후)
	RETURN 0
;睡眠中
SIF CFLAG:수면 && !CFLAG:동침중
	RETURN 0
;잠복モード中は不可
SIF GETBIT(FLAG:잠복,0)
	RETURN 0
;기력0
SIF BASE:MASTER:기력 <= 0
	RETURN 0
SIF TARGET < 1
	RETURN 0
RETURN 1

path: ERB/커맨드관련/COMF/일상계/COMF356 그늘로유인.ERB


code:
;-------------------------------------------------
;몸을맡긴다
;일상계 커맨드, 레벨 3
;-------------------------------------------------
@COM360
TIME += 5
;기력 제로 때는 변동하지 않는다(몸을 맡길 수밖에 할 수 없기 때문에)
SIF BASE:MASTER:기력 <= 0
	RETURN 1
;통상은 플러스, 새드라면 반전
IF TALENT:TARGET:새드
	LOCAL = -1
ELSE
	LOCAL = 1
ENDIF
;지향이 반전중은 3배
IF COUNTER_SIKOU:TARGET:(TCVAR:TARGET:카운터행동) > 0 && TALENT:TARGET:새드
	LOCAL *= 3
ELSEIF COUNTER_SIKOU:TARGET:(TCVAR:TARGET:카운터행동) < 0
	LOCAL *= 3
ENDIF
;［솔직함］［습득 빠름］은 2배
SIF TALENT:TARGET:태도 < 0 || TALENT:TARGET:습득속도 > 0
	LOCAL *= 2
;최대 영향도 10
COUNTER_SIKOU:TARGET:(TCVAR:TARGET:카운터행동) = LIMIT(COUNTER_SIKOU:TARGET:(TCVAR:TARGET:카운터행동) + LOCAL, -10, 10)
RETURN 1

;-------------------------------------------------
;실행 판정
;-------------------------------------------------

@COM_ABLE360
;정지 중에는 불가
SIF FLAG:70
	RETURN 0
;이루는 대로 실행 판정
SIF !TFLAG:100
	RETURN 0
;일괄관리
SIF GLOBAL_COMABLE(360)
	RETURN RESULT
SIF CFLAG:우후후 != 2
	RETURN 0
;애원 안은 불가
SIF INRANGE(TCVAR:카운터행동, 40, 49)
	RETURN 0
RETURN 1

path: ERB/커맨드관련/COMF/일상계/COMF360 몸을맡김_t.ERB


code:
;-------------------------------------------------
;저항한다
;일상계 커맨드, 레벨 3
;-------------------------------------------------
@COM361
TIME += 10
IF TALENT:TARGET:새드
	LOCAL = 1
ELSE
	LOCAL = -1
ENDIF
IF COUNTER_SIKOU:TARGET:(TCVAR:TARGET:카운터행동) < 0 && (TALENT:TARGET:새드 || ABL:TARGET:새드끼 >= 10)
	LOCAL *= 3
ELSEIF COUNTER_SIKOU:TARGET:(TCVAR:TARGET:카운터행동) > 0
	LOCAL *= 3
ENDIF
SIF TALENT:TARGET:태도 < 0 || TALENT:TARGET:습득속도 > 0
	LOCAL *= 2
COUNTER_SIKOU:TARGET:(TCVAR:TARGET:카운터행동) = LIMIT(COUNTER_SIKOU:TARGET:(TCVAR:TARGET:카운터행동) + LOCAL, -10, 10)
RETURN 1

;-------------------------------------------------
;실행 판정
;-------------------------------------------------

@COM_ABLE361
;정지 중에는 불가
SIF FLAG:70
	RETURN 0
;이루는 대로 실행 판정
SIF !TFLAG:100
	RETURN 0
;일괄관리
SIF GLOBAL_COMABLE(361)
	RETURN RESULT
SIF CFLAG:우후후 != 2
	RETURN 0
;기력 0
SIF BASE:MASTER:기력 <= 0
	RETURN 0
RETURN 1

path: ERB/커맨드관련/COMF/일상계/COMF361 저항한다_t.ERB


code:
;-------------------------------------------------
;읽어들려주고
;일상계 커맨드, 레벨 1
;-------------------------------------------------
@COM363
SELECTCASE TFLAG:192
	;통상
	CASE 0
		LOCAL = RAND:100
		LOCAL:1 = 90 + GET_SUCCESS_RATE() / 5
		SIF LOCAL:1 > 99
			LOCAL:1 = 99
		IF LOCAL <= 9
			;10％で대성공
			EXP:MASTER:회화경험 ++
			TFLAG:193 = 1
			TFLAG:98 = 2
		ELSEIF LOCAL >= LOCAL:1
			;10～1％で실패
			TFLAG:193 = -1
			TFLAG:98 = -2
		ELSE
			;나머지는 성공
			TFLAG:193 = 0
			TFLAG:98 = 0
		ENDIF
	;강제성공 or 대성공
	CASE 1
		IF RAND:100 <= 9
			EXP:MASTER:회화경험 ++
			TFLAG:193 = 1
			TFLAG:98 = 2
		ELSE
			TFLAG:193 = 0
			TFLAG:98 = 0
		ENDIF
	;강제실패
	CASE -1
		TFLAG:193 = -1
		TFLAG:98 = -2
	;커맨드종료
	CASE -2
		TFLAG:193 = -1
		RETURN 0
ENDSELECT

DOWNBASE:MASTER:기력 += 150
DOWNBASE:MASTER:체력 += 50

;신뢰
TFLAG:98 += 3

;그 자리에 있는 TARGET 전원이 돌린다
LOCAL:1 = TARGET
FOR LOCAL, 1, GET_TARGETNUM() + 1
	SIF !TALENT:(TARGET:LOCAL):유치
		CONTINUE
	SIF CFLAG:(TARGET:LOCAL):수면
		CONTINUE
	TARGET = TARGET:LOCAL
	CALL COM363_1
NEXT
TARGET = LOCAL:1

TIME += 30
RETURN 1

@COM363_1

DOWNBASE:기력 += 50

;고정으로 획득하는 소스
SOURCE:환락 = 1000

;ABL:순종을 본다
IF ABL:순종 <= 1
	SOURCE:환락 += (ABL:순종 * 60)
ELSEIF ABL:순종 <= 3
	SOURCE:환락 += 200 + (ABL:순종 * 65)
ELSEIF ABL:순종 <= 5
	SOURCE:환락 += 500 + (ABL:순종 * 65)
ELSEIF ABL:순종 <= 8
	SOURCE:환락 += 750 + (ABL:순종 * 85)
ELSEIF ABL:순종 <= 11
	SOURCE:환락 += 1000 + (ABL:순종 * 85)
ELSE
	SOURCE:환락 += 2000 + (ABL:순종 * 40)
ENDIF

;호감 도를 본다
IF CFLAG:2 <= 500
	SOURCE:환락 += CFLAG:2
ELSEIF CFLAG:2 <= 5000
	SOURCE:환락 += 500 + (CFLAG:2 - 500) / 3
ELSE
	SOURCE:환락 += 2000 + (CFLAG:2 - 5000) / 5
ENDIF
SIF SOURCE:환락 < 0
	SOURCE:환락 = 0

SOURCE:수동 = 300 + 150 * ABL:순종
SOURCE:정복 = 300 + 100 * ABL:새드끼

IF TFLAG:193 == -1
	TIMES SOURCE:환락 , 0.10
	TIMES SOURCE:정복 , 0.50
	TIMES SOURCE:수동 , 0.50
ELSEIF TFLAG:193 == 0
	TIMES SOURCE:환락 , 1.00
	TIMES SOURCE:정복 , 1.00
	TIMES SOURCE:수동 , 1.00
ELSE
	TIMES SOURCE:환락 , 2.00
	TIMES SOURCE:정복 , 2.00
	TIMES SOURCE:수동 , 2.00
ENDIF
CALL SET_DERAY(6,TARGET)
RETURN 1

;-------------------------------------------------
;실행 판정
;-------------------------------------------------
@COM_ABLE363
;정지 중에는 불가
SIF FLAG:70
	RETURN 0
SIF !TFLAG:100
	RETURN 0
SIF !TALENT:유치
	RETURN 0
;일괄관리
SIF GLOBAL_COMABLE(301)
	RETURN RESULT
;수면중
SIF CFLAG:수면
	RETURN 0
;동침중
SIF CFLAG:동침중
	RETURN 0
;목욕탕
;SIF CFLAG:MASTER:현재위치 == 13 || CFLAG:MASTER:현재위치 == 24 || CFLAG:MASTER:현재위치 == 30 || CFLAG:MASTER:현재위치 == 39
SIF BATHCHECK(CFLAG:MASTER:현재위치) && GET_MAPID(CFLAG:MASTER:현재위치) == MAIN_MAP
	RETURN 0
;데이트중
SIF CHK_DATENOW(CFLAG:데이트중) && CFLAG:현재위치 != OMANEKIBEYA()
	RETURN 0
;기력 0
SIF BASE:MASTER:기력 <= 0
	RETURN 0
SIF !ITEM:104
	RETURN 0
RETURN 1

path: ERB/커맨드관련/COMF/일상계/COMF363 읽어준다_t.ERB


path: ERB/커맨드관련/COMF/일상계/COMF364 콩뿌리기_t.ERB


code:
;-------------------------------------------------
;素材購入
;日常系コマンド　レベル1
;-------------------------------------------------
@COM365
#DIM PRICE
;とりあえずデフォは\3000にしてみる
PRICE = 3000

PRINTFORML %CALLNAME:TARGET%에게서 \\{PRICE}으로 소재를 구매합니까?
PRINTFORML (내용물은 채집 수준과 자택위치에 의존・채집경험추가）
CALL ASK_M("산다",MONEY >= PRICE, "사지 않는다",1)
SELECTCASE RESULT
	CASE 0
		CALL BUY_MATERIAL(TARGET, CFLAG:소재판매, PRICE)
		TIME += 5
		RETURN 1
	CASE 1
		RETURN -1
ENDSELECT

@BUY_MATERIAL(C_ID, SPOT, PRICE)
#DIM C_ID		;キャラ
#DIM SPOT		;対応채집位置
#DIM PRICE		;価格
#DIM 채집파워	;
#DIM QTY, 3
#DIM COLLECTED, 3

SIF TCVAR:C_ID:소재구입완료
	RETURN
SIF !SPOT
	RETURN
SIF MONEY < PRICE
	RETURN

TCVAR:C_ID:소재구입완료 = 1
채집파워 = 20 + TALENT:C_ID:채집Lv * 20 + TFLAG:행운보정 * 15
SOURCE:C_ID:환락 += 500
SOURCE:C_ID:달성 += 150
SIF TALENT:C_ID:사모
	채집파워 += 5
SIF TALENT:C_ID:연모
	채집파워 += 15

FOR LOCAL,0,3
	CALL Gathering_Drawing(SPOT, 채집파워)
	COLLECTED:LOCAL = RESULT:0
	QTY:LOCAL = RESULT:1
	EXP:C_ID:채집경험 ++
	;なんも見つからないと経験にボーナス
	IF COLLECTED:LOCAL == 0
		EXP:C_ID:채집경험 += 2
	ELSE
		LOCALS = %ITEMNAME:(COLLECTED:LOCAL)%
		CALL GET_ITEM(LOCALS, QTY:LOCAL, 2)
	ENDIF
NEXT

IF !COLLECTED:0 && !COLLECTED:1 && !COLLECTED:2
	PRINTFORMW 오늘은 아무것도 발견하지 못한 것 같다
	EXP:C_ID:채집경험 += 1
ELSE
	MONEY -= PRICE
	PRINTFORMW 소재를 \\{PRICE}으로 구매했다
ENDIF

;-------------------------------------------------
;実行判定
;-------------------------------------------------
@COM_ABLE365
;実行判定
SIF !TFLAG:100
	RETURN 0
;一括管理
SIF GLOBAL_COMABLE(365)
	RETURN RESULT
;睡眠中
SIF !SHIRAHU(TARGET)
	RETURN 0
SIF !CFLAG:소재판매
	RETURN 0
RETURN 1

path: ERB/커맨드관련/COMF/일상계/COMF365 소재구입.ERB


code:
;-------------------------------------------------
;自由行動に付き合う
;-------------------------------------------------
@COM368
#DIM 경과시간
#DIM 행동완료
#DIM 시간계수

VARSET LOCAL

경과시간 = FreeAct_Time(TARGET)
SIF !경과시간
	경과시간 = MIN(Activity_Duration:TARGET, 30)

;행동완료するまで経過してたら행동완료
IF 경과시간 >= Activity_Duration:TARGET
	행동완료 = 1
ELSE
	행동완료 = 0
ENDIF

;取得ソースの倍率
시간계수 = MAX(경과시간 / 10, 1)
TRYCALLFORM 자유행동내용_{Activity_Type:TARGET}(TARGET, "소스", 시간계수)

TIME += 경과시간

RETURN 1

;-------------------------------------------------
;実行判定
;-------------------------------------------------
@COM_ABLE368
;停止中は不可
SIF FLAG:70
	RETURN 0
SIF !TFLAG:100
	RETURN 0
;一括管理
SIF GLOBAL_COMABLE(368)
	RETURN RESULT
;기력0
SIF BASE:MASTER:기력 <= 0
	RETURN 0
;自由行動中でない（自由行動条件参照）
SIF !Activity_Duration:TARGET
	RETURN 0
;;付き合えない自由行動
;SIF GROUPMATCH(CFLAG:TARGET:ActivityType, )
;	RETURN 0
RETURN 1

@FreeAct_ID(ARG:0, ARGS:0, V_NAME)
#FUNCTION
#LOCALSIZE 1
#LOCALSSIZE 1
#DIMS V_NAME                  ;作成する変数名
#DIMS C_NAME, OBJ_ID_LAST + 1 ;データ保持
#DIM  O_ID                    ;参照用
IF ARGS:0 == "RESET"
	VARSET C_NAME
	FOR O_ID, 1, OBJ_ID_LAST + 1
		C_NAME:O_ID = %GET_STR(, "캐릭터데이터", O_ID, "명칭")%
	NEXT
ELSE
	O_ID = FINDELEMENT(C_NAME, ESCAPE(ARGS:0), , , 1)
	CALLF MAKE_INT(V_NAME, O_ID)
ENDIF

@EXIST_FreeAct_ID
#LOCALSIZE 1
#LOCALSSIZE 1

@FreeAct_Name(ARG)
#FUNCTIONS
SIF Activity_Type:ARG == 0 && UNIQUE_FA_NAME:ARG != ""
	RETURNF UNIQUE_FA_NAME:ARG
RETURNF GET_STR(ARG, "FreeAct", Activity_Type:ARG, "명칭")

@FreeAct_Time(ARG)
#FUNCTION
RETURNF GET_INT(0, "FreeAct", Activity_Type:ARG, "경과시간")

@FreeAct_Chain(ARG)
#FUNCTION
RETURNF GET_INT(0, "FreeAct", Activity_Type:ARG, "CHAIN")

path: ERB/커맨드관련/COMF/일상계/COMF368 자유행동에 맡기다_t.ERB


code:
;-------------------------------------------------
;프로포즈한다
;일상계 커맨드, 레벨 2
;-------------------------------------------------
@COM380
LOCAL = 0
IF FLAG:생활능력무
	DRAWLINE
	PRINTFORMW %CALLNAME:MASTER%에겐 그런 배짱은 없다
	RETURN -1
ENDIF
;고백 대상 확인
PRINTFORM %CALLNAME:TARGET%에게 프로포즈합니다.
IF 스친아내수 == 100 && TALENT:스침
	PRINTFORML 　- 포말의 사랑의 상대는 100명까지밖에 기억할 수 없습니다
	PRINTFORML 　　【아내】가 되었을 경우, 지금까지 함께 한 누군가의 이름을 잊어버립니다 -
ELSEIF FLAG:추가연인수 > 0
	PRINTFORML 　- 【아내】는 {1 + FLAG:추가연인수}명까지밖에 취득할 수 없습니다 -
ELSE
;나올 수 없는 경우의 수
	PRINTFORML 　- 【아내】의 수에 제한은 없습니다 -
ENDIF
PRINTFORML 또한, 아내는 eraTWKR 에만 있는 기능이기에 연인 관련 처리 등에서 오류가 발생할 수 있습니다.
PRINTW 괜찮겠습니까?
CALL ASK_YN("그만둔다","프로포즈한다")
IF !RESULT
	RETURN -1
ENDIF

;파라미터에 의해 성공 기초치 판정

SELECTCASE TFLAG:192
	;통상
	CASE 0
		IF  CFLAG:합의판정 > 300 + TALENT:일선을넘지않음 * 20
			TFLAG:193 = 1
		ELSE
			TFLAG:193 = 0
		ENDIF
	;강제 성공 or대성공
	CASE 1
		TFLAG:193 = 1
	;강제 실패
	CASE -1
		TFLAG:193 = 0
	;커맨드 종료
	CASE -2
		TFLAG:193 = 0
		RETURN 0
ENDSELECT

IF TFLAG:193 == 1
	SOURCE:환락 = 2000
	SOURCE:수동 = 500 + 100 * ABL:순종
	SOURCE:정복 = 500 + 100 * ABL:새드끼
ENDIF
RETURN 1

;-------------------------------------------------
;실행 판정
;-------------------------------------------------
@COM_ABLE380
;정지 중에는 불가
SIF FLAG:70
	RETURN 0
;망상중은 고백할 수 없다
SIF TFLAG:망상중 == 1
	RETURN 0
;고백하는 실행 판정
SIF !TFLAG:100
	RETURN 0
;일괄관리
SIF GLOBAL_COMABLE(380)
	RETURN RESULT
;둘이서 없으면 안 돼
SIF GET_TARGETNUM() > 1
	RETURN 0
;친해져 강도 2
SIF TCVAR:MASTER:친해져 < 2
	RETURN 0
; 연인이 아닐 경우
SIF !TALENT:연인
	RETURN 0
;;이미 아내일 경우
SIF IS_아내(TARGET)
	RETURN 0
;;약혼반지가 없을경우
SIF !ITEM:약혼반지
	RETURN 0

;연인의 수가 상한에 이르고 있어 안 돼
SIF !CAN_MAKE_연인()
	RETURN 0
;KR판 구잔재 스침인연 대응용 주석처리
;SIF TALENT:TARGET:스침
;	RETURN 0
;수면중
SIF CFLAG:수면
	RETURN 0
;동침중
SIF CFLAG:동침중
	RETURN 0
;기력 0
SIF BASE:MASTER:기력 <= 0
	RETURN 0
RETURN 1

path: ERB/커맨드관련/COMF/일상계/COMF380 프로포즈한다_t.ERB


code:
;-------------------------------------------------
;이동
;일상계 커맨드, 레벨 1
;-------------------------------------------------
@COM400
#DIM 입욕거부
#DIM 벌레통
#DIM 잠입해
#DIM 멈춰서대상
#DIM BUTTON돌아간다
#DIM BUTTON전환왼쪽
#DIM BUTTON전환중
#DIM BUTTON전환오른쪽
#DIM 들어가지않음
#DIM ANIMATION_SEED
#DIM PREV_REDRAW
BUTTON돌아간다 = MAXROOM + 1
BUTTON전환왼쪽 = MAXROOM + 2
BUTTON전환중 = MAXROOM + 4
BUTTON전환오른쪽 = MAXROOM + 4
들어가지않음 = 0
ANIMATION_SEED = 0
PREV_REDRAW = CURRENTREDRAW()

;Map Animation Code
$MAPANIMATION
LINESTART = LINECOUNT
SIF ANIMATERECOLOREDMAPS && !FLAG:70
	ANIMATION_SEED ++

;인원수 카운트를 리셋
VARSET COUNTCHARA
;방의 인원수 카운트를 설정
FOR LOCAL, 1, CHARANUM
	COUNTCHARA:(CFLAG:LOCAL:현재위치) ++
NEXT
입욕거부 = 0
CALL TURN_RESET

DRAWLINE
;
;	// 자택 맵의 표시를 신묘화 방식으로
;
IF RECOLOREDMAPS
	CALL DRAW_COLOREDMAP(ANIMATION_SEED)
ELSE
	CALL DRAW_MAP
ENDIF
PRINTFORML 현재 {(CFLAG:MASTER:현재위치)}: %NAME_FROM_PLACE(CFLAG:MASTER:현재위치)%에 있습니다

IF FLAG:짐작모드 == 1
	PRINT 색의 설명：
	CALL COLORMESSAGE("체류중　", C_H_PINK, 0)
	CALL COLORMESSAGE("업무중　", C_D_ORANGE, 0)
	CALL COLORMESSAGE("수면중　", C_N_BLUE, 0)
	CALL COLORMESSAGE("모브　　", C_D_PINK, 0)
	CALL COLORMESSAGE("자유행동", C_YELLOW, 1)
	PRINTL
ELSEIF FLAG:짐작모드 == 2
	PRINT 청결도：
	CALL COLORMESSAGE("　 고 　", C_CREAM, 0)
	CALL COLORMESSAGE("　 중 　", C_YELLOW, 0)
	CALL COLORMESSAGE("　 저 　", C_V_PINK, 0)
	CALL COLORMESSAGE("쓰레기산", C_RED, 1)
	PRINTL
ENDIF

PRINTL [  0] - 방으로 돌아간다
FOR LOCAL, MINROOM(), MAXROOM
	SIF !(CAN_MOVE(CFLAG:MASTER:현재위치, LOCAL) & 1)
		CONTINUE
	SIF NAME_FROM_PLACE(LOCAL) == ""
		CONTINUE
	SELECTCASE FLAG:이동처표시
		CASE 2
			PRINTFORML [{LOCAL, 3}] - %NAME_FROM_PLACE(LOCAL)%
		CASE 1
			PRINTFORM [{LOCAL, 3}]%NAME_FROM_PLACE(LOCAL),5,LEFT%
		CASE 0
	ENDSELECT
NEXT

IF !CAN_MOVE(CFLAG:MASTER:현재위치, ENTRANCE) & 1 && CFLAG:MASTER:현재위치 != ENTRANCE
	SIF FLAG:이동처표시 == 1
		PRINTL
	PRINTFORML [{ENTRANCE, 3}] - %NAME_FROM_PLACE(ENTRANCE)%
ELSEIF FLAG:이동처표시 == 1
	PRINTL
ENDIF
PRINTFORM [{BUTTON돌아간다, 3}] - 돌아간다
PRINTBUTTON "＜]", BUTTON전환왼쪽
PRINTBUTTON "맵 전환", BUTTON전환중
PRINTFORM ({TFLAG:맵변환})
PRINTBUTTON "[＞", BUTTON전환오른쪽
SIF TALENT:MASTER:위치짐작 || TALENT:MASTER:오방짐작
	PRINTBUTTON "　　[Y] - 짐작모드", "Y"
IF FLAG:짐작모드 == 1
	PRINT (거주)
ELSEIF FLAG:짐작모드 == 2
	PRINT (오염)
ENDIF
SIF TALENT:MASTER:위치짐작 && FLAG:짐작모드 == 1
	PRINTBUTTON "[Z] - 있는 위치 짐작　 ", "Z"
SIF TALENT:MASTER:오방짐작 && FLAG:짐작모드 == 2
	PRINTBUTTON "[X] - 더러운 방 짐작　 ", "X"
PRINTBUTTON "[C] - 이동처 표시 전환　", "C"
IF TALENT:MASTER:체형 < -4 && !CFLAG:MASTER:동행
	IF CFLAG:MASTER:동행
		PRINTL
		PRINT (태워주니 편하다)
	ELSE
		PRINTL
		PRINT (걷는 것도 꽤 고생이다…)
	ENDIF
ENDIF

DO
	;Map Animation Code
	IF ANIMATERECOLOREDMAPS && !FLAG:70
		REDRAW PREV_REDRAW
		TINPUTS ANIMATERECOLOREDMAPS,"UPDATE",0,""
	ELSE
		INPUTS
	ENDIF
	;시스템계를 먼저 처리
	SELECTCASE RESULTS
	CASE "UPDATE"
		PREV_REDRAW = CURRENTREDRAW()
		REDRAW 0
		CLEARLINE LINECOUNT - LINESTART
		BREAK
	;察知系
	CASE "Z", "z", "X", "x"
		IF TALENT:MASTER:위치짐작 && (RESULTS == "Z" || RESULTS == "z")
			CALL HITOSAGASI()
		ELSEIF TALENT:MASTER:오방짐작 && (RESULTS == "X" || RESULTS == "x")
			CALL OHEYA_CHECK
		ENDIF
		INPUT
		IF RESULT == 0
			RESTART
		ELSEIF MAP_CAN_MOVE(RESULT) == 0
			CALL CANNOT_MOVE_MESSAGE(RESULT)
			CONTINUE
		ELSEIF IN_HOME(RESULT) == 1
			CALL SKIP_MOVE(CFLAG:MASTER:현재위치, RESULT)
			RETURN
		ENDIF
	;察知切り替え
	CASE "Y", "y"
		IF TALENT:MASTER:위치짐작 && TALENT:MASTER:오방짐작
			FLAG:짐작모드 += 1
			SIF FLAG:짐작모드 >= 3
				FLAG:짐작모드 = 0
		ELSEIF TALENT:MASTER:위치짐작
			FLAG:짐작모드 = !FLAG:짐작모드
		ELSEIF TALENT:MASTER:오방짐작
			FLAG:짐작모드 = (!FLAG:짐작모드) * 2
		ENDIF
		RESTART
	;表示切り替え
	CASE "C", "c"
		FLAG:이동처표시 += 1
		SIF FLAG:이동처표시 > 2
			FLAG:이동처표시 = 0
		RESTART
	CASE ""
		CONTINUE
	ENDSELECT

	;반각 숫자의 경우만 판정을 속행
	IF ISNUMERIC(RESULTS)
		RESULT = TOINT(RESULTS)
	ELSE
		CALL CANNOT_MOVE_MESSAGE(0)
		CONTINUE
	ENDIF
	;시스템계를 먼저 처리
	SELECTCASE RESULT
	CASE BUTTON돌아간다, CFLAG:MASTER:현재위치
		RETURN -1
	CASE BUTTON전환왼쪽
		TFLAG:맵변환 -= 1
		SIF TFLAG:맵변환 <= 0
			TFLAG:맵변환 = MAP_PAGES
		RESTART
	CASE BUTTON전환오른쪽
		TFLAG:맵변환 += 1
		SIF TFLAG:맵변환 > MAP_PAGES
			TFLAG:맵변환 = 1
		RESTART
	;私室に戻る
	CASE 0
		IF IN_HOME(CFLAG:MASTER:초기위치) != 1
			PRINTW 초기 위치가 부정확합니다. 방으로 변경합니다.
			CFLAG:MASTER:초기위치 = Default초기위치
		ENDIF
		CALL SKIP_MOVE(CFLAG:MASTER:현재위치, CFLAG:MASTER:초기위치)
		RETURN
	ENDSELECT

	;남은 것은 통상의 장소의 선택 혹은 오입력

	;TW의 방침으로서 비추천이지만 박수 입력으로 이것이 있으면(자) 입력 문자수 줄어들어 편리하다
	SIF INRANGE(RESULT, 1, 99)
		RESULT += MAIN_MAP * 100
	;同じ場所はキャンセル
	IF RESULT == CFLAG:MASTER:현재위치
		RETURN -1
	;移動不可能なら弾くよ
	ELSEIF MAP_CAN_MOVE(RESULT) == 0
		CALL CANNOT_MOVE_MESSAGE(RESULT)
		CONTINUE
	;移動する
	ELSE
		CALL SKIP_MOVE(CFLAG:MASTER:현재위치, RESULT)
		RETURN
	ENDIF
LOOP 1
;Map Animation Code
SIF ANIMATERECOLOREDMAPS && !FLAG:시간정지
	GOTO MAPANIMATION

;이동
@COM_ABLE400
;이동 실행 판정
SIF !TFLAG:100
	RETURN 0
;일괄관리
SIF GLOBAL_COMABLE(400)
	RETURN RESULT
SIF CFLAG:우후후
	RETURN 0
SIF CFLAG:MASTER:장난
	RETURN 0
SIF CFLAG:MASTER:동침중
	RETURN 0
;자택이 아니다
SIF AT_HOME(MASTER) == 0
	RETURN 0
RETURN 1

@SKIP_MOVE(ARG, 최종목적지)
#DIM 잠정목적지, 10
#DIM 잠정목적지결정회수
#DIM 최종목적지
#DIM 직전위치
#DIM 출발지점
#DIM 경과시간
#DIM 중계지점, 20
#DIM 중계회수
#DIM RELAY_COUNT
#DIM 직전의목적지
#DIM TSP소비배율

;ARG:0	출발 위치
;ARG:1	최종목적지
VARSET LOCAL
VARSET 중계지점
잠정목적지 = 최종목적지
경과시간 = 0
중계회수 = 0
TFLAG:맵변환 = 0

출발지점 = CFLAG:MASTER:현재위치

;자동청소
CALL AUTO_SWEEP

IF (CAN_MOVE(CFLAG:MASTER:현재위치, 잠정목적지) & 1)
	직전위치 = ARG
	경과시간 = 1
	CFLAG:MASTER:현재위치 = 최종목적지
	RESULT = 최종목적지
	GOTO STOP
ELSE
	TRYCALLFORM SKIP_MOVE_{MAIN_MAP}(최종목적지)
ENDIF

출발지점 = CFLAG:MASTER:현재위치
직전의목적지 = -1

FOR 중계회수, 0,20
	WHILE !(CAN_MOVE(출발지점, 잠정목적지) & 1)
		TRYCALLFORM SKIP_MOVE_{MAIN_MAP}(잠정목적지, 출발지점)
		[IF_DEBUG]
		PRINTFORML {잠정목적지}%STR:(8000 + 잠정목적지)%에 직접 갈 수 없으니 {RESULT}%STR:(8000 + RESULT)%를 목표로 할게
		[ENDIF]
		SIF 직전의목적지 == RESULT
			THROW 무한 루프가 발생하고 있습니다.
		직전의목적지 = 잠정목적지
		잠정목적지 = RESULT
	WEND
	[IF_DEBUG]
	SETCOLOR C_YELLOW
	PRINTFORML {중계회수+1}개째의 잠정목적지를 %NAME_FROM_PLACE(잠정목적지)%로 결정
	RESETCOLOR
	[ENDIF]
	직전의목적지 = -1
	경과시간 += 1
	중계지점:중계회수 = 잠정목적지
	SIF CAN_MOVE(잠정목적지, 최종목적지) & 1
		BREAK
	출발지점 = 잠정목적지
	잠정목적지 = 최종목적지
NEXT
직전위치 = 잠정목적지

FOR RELAY_COUNT, 1, 중계회수 + 1
	LOCAL:3 = 0
	FOR LOCAL,1,CHARANUM
		IF CFLAG:LOCAL:현재위치 == 중계지점:(RELAY_COUNT-1)
			LOCAL:3 = LOCAL
			BREAK
		ENDIF
	NEXT
	PRINTFORM {RELAY_COUNT}번째 중계지인 %NAME_FROM_PLACE(중계지점:(RELAY_COUNT-1))%
	IF LOCAL:3
		RESULT = 0
		IF CFLAG:(LOCAL:3):구상셀렉터
			TRYCALLFORM M_KOJO_K{LOCAL:3}_{CFLAG:(LOCAL:3):구상셀렉터}
		ELSE
			TRYCALLFORM M_KOJO_K{LOCAL:3}
		ENDIF
		PRINTFORML 에서 %조사처리(CALLNAME:(LOCAL:3),"를")% 발견했다
		IF FLAG:멈춰서기 == 2
			;멈춰 서지 않는다
		ELSEIF FLAG:멈춰서기 == 1 && !RESULT
			;말이 있는 경우만
		ELSE
			CALL ASK_M("인사하고 이동한다",!FLAG:70,"무시하고 이동한다", 1,"멈춰선다", 1)
			IF RESULT == 2
				CALL KOJO_MESSAGE_SEND("EVENT",4,LOCAL:3,1,0)
				경과시간 = RELAY_COUNT
				CFLAG:MASTER:현재위치 = 중계지점:(RELAY_COUNT - 1)
				RESULT = 중계지점:RELAY_COUNT
				GOTO STOP
			ELSEIF RESULT == 1
				CALL KOJO_MESSAGE_SEND("EVENT",4,LOCAL:3,3,0)
			ELSE
				CALL KOJO_MESSAGE_SEND("EVENT",4,LOCAL:3,2,0)
			ENDIF
		ENDIF
	ELSE
		PRINTFORML 에는 아무도 없었다
	ENDIF
NEXT

경과시간 = 중계회수 + 1
CFLAG:MASTER:현재위치 = 최종목적지
RESULT = 최종목적지

$STOP
IF IN_TOILET(RESULT)
	CALL 화장실침입(RESULT)
	SIF RESULT == -1
		CFLAG:MASTER:현재위치 = 직전위치
ELSEIF BATHCHECK(RESULT)
	LOCAL:1 = IN_ROOM_MEMBER("MIN", RESULT, "CFLAG", 6)
	IF !LOCAL:1 && !CFLAG:MASTER:동행
		PRINTFORMW 욕실에 도착한 %마스터는% 욕탕에 잠겼다
	ELSEIF LOCAL:1 && 목욕탕추방조건(LOCAL:1) && !CFLAG:MASTER:동행
		PRINTFORMW 욕실에 있던 %CALLNAME:(LOCAL:1)%에게 내쫓기고 말았다…
		CALL KOJO_MESSAGE_SEND("EVENT",11,LOCAL:1,1,0)
		CFLAG:MASTER:현재위치 = 직전위치
	ELSEIF LOCAL:1 && !CFLAG:MASTER:동행
		IF FLAG:70 == 1
			PRINTFORMW %조사처리(CALLNAME:(LOCAL:1),"가")% 입욕 중이었던 모양이다…
		ELSE
			PRINTFORMW 욕실에 있던 %조사처리(CALLNAME:(LOCAL:1),"와")% 눈이 마주쳤다…
			CALL KOJO_MESSAGE_SEND("EVENT",11,LOCAL:1,2,0)
		ENDIF
		CFLAG:MASTER:현재위치 = 최종목적지
	ELSE
		FOR LOCAL, 1, CHARANUM
			IF 목욕탕추방조건(LOCAL) && CFLAG:LOCAL:동행
				PRINTFORMW %조사처리(CALLNAME:LOCAL,"와")% 같이 목욕하려 했지만 거절당했다
				CALL KOJO_MESSAGE_SEND("EVENT",23,LOCAL,1,0)
				CFLAG:MASTER:현재위치 = 직전위치
				GOTO END
			ELSEIF LOCAL:1 && 목욕탕추방조건(LOCAL:1)
				PRINTFORMW 욕실에 있던 %CALLNAME:(LOCAL:1)%에게 내쫓기고 말았다…
				CALL KOJO_MESSAGE_SEND("EVENT",11,LOCAL:1,1,0)
				CFLAG:MASTER:현재위치 = 직전위치
				GOTO END
			ENDIF
		NEXT
		FOR LOCAL, 1, CHARANUM
			IF CFLAG:LOCAL:동행
				PRINTFORMW %조사처리(CALLNAME:LOCAL,"는")% 같이 목욕을 해줄 모양이다.
				CALL KOJO_MESSAGE_SEND("EVENT",23,LOCAL,2,0)
				BREAK
			ENDIF
		NEXT
		CFLAG:MASTER:현재위치 = 최종목적지
	ENDIF
ELSEIF RESULT == 54
	CALL 벌레통침입(RESULT)
	SIF RESULT == -1
		CFLAG:MASTER:현재위치 = 직전위치
ELSEIF LOCK:(RESULT)
	LOCAL:4 = RESULT
	IF FLAG:70 == 1
		FOR LOCAL, 1, CHARANUM
			IF CFLAG:LOCAL:311 == RESULT && CFLAG:LOCAL:수면 && !CFLAG:LOCAL:출금
				PRINTFORMW 아무래도 %조사처리(CALLNAME:LOCAL,"는")% 자고 있는 모양이다.
			ENDIF
		NEXT
		;이동 성립
		CFLAG:MASTER:현재위치 = 최종목적지
	ELSEIF FLAG:70 == 0
		FOR LOCAL, 1, CHARANUM
			IF CFLAG:LOCAL:311 == RESULT && CFLAG:LOCAL:수면 && !CFLAG:LOCAL:출금
				PRINTFORMW 아무래도 %조사처리(CALLNAME:LOCAL,"는")% 자고 있는 모양이다
			ELSEIF CFLAG:LOCAL:311 == RESULT && !CFLAG:LOCAL:수면 && !CFLAG:LOCAL:출금
				PRINTFORML 아무래도 %조사처리(CALLNAME:LOCAL,"는")% 자고 있는 모양이다
				PRINTFORMW 조금 소리도 들린다…
			ENDIF
			IF CFLAG:LOCAL:동행
				LOCAL:2 = 1
			ELSE
				LOCAL:2 = 0
			ENDIF
		NEXT
		IF LOCAL:2
			CFLAG:MASTER:현재위치 = 직전위치
		ELSEIF LOCAL:4 != CFLAG:MASTER:초기위치
			CALL ASK_YN("방에 숨어든다","그만둔다")
			IF RESULT == 0
				CALL 방에숨어든다(LOCAL:4, 직전위치)
				GOTO END
			ELSEIF RESULT == 1
				CFLAG:MASTER:현재위치 = 직전위치
			ENDIF
		ENDIF
	ENDIF
ELSEIF TFLAG:연회장 == RESULT
	CALL ENKAI_SINKOU()
ENDIF
$END
[IF_DEBUG]
PRINTFORML {경과시간}번 이동했어
[ENDIF]

TSP소비배율 = 5
SIF TALENT:MASTER:100 < -4
	TSP소비배율 += 15
SIF TFLAG:운반
	TSP소비배율 += 3
IF FLAG:70 == 1 || (GETBIT(FLAG:순간이동, 1) && !CFLAG:MASTER:동행 && BASE:MASTER:TSP > TSP소비배율 * 경과시간)
	BASE:MASTER:TSP -= TSP소비배율 * 경과시간
	SIF TFLAG:운반
		CFLAG:(TFLAG:운반):현재위치 = CFLAG:MASTER:현재위치
ELSE
	SIF TALENT:MASTER:100 < -4 && !CFLAG:MASTER:동행
		TIME += 7 * 경과시간
	TIME += 2 * 경과시간
	IF CFLAG:93:동행 && !GETBIT (FLAG:풀장, 0)
		TIME += 2 * 경과시간
		BASE:MASTER:체력 = MAX(BASE:MASTER:체력 - (5 * 경과시간), 500)
	ENDIF
ENDIF
;21/09/01 자유행동에 대응하는 플레이버 추가
IF CFLAG:MASTER:현재위치 == FA16_HOLE:0 && !FA16_HOLE:1
	IF (50 - (ABL:MASTER:전투능력 * 7)) < RAND:100
		PRINTFORMW ……발밑에 함정이 있었지만 %마스터는% 쉽게 피했다
		FA16_HOLE:1 = 1
	ELSE
		PRINTFORMW %마스터는% 함정에 빠졌다！！
		SELECTCASE RAND(15) + TFLAG:행운보정
			CASE IS < 2
				PRINTFORML 아프다！！ 제대로 엉덩이로 떨어지고 말았다…
				CALL RECOVER(MASTER, -50, "체력", "엉덩이가 아프다")
				WAIT
			CASE IS > 12
				MONEY += 100
				PRINTFORML …구멍 밑바닥에서 100엔을 발견했다
				PRINTFORMW 현재의 소지금 : %금액표시(MONEY)%
		ENDSELECT
		TIME += 3
		FA16_HOLE:1 = 2
		FA16_HOLE:2 = TIME
	ENDIF
ENDIF

PREVCOM = 400
STR:0 = 이동
;NEXTCOM에 무엇인가의 값이 들어가 있는 경우는 그것을 고쳐 쓰지 않는다
;그렇지 않은 경우―1으로 리셋
SIF NEXTCOM == 0
	NEXTCOM = -1

;-----------------------------------------------------------
;이동불능시 처리
;ARG=이동하려는 장소ID
;-----------------------------------------------------------
@CANNOT_MOVE_MESSAGE(ARG)
IF !ARG || NAME_FROM_PLACE(ARG) == "" || TFLAG:이동불능메시지 == 998
	PRINTFORMW 잘못된 입력입니다
	CLEARLINE 2
	REUSELASTLINE
ELSEIF TFLAG:이동불능메시지 == 999
	PRINTFORMW 잠겨 있다
	CLEARLINE 2
	REUSELASTLINE
ELSE
	TRYCALLFORM MAP_CANNOT_WORD_{MAIN_MAP}(ARG)
ENDIF
TFLAG:이동불능메시지 = 0

path: ERB/커맨드관련/COMF/일상계/COMF400 이동_t.ERB


code:
;-------------------------------------------------
;콜렉션
;일상계 커맨드, 레벨 1
;-------------------------------------------------
@COM401
#DIM 종류
FLAG:700 = 0
FOR LOCAL, 1, CHARANUM
	FOR 종류, 0, MAXPANTS
		CFLAG:LOCAL:(종류 + 팬티관리) += PANTS_TEMP:LOCAL:종류
		SIF PANTS_TEMP:LOCAL:종류
		PRINTFORML %CALLNAME:LOCAL%의 %조사처리(PANTSNAME(종류, LOCAL),"를")% 콜렉션에 추가했다
		PANTS_TEMP:LOCAL:종류 = 0
		CFLAG:LOCAL:293 = 0
		SIF CFLAG:LOCAL:(종류 + 팬티관리)
			FLAG:700 ++
	NEXT
NEXT
FLAG:팬티수송 = 0

PRINTFORMW 콜렉션은 현재{FLAG:700}종이다
RETURN 1

;콜렉션
@COM_ABLE401
;이동 실행 판정
SIF !TFLAG:100
	RETURN 0
;일괄관리
SIF GLOBAL_COMABLE(401)
	RETURN RESULT
;개인 방 설정
SIF CFLAG:MASTER:현재위치 != CFLAG:MASTER:311
	RETURN 0
;SIF CSTR:MASTER:12 == ""
SIF !FLAG:팬티수송
	RETURN 0
SIF CFLAG:우후후 == 2
	RETURN 0
RETURN 1

path: ERB/커맨드관련/COMF/일상계/COMF401 콜렉션_t.ERB


code:
;-------------------------------------------------
;취침
;일상계 커맨드, 레벨 1
;-------------------------------------------------
@COM402
#DIM 노동량
#DIM 수익

IF FLAG:부업 && BASE:MASTER:기력 > 300 && BASE:MASTER:TSP > 0
	PRINTFORML %마스터는% 자기 전에 남은 TSP를 사용해 부업을 했다
	노동량 = MIN(BASE:MASTER:기력, BASE:MASTER:TSP /2)
	수익 = 노동량 * (5 + RAND:5) / 10
	MONEY += 수익
	PRINTFORMW \\{수익}벌었다
ENDIF
IF FLAG:자동결연 && !FLAG:발원내용 && !CFLAG:동침중
	PRINTFORM 자기 전에
	IF MONEY >= 1000
		CALL GANKAKE_0(FLAG:자동결연)
		MONEY -= 1000
		PRINTFORMW %마스터는% %조사처리(CALLNAME:(FLAG:자동결연),"와")% 친하게 될 수 있도록 신에게 빌었다
		SIF FLAG:발원내용 < 0
			PRINTFORMW ……그러나 발원은 이상한 힘에 쓸려 사라졌다…
	ELSE
		PRINTFORMW %마스터는% %조사처리(CALLNAME:(FLAG:자동결연),"와")% 친하게 될 수 있도록 신에게 빌려고 했지만 새전이 없었다
	ENDIF
ENDIF

IF 아이의수면시간(TARGET) && CFLAG:출산경과일 >= CHILD_아장아장 && FLAG:자식묘사 && !INRANGE(TIME, 540, 840)
	PRINTFORMDL 가족 셋이서 川 글자가 되어 자기로 했다…
	CALL KOJO_MESSAGE_SEND("EVENT", 0, TARGET, 0, 0, "CHILD_RAISING_OYASUMI")
	TFLAG:193 = 1
	RESETCOLOR
ENDIF

CALL OYASUMI

RETURN 1

;취침
@COM_ABLE402
;이동 실행 판정
SIF !TFLAG:100
	RETURN 0
;일괄관리
SIF GLOBAL_COMABLE(402)
	RETURN RESULT
;정지 중에는 불가
SIF FLAG:70 == 1
	RETURN 0
;개인 방 설정
SIF CFLAG:MASTER:현재위치 != CFLAG:MASTER:311 && CFLAG:MASTER:현재위치 != OMANEKIBEYA() && CFLAG:동침중 == 0
	RETURN 0
;기상 후 12시간 이상 경과하고 있지 않으면 안 돼(디버그중)
IF FLAG:1005 == 0
SIF NEMUKE() < 720
	RETURN 0
SIF CFLAG:우후후 == 2
	RETURN 0
ENDIF
RETURN 1

@OYASUMI
IF TARGET > 0
	CFLAG:동행 = 0
	CFLAG:동침중 = 0
	CFLAG:MASTER:동행 = 0
	CFLAG:MASTER:동침중 = 0
ENDIF

IF CFLAG:MASTER:현재위치 == CFLAG:MASTER:311
	CALL SET_SLEEP(1, MASTER, 0)
ELSE
	CALL SET_SLEEP(1, TARGET, 1)
	SIF CFLAG:TARGET:쇠약
		CFLAG:TARGET:쇠약 = 0
ENDIF

CALL SET_SNEAK(0, TARGET, 1)
;CALL SET_TOGETHER(0, TARGET, 1)

CFLAG:MASTER:취침시간 = DAY * 1440 + TIME
BEGIN AFTERTRAIN

path: ERB/커맨드관련/COMF/일상계/COMF402 취침_t.ERB


code:
;-------------------------------------------------
;휴식
;일상계 커맨드, 레벨 1
;-------------------------------------------------
@COM403
#DIM 회복전체력
#DIM 회복전기력
#DIM 회복후체력
#DIM 회복후기력
#DIM 회복률_체력, 4
#DIM 회복률_기력, 4
#DIM 회복률_정력, 4
#DIM Restore

회복률_체력:0 = 100
회복률_기력:0 = 200

회복률_체력:1 = 125
회복률_기력:1 = 225

회복률_체력:2 = 150
회복률_기력:2 = 250

회복률_체력:3 = 175
회복률_기력:3 = 275

회복전체력= BASE:MASTER:체력
회복전기력= BASE:MASTER:기력
IF NEMUKE() >= 960 && !CFLAG:MASTER:수면
	PRINTFORMW 잠시 쉬려던 %마스터는% 그대로 자 버렸다
	TFLAG:193 = -1
	CALL SET_SLEEP(1,MASTER,0)
	CFLAG:MASTER:취침시간 = DAY * 1440 + TIME
	BEGIN AFTERTRAIN
ELSE
	IF CFLAG:MASTER:현재위치 == CFLAG:MASTER:초기위치 && ITEM:참나무쇼파
		Restore = MIN(ITEM:참나무쇼파,3)
	ELSE
		Restore = 0
	ENDIF
	;누군가 데리고 있는 때는 여기.
	;"낮잠 하는"으로부터 코피페 하고 있으니 이 분기가 이상하면 미안해요
	IF TARGET > 0 && CFLAG:TARGET:6 > 0
		;흡혈귀 또는 월광욕 소유로 밤의 사이
		;또는 일광욕소유로 낮의 사이
		IF ((TALENT:흡혈귀 || TALENT:월광욕) && (TIME > 1140 || TIME < 360)) || (TALENT:일광욕 && (TIME > 360 && TIME < 1140))
			CALL RECOVER_PERMIL(TARGET, 200,"체력", 1)
			CALL RECOVER_PERMIL(TARGET, 300,"기력", 1)
		ELSEIF CHECK_CHARA(TARGET, "봉래인")
			CALL RECOVER_PERMIL(TARGET, 250,"체력", 1)
			CALL RECOVER_PERMIL(TARGET, 350,"기력", 1)
		ELSE
			CALL RECOVER_PERMIL(TARGET,회복률_체력:Restore,"체력",1)
			CALL RECOVER_PERMIL(TARGET,회복률_기력:Restore,"기력",1)
		ENDIF
	ENDIF
	IF CFLAG:MASTER:현재위치 == CFLAG:MASTER:초기위치 && ITEM:참나무쇼파
		PRINTFORML 쇼파에 기대어 느긋하게 몸을 맡겼다…
	ENDIF
	CALL RECOVER_PERMIL(MASTER,회복률_체력:Restore,"체력", 1)
	CALL RECOVER_PERMIL(MASTER,회복률_기력:Restore,"기력", 1)
ENDIF
TIME += 60
회복후체력= BASE:MASTER:체력
회복후기력= BASE:MASTER:기력
; DRAWLINE
; PRINTFORML 체력+{ABS(회복후체력- 회복전체력)}(%CALLNAME:MASTER%)
; PRINTFORML 기력+{ABS(회복후기력- 회복전기력)}(%CALLNAME:MASTER%)
RETURN 1

;-------------------------------------------------
;실행 판정
;-------------------------------------------------
@COM_ABLE403
;이동 실행 판정
SIF !TFLAG:100
	RETURN 0
;일괄관리
SIF GLOBAL_COMABLE(403)
	RETURN RESULT
;정지 중에는 불가
SIF FLAG:70 == 1
	RETURN 0
;자기 방, 홍마관, 서당, 데리고 들어가 숙소, 초대방 이외는 불가
SIF CFLAG:MASTER:현재위치 != CFLAG:MASTER:311 && !휴식가능(CFLAG:MASTER:현재위치)
	RETURN 0
;동침중
SIF CFLAG:동침중
	RETURN 0
;장난중
SIF CFLAG:MASTER:장난
	RETURN 0
SIF NEMUKE() >= 960
	RETURN 0
SIF CFLAG:우후후 == 2
	RETURN 0
RETURN 1

path: ERB/커맨드관련/COMF/일상계/COMF403 휴식_t.ERB


code:
;-------------------------------------------------
;외출한다
;일상계 커맨드, 레벨 1
;-------------------------------------------------
@COM405
VARSET LOCAL
FOR LOCAL, 1, CHARANUM
	IF CFLAG:(LOCAL):동행
		LOCAL:1 ++
		SIF CFLAG:LOCAL:쇠약 || BASE:LOCAL:기력 == 0
			LOCAL:2 ++
		SIF !CHARA_HOLIDAY(LOCAL) && BASE:LOCAL:일량
			LOCAL:3 ++
		SIF CFLAG:LOCAL:태도 < 1 && CAN_IRAI_CHARA_GO_TOGATHER(LOCAL)
			LOCAL:4 ++
	ENDIF
NEXT

IF NEMUKE() >= 720
	DRAWLINE
	PRINTL 졸음기가 있으니 외출하지 않는 편이 낫겠지
	RETURN -1
ELSEIF LOCAL:1 > 1
	DRAWLINE
	PRINTL 두 명 이상 데리고 나갈 수는 없다
	RETURN -1
ELSEIF LOCAL:2 || BASE:MASTER:기력 == 0
	DRAWLINE
	PRINTFORML 몸 상태가 좋지 못해서 외출할 수는 없다 \@ BASE:MASTER:기력 == 0 ? (기력 제로) # (동행자가 몸 상태 안 좋음)\@
	RETURN -1
ELSEIF LOCAL:3 && FESTIVAL() == ""
	DRAWLINE
	PRINTL 동행자가 일하는 날이기에 외출할 수는 없다
	RETURN -1
ELSEIF LOCAL:4
	DRAWLINE
	PRINTL 외출할 틈이 있으면 빨리 의뢰를 끝내라고 했다…
	RETURN -1
;(天候パッチ)悪天候時も外出可能に
;ELSEIF TIME:5 == 9 || TIME:5 == 5 || WIND_VELOCITY >= 2
;	DRAWLINE
;	PRINTL 악천후이기에 외출할 수는 없다
;	RETURN -1
ELSEIF TALENT:MASTER:100 < -4
	DRAWLINE
	PRINTL 이 몸으로 외출하는 건 위험하다
	RETURN -1
ENDIF
IF !CHK_ENTRANCE(CFLAG:MASTER:현재위치, MAIN_MAP)
	PRINTFORML 일단은 %조사처리(NAME_FROM_PLACE(ENTRANCE),"로")% 이동합니다
	CALL SKIP_MOVE(CFLAG:MASTER:현재위치, ENTRANCE)
ENDIF
LOCAL:3 = 0
DRAWLINE
CALL OTHERREGIONS("나간다")
LOCAL:2 = RESULT
LOCAL = 0
IF LOCAL:2 == MAIN_MAP || LOCAL:2 == 100
	FLAG:데이트상대 = 0
	RETURN -1
ENDIF
RETURN 1

@COM_ABLE405
SIF !TFLAG:100
	RETURN 0
;일괄관리
SIF GLOBAL_COMABLE(405)
	RETURN RESULT
;포장판매중은 불가
SIF TFLAG:운반
	RETURN 0
SIF CFLAG:MASTER:동침중
	RETURN 0
SIF CFLAG:우후후 == 2
	RETURN 0
SIF CFLAG:MASTER:장난
	RETURN 0
;참배길 설정
;SIF !CHK_ENTRANCE(CFLAG:MASTER:현재위치, MAIN_MAP)
;	RETURN 0
SIF !AT_HOME(MASTER)
	RETURN 0
RETURN 1

path: ERB/커맨드관련/COMF/일상계/COMF405 외출한다_t.ERB


code:
;-------------------------------------------------
;日記を読む
;日常系コマンド
;-------------------------------------------------
@COM406
#DIM 동거
#DIM OWNER

IF TARGET > 0 && CFLAG:TARGET:초기위치 == CFLAG:MASTER:초기위치
	동거 = 1
ELSE
	동거 = 0
ENDIF
OWNER = COM406_CHECK_OWNER()

LOCAL = 50 + ABL:MASTER:화술기능 * 5 + ABL:TARGET:친밀 * 2
SIF BASE:TARGET:술기운 > MAXBASE:TARGET:술기운 / 2
	LOCAL -= 15

SELECTCASE TFLAG:192
	;通常
	CASE 0
		SELECTCASE RAND:LOCAL
			CASE IS < 20
				TFLAG:193 = 1
			CASE 20 TO 50
				TFLAG:193 = 2
			CASEELSE
				TFLAG:193 = 3
		ENDSELECT
	;強制成功or大成功
	CASE 1
		SELECTCASE RAND:LOCAL
			CASE IS < 50
				TFLAG:193 = 2
			CASEELSE
				TFLAG:193 = 3
		ENDSELECT
	;強制失敗
	CASE -1
		TFLAG:193 = 1
	;コマンド終了
	CASE -2
		TFLAG:193 = -1
		RETURN 0
ENDSELECT

TFLAG:194 = OWNER

IF CFLAG:MASTER:현재위치 == CFLAG:MASTER:초기위치
	PRINTFORML 책상 위에는 일기장이 \@ 동거 ? 두권 # \@놓여져 있다.
	PRINTFORML 뭘 할까?
	VARSET LOCALS, "？？？？"
	IF TARGET > 0
		LOCALS:0 = %CALLNAME:TARGET%에게 일기를 읽어달라 한다
		LOCALS:1 = %CALLNAME:TARGET%의 일기를 읽는다
	ENDIF
	{
	CALL ASK_M("일기를 쓴다",1,"일기를 읽는다",1,@"%LOCALS:0%", TARGET > 0,
	@"%LOCALS:1%", 동거 && (!SHIRAHU(TARGET) || TALENT:TARGET:연모 ),
	"일기를 보존한다",1, "일기를 읽어본다",1,
	"아무것도 하지 않는다",1)
	}
	SELECTCASE RESULT
		CASE 0
			IF STRCOUNT(SAVESTR:1,"//") >= 100
				PRINTFORML 이 일기장은 이미 꽉 찼다。
				PRINTFORMW 다른 일기장으로 바꾸자。
			ELSE
				PRINTFORML 일기 내용을 직접 입력해 주세요.
				PRINTFORML 시스템 쪽에서 자동 기록되기 때문에 날짜 기입은 필요없습니다.
				PRINTL
				CALL MASTER_DIARY_INPUT
				SIF RESULTS != ""
					CALL MASTER_DIARY_WRITE,RESULTS
				PRINTL
			ENDIF
		CASE 1
			CALL READ_MASTER_DIARY
		CASE 2
			IF ABL:TARGET:친밀 >= 5
				PRINTFORMW %타겟은% %CALLNAME:MASTER%의 일기장을 집어들었다…
				CALL SHARE_MASTER_DIARY
			ELSE
				PRINTFORMW %타겟은% 흥미가 없는 듯 하다…
			ENDIF
		CASE 3
			CALL CHARA_DIARY_COM(TARGET)
		CASE 4
			CALL WRITE_MASTER_DIARY_FILE
		CASE 5
			CALL READ_MASTER_DIARY_FILE
		CASE 6
	ENDSELECT
	GOTO SKIP
ELSEIF TALENT:OWNER:연모 && CFLAG:MASTER:현재위치 != CFLAG:MASTER:초기위치
	PRINTFORML 베개 옆에 일기장이 놓여 있다.
	PRINTFORML %조사처리(CALLNAME:OWNER,"는")% 일기의 내용을 공유할 생각이 있는 것 같다.
	PRINTFORML 어떻게 합니까?
	CALL ASK_YN("일기를 읽는다","읽지 않는다")
	IF !RESULT
		CALL CHARA_DIARY_COM(OWNER)
	ENDIF
ELSEIF CFLAG:OWNER:현재위치 != CFLAG:MASTER:현재위치 && TARGET && !(FLAG:70 || !SHIRAHU(TARGET))
	PRINTFORML 베개 밑에 %CALLNAME:OWNER%의 일기장이 놓여 있는 것 같다.
	PRINTFORML 하지만…바로 옆에는 %타겟이% 있다…
	PRINTFORML 어떻게 합니까?
	CALL ASK_YN("함께 일기를 훔쳐본다","읽지 않는다")
	IF !RESULT && TFLAG:193 > 0
		CALL CHARA_DIARY_COM(OWNER)
	ELSE
		PRINTFORML 역시 하지 말자…
	ENDIF
ELSE
	PRINTFORML 베개 밑에 일기장이 놓여 있는 것 같다.
	PRINTFORML 어떻게 합니까?
	CALL ASK_YN("훔쳐본다","읽지 않는다")
	IF !RESULT
		CALL CHARA_DIARY_COM(OWNER)
	ENDIF
ENDIF

$SKIP
IF !FLAG:70
	TIME += 5
ELSE
	BASE:MASTER:TSP -= 10
ENDIF

IF SHIRAHU(TARGET) && TARGET > 0
	;固定で獲得するソース
	SOURCE:환락 = 200

	;ABL:친밀をみる
	IF ABL:친밀 <= 1
		SOURCE:환락 += (ABL:친밀 * 30)
	ELSEIF ABL:친밀 <= 3
		SOURCE:환락 += 200 + (ABL:친밀 * 30)
	ELSEIF ABL:친밀 <= 5
		SOURCE:환락 += 500 + (ABL:친밀 * 30)
	ELSEIF ABL:친밀 <= 8
		SOURCE:환락 += 750 + (ABL:친밀 * 50)
	ELSEIF ABL:친밀 <= 10
		SOURCE:환락 += 1000 + (ABL:친밀 * 50)
	ELSE
		SOURCE:환락 += 1600 + (ABL:친밀 * 30)
	ENDIF

	SOURCE:환락 = LIMIT(SOURCE:환락,0,5000)

	SOURCE:수동 = 100 + 100 * ABL:순종
	SOURCE:정복 = 100 + 100 * ABL:새드끼

	IF TFLAG:193 == -1 || TFLAG:193 == -2
		TIMES SOURCE:환락 , 0.10
		TIMES SOURCE:정복 , 0.50
		TIMES SOURCE:수동 , 0.50
	ELSEIF TFLAG:193 == 0
		TIMES SOURCE:환락 , 1.00
		TIMES SOURCE:정복 , 1.00
		TIMES SOURCE:수동 , 1.00
	ELSE
		TIMES SOURCE:환락 , 2.00
		TIMES SOURCE:정복 , 2.00
		TIMES SOURCE:수동 , 2.00
	ENDIF
	SELECTCASE ABL:MASTER:화술기능
		CASE 0
			TIMES SOURCE:환락 , 0.20
			TIMES SOURCE:정복 , 0.20
			TIMES SOURCE:수동 , 0.20
		CASE 1
			TIMES SOURCE:환락 , 0.40
			TIMES SOURCE:정복 , 0.40
			TIMES SOURCE:수동 , 0.40
		CASE 2
			TIMES SOURCE:환락 , 0.70
			TIMES SOURCE:정복 , 0.70
			TIMES SOURCE:수동 , 0.70
		CASE 3
			TIMES SOURCE:환락 , 1.00
			TIMES SOURCE:정복 , 1.00
			TIMES SOURCE:수동 , 1.00
		CASE 4
			TIMES SOURCE:환락 , 1.20
			TIMES SOURCE:정복 , 1.20
			TIMES SOURCE:수동 , 1.20
		CASEELSE
			TIMES SOURCE:환락 , 1.50
			TIMES SOURCE:정복 , 1.50
			TIMES SOURCE:수동 , 1.50
	ENDSELECT
ENDIF
RETURN 1

;-------------------------------------------------
;実行判定
;-------------------------------------------------
@COM_ABLE406
#DIM OWNER
OWNER = COM406_CHECK_OWNER()

;移動実行判定
SIF !TFLAG:100
	RETURN 0

;장난かウフフ中
SIF CFLAG:MASTER:장난
	RETURN 0

SIF CFLAG:MASTER:우후후
	RETURN 0

;拠点にいる時か초대部屋のみ
SIF !AT_HOME(MASTER) && CFLAG:MASTER:현재위치 != OMANEKIBEYA()
	RETURN 0

SIF CFLAG:MASTER:현재위치 != CFLAG:MASTER:초기위치 && !OWNER
	RETURN 0

SIF !TALENT:OWNER:연모 && ABL:MASTER:교양 < ABL:OWNER:교양 && OWNER
	RETURN 0

SIF !TALENT:OWNER:연모 && CFLAG:OWNER:현재위치 == CFLAG:OWNER:초기위치 && !(FLAG:70 || !SHIRAHU(OWNER)) && OWNER
	RETURN 0

SIF !TALENT:TARGET:연모 && !(FLAG:70 || !SHIRAHU(TARGET)) && TARGET
	RETURN 0

RETURN 1

@MESSAGE_COM406
#DIM OWNER
OWNER = COM406_CHECK_OWNER()

IF (!TALENT:OWNER:연모 && !(FLAG:70 || !SHIRAHU(OWNER))) && !(CFLAG:MASTER:현재위치 == CFLAG:MASTER:초기위치)
	PRINTFORML 다 읽고 나서, 일기장을 슬그머니 제자리에 돌려놓았다.
ELSE
ENDIF

;日記の著者チェッカー
@COM406_CHECK_OWNER
#FUNCTION

IF TARGET > 0 && CFLAG:TARGET:초기위치 == CFLAG:MASTER:초기위치 && CFLAG:MASTER:현재위치 == CFLAG:MASTER:초기위치
	RETURNF TARGET
ELSEIF TARGET == CFLAG:MASTER:초대 && CFLAG:MASTER:현재위치 == OMANEKIBEYA()
	RETURNF CFLAG:MASTER:초대
ELSE
	RETURNF PRIVATEROOM:(CFLAG:MASTER:현재위치 % 100)
ENDIF

path: ERB/커맨드관련/COMF/일상계/COMF406 일기를읽다.ERB


code:
;-------------------------------------------------
;청소
;일상계 커맨드, 레벨 1
;-------------------------------------------------
@COM410
#DIM 청소전의더러움
#DIM 청소후의더러움
#DIM 청소력
#DIM SWEEPID
SWEEPID = CFLAG:MASTER:현재위치
TFLAG:무드상승억제 = 1
IF YOGORE:SWEEPID < OSOUJI_LIMIT(MASTER)
	DRAWLINE
	PRINTFORML 그렇게 지저분하지 않으니 아직 청소하지 않아도 될 것이다
	RETURN -1
ENDIF

SELECTCASE YOGORE:SWEEPID
	CASE IS < 500
		TFLAG:194 = 0
	CASE IS < 2000
		TFLAG:194 = 1
	CASE IS < 5000
		TFLAG:194 = 2
	CASEELSE
		TFLAG:194 = 3
ENDSELECT
;=================================================
LOCAL:4 = 0
SIF BASE:MASTER:TSP > 1500
	LOCAL:4 = 1
SIF BASE:MASTER:TSP > 2000
	LOCAL:4 = 2

IF YOGORE:(SWEEPID) > 5000 && TALENT:MASTER:61 == -2 && BASE:MASTER:체력 > (1500 - LOCAL:4 * 300) && BASE:MASTER:기력 > (2000 - LOCAL:4 * 100) && BASE:MASTER:TSP > 1000 && !CFLAG:MASTER:335 && !FLAG:70
	PRINTL 그나저나 참아주기 힘들게 지저분하다…
	;PRINTL [0]평상심을 유지한다
	;PRINTL [1]무리
	;INPUT
	;IF RESULT == 0
		GOTO CANCEL_LOOP
	;ELSE
	;	CALL OSOUJI(LOCAL:4)
	;	RETURN 1
	;ENDIF
;=================================================
ELSE
	$ CANCEL_LOOP
	IF (!TARGET || !SHIRAHU(TARGET))
		CALL 팬티발견
	ENDIF
	IF TARGET && ABL:친밀 * 500 + ABL:순종 * 500 + ABL:청소기능 * 1000 > CFLAG:310 - CFLAG:MASTER:310
		TFLAG:193 = 1
	ELSE
		TFLAG:193 = 0
	ENDIF

	청소력 = (2 + ABL:MASTER:청소기능 + 3 * TALENT:MASTER:청소중독)
	;커스텀대비による補正
	SELECTCASE ITEM:커스텀대비
		CASE 1
			청소력 += 2
		CASE 2
			청소력 += 3
		CASE 3
			청소력 += 4
	ENDSELECT
	SIF ITEM:커스텀대비
		PRINTFORML %CALLNAME:MASTER%용으로 커스텀한 특별 주문 빗자루가 윙윙 소리를 낸다！

	청소력 = 청소력 * (5 - TALENT:MASTER:61) / 5
	청소전의더러움 = YOGORE:(SWEEPID)
	IF TFLAG:193 && !CFLAG:수면
		YOGORE:(SWEEPID) = YOGORE:(SWEEPID) / (청소력 + 1)
	ELSE
		YOGORE:(SWEEPID) = YOGORE:(SWEEPID) / 청소력
	ENDIF
	IF (CFLAG:MASTER:현재위치 == 9 || CFLAG:MASTER:현재위치 == 10)
		PRINTL 내친 김에 벌레통도 청소했다
		PRINTFORML 신묘마루의 개인물품을 치우고 뒤집어서 흔들면 그만이니까 간단하다
		YOGORE:(54) = 0
	ENDIF
	청소후의더러움 = YOGORE:(CFLAG:MASTER:현재위치)
	EX:MASTER:오늘의청소회수 = EX:MASTER:오늘의청소회수 + 청소전의더러움 - 청소후의더러움
	IF FLAG:70
		IF ITEM:청소기 ;KR판 오리지날
			BASE:MASTER:TSP -= 20
		ELSE
			BASE:MASTER:TSP -= 50
		ENDIF
		LOCAL:3 = 0
		FOR LOCAL,1,CHARANUM
			SIF CFLAG:LOCAL:동실
				LOCAL:3 ++
		NEXT
		IF LOCAL:3 == 1
			EXP:MASTER:이상청소경험 ++
			IF !GETBIT(CFLAG:MASTER:3,11)
				EXP:MASTER:이상경험 ++
				SETBIT CFLAG:MASTER:3,11
			ENDIF
		ENDIF
	ELSE
		DOWNBASE:MASTER:체력 = 50
		DOWNBASE:MASTER:기력 = 100
	ENDIF

	IF TARGET > 0 && !CFLAG:수면 && !FLAG:70 && !CFLAG:우후후
		;고정으로 획득하는 소스
		SOURCE:환락 = 400
		;신뢰
		TFLAG:98 = 3

		;ABL:순종을 본다
		IF ABL:순종 <= 1
			SOURCE:환락 += (ABL:순종 * 60)
		ELSEIF ABL:순종 <= 3
			SOURCE:환락 += 200 + (ABL:순종 * 60)
		ELSEIF ABL:순종 <= 5
			SOURCE:환락 += 500 + (ABL:순종 * 60)
		ELSEIF ABL:순종 <= 8
			SOURCE:환락 += 750 + (ABL:순종 * 75)
		ELSEIF ABL:순종 <= 11
			SOURCE:환락 += 1000 + (ABL:순종 * 75)
		ELSE
			SOURCE:환락 += 2000 + (ABL:순종 * 30)
		ENDIF

		;호감 도를 본다
		IF CFLAG:2 <= 500
			SOURCE:환락 += CFLAG:2
		ELSEIF CFLAG:2 <= 5000
			SOURCE:환락 += 500 + (CFLAG:2 - 500) / 3
		ELSE
			SOURCE:환락 += 2000 + (CFLAG:2 - 5000) / 5
		ENDIF
		SIF SOURCE:환락 < 0
			SOURCE:환락 = 0
		SOURCE:정복 = 300 + 100 * ABL:새드끼
	ELSEIF TARGET > 0 && CFLAG:우후후 && !FLAG:70
		DOWNBASE:기력 += 100
		SOURCE:반감 += 500
		SOURCE:울굴 += 100
		LOCAL:3 = 0
		FOR LOCAL, 1, CHARANUM
			SIF CFLAG:LOCAL:동실
				LOCAL:3 ++
		NEXT
		IF LOCAL:3 == 1
			EXP:MASTER:이상청소경험 ++
			IF !GETBIT(CFLAG:3, 11)
				EXP:이상경험 ++
				SETBIT CFLAG:3, 11
			ENDIF
		ENDIF
	ENDIF

	IF !FLAG:70
		IF ITEM:청소기 ;KR판 오리지날
			TIME += 10
		ELSE
			TIME += 30
		ENDIF
		SIF CFLAG:동행
			CFLAG:동행 += 30
	ENDIF
	SIF TFLAG:193 && !CFLAG:수면 && !FLAG:70 && !CFLAG:우후후
		EXP:청소경험 ++
	EXP:MASTER:청소경험 ++
ENDIF
RETURN 1

@OSOUJI(ARG)
VARSET LOCAL
SETCOLOR 0xEE1010
PRINTFORMW %조교자는% 격노했다.
;KR판 오리지날. 어쩨서인지는 모르겠지만 바로 아래 문장이 일판에선 PRINTW 임.
PRINTFORMW 반드시, 난장판인 %조사처리(GET_MAPNAME(MAIN_MAP),"를")% 정리해야만 한다고 결심했다
PRINTFORMW %조교자는% 신앙을 모른다.
PRINTFORMW %조교자는% 초상의 강간마이다.
PRINTW 시간을 멈추고 소녀를 희롱하며 살아왔다.
PRINTW 그러나 지저분한 것에 관해선 남보다 곱절은 더 민감했다.
RESETCOLOR
PRINTFORML
PRINTFORML %조교자는% 시간을 멈추고 %GET_MAPNAME(MAIN_MAP)% 전체를 청소하며 다녔다!
PRINTFORML
PRINTFORMW %CALLNAME:PLAYER% 청소중…
PRINTFORMW %CALLNAME:PLAYER% 청소중……
PRINTFORMW %CALLNAME:PLAYER% 청소중………
FOR LOCAL,MINROOM(), MAXROOM
IF YOGORE:( LOCAL) > 2000
	YOGORE:( LOCAL) = YOGORE:( LOCAL:1) / (3 + ABL:MASTER:청소기능)
FLAG:562 += 1
ENDIF
NEXT
PRINTFORMW %조교자는% {FLAG:562}개의 방을 청소했다
CFLAG:MASTER:335 += 4 + RAND:(13 - 2 * ABL:MASTER:청소기능)
CFLAG:MASTER:현재위치 = CFLAG:MASTER:초기위치
FOR LOCAL,1,11
	CFLAG:LOCAL:현재위치 = 9
	CFLAG:LOCAL:335 = 1 + RAND:(ABL:MASTER:화술기능)
NEXT
FLAG:562 = 1
TIME += (500 - ARG * 100)
DOWNBASE:MASTER:체력 = (1500 - ARG * 300)
DOWNBASE:MASTER:기력 = (1500 - ARG * 100)
BASE:MASTER:TSP = 0
SIF ARG
	EXP:MASTER:청소경험 += (1 + RAND: (ARG * 3))
SIF !ARG
	EXP:MASTER:청소경험 += (1 + RAND: (2))
EXP:MASTER:이상청소경험 += RAND:5
@팬티발견
#DIM 자택캐릭터
VARSET LOCAL
[SKIPSTART]
SELECTCASE CFLAG:MASTER:현재위치
	;레이무 방
	CASE 15
		LOCAL = 1
	;낡은오두막(EX 멤버 방)
	CASE 16
		LOCAL = FLAG:더부살이캐릭터
	;작은창고(루코토)
	CASE 17
		LOCAL = 2
	;반침(카나)
	CASE 18
		LOCAL = 3
	;큰창고(스이카)
	CASE 19
		LOCAL = 10
	;서니방
	CASE 32
		LOCAL = 7
	;루나방
	CASE 33
		LOCAL = 5
	;스타방
	CASE 34
		LOCAL = 6
	;유메미방
	CASE 43
		LOCAL = 9
	;치유리방
	CASE 44
		LOCAL = 8
	;별채(미마 님 전용 별채)
	CASE 52
		LOCAL = 4
	CASE 54
		LOCAL = 71
	CASE 55
		LOCAL = FLAG:16
	CASEELSE
		LOCAL = 0
		FOR 자택캐릭터, 1, CHARANUM
			IF CFLAG:MASTER:현재위치 == CFLAG:(자택캐릭터):신사거주
				LOCAL = 자택캐릭터
			ENDIF
		NEXT
ENDSELECT
[SKIPEND]

FOR 자택캐릭터,1,CHARANUM
	IF CFLAG:MASTER:현재위치 == CFLAG:(자택캐릭터):신사거주
		LOCAL = 자택캐릭터
	ENDIF
NEXT
LOCAL:1 = 오늘의팬티(LOCAL)
LOCAL:2 =  RAND:5000
SIF FLAG:발원내용 == 202
	LOCAL:2 = RAND:4000
IF YOGORE:(CFLAG:MASTER:현재위치) > LOCAL:2 && LOCAL && LOCAL:1 && !FLAG:70
	TSTR:3 = %CALLNAME:LOCAL%{LOCAL:1}/
	TSTR:2 = %PANTSNAME(LOCAL:1, LOCAL)%
	FOUND_PANTS_TYPE = LOCAL:1
	FOUND_PANTS_OWNER = LOCAL
ENDIF

;캐릭터가 이제 청소하려고 생각하는 방의 흩어진 상태
@OSOUJI_LIMIT(ARG)
#FUNCTION
#DIM O_LIMIT
O_LIMIT = 300
SIF TALENT:ARG:게으름
	O_LIMIT *= 10
O_LIMIT = O_LIMIT * (3 + TALENT:ARG:악취내성) / 3
SIF TALENT:ARG:헌신적
	O_LIMIT /= 2
SIF TALENT:ARG:청소중독
	O_LIMIT /= 10
RETURNF O_LIMIT

@COM_ABLE410
;청소 실행 판정
SIF !TFLAG:100
	RETURN 0
;일괄관리
SIF GLOBAL_COMABLE(410)
	RETURN RESULT
SIF CHK_DATENOW(CFLAG:MASTER:데이트중)
	RETURN 0
;더러워지지 않았으면 안 됨
SIF YOGORE:(CFLAG:MASTER:현재위치) < 100
	RETURN 0
;동침중에는 안 됨
SIF CFLAG:동침중
	RETURN 0
SIF CFLAG:우후후 == 2
	RETURN 0
SIF CFLAG:행동 == 5 && CFLAG:350 != 40
	RETURN 0
;외출중은 안 됨, 초대방은 청소할 수 있다
SIF AT_HOME(MASTER) == 0 && CFLAG:MASTER:현재위치 != OMANEKIBEYA()
	RETURN 0
;기력 0
SIF BASE:MASTER:기력 <= 0
	RETURN 0
;당신의 술기운이 0이상이라면 가짜
SIF BASE:MASTER:술기운 > 0
	RETURN 0
RETURN 1

;자동청소
@AUTO_SWEEP
#DIM SWEEPID
#DIM 掃除前の汚れ
#DIM 掃除後の汚れ
#DIM 清掃力
#DIM 掃除量
#DIM 掃除ダイス

;一人でいる場合、出発地点を掃除する
[IF_DEBUG]
PRINTFORML 자동청소フラグ:{GETBIT(FLAG:자동청소, 1)}、동행：{CFLAG:MASTER:동행}
[ENDIF]
IF (GETBIT(FLAG:자동청소, 1) && !CFLAG:MASTER:동행)

	SWEEPID = CFLAG:MASTER:현재위치

	;汚れの主観スキップ判定
	IF YOGORE:SWEEPID < OSOUJI_LIMIT(MASTER)
		RETURN -1
	ENDIF

	;체력기력0ならスキップ
	IF (BASE:MASTER:체력 == 0 || BASE:MASTER:기력 == 0)
		RETURN -1
	ENDIF

	;掃除処理
	清掃力 = (2 + ABL:MASTER:청소기능 + 3 * TALENT:MASTER:청소중독)

	;커스텀대비による補正
	SELECTCASE ITEM:커스텀대비
		CASE 1
			清掃力 += 2
		CASE 2
			清掃力 += 3
		CASE 3
			清掃力 += 4
	ENDSELECT

	;成功判定
	掃除ダイス = (4 + ABL:MASTER:청소기능) - RAND:11

	[IF_DEBUG]
	PRINTFORML [ベースの清掃力:{清掃力}][掃除ダイス:{掃除ダイス}]
	[ENDIF]

	;掃除ダイスが1以上なら成功(清掃0で30%、清掃6で90%)
	IF (掃除ダイス > 0)

		清掃力 = 清掃力 * (5 - TALENT:MASTER:61) / 5

		掃除前の汚れ = YOGORE:(SWEEPID)

		YOGORE:(SWEEPID) = YOGORE:(SWEEPID) / 清掃力

		掃除後の汚れ = YOGORE:(SWEEPID)

		;掃除量を計算して半分を戻して反映
		掃除量 = (掃除前の汚れ - 掃除後の汚れ) / 2
		掃除後の汚れ += 掃除量
		YOGORE:(SWEEPID) += 掃除量
		EX:MASTER:오늘의청소회수 = EX:MASTER:오늘의청소회수 + 掃除量

		PRINTFORML %조교자는% %NAME_FROM_PLACE(SWEEPID)%を出る前に掃除した
		PRINTFORML

		[IF_DEBUG]
		PRINTFORML [清掃力:{清掃力}][掃除前:{掃除前の汚れ}][掃除後:{掃除後の汚れ}]
		[ENDIF]

		;청소경험は1/3上昇
		SIF !RAND:3
			EXP:MASTER:청소경험 ++

	ELSE
		;掃除失敗
		SELECTCASE RAND:10
			CASE 1
				PRINTFORML %조교자는% %NAME_FROM_PLACE(SWEEPID)%を出る前に掃除しようとして、バケツをひっくり返した
			CASE 2
				PRINTFORML %조교자가% 手に取ったホウキは突然暴れ始めてどこかへ行ってしまった
			CASE 3
				PRINTFORML %조교자는% %NAME_FROM_PLACE(SWEEPID)%をうまく掃除できなかった
			CASE 4
				PRINTFORML %조교자가% 掃除した%NAME_FROM_PLACE(SWEEPID)%は前より汚れているように見える
			CASE 5
				PRINTFORML %조교자는% %NAME_FROM_PLACE(SWEEPID)%を綺麗にしようと努力はした
			CASE 6
				PRINTFORML 掃除をしようとした%CALLNAME:PLAYER%の前に邪魔しようとする妖精の集団が現れた！
			CASE 7
				PRINTFORML %조교자가% 掃除している後ろで妖精がゴミを散らかしている...
			CASE 8
				PRINTFORML %조교자는% 片づけは明日でいいやと感じた
			CASEELSE
				PRINTFORML %조교자는% 今は掃除をする時ではないと感じた
		ENDSELECT
		PRINTFORML

		;청소경험は1/20上昇
		SIF !RAND:20
			EXP:MASTER:청소경험 ++

	ENDIF

	;消費TSP/ステータス/消費時間は全て通常の半分

	;自動時止め移動、またはTS中ならTSP消費
	IF ((GETBIT(FLAG:순간이동, 1) || FLAG:70) && BASE:MASTER:TSP > 25)
		BASE:MASTER:TSP -= 25
	ELSE
		DOWNBASE:MASTER:체력 = 25
		DOWNBASE:MASTER:기력 = 50
		TIME += 15
	ENDIF
ENDIF

RETURN 1

path: ERB/커맨드관련/COMF/일상계/COMF410 청소_t.ERB


code:
;-------------------------------------------------
;전투훈련
;일상계 커맨드, 레벨 1
;-------------------------------------------------
@COM411

TFLAG:무드상승억제 = 1
;날씨를 참조
SELECTCASE TIME:5
	CASE 4,6,8,10,12,13
		IF WIND_VELOCITY >= 1
			;(天候パッチ)強風時はヤバい天気
			TFLAG:194 = 2
		ELSE
			;悪天候
			TFLAG:194 = 1
		ENDIF
	CASE 5,9
		;위험 있고 날씨
		TFLAG:194 = 2
	;그 이외
	CASEELSE
		;(天候パッチ)強風時は悪天候
		SIF WIND_VELOCITY == 1
			TFLAG:194 = 1
		;(天候パッチ)暴風時はヤバい天気
		SIF WIND_VELOCITY >= 2
			TFLAG:194 = 2
		;여름 철은 죽어라
		SIF DAY:2 == 2 && TIME:5 == 1 && TIME > 360 && TIME < 1020
			TFLAG:194 = 3
ENDSELECT
SIF !OUTROOF(CFLAG:MASTER:현재위치)
	TFLAG:194 = 0
SELECTCASE TFLAG:194
	CASE 0
		DOWNBASE:MASTER:체력 = 200
		DOWNBASE:MASTER:기력 = 200
		IF TARGET > 0 && !CFLAG:수면
			;고정으로 획득하는 소스
			SOURCE:환락 = 400
			MAXBASE:TARGET:체력 += RAND:10
			DOWNBASE:TARGET:체력 = 200
			DOWNBASE:TARGET:기력 = 200
			;신뢰
			TFLAG:98 += 3
			SIF ABL:MASTER:전투능력 > 2
			TFLAG:98 ++
			IF ABL:MASTER:전투능력 > ABL:전투능력
				EXP:전투경험 += 2
				TFLAG:98 ++
			ENDIF
			SIF ABL:MASTER:전투능력 < ABL:전투능력 - 2
				EXP:MASTER:전투경험 ++
			;ABL:친밀을 본다
			IF ABL:친밀 <= 5
				SOURCE:환락 += 500 + (ABL:친밀 * 60)
				TFLAG:98 ++
			ELSEIF ABL:친밀 <= 8
				SOURCE:환락 += 750 + (ABL:친밀 * 75)
			ELSEIF ABL:친밀 <= 11
				SOURCE:환락 += 1000 + (ABL:친밀 * 75)
			ELSE
				SOURCE:환락 += 2000 + (ABL:친밀 * 30)
			ENDIF
			;호감 도를 본다
			IF CFLAG:2 <= 500
				SOURCE:환락 += CFLAG:2
			ELSEIF CFLAG:2 <= 5000
				SOURCE:환락 += 500 + (CFLAG:2 - 500) / 3
			ELSE
				SOURCE:환락 += 2000 + (CFLAG:2 - 5000) / 5
			ENDIF
			SIF SOURCE:환락 < 0
				SOURCE:환락 = 0
			EXP:MASTER:전투경험 ++
			EXP:전투경험 ++
		ENDIF
	CASE 1
	;악천후
	DOWNBASE:MASTER:체력 = 300
	DOWNBASE:MASTER:기력 = 300
	IF TARGET > 0 && !CFLAG:수면
		;고정으로 획득하는 소스
		SOURCE:환락 = 450
		MAXBASE:TARGET:체력  += RAND:15
		MAXBASE:TARGET:기력  += RAND:10
		DOWNBASE:TARGET:체력 = 300
		DOWNBASE:TARGET:기력 = 300
		;신뢰
		TFLAG:98 += 3
		SIF ABL:MASTER:전투능력 > 2
		TFLAG:98 ++
		IF ABL:MASTER:전투능력 > ABL:전투능력
			EXP:전투경험 += 2
			TFLAG:98 ++
		ENDIF
		SIF ABL:MASTER:전투능력 < ABL:전투능력 - 2
			EXP:MASTER:전투경험 ++
		;ABL:친밀을 본다
		IF ABL:친밀 <= 5
			SOURCE:환락 += 520 + (ABL:친밀 * 60)
			TFLAG:98 ++
		ELSEIF ABL:친밀 <= 8
			SOURCE:환락 += 750 + (ABL:친밀 * 75)
		ELSEIF ABL:친밀 <= 11
			SOURCE:환락 += 1100 + (ABL:친밀 * 75)
		ELSE
			SOURCE:환락 += 2150 + (ABL:친밀 * 30)
		ENDIF

		;호감 도를 본다
		IF CFLAG:2 <= 500
			SOURCE:환락 += CFLAG:2
		ELSEIF CFLAG:2 <= 5000
			SOURCE:환락 += 500 + (CFLAG:2 - 500) / 3
		ELSE
			SOURCE:환락 += 2000 + (CFLAG:2 - 5000) / 5
		ENDIF
		SIF SOURCE:환락 < 0
			SOURCE:환락 = 0
		EXP:MASTER:전투경험 += 2
		EXP:전투경험 += 2
	ENDIF
	CASE 2,3
	;위험 있고 날씨
		DOWNBASE:MASTER:체력 = 600
		DOWNBASE:MASTER:기력 = 600
		IF TARGET > 0 && !CFLAG:수면
			;고정으로 획득하는 소스
			SOURCE:환락 = 500
			MAXBASE:TARGET:체력 += RAND:30
			MAXBASE:TARGET:기력 += RAND:30
			DOWNBASE:TARGET:체력 = 600
			DOWNBASE:TARGET:기력 = 600
			;신뢰
			TFLAG:98 += 3
			SIF ABL:MASTER:전투능력 > 2
			TFLAG:98 ++
			IF ABL:MASTER:전투능력 > ABL:전투능력
				EXP:전투경험 += 2
				TFLAG:98 ++
			ENDIF
			SIF ABL:MASTER:전투능력 < ABL:전투능력 - 2
				EXP:MASTER:전투경험 ++
			;ABL:친밀을 본다
			IF ABL:친밀 <= 5
				TFLAG:98 ++
				SOURCE:환락 += 550 + (ABL:친밀 * 60)
			ELSEIF ABL:친밀 <= 8
				SOURCE:환락 += 800 + (ABL:친밀 * 75)
			ELSEIF ABL:친밀 <= 11
				SOURCE:환락 += 1200 + (ABL:친밀 * 75)
			ELSE
				SOURCE:환락 += 2300 + (ABL:친밀 * 30)
			ENDIF
			;호감도를 본다
			IF CFLAG:2 <= 500
				SOURCE:환락 += CFLAG:2
			ELSEIF CFLAG:2 <= 5000
				SOURCE:환락 += 500 + (CFLAG:2 - 500) / 3
			ELSE
				SOURCE:환락 += 2000 + (CFLAG:2 - 5000) / 5
			ENDIF
			SIF SOURCE:환락 < 0
				SOURCE:환락 = 0
			EXP:MASTER:전투경험 += 3
			EXP:전투경험 += 3
		ENDIF
ENDSELECT
TIME += 60
	SIF CFLAG:동행
		CFLAG:동행 += 60
EXP:MASTER:전투경험 ++
TCVAR:MASTER:공복시각 -= 15
IF TARGET
	TCVAR:TARGET:공복시각 -= 15
	CALL ADD_TIRED(TARGET, POWER(TFLAG:194 + 1, 3) * 100)
ENDIF
SIF ITEM:101 && !RAND:2
	EXP:MASTER:전투경험 ++
IF ITEM:스포츠드링크
	IF TFLAG:194 == 3
		DOWNBASE:MASTER:체력 -= 200
		DOWNBASE:MASTER:기력 -= 300
	ELSE
		DOWNBASE:MASTER:체력 -= 50
		DOWNBASE:MASTER:기력 -= 50
	ENDIF
	SIF TARGET
		SOURCE:환락 += 300
	TFLAG:193 = 1
ENDIF
RETURN 1

;-------------------------------------------------
;실행 판정
;-------------------------------------------------
@COM_ABLE411
;전투훈련 실행 판정
SIF !TFLAG:100
	RETURN 0
;일괄관리
SIF GLOBAL_COMABLE(411)
	RETURN RESULT
;정지 중에는 불가
SIF FLAG:70 == 1
	RETURN 0
;업무중
SIF CFLAG:행동 == 5
	RETURN 0
SIF !전투훈련가능(CFLAG:MASTER:현재위치)
	RETURN 0
;기력 0
SIF BASE:MASTER:기력 <= 0
	RETURN 0
SIF CFLAG:우후후 == 2
	RETURN 0
RETURN 1

path: ERB/커맨드관련/COMF/일상계/COMF411 전투훈련_t.ERB


code:
;-------------------------------------------------
;공부
;일상계 커맨드, 레벨 1
;-------------------------------------------------
@COM412

;自室時かつ家具を持っている際は補正
IF CFLAG:MASTER:현재위치 == CFLAG:MASTER:초기위치 && ITEM:느티책상의자
	SELECTCASE ITEM:느티책상의자
		CASE 1
			DOWNBASE:MASTER:체력 = 90
			DOWNBASE:MASTER:기력 = 270
		CASE 2
			DOWNBASE:MASTER:체력 = 80
			DOWNBASE:MASTER:기력 = 240
		CASE 3
			DOWNBASE:MASTER:체력 = 70
			DOWNBASE:MASTER:기력 = 210
	ENDSELECT
	PRINTFORML 자세 좋게, 허리를 펴고 읽고 쓰고 셈하기는 학습의 기본！
ELSE
	DOWNBASE:MASTER:체력 = 100
	DOWNBASE:MASTER:기력 = 300
ENDIF

IF TARGET > 0 && !CFLAG:수면 && CFLAG:행동 != 5
	;고정으로 획득하는 소스
	SOURCE:환락 = 200
	TFLAG:무드상승억제 = 1
	;신뢰
	TFLAG:98 = 3
	SIF ABL:MASTER:교양 > 2
		TFLAG:98 ++
	IF ABL:MASTER:교양 > ABL:교양
		TFLAG:98 ++
		EXP:학습경험 += 2
	ENDIF
	SIF ABL:MASTER:교양 < ABL:교양 - 2
		EXP:MASTER:학습경험 ++
	;ABL:순종을 본다
	IF ABL:순종 <= 1
		SOURCE:환락 += (ABL:순종 * 60)
	ELSEIF ABL:순종 <= 3
		SOURCE:환락 += 200 + (ABL:순종 * 60)
	ELSEIF ABL:순종 <= 5
		SOURCE:환락 += 500 + (ABL:순종 * 60)
	ELSEIF ABL:순종 <= 8
		SOURCE:환락 += 750 + (ABL:순종 * 75)
	ELSEIF ABL:순종 <= 11
		SOURCE:환락 += 1000 + (ABL:순종 * 75)
	ELSE
		SOURCE:환락 += 2000 + (ABL:순종 * 30)
	ENDIF

	;호감 도를 본다
	IF CFLAG:2 <= 500
		SOURCE:환락 += CFLAG:2
	ELSEIF CFLAG:2 <= 5000
		SOURCE:환락 += 500 + (CFLAG:2 - 500) / 3
	ELSE
		SOURCE:환락 += 2000 + (CFLAG:2 - 5000) / 5
	ENDIF
	SIF SOURCE:환락 < 0
		SOURCE:환락 = 0
	EXP:MASTER:학습경험 ++
	EXP:학습경험 ++
ENDIF

;(天候パッチ)大雨・豪雨・大雪・ひょう・暴風のときには効率上昇
IF (TIME:5 == 13 && GET_HEAT_THUNDERSTORM() == 1) || TIME:5 == 14 || TIME:5 == 15
	PRINTFORML 빗소리 덕분에 집중력이 증가해, 효율적으로 학습이 진행되었다
	TIME += 30
ELSEIF WIND_VELOCITY >= 2
	PRINTFORML 바람소리 덕분에 집중력이 증가해, 효율적으로 학습이 진행되었다
	TIME += 30
ELSEIF TIME:5 == 9
	PRINTFORML 눈의 고요함 덕분에 집중력이 증가해, 효율적으로 학습이 진행되었다
	TIME += 30
ELSEIF TIME:5 == 5
	PRINTFORML 빗소리 덕분에 집중력이 증가해, 효율적으로 학습이 진행되었다
	TIME += 45
ELSEIF WIND_VELOCITY >= 1
	PRINTFORML 바람소리 덕분에 집중력이 증가해, 효율적으로 학습이 진행되었다
	TIME += 45
ELSEIF IS_WISEMAN()
	PRINTFORML 번뇌가 사라진 덕분에, 효율적으로 학습이 진행되었다
	TIME += 45
ELSE
	TIME += 60
ENDIF
SIF CFLAG:동행
	CFLAG:동행 += 60
EXP:MASTER:학습경험 ++
SIF ITEM:103 && !RAND:2
	EXP:MASTER:학습경험 ++
SIF ITEM:214 > 0
	EXP:MASTER:학습경험 ++
SIF ITEM:느티책상의자 && !RAND:2
	EXP:MASTER:학습경험 ++

RETURN 1

;-------------------------------------------------
;실행 판정
;-------------------------------------------------
@COM_ABLE412
;공부 실행 판정
SIF !TFLAG:100
	RETURN 0
;일괄관리
SIF GLOBAL_COMABLE(412)
	RETURN RESULT
;정지 중에는 불가
SIF FLAG:70 == 1
	RETURN 0
;공부 할 수 있는 방인가
IF CFLAG:MASTER:현재위치 == CFLAG:MASTER:초기위치 && ITEM:느티책상의자
	;위의 조건을 충족하면 처리를 하지 않는다
ELSEIF !공부가능(CFLAG:MASTER:현재위치)
	RETURN 0
ENDIF
;동침중
SIF CFLAG:동침중
	RETURN 0
;장난중
SIF CFLAG:MASTER:장난
	RETURN 0
;기력 0
SIF BASE:MASTER:기력 <= 0
	RETURN 0
SIF CFLAG:우후후 == 2
	RETURN 0
RETURN 1

@IS_WISEMAN()
#FUNCTION
SIF (BASE:MASTER:정력 *10) <= MAXBASE:MASTER:정력
	RETURNF 1
SIF FLAG:발원내용 == 201
	RETURNF 1
RETURNF 0

path: ERB/커맨드관련/COMF/일상계/COMF412 공부_t.ERB


code:
;-------------------------------------------------
;요리를만든다
;일상계 커맨드, 레벨 1
;DISH_TYPE_NUM     요리종별, 1=간식, 2=주식, 3=디저트, 4=연습, LOCAL저장해두기;-------------------------------------------------
;-------------------------------------------------
@COM413
#DIM DISH_TYPE_NUM
#DIM MAXMENU
#DIM MENUCOUNT
#DIM SELECT_MENU
#DIM SELECT_ING
#DIM SELECT_DRG
#DIM SELECT_DRG_2
#DIM 연습불가
#DIM LCOUNT
#DIM 요리결과
#DIM 순종계수
#DIM 호감도계수
#DIM 연습모드
LCOUNT = 0
VARSET RESULTS
;조수설정
IF SHIRAHU(TARGET) == 1
	DISH_ASSI = TARGET
ELSE
	DISH_ASSI = 0
ENDIF
;연습판정
IF (!DISH_ASSI || LEARNED_MENU:DISH_ASSI >= 100 || ABL:TARGET:친밀 < 5)
	연습불가 = 1
ELSE
	연습불가 = 0
ENDIF
;종별수정
IF !DISH_TYPE_NUM
	DISH_TYPE_NUM = 1
ELSEIF DISH_TYPE_NUM == 4 && 연습불가
	DISH_TYPE_NUM = 1
ENDIF
;재료수정, 0번은 로터이므로
IF SELECT_ING == 0
	SIF !INRANGE(SELECT_MENU, 351, 360)
		SELECT_ING = -1
ENDIF
;투입 수정
SIF DISH_ASSI
	SELECT_DRG = 0
;DISH_TYPE 및 메뉴 범위 설정
SELECTCASE DISH_TYPE_NUM
CASE 1
	연습모드 = 0
	DISH_TYPE = 경식
	MAXMENU = 100
CASE 2
	연습모드 = 0
	DISH_TYPE = 주식
	MAXMENU = 100
CASE 3
	연습모드 = 0
	DISH_TYPE = 디저트
	MAXMENU = 50
CASE 4
	연습모드 = 1
	MAXMENU = 2
	;練習メニューは記憶しない
	SIF SELECT_MENU - 400 != DISH_ASSI
		SELECT_MENU = 0
ENDSELECT

;메뉴 표시
DRAWLINEFORM =
IF 연습모드
	;연습用メニュー
	PRINTFORML ＜연습＞　★스승：%CALLNAME:DISH_ASSI%
	PRINTFORML 고유요리를 배울 수 있습니다
	PRINTL
	PRINT
	CALL SHOW_DISH_MENU(400 + DISH_ASSI, "연습", SELECT_MENU, 0, 연습모드)
	PRINTL
	LCOUNT += 3
ELSE
	;通常メニュー
	MENUCOUNT = 0
	PRINTFORM ＜메뉴＞
	IF DISH_ASSI
		PRINTFORM ●조수：%CALLNAME:DISH_ASSI%
		SPLIT GET_STR(, "캐릭터데이터", DISH_ASSI, "요리：조수 효과"), "*", RESULTS
		SIF RESULTS:1 != ""
			PRINTFORM (특기요리：%RESULTS:1%）
		PRINTL
	ELSE
		PRINTFORML ○조수：없음
	ENDIF
	FOR LOCAL, 1 + DISH_TYPE_NUM * 100, MAXMENU + DISH_TYPE_NUM * 100
		CALL SHOW_DISH_MENU(LOCAL, DISH_TYPE, SELECT_MENU, MENUCOUNT)
		SIF RESULT == 2
			LCOUNT ++
		SIF RESULT >= 1
			MENUCOUNT ++
	NEXT
	;로터 메뉴
	FOR LOCAL, 351, 360
		CALL SHOW_DISH_MENU(LOCAL, DISH_TYPE, SELECT_MENU, MENUCOUNT)
		SIF RESULT == 2
			LCOUNT ++
		SIF RESULT >= 1
			MENUCOUNT ++
	NEXT
	;스페셜 메뉴
	FOR LOCAL, 401, 400 + CHARANUM
		CALL SHOW_DISH_MENU(LOCAL, DISH_TYPE, SELECT_MENU, MENUCOUNT)
		SIF RESULT == 2
			LCOUNT ++
		SIF RESULT >= 1
			MENUCOUNT ++
	NEXT
ENDIF
PRINTL
;선택중인 요리정보 수집
IF SELECT_MENU
	CALL DISHDATA(SELECT_MENU, DISH_TYPE, 연습모드)
	요리결과 = RESULT
	;재료선택 중이라면 DISH_TASTE에 추가, 0번은 로터
	SIF SELECT_ING >= 0
		CALL DISH_TASTE_ADD(SELECT_ING)
ENDIF

;DISH_TYPE 선택
DRAWLINEFORM =
PRINTPLAIN 만드는 것:
FONTSTYLE 1
FOR LOCAL, 1, 5
	SELECTCASE LOCAL
	CASE 1
		LOCALS = 경식
	CASE 2
		LOCALS = 주식
	CASE 3
		LOCALS = 디저트
	CASE 4
		LOCALS = 배운다
		SIF LEARNED_MENU:DISH_ASSI >= 100
			LOCALS += "（済）"
	ENDSELECT
	IF LOCAL == 4 && 연습불가
		SETCOLOR C_GRAY
	ELSEIF DISH_TYPE_NUM == LOCAL
		SETCOLOR C_AQUA
	ENDIF
	PRINTFORM [{LOCAL, 2}]%LOCALS, 16, LEFT%
	RESETCOLOR
NEXT
FONTREGULAR
PRINTL
;재료선택, 오마카세때는 공백
IF SELECT_MENU
	PRINTPLAIN 사용할 재료：
	IF 요리결과
		FOR LOCAL, 1, 11
			IF LOCAL == 6
				PRINTL
				PRINTPLAIN
			ENDIF
			SIF DISH_ING:LOCAL < 0
				CONTINUE
			IF SELECT_ING == DISH_ING:LOCAL
				SETCOLOR C_AQUA
			ELSEIF ITEM:(DISH_ING:LOCAL) <= 0
				SETCOLOR C_GRAY
			ENDIF
			LOCALS = [{LOCAL + 10}]%ITEMNAME:(DISH_ING:LOCAL)%({ITEM:(DISH_ING:LOCAL), 2})
			PRINTFORM %LOCALS, 22, LEFT%
			RESETCOLOR
		NEXT
	ELSE
		PRINTL
	ENDIF
ELSE
	PRINTL
ENDIF
PRINTL
;투입
IF !DISH_ASSI
	PRINTPLAIN 　투입：
	FOR LOCAL, 21, 26
		SELECTCASE LOCAL
		CASE 21
			LOCALS = 없음
		CASE 22
			LOCALS = 미약
		CASE 23
			LOCALS = 이뇨제
		CASE 24
			LOCALS = 춘약
		CASE 25
			LOCALS = 수면제
		ENDSELECT
		IF LOCAL == 21
			SIF !SELECT_DRG
				SETCOLOR C_AQUA
			PRINTFORM [{LOCAL, 2}]%LOCALS, 18, LEFT%
		ELSE
			IF ITEMNAME:SELECT_DRG == LOCALS
				SETCOLOR C_AQUA
			ELSEIF ITEM:GETNUM(ITEM, LOCALS) <= 0
				SETCOLOR C_GRAY
			ENDIF
			LOCALS = [{LOCAL, 2}]%LOCALS%({ITEM:GETNUM(ITEM, LOCALS), 2})
			PRINTFORM %LOCALS, 22, LEFT%
		ENDIF
		RESETCOLOR
	NEXT
	PRINTL
	LCOUNT ++
ENDIF
;첨가물2
PRINTPLAIN 　첨가물：
FOR LOCAL, 31, 38
	SELECTCASE LOCAL
		CASE 31
			LOCALS = 없음
		CASE 32
			LOCALS = 영양강화제
		;(酒造パッチ)洋酒を添加できる
		CASE 33
			LOCALS = 프랑부아즈
		CASE 34
			LOCALS = 다크럼
		CASE 35
			LOCALS = 브랜디VS
		CASE 36
			LOCALS = 브랜디VSOP
		CASE 37
			LOCALS = 브랜디XO
	ENDSELECT
	IF LOCAL == 31
		SIF !SELECT_DRG_2
			SETCOLOR C_AQUA
		PRINTFORM [{LOCAL, 2}]%LOCALS, 18, LEFT%
	ELSEIF LOCAL == 32
		IF ITEMNAME:SELECT_DRG_2 == LOCALS
			SETCOLOR C_AQUA
		ELSEIF ITEM:GETNUM(ITEM, LOCALS) <= 0
			SETCOLOR C_GRAY
		ENDIF
		LOCALS = [{LOCAL, 2}]%LOCALS%({ITEM:GETNUM(ITEM, LOCALS), 2})
		PRINTFORM %LOCALS, 22, LEFT%
		PRINTL
		PRINTPLAIN
	;(酒造パッチ)洋酒を添加できる
	ELSEIF (LOCAL == 33 || LOCAL == 34 || LOCAL == 35 || LOCAL == 36 || LOCAL == 37) && DISH_TYPE_NUM == 3
		IF ITEMNAME:SELECT_DRG_2 == LOCALS
			SETCOLOR C_AQUA
		ELSEIF ITEM:GETNUM(ITEM, LOCALS) <= 0
			SETCOLOR C_GRAY
		ENDIF
		LOCALS = [{LOCAL, 2}]%LOCALS%({ITEM:GETNUM(ITEM, LOCALS), 2})
		PRINTFORM %LOCALS, 22, LEFT%
	ENDIF
	RESETCOLOR
NEXT
PRINTL
LCOUNT ++
;(酒造パッチ)調整
LCOUNT ++

DRAWLINEFORM -
;요리 정보
IF SELECT_MENU
	IF 요리결과
		PRINTFORML 【%DISH_NAME%】%DISH_COMMENT%
		PRINT
		CALL SHOW_TASTE(DISH_TASTE, "DISH_DATA")
	ELSE
		PRINTL
		PRINTL
	ENDIF
ELSE
	PRINTL
	PRINTL
ENDIF
;코멘트
DRAWLINE
IF SELECT_MENU
	IF !요리결과
		PRINTL
	ELSEIF 요리결과 < 10
		IF 요리결과 == 1
			IF DISH_ING:1 < 0
				CALL COLORMESSAGE(@"　　※이 요리는 만들 수 없습니다", C_ORANGE, 1)
			ELSE
				CALL COLORMESSAGE(@"　　재료가 모자라다…", C_ORANGE, 1)
			ENDIF
		ELSEIF 요리결과 == 2
			CALL COLORMESSAGE(@"　　필요레벨 {RESULT:1}(현재 {ABL:MASTER:요리기능}）", C_ORANGE, 1)
		ELSE
			CALL COLORMESSAGE(@"　　어쩐지 만들 수 없다…", C_ORANGE, 1)
		ENDIF
	ELSE
		PRINTFORML [ 9]【%DISH_NAME%】%조사만처리(DISH_NAME, "을")% 만든다
	ENDIF
ELSE
	PRINTL
ENDIF
IF !연습모드
PRINTFORML [ 7]추천 %조사처리(DISH_TYPE,"을")% 만든다
ELSE
	PRINTL
ENDIF
PRINTFORML [ 0]그만둔다
INPUT

;그만둔다
IF !RESULT
	CALL RESET_DISH
	RETURN -1
;DISH_TYPE 선택
ELSEIF INRANGE(RESULT, 1, 3)
	DISH_TYPE_NUM = RESULT
;연습
ELSEIF RESULT == 4 && !연습불가
	DISH_TYPE_NUM = RESULT
;요리선택
ELSEIF INRANGE(RESULT, 101, 400 + CHARANUM)
	SELECT_MENU = RESULT
	CALL DISHDATA(RESULT, DISH_TYPE, 연습모드)
	;표시 밖이라면 선택 리셋
	IF !RESULT
		SELECT_MENU = 0
		SELECT_ING = -1
	;만들 수 없다면 재료만 리셋해 표시한다
	ELSEIF RESULT < 10
		SELECT_ING = -1
	;만들 수 있다면 재료를 설정
	ELSEIF RESULT == 10
		RESULT = 0
		;선택중인 재료가 있다면 선택을 유지한다
		FOR LOCAL, 1, 11
			IF DISH_ING:LOCAL == SELECT_ING && SELECT_ING >= 0
				RESULT = 1
				BREAK
			ENDIF
		NEXT
		;선택중인 재료가 없다면 재료를 재설정
		IF !RESULT
			FOR LOCAL, 1, 11
				IF ITEM:(DISH_ING:LOCAL)
					SELECT_ING = DISH_ING:LOCAL
					BREAK
				ENDIF
			NEXT
		ENDIF
	ENDIF
;재료선택
ELSEIF INRANGE(RESULT, 11, 20) && ITEM:(DISH_ING:(RESULT - 10))
	SELECT_ING = DISH_ING:(RESULT - 10)
;투입선택
ELSEIF INRANGE(RESULT, 21, 30) && !DISH_ASSI
	IF RESULT == 21
		SELECT_DRG = 0
	ELSEIF RESULT == 22 && ITEM:GETNUM(ITEM, "미약") > 0
		SELECT_DRG = GETNUM(ITEM, "미약")
	ELSEIF RESULT == 23 && ITEM:GETNUM(ITEM, "이뇨제") > 0
		SELECT_DRG = GETNUM(ITEM, "이뇨제")
	ELSEIF RESULT == 24 && ITEM:GETNUM(ITEM, "춘약") > 0
		SELECT_DRG = GETNUM(ITEM, "춘약")
	ELSEIF RESULT == 25 && ITEM:GETNUM(ITEM, "수면제") > 0
		SELECT_DRG = GETNUM(ITEM, "수면제")
	ENDIF
;추가첨가 선택
;(酒造パッチ)洋酒を添加できる
ELSEIF INRANGE(RESULT, 31, 40)
	IF RESULT == 31
		SELECT_DRG_2 = 0
	ELSEIF RESULT == 32 && ITEM:GETNUM(ITEM, "영양강화제") > 0
		SELECT_DRG_2 = GETNUM(ITEM, "영양강화제")
	ELSEIF RESULT == 33 && ITEM:GETNUM(ITEM, "프랑부아즈") > 0 && DISH_TYPE_NUM == 3
		SELECT_DRG_2 = GETNUM(ITEM, "프랑부아즈")
	ELSEIF RESULT == 34 && ITEM:GETNUM(ITEM, "다크럼") > 0 && DISH_TYPE_NUM == 3
		SELECT_DRG_2 = GETNUM(ITEM, "다크럼")
	ELSEIF RESULT == 35 && ITEM:GETNUM(ITEM, "브랜디VS") > 0 && DISH_TYPE_NUM == 3
		SELECT_DRG_2 = GETNUM(ITEM, "브랜디VS")
	ELSEIF RESULT == 36 && ITEM:GETNUM(ITEM, "브랜디VSOP") > 0 && DISH_TYPE_NUM == 3
		SELECT_DRG_2 = GETNUM(ITEM, "브랜디VSOP")
	ELSEIF RESULT == 37 && ITEM:GETNUM(ITEM, "브랜디XO") > 0 && DISH_TYPE_NUM == 3
		SELECT_DRG_2 = GETNUM(ITEM, "브랜디XO")
	ENDIF
;추천 요리
ELSEIF RESULT == 7 && !연습모드
	SELECT_MENU = 0
	CALL FISHER_YATES_SHAFFLE(400 + CHARANUM)
	FOR LOCAL, 1, 400 + CHARANUM + 1
		CALL DISHDATA(SHAFFLE_ARRAY:LOCAL + 100, DISH_TYPE)
		SIF STRCOUNT(DISH_TASTE, "철지난/")
			CONTINUE
		SIF STRCOUNT(DISH_TASTE, "수수께끼 요리/")
			CONTINUE
		IF RESULT == 10
			SELECT_MENU = LOCAL
			FOR LOCAL:1, 1, 11
				IF DISH_ING:(LOCAL:1) >= 0
					IF ITEM:(DISH_ING:(LOCAL:1))
						SELECT_ING = DISH_ING:(LOCAL:1)
						BREAK
					ENDIF
				ENDIF
			NEXT
			BREAK
		ENDIF
	NEXT
	IF SELECT_MENU
		CALL DISH_TASTE_ADD(SELECT_ING)
		GOTO COOK
	ELSE
		PRINTFORMW 만들 수 있는 %조사처리(DISH_TYPE,"가")% 없었다…
		LCOUNT ++
	ENDIF
;요리를 만든다
ELSEIF RESULT == 9 && SELECT_MENU && 요리결과 == 10
	$COOK
	DISH_DRG = SELECT_DRG
	DISH_DRG_2 = SELECT_DRG_2
	DISH_RANK = 식재레벨(SELECT_ING)
	;DISHNAMEは구上でのみ使用してください
	DISHNAME = %DISH_NAME%
	FLAG:요리 = SELECT_MENU
	PRINTFORML 사용 식재료：%ITEMNAME:SELECT_ING%
	CALL DISH_COOKING(연습모드)
	ITEM:SELECT_ING --
	SIF SELECT_DRG
		ITEM:SELECT_DRG --
	SIF SELECT_DRG_2
		ITEM:SELECT_DRG_2 --
	SELECTCASE DISH_TYPE
	CASE "경식"
		DOWNBASE:MASTER:체력 = 50
		DOWNBASE:MASTER:기력 = 50
	CASE "주식"
		DOWNBASE:MASTER:체력 = 100
		DOWNBASE:MASTER:기력 = 100
	CASE "디저트"
		DOWNBASE:MASTER:체력 = 100
		DOWNBASE:MASTER:기력 = 100
	ENDSELECT
	EXP:MASTER:요리경험 ++
	SIF ITEM:조리지도서 && !RAND:2
		EXP:MASTER:요리경험 ++
	SIF 연습모드
		EXP:MASTER:요리경험 ++
	STAIN:MASTER:구 = 0
	STAIN:MASTER:손 = 0
	CFLAG:MASTER:구내정액 = 0
	CFLAG:MASTER:안면정액 = 0
	CFLAG:MASTER:손에정액 = 0
	TIME += DISH_TIME
	SIF CFLAG:MASTER:동행
		CFLAG:MASTER:동행 += DISH_TIME
	;조수에게 주는 효과
	IF DISH_ASSI
		;획득 소스
		IF ABL:DISH_ASSI:순종 <= 1
			순종계수 = 0
		ELSEIF ABL:DISH_ASSI:순종 <= 3
			순종계수 = 1
		ELSEIF ABL:DISH_ASSI:순종 <= 5
			순종계수 = 2
		ELSEIF ABL:DISH_ASSI:순종 <= 8
			순종계수 = 3
		ELSEIF ABL:DISH_ASSI:순종 <= 11
			순종계수 = 4
		ELSEIF ABL:DISH_ASSI:순종 <= 14
			순종계수 = 5
		ELSE
			순종계수 = 6
		ENDIF
		IF CFLAG:DISH_ASSI:호감도 <= 100
			호감도계수 = 0
		ELSEIF CFLAG:DISH_ASSI:호감도 < 500
			호감도계수 = 1
		ELSEIF CFLAG:DISH_ASSI:호감도 < 1000
			호감도계수 = 2
		ELSEIF CFLAG:DISH_ASSI:호감도 < 5000
			호감도계수 = 4
		ELSEIF CFLAG:DISH_ASSI:호감도 < 10000
			호감도계수 = 6
		ELSEIF CFLAG:DISH_ASSI:호감도 < 30000
			호감도계수 = 8
		ELSE
			호감도계수 = 10
		ENDIF
		;환락뿐이기에 비교적 고효율, 원래 친밀감이 필요하기 때문에
		SOURCE:DISH_ASSI:환락 = 300 + 30 * (순종계수 + 호감도계수) * DISH_TIME
		;신뢰
		TFLAG:98 = 2 + (ABL:DISH_ASSI:요리기능 / 2)
		SELECTCASE DISH_TYPE
		CASE "경식"
			DOWNBASE:DISH_ASSI:체력 = 50
			DOWNBASE:DISH_ASSI:기력 = 50
		CASE "주식"
			DOWNBASE:DISH_ASSI:체력 = 100
			DOWNBASE:DISH_ASSI:기력 = 100
		CASE "디저트"
			DOWNBASE:DISH_ASSI:체력 = 100
			DOWNBASE:DISH_ASSI:기력 = 100
		ENDSELECT
		;조금 복잡하지만 필요하면 이렇게→ 1 + RAND : (기본점 / 4) + 습득 속도
		EXP:DISH_ASSI:요리경험 ++
		SIF ITEM:조리지도서 && !RAND:2
			EXP:DISH_ASSI:요리경험 ++
		IF ABL:MASTER:요리기능 <= ABL:DISH_ASSI:요리기능
			EXP:MASTER:요리경험 ++
		ELSEIF ABL:MASTER:요리기능 > ABL:DISH_ASSI:요리기능
			EXP:DISH_ASSI:요리경험 ++
		ENDIF
		SIF CFLAG:DISH_ASSI:동행
			CFLAG:DISH_ASSI:동행 += DISH_TIME
		STAIN:DISH_ASSI:구 = 0
		STAIN:DISH_ASSI:손 = 0
		CFLAG:DISH_ASSI:구내정액 = 0
		CFLAG:DISH_ASSI:안면정액 = 0
		CFLAG:DISH_ASSI:손에정액 = 0
	ENDIF
	RETURN 1
ENDIF
CLEARLINE 15 + LCOUNT
RESTART

;-------------------------------------------------
;요리를 만드는 함수라고 해도 대부분의 정보는 이미 설정된 상태이다
;여기서는 조리부분을 처리
;-------------------------------------------------
@DISH_COOKING(연습모드)
#DIM 도구력
#DIM 보너스점수
#DIM 감점
#DIM 연습모드
;혹시 모르니 최종 체크
SIF DISH_NAME == ""
	THROW
SIF DISH_TYPE == ""
	THROW
SIF !DISH_TIME
	THROW

PRINTFORMW \@ DISH_ASSI ? %조사처리(CALLNAME:DISH_ASSI,"와")% # \@【%DISH_NAME%】%조사만처리(DISH_NAME,"을")% 만듭니다
PRINTFORML ・
PRINTFORML ・・・
SIF DISH_TIME > 10
	PRINTFORML ・・・・・・
SIF DISH_TIME > 30
	PRINTFORML ・・・・・・・・・・・・
;꼬임
IF DISH_TYPE == "경식"
	CALL COOKING_TAKARI([[유유코]], 5)
	CALL COOKING_TAKARI([[시온]], 5)
ELSEIF DISH_TYPE == "주식"
	CALL COOKING_TAKARI([[유유코]], 10)
	CALL COOKING_TAKARI([[시온]], 10)
ENDIF

;TASTE 설정
SIF FLAG:역극
	CALL DISH_TASTE_FROM_CHARA(FLAG:역극)
SIF DISH_ASSI && !연습모드
	CALL DISH_TASTE_FROM_CHARA(DISH_ASSI)
DISH_TASTE += "갓만든/"
DISH_TASTE += DISH_NAME + "/"
DISH_TASTE += DISH_TYPE + "/"
SIF 연습모드
	DISH_TASTE += "연습/"
;[연습]은 계절에 맞지 않는 것을 지움
SIF STRCOUNT(DISH_TASTE, "연습/")
	DISH_TASTE '= REPLACE(DISH_TASTE, "철지난\/", "")
;[중립온도]는 여름에만 차갑다(소바, 우동 등）
IF STRCOUNT(DISH_TASTE, "중립온도/")
	IF GET_MONTH() == "여름의 달"
		DISH_TASTE '= REPLACE(DISH_TASTE, "중립온도\/", "차가운/")
	ELSE
		DISH_TASTE '= REPLACE(DISH_TASTE, "중립온도\/", "따뜻한/")
	ENDIF
ENDIF
;신선도 설정, 조리 시간을 추가해 둔다.
DISH_LIMIT = DISH_MAXLIMIT + DISH_TIME

;표시용 요리명 설정
EX_DISH_NAME =
IF DISH_ASSI
	IF 연습모드
		EX_DISH_NAME += CALLNAME:DISH_ASSI + "에게 배운"
	ELSE
		EX_DISH_NAME += CALLNAME:DISH_ASSI + @"%조사만처리(CALLNAME:DISH_ASSI,"와")% 만든 "
	ENDIF
ENDIF
IF STRCOUNT(DISH_TASTE, "메이드류/")
	EX_DISH_NAME += "메이드류 "
ELSEIF STRCOUNT(DISH_TASTE, "텐구류/")
	EX_DISH_NAME += "텐구류 "
ELSEIF STRCOUNT(DISH_TASTE, "명계풍/")
	EX_DISH_NAME += "명계풍 "
ELSEIF STRCOUNT(DISH_TASTE, "천계풍/")
	EX_DISH_NAME += "천계풍 "
ELSEIF STRCOUNT(DISH_TASTE, "지저풍/")
	EX_DISH_NAME += "지저풍 "
ELSEIF STRCOUNT(DISH_TASTE, "지옥풍/")
	EX_DISH_NAME += "지옥풍 "
ELSEIF STRCOUNT(DISH_TASTE, "축생류/")
	EX_DISH_NAME += "축생류 "
ELSEIF STRCOUNT(DISH_TASTE, "달도시풍/")
	EX_DISH_NAME += "달도시풍 "
ELSEIF STRCOUNT(DISH_TASTE, "옥토끼풍/")
	EX_DISH_NAME += "옥토끼풍 "
ELSEIF STRCOUNT(DISH_TASTE, "마계풍/")
	EX_DISH_NAME += "마계풍 "
ELSEIF STRCOUNT(DISH_TASTE, "몽환풍/")
	EX_DISH_NAME += "몽환풍 "
ELSEIF STRCOUNT(DISH_TASTE, "외계풍/")
	EX_DISH_NAME += "외계풍 "
ELSEIF STRCOUNT(DISH_TASTE, "화학적/")
	EX_DISH_NAME += "화학적 "
ELSEIF STRCOUNT(DISH_TASTE, "소인족 비전의 맛/")
	EX_DISH_NAME += "소인족 비전의 "
ELSEIF STRCOUNT(DISH_TASTE, "히에다가 비전의 맛/")
	EX_DISH_NAME += "히에다가 비전의 "
ELSEIF STRCOUNT(DISH_TASTE, "순화된 맛/")
	EX_DISH_NAME += "순화된 "
ELSEIF STRCOUNT(DISH_TASTE, "역전/")
	EX_DISH_NAME += "역전된 "
ELSEIF STRCOUNT(DISH_TASTE, "대화력/")
	EX_DISH_NAME += "대화력 "
ELSEIF STRCOUNT(DISH_TASTE, "빙결/")
	EX_DISH_NAME += "빙결 "
ELSEIF STRCOUNT(DISH_TASTE, "몰카맛/")
	EX_DISH_NAME += "몰카 "
ELSEIF STRCOUNT(DISH_TASTE, "미지의맛/")
	EX_DISH_NAME += "불가사의한 "
ELSEIF STRCOUNT(DISH_TASTE, "반짝임/")
	EX_DISH_NAME += "반짝이는 "
ELSEIF STRCOUNT(DISH_TASTE, "생명력/")
	EX_DISH_NAME += "요정의 "
ELSEIF STRCOUNT(DISH_TASTE, "선술/")
	EX_DISH_NAME += "선인의 "
ELSEIF STRCOUNT(DISH_TASTE, "오니의마력/")
	EX_DISH_NAME += "오니의 "
ELSEIF STRCOUNT(DISH_TASTE, "피의마력/")
	EX_DISH_NAME += "흡혈귀의 "
ELSEIF STRCOUNT(DISH_TASTE, "마력/")
	EX_DISH_NAME += "마법의 "
ELSEIF STRCOUNT(DISH_TASTE, "요력/")
	EX_DISH_NAME += "요사로운 "
ELSEIF STRCOUNT(DISH_TASTE, "영장/")
	EX_DISH_NAME += "영적 "
ELSEIF STRCOUNT(DISH_TASTE, "비술/")
	EX_DISH_NAME += "미스틱한 "
ENDIF
IF STRCOUNT(DISH_TASTE, "야채 빼기/")
	IF DISH_NAME == "야채볶음"
		EX_DISH_NAME += "야채를 뺀 야채볶음"
	ELSEIF DISH_NAME == "나물"
		EX_DISH_NAME += "나물없음"
	ELSEIF DISH_NAME == "채소절임 곱빼기밥"
		EX_DISH_NAME += "곱빼기밥"
	ELSEIF DISH_NAME == "모짜렐라 치즈와 토마토의 샐러드"
		EX_DISH_NAME += "모짜렐라 치즈만의 샐러드"
	ELSE
		EX_DISH_NAME += "야채 빼기 "
		EX_DISH_NAME += DISH_NAME
	ENDIF
ELSE
	EX_DISH_NAME += DISH_NAME
ENDIF
PRINTFORML ＜%EX_DISH_NAME%＞
CALL SHOW_TASTE(DISH_TASTE, "DISH_DATA")

;기본 점수 계산
도구력 = ITEM:은행나무도마
보너스점수 = 0
감점 = 0
SIF STRCOUNT(DISH_TASTE, "도구의공명/")
	TIMES 도구력, 2.0

SIF STRCOUNT(DISH_TASTE, "제철/")
	보너스점수 += 2
SIF STRCOUNT(DISH_TASTE, "옥토끼풍/") && STRCOUNT(DISH_TASTE, "당근/")
	보너스점수 += 2
SIF STRCOUNT(DISH_TASTE, "프로의 맛/")
	보너스점수 += 2
SIF STRCOUNT(DISH_TASTE, "반짝임/")
	보너스점수 += 1
;자신있는 요리나 날카로움은 해당되지 않을 경우 소거되어 있으므로 이것으로 OK, 자신있는 요리는 "/"를 제외합니다.
SIF STRCOUNT(DISH_TASTE, "특기요리")
	보너스점수 += 2
SIF STRCOUNT(DISH_TASTE, "섬세한맛/")
	보너스점수 += 1
SIF STRCOUNT(DISH_TASTE, "맛있는물/")
	보너스점수 += 1
;질투,숨겨진 맛의 효과는 먹을 때

SIF DISH_DRG
	감점 += 1
IF DISH_DRG_2
	IF ITEM:DISH_DRG_2 == ITEM:영양강화제
		감점 += 1
	;(酒造パッチ)洋酒にボーナス点
	ELSEIF ITEM:DISH_DRG_2 == ITEM:프랑부아즈 || ITEM:DISH_DRG_2 == ITEM:다크럼 || ITEM:DISH_DRG_2 == ITEM:브랜디VS
		보너스점수 += 2
	ELSEIF ITEM:DISH_DRG_2 == ITEM:브랜디VSOP
		보너스점수 += 3
	ELSEIF ITEM:DISH_DRG_2 == ITEM:브랜디XO
		보너스점수 += 4
	ENDIF
ENDIF

;DISH_ASSI가 0이면 MASTER니까 분기 필요없지만 일단
IF DISH_ASSI
	DISH_BASEPOINT = ABL:MASTER:요리기능 + ABL:DISH_ASSI:요리기능 + DISH_RANK + 도구력 + 보너스점수 - 감점
	DISH_BASEPOINT = MIN(300 + (DISH_BASEPOINT * 20), 700)
	PRINTFORM 솜씨：
	CALL 만듦새(DISH_BASEPOINT)
	PRINTFORML 　／%CALLNAME:MASTER%의 능력({ABL:MASTER:요리기능}) + %CALLNAME:DISH_ASSI%의 능력({ABL:DISH_ASSI:요리기능}) + 식재료의 품질({DISH_RANK}) \@ 도구력 ? + 도구의 품질({도구력}) # \@ \@ 보너스점수 ? + 보너스점수({보너스점수}) # \@ \@ 감점 ? - 첨가물({감점}) # \@
ELSE
	DISH_BASEPOINT = ABL:MASTER:요리기능 + ABL:MASTER:요리기능 + DISH_RANK + 도구력 + 보너스점수 - 감점
	DISH_BASEPOINT = MIN(300 + (DISH_BASEPOINT * 20), 700)
	PRINTFORM 솜씨：
	CALL 만듦새(DISH_BASEPOINT)
	PRINTFORML 　／%CALLNAME:MASTER%의 능력 x 2({ABL:MASTER:요리기능 * 2}) + 식재료의 품질({DISH_RANK}) \@ 도구력 ? + 도구의 품질({도구력}) # \@ \@ 보너스점수 ? + 보너스점수({보너스점수}) # \@ \@ 감점 ? - 첨가물({감점}) # \@
ENDIF
PRINTL

;연습결과, 초기상태라면 4~7회 필요.요리 기술이 향상될수록 습득 속도가 빨라진다
IF 연습모드
	LEARNED_MENU:DISH_ASSI += 20 + (TALENT:MASTER:습득속도 * 5) + RAND:(ABL:MASTER:요리기능 * 25)
	PRINTFORM 　숙련도：
	FOR LOCAL, 1, 10
		IF LOCAL <= LEARNED_MENU:DISH_ASSI / 10
			SETCOLOR 0x64FFDC
			PRINT ★
		ELSE
			RESETCOLOR
			PRINT ☆
		ENDIF
	NEXT
	RESETCOLOR
	PRINTL
	SIF LEARNED_MENU:DISH_ASSI >= 100
		CALL LEARNING_SP_DISH(DISH_ASSI, DISH_NAME)
ENDIF

IF STRCOUNT(DISH_TASTE, "로터/")
	TFLAG:194 = 100
ELSEIF DISH_TYPE == "디저트"
	TFLAG:194 = 3
ELSEIF DISH_TYPE == "주식"
	TFLAG:194 = 2
ELSE
	TFLAG:194 = 1
ENDIF

;WAIT

;-------------------------------------------------
;실행 판정
;-------------------------------------------------
@COM_ABLE413
;정지 중에는 불가
SIF FLAG:70 == 1
	RETURN 0
;청소 실행 판정
SIF !TFLAG:100
	RETURN 0
;일괄관리
SIF GLOBAL_COMABLE(413)
	RETURN RESULT

;주방인가
SIF !KITCHEN(CFLAG:MASTER:현재위치) && ITEM:911==0 ;KR판 고유기능 간편 요리 도구
	RETURN 0
;기력 0
SIF BASE:MASTER:기력 <= 0
	RETURN 0
SIF CFLAG:우후후
	RETURN 0
;동침중
SIF CFLAG:동침중
	RETURN 0
;장난중
SIF CFLAG:MASTER:장난
	RETURN 0
;이미 요리를 만들고 있다
SIF DISH_NAME != ""
	RETURN 0
RETURN 1

;-------------------------------------------------
;メニュー表示用の関数
;ARGS     DISH_TYPE
;RESULT   2=改行した,1=表示した,0=表示しない
;-------------------------------------------------
@SHOW_DISH_MENU(DISH_NUM, ARGS, SELECT_MENU, MENUCOUNT, 연습모드)
#DIM DISH_NUM
#DIM SELECT_MENU
#DIM MENUCOUNT
#DIM 연습모드
;요리データを呼ぶ
CALL DISHDATA(DISH_NUM, ARGS, 연습모드)
;作れなくてもグレーで表示する,選択中なら赤
IF RESULT
	IF RESULT < 10 && SELECT_MENU == DISH_NUM
		SETCOLOR C_RED
	ELSEIF RESULT < 10
		SETCOLOR C_GRAY
	ELSEIF SELECT_MENU == DISH_NUM
		SETCOLOR C_AQUA
	ELSEIF STRCOUNT(DISH_TASTE, "제철/") || STRCOUNT(DISH_TASTE, "길한물건/") || STRCOUNT(DISH_TASTE, "태풍고로케/")
		SETCOLOR C_CREAM
	ENDIF
	PRINTFORM [{DISH_NUM, 3}]%DISH_NAME,35, LEFT%
	RESETCOLOR
	;改行したらRESULT = 2,表示したらRESULT = 1
	IF (MENUCOUNT + 1) % 3 == 0
		PRINTL
		RETURN 2
	ELSE
		RETURN 1
	ENDIF
ENDIF
RETURN 0

;-------------------------------------------------
;맛의 표시용 함수
;맛에 한하지 않고 사용해 돌릴 수 있는 그렇게?
;가로폭의 한계에 주의
;-------------------------------------------------
@SHOW_TASTE(TASTE_STR, PRINT_TYPE, INVISIBLE)
#DIMS TASTE_STR               ;표시 대상의 맛데이터
#DIMS DYNAMIC TASTE_LIST, 100 ;미 리스트
#DIM  DYNAMIC TASTE_CNT,  100 ;미 리스트 각 요소의 중복 개수
#DIM  DYNAMIC TASTE_NUM       ;미의 종류의 총수
#DIM  DYNAMIC SHOW_NUM        ;표시한 맛의 수
#DIM  TASTE_ID                ;루프용
#DIMS PRINT_TYPE				;好き嫌いで高Lvを赤くしたり青くしたり
#DIM INVISIBLE					;これが真だと？？？？表示にする　친밀が足りない時非表示など

VARSET RESULTS
SPLIT TASTE_STR, "＊", RESULTS
IF RESULTS:1 != "" && PRINT_TYPE != "DISH_DATA"
	LOCALS = [특기요리：%RESULTS:1%]
	SETCOLOR C_CREAM
	PRINTFORM 　%LOCALS, 20%
	RESETCOLOR
	SHOW_NUM ++
ENDIF
;맛리스트의 취득
CALLF CNT_SPLIT(TASTE_STR, TASTE_LIST, TASTE_CNT, TASTE_NUM)
;맛리스트의 표시
FOR TASTE_ID, 0, TASTE_NUM
	SIF !STRLENS(TASTE_LIST:TASTE_ID)
		CONTINUE
	;요리の情報を見る時用
	IF PRINT_TYPE == "DISH_DATA"
		SIF TASTE_CNT:TASTE_ID >= 2
			SETCOLOR C_L_GREEN
		SIF TASTE_CNT:TASTE_ID >= 3
			SETCOLOR 0xffff96
		SIF TASTE_CNT:TASTE_ID >= 5
			SETCOLOR 0xffc8c8
		IF GROUPMATCH(TASTE_LIST:TASTE_ID, "보너스", "제철", "길한물건", "태풍고로케")
			SETCOLOR C_YELLOW
			PRINTFORM [★%TASTE_LIST:TASTE_ID%]
		ELSEIF GROUPMATCH(TASTE_LIST:TASTE_ID, "철지난")
			SETCOLOR C_RED
			PRINTFORM [%TASTE_LIST:TASTE_ID%]
		ELSEIF GROUPMATCH(TASTE_LIST:TASTE_ID, "정력", "약효", "오니의마력", "피의마력", "인챈트", "가호", "기적", "행운", "풍요")
			SETCOLOR C_GREEN
			PRINTFORM [%TASTE_LIST:TASTE_ID%]
		;表示しないもの
		ELSEIF STRCOUNT(TASTE_LIST:TASTE_ID, DISH_NAME)
		ELSEIF STRCOUNT(TASTE_LIST:TASTE_ID, DISH_TYPE) && DISH_TYPE != "디저트"
		ELSEIF STRCOUNT(TASTE_LIST:TASTE_ID, "특기요리")
		ELSEIF STRCOUNT(TASTE_LIST:TASTE_ID, "중립")
		;伏せる
		ELSEIF (STRCOUNT(TASTE_STR, "몰카맛") || STRCOUNT(TASTE_STR, "미지의맛")) && GROUPMATCH(TASTE_LIST:TASTE_ID, "단", "매운", "짠", "시큼한")
			SETCOLOR C_P_PURPLE
			PRINTFORM [？？？]
		;通常
		ELSE
			PRINTFORM [%TASTE_LIST:TASTE_ID%]
		ENDIF
		RESETCOLOR
		SHOW_NUM ++
		;改行はしない
	;助손効果を見る時用
	ELSEIF PRINT_TYPE == "ASSIDATA"
		IF GROUPMATCH(TASTE_LIST:TASTE_ID, "정력", "약효", "오니의마력", "피의마력", "인챈트", "가호", "기적", "행운", "풍요")
			SETCOLOR C_YELLOW
			LOCALS = [%TASTE_LIST:TASTE_ID%]
		;表示しないもの
		ELSEIF STRCOUNT(TASTE_LIST:TASTE_ID, "특기요리")
			CONTINUE
		ELSE
			LOCALS = [%TASTE_LIST:TASTE_ID%]
		ENDIF
		PRINTFORM 　%LOCALS, 20%
		RESETCOLOR
		SHOW_NUM ++
		SIF SHOW_NUM % 5
			CONTINUE
		PRINTFORML
	;キャラの好みを見る時用
	ELSE
		IF TASTE_CNT:TASTE_ID >= 2
			IF PRINT_TYPE == "POSITIVE"
				SETCOLOR C_GREEN
			ELSEIF PRINT_TYPE == "NEGATIVE"
				SETCOLOR C_ORANGE
			ENDIF
		ENDIF
		IF TASTE_CNT:TASTE_ID >= 5
			IF PRINT_TYPE == "POSITIVE"
				SETCOLOR C_AQUA
			ELSEIF PRINT_TYPE == "NEGATIVE"
				SETCOLOR C_RED
			ENDIF
		ENDIF
		LOCALS = [%TASTE_LIST:TASTE_ID%]Lv{TASTE_CNT:TASTE_ID, 2}
		SIF INVISIBLE
			LOCALS = [？？？？]Lv{TASTE_CNT:TASTE_ID, 2}
		;시스템측에서 6 문자, 맛명칭에 14 문자분을 깨어 앞
		PRINTFORM 　%LOCALS, 20%
		RESETCOLOR
		SHOW_NUM ++
		SIF SHOW_NUM % 5
			CONTINUE
		PRINTFORML
	ENDIF
NEXT
IF PRINT_TYPE == "DISH_DATA"
	PRINTL
ELSE
	SIF SHOW_NUM % 5
		PRINTFORML
ENDIF

;-------------------------------------------------
;요리の만듦새を表示する関数
;-------------------------------------------------
@만듦새(ARG)
CHKFONT "ＭＳ Ｐ明朝"
SIF RESULT
	SETFONT "ＭＳ Ｐ明朝"
FONTBOLD
SELECTCASE ARG
CASE IS < 400
	SETCOLOR C_RED
	PRINT 【악】
CASE IS < 500
	SETCOLOR C_ORANGE
	PRINT 【빈】
CASE IS < 600
	SETCOLOR C_YELLOW
	PRINT 【양】
CASEELSE
	SETCOLOR C_PINK
	PRINT 【미】
ENDSELECT
SETFONT
FONTREGULAR
RESETCOLOR

;-------------------------------------------------
;요리情報をリ세트する関数
;-------------------------------------------------
@RESET_DISH
DISH_NAME =
DISH_TASTE =
DISH_TYPE =
DISH_COMMENT =
VARSET DISH_ING, -1
DISH_TIME = 0
DISH_DRG = 0
DISH_DRG_2 = 0
DISH_ASSI = 0
EX_DISH_NAME =
DISH_BASEPOINT = 0
DISH_LIMIT = 0
FLAG:요리 = 0
DISHNAME =
CVARSET TCVAR, GETNUM(TCVAR, "훔쳐먹기억제")
;-------------------------------------------------
;요리中にたかりに来る関数
;-------------------------------------------------
@COOKING_TAKARI(ARG, 확률)
#DIM 확률

;タカらない
IF !CAN_TAKARI(ARG)
	확률 = 0
;내방중이라면 100%
ELSEIF AT_HOME(ARG) && !CFLAG:ARG:신사거주
	확률 = 100
;같은 거점이라면 2분의 1
ELSEIF AT_HOME(ARG) && CFLAG:ARG:신사거주
	확률 = 확률 * 1 / 2
ENDIF

;확률
SIF 확률 < RAND:100
	RETURN

CFLAG:ARG:거점내방 = 1
CFLAG:ARG:현재위치 = CFLAG:MASTER:현재위치
TCVAR:ARG:가능한한움직이지않는다 = 1
PRINTFORM 요리하는 낌새를 알아채고 %ARG가% 왔다……
PRINTL

;-------------------------------------------------
;たかれるかの判定関数
;-------------------------------------------------
@CAN_TAKARI(ARG)
#FUNCTION
;活動時間-1h外
SIF !BETWEENTIME(CFLAG:ARG:내방시간, CFLAG:ARG:귀가시간 - 60)
	RETURNF 0
;MASTERが外
SIF !AT_HOME(MASTER)
	RETURNF 0
;초대방
SIF CFLAG:MASTER:현재위치 == OMANEKIBEYA()
	RETURNF 0
;MASTERと同じ場所
SIF CFLAG:ARG:현재위치 == CFLAG:MASTER:현재위치
	RETURNF 0
;寝てる
SIF CFLAG:ARG:수면
	RETURNF 0
;仕事中
SIF CFLAG:ARG:행동 == 5
	RETURNF 0
RETURNF 1

;-------------------------------------------------
;구상等で即席요리를 만든다関数
;食材は消費せず、DISH_ING:1を使用する
;CHARA１人のみの効果を得る
;道具の効果は得られない
;ARGS 연습用
;-------------------------------------------------
@요리생성(요리명, CHARA, ARGS)
#DIMS 요리명
#DIM CHARA
#DIM DISH_NUM
#DIM 보너스점수
CALL RESET_DISH
CALL 요리번호출력(요리명, "요리생성")
DISH_NUM = RESULT
DISH_TYPE = %RESULTS:1%
DISH_RANK = 식재레벨(DISH_ING:1)
;DISHNAMEは구上でのみ使用してください
DISHNAME = %DISH_NAME%
FLAG:요리 = DISH_NUM

CALL DISH_TASTE_ADD(DISH_ING:1)
IF !CHARA && FLAG:역극
	CALL DISH_TASTE_FROM_CHARA(FLAG:역극)
ELSE
	CALL DISH_TASTE_FROM_CHARA(CHARA)
ENDIF
SIF ARGS == "연습"
	DISH_TASTE += "연습/"
DISH_TASTE += "갓만든/"
DISH_TASTE += DISH_NAME + "/"
SIF STRCOUNT(DISH_TASTE, "연습/")
	DISH_TASTE '= REPLACE(DISH_TASTE, "철지난\/", "")
DISH_LIMIT = DISH_MAXLIMIT
EX_DISH_NAME = %DISH_NAME%
보너스점수 = 0
SIF STRCOUNT(DISH_TASTE, "제철/")
	보너스점수 += 2
SIF STRCOUNT(DISH_TASTE, "길한물건/")
	보너스점수 += 2
SIF STRCOUNT(DISH_TASTE, "태풍고로케/")
	보너스점수 += 2
SIF STRCOUNT(DISH_TASTE, "옥토끼풍/") && STRCOUNT(DISH_TASTE, "당근/")
	보너스점수 += 2
SIF STRCOUNT(DISH_TASTE, "프로의 맛/")
	보너스점수 += 2
SIF STRCOUNT(DISH_TASTE, "특기요리")
	보너스점수 += 2
SIF STRCOUNT(DISH_TASTE, "반짝임/")
	보너스점수 += 1
SIF STRCOUNT(DISH_TASTE, "섬세한맛/")
	보너스점수 += 1
SIF STRCOUNT(DISH_TASTE, "맛있는물/")
	보너스점수 += 1
SIF STRCOUNT(DISH_TASTE, "카레의날/")
	보너스점수 += 1
DISH_BASEPOINT = ABL:CHARA:요리기능 * 2 + DISH_RANK + 보너스점수
DISH_BASEPOINT = MIN(300 + (DISH_BASEPOINT * 20), 700)

;-------------------------------------------------
;요리명から요리番号を逆算する関数
;요리생성しないならリ세트する
;気軽に使えません。要注意。
;-------------------------------------------------
@요리번호출력(요리명, 生成)
#DIMS 요리명
#DIMS 生成
#DIM 結果保存
結果保存 = 0
FOR LOCAL, 101, 600
	CALL DISHDATA(LOCAL)
	IF DISH_NAME == 요리명
		結果保存 = LOCAL
		BREAK
	ENDIF
NEXT
SIF 生成 != "요리생성" || !結果保存
	CALL RESET_DISH
VARSET RESULT
RETURN 結果保存

;-------------------------------------------------
;고유요리のラーニング処理関数
;一応料理外で覚えた場合（口上とか）も想定
;LEARNED_MENUには100+DAYが入るので、いつ習得したか判定できる
;ARG      DISH_ASSI
;ARGS     DISH_NAME
;-------------------------------------------------
@LEARNING_SP_DISH(ARG, ARGS)
LEARNED_MENU:ARG = 100 + DAY
CALL COLORMESSAGE(@"『%ARGS%』을(를) 러닝！", C_YELLOW, 1)

path: ERB/커맨드관련/COMF/일상계/COMF413 요리만든다_t.ERB