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
연습모드 = 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
	DISH_TYPE = 경식
	MAXMENU = 100
CASE 2
	DISH_TYPE = 주식
	MAXMENU = 100
CASE 3
	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
			;kr 수정 : 만약 재료선택이 풀려있으면 클릭없이 재선택되도록
			SIF 요리결과 == 10 && SELECT_ING < 0
				SELECT_ING = DISH_ING:LOCAL
			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
	;PRINTFORML %TASTE_LIST:TASTE_ID%
	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)
		;	PRINTFORML DISHNAMEなので非表示
		;ELSEIF STRCOUNT(TASTE_LIST:TASTE_ID, DISH_TYPE) && DISH_TYPE != "디저트"
		;	PRINTFORML デザートじゃないので非表示
		ELSEIF STRCOUNT(TASTE_LIST:TASTE_ID, "특기요리")
		;	PRINTFORML 得意料理なので非表示
		ELSEIF STRCOUNT(TASTE_LIST:TASTE_ID, "중립")
		;	PRINTFORML 中立なので非表示
		;伏せる
		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


code:
;-------------------------------------------------
;식사한다
;日常系コマンド、レベル1
;-------------------------------------------------
@COM414
#DIM NOW_TARGET
#DIM EAT_TIME
CALL AssembleForMeal
CVARSET TCVAR, GETNUM(TCVAR, "요리평가치"), 0

IF DISH_TYPE == "주식"
	EAT_TIME = 40
ELSE
	EAT_TIME = 20
ENDIF

;특수요리판정
IF DISH_NAME == "샤브샤브" && TARGET
	FOR LOCAL, 1, GET_TARGETNUM() + 1
		SIF EQUIP:(TARGET:LOCAL):하반신속옷2 > 0
			CONTINUE
		TFLAG:194 = 1
		DISH_TASTE += "정력/"
		BREAK
	NEXT
ELSEIF STRCOUNT(DISH_TASTE, "로터/")
	TFLAG:194 = 2
ELSEIF DISH_NAME == "모짜렐라 치즈와 토마토의 샐러드"
	TFLAG:194 = 30
ELSEIF DISH_NAME == "도핑 콘소메 수프"
	TFLAG:194 = 31
ELSEIF DISH_NAME == "긴기 요리"
	TFLAG:194 = 34
ENDIF

;우선 MASTER 말고
IF TARGET
	;구상 측의 제어
	CALL KOJO_MESSAGE_SEND("SUCCESS",-1,TARGET,-1,-1)
	SELECTCASE TFLAG:192
	CASE 1
		IF RAND:(100 - ABL:MASTER:요리기능 * 2) <= 9
			TCVAR:TARGET:요리평가치 = 700
		ELSE
			TCVAR:TARGET:요리평가치 = 500
		ENDIF
	CASE -1
		TCVAR:TARGET:요리평가치 = 400
	CASE -2
		TFLAG:193 = -2
		RETURN
	CASEELSE
		TCVAR:TARGET:요리평가치 = 0
	ENDSELECT
	NOW_TARGET = TARGET
	;일단 현재 TARGET 이외가 먹는다
	FOR LOCAL, 1, GET_TARGETNUM() + 1
		TARGET = TARGET:LOCAL
		SIF TARGET == NOW_TARGET
			CONTINUE
		;구상 측의 제어
		CALL KOJO_MESSAGE_SEND("SUCCESS",-1,TARGET,-1,-1)
		SELECTCASE TFLAG:192
		CASE 1
			IF RAND:(100 - ABL:MASTER:요리기능 * 2) <= 9
				TCVAR:TARGET:요리평가치 = 700
			ELSE
				TCVAR:TARGET:요리평가치 = 500
			ENDIF
		CASE -1
			TCVAR:TARGET:요리평가치 = 300
		CASE -2
			CONTINUE
		CASEELSE
			TCVAR:TARGET:요리평가치 = 0
		ENDSELECT
		;시식
		CALL COM414_実食(TARGET, EAT_TIME, TARGET == DISH_ASSI || CFLAG:TARGET:행동 == 5)
	NEXT
	;그 후에 TARGET이 먹는다
	TARGET = NOW_TARGET
	;현재의 TARGET은 보너스 확정
	CALL COM414_実食(TARGET, EAT_TIME, 1)
	;신뢰도,약간 큰, 평균 3
	TFLAG:98 = (TCVAR:TARGET:요리평가치 / 100) / 2 + 1
ENDIF

CALL 식사(MASTER)
TIME += EAT_TIME
SIF CFLAG:MASTER:동행
	CFLAG:MASTER:동행 += EAT_TIME
RETURN 1

;-------------------------------------------------
;食べる処理と獲得ソースの計算
;CHARA     食べる人
;EAT_TIME  食べる時間
;BONUS     DISH_ASSIと현재의TARGETと仕事中のキャラは보너스2倍
;-------------------------------------------------
@COM414_実食(CHARA, EAT_TIME, BONUS)
#DIM CHARA
#DIM EAT_TIME
#DIM BONUS
#DIM 空腹
#DIM 評価点係数
#DIM 호감도係数
#DIM 순종係数
#DIM 時間係数

#DIM DISH_ITAZURA
空腹 = 0
;食べられない状況
SIF CFLAG:CHARA:수면
	RETURN
SIF CFLAG:CHARA:쇠약
	RETURN
;만복なので食べない
IF DISH_TYPE == "디저트"
	SIF TIME_PROGRESS(TCVAR:디저트공복시각)
		空腹 = 1
ELSE
	SIF TIME_PROGRESS(TCVAR:공복시각)
		空腹 = 1
ENDIF
SIF !空腹
	RETURN
;먹는다
CALL 식사(CHARA)

;계수 설정
IF ABL:순종 <= 1
	순종係数 = 0
ELSEIF ABL:순종 <= 3
	순종係数 = 1
ELSEIF ABL:순종 <= 5
	순종係数 = 2
ELSEIF ABL:순종 <= 8
	순종係数 = 3
ELSEIF ABL:순종 <= 11
	순종係数 = 4
ELSEIF ABL:순종 <= 14
	순종係数 = 5
ELSE
	순종係数 = 6
ENDIF
IF CFLAG:CHARA:호감도 < 100
	호감도係数 = 0
ELSEIF CFLAG:CHARA:호감도 < 500
	호감도係数 = 1
ELSEIF CFLAG:CHARA:호감도 < 1000
	호감도係数 = 2
ELSEIF CFLAG:CHARA:호감도 < 5000
	호감도係数 = 4
ELSEIF CFLAG:CHARA:호감도 < 10000
	호감도係数 = 6
ELSEIF CFLAG:CHARA:호감도 < 30000
	호감도係数 = 8
ELSE
	호감도係数 = 10
ENDIF
;1~3? , 간식&디저트1, 주식2
時間係数 = EAT_TIME / 20
;1~9
IF TCVAR:CHARA:요리평가치 < 300
	評価点係数 = 0
ELSEIF TCVAR:CHARA:요리평가치 < 400
	評価点係数 = 1
ELSEIF TCVAR:CHARA:요리평가치 < 500
	評価点係数 = 3
ELSEIF TCVAR:CHARA:요리평가치 < 600
	評価点係数 = 12
ELSEIF TCVAR:CHARA:요리평가치 < 650
	評価点係数 = 16
ELSEIF TCVAR:CHARA:요리평가치 < 700
	評価点係数 = 20
ELSEIF TCVAR:CHARA:요리평가치 < 750
	評価点係数 = 24
ELSEIF TCVAR:CHARA:요리평가치 < 800
	評価点係数 = 30
ELSEIF TCVAR:CHARA:요리평가치 < 850
	評価点係数 = 36
ELSEIF TCVAR:CHARA:요리평가치 < 900
	評価点係数 = 40
ELSE
	評価点係数 = 45
ENDIF

;평가치의 영향 강화
SOURCE:CHARA:환락 = (100 * 評価点係数 + 500 * 호감도係数 + 30 * ABL:CHARA:친밀) * 時間係数
SOURCE:CHARA:수동 = (20 * 評価点係数 + 300 * 순종係数 + 30 * ABL:CHARA:순종) * 時間係数
SIF CHARA == DISH_ASSI
	SOURCE:CHARA:정복 = (10 * 評価点係数 + ABL:CHARA:새드끼 * 30) * 時間係数
SOURCE:CHARA:불결 = STRCOUNT(DISH_TASTE, "열화/") * (100 - TCVAR:CHARA:요리평가치 / 10) * 2
SOURCE:CHARA:반감 = STRCOUNT(DISH_TASTE, "열화/") * (100 - TCVAR:CHARA:요리평가치 / 10) * 2
;노팬티샤브샤브
SIF TFLAG:194 == 1 && ! EQUIP:CHARA:하반신속옷2
	SOURCE:CHARA:노출 = 1000

SIF TALENT:대식가
	TIMES SOURCE:환락, 1.50
IF BONUS
	TIMES SOURCE:환락, 1.50
	TIMES SOURCE:수동, 1.50
	TIMES SOURCE:정복, 1.50
ENDIF

IF TCVAR:CHARA:요리평가치 >= 750
	IF TALENT:CHARA:기분 < 0
		CALL KIGEN_CHANGE(CHARA, 100, 1)
	ELSE
		CALL KIGEN_CHANGE(CHARA, 50, 1)
	ENDIF
	TFLAG:193 = 1
ELSEIF TCVAR:CHARA:요리평가치 >= 400
	CALL KIGEN_CHANGE(CHARA, 30, 1)
	TFLAG:193 = 0
ELSE
	SIF TALENT:CHARA:기분 >= 0
		CALL KIGEN_CHANGE(CHARA, 100, -1)
	TFLAG:193 = -1
ENDIF

SIF CFLAG:CHARA:동행
	CFLAG:CHARA:동행 += EAT_TIME
;-------------------------------------------------
;実行判定
;-------------------------------------------------
@COM_ABLE414
;식사実行判定
SIF !TFLAG:100
	RETURN 0
;一括管理
SIF GLOBAL_COMABLE(414)
	RETURN RESULT
;停止中は不可
SIF FLAG:70 == 1
	RETURN 0
;요리がない
SIF DISH_NAME == ""
	RETURN 0
;주식は屋内じゃなきゃ無理
SIF DISH_TYPE == "주식" && !INROOM(CFLAG:MASTER:현재위치)
	RETURN 0
;食べたばかり
IF DISH_TYPE == "디저트"
	SIF !TIME_PROGRESS(TCVAR:MASTER:디저트공복시각)
		RETURN 0
ELSE
	SIF !TIME_PROGRESS(TCVAR:MASTER:공복시각)
		RETURN 0
ENDIF
;風呂場飯禁止
SIF BATHCHECK(CFLAG:MASTER:현재위치)
	RETURN 0
SIF CFLAG:MASTER:우후후
	RETURN 0
RETURN 1

;-------------------------------------------------
;실제로 음식을 먹는 처리
;-------------------------------------------------
@식사(ARG)
; #DIM 정력회복량
; #DIM 기력회복량
; #DIM 체력회복량
; #DIM TSP회복량
#DIM 정력회복율
#DIM 기력회복율
#DIM 체력회복율
#DIM TSP회복율
#DIM 만복도
;회복율은 0.1%단위

; TSP회복량 = 0
TSP회복율 = 0

;기본 회복율과 만복도
SELECTCASE DISH_TYPE
	CASE "경식"
		체력회복율 = 200
		기력회복율 = 300
		정력회복율 = 100
		만복도 = 180
	CASE "주식"
		체력회복율 = 400
		기력회복율 = 400
		정력회복율 = 200
		만복도 = 360
	CASE "디저트"
		체력회복율 = 100
		기력회복율 = 500
		정력회복율 = 100
		만복도 = 180
ENDSELECT
;追加回復率
SIF STRCOUNT(DISH_TASTE, "신력/")
	TIMES 기력회복율, 1.2
SIF STRCOUNT(DISH_TASTE, "요력/")
	TIMES 기력회복율, 1.2
SIF STRCOUNT(DISH_TASTE, "생명력/")
	TIMES 체력회복율, 1.2
SIF STRCOUNT(DISH_TASTE, "영장/")
	TSP회복율 += 100
;오니의마력と区別
SIF STRCOUNT(DISH_TASTE, "/마력/")
	TSP회복율 += 100
SIF STRCOUNT(DISH_TASTE, "선술/")
	TSP회복율 += 100
SIF STRCOUNT(DISH_TASTE, "비술/")
	TSP회복율 += 100
IF STRCOUNT(DISH_TASTE, "약효/")
	기력회복율 += 100
ENDIF
IF STRCOUNT(DISH_TASTE, "약선/")
	기력회복율 += 100
	CALL BUFF_BASE(ARG, BASE_기력, MIN(MAXBASE:ARG:기력 * 10 / 100, 200))
ENDIF
; IF STRCOUNT(DISH_TASTE, "오니의마력/")
; 	정력회복율 = 1000
; 	CALL BUFF_BASE(ARG, BASE_정력, MIN(MAXBASE:ARG:정력 * 50 / 100, 500))
; ENDIF
; IF STRCOUNT(DISH_TASTE, "피의마력/") && ARG == MASTER
; 	TSP회복율 = 1000
; 	CALL BUFF_BASE(ARG, BASE_TSP, MIN(MAXBASE:ARG:TSP * 50 / 100, 500))
; ENDIF
IF STRCOUNT(DISH_TASTE, "정력/")
	정력회복율 += 100
ENDIF
IF STRCOUNT(DISH_TASTE, "강정/")
	정력회복율 += 100
	CALL BUFF_BASE(ARG, BASE_정력, MIN(MAXBASE:ARG:정력 * 10 / 100, 200))
ENDIF
SIF STRCOUNT(DISH_TASTE, "기적/")
	TFLAG:행운보정 = 5
SIF STRCOUNT(DISH_TASTE, "행운/")
	TFLAG:행운보정 = 3
;添加物
SELECTCASE DISH_DRG_2
CASE GETNUM(ITEM, "영양강화제")
	TIMES 기력회복율, 1.1
	TIMES 체력회복율, 1.1
	TIMES 정력회복율, 1.1
ENDSELECT
;特殊バフ系
;祝福：妊娠率がほんの少し上昇,妊娠対象に付与されていないと効果なし（種側は効果なし）
SIF STRCOUNT(DISH_TASTE, "축복/")
	TCVAR:ARG:축복 = 1
;エンチャント：弾幕勝負で自分のダイス目がアップ,対戦相手に付与されてると対戦相手もアップ
SIF STRCOUNT(DISH_TASTE, "인챈트/")
	TCVAR:ARG:인챈트 = 1
;加護：弾幕勝負で相手のダイス目がダウン,対戦相手に付与されてると自分もダウン
SIF STRCOUNT(DISH_TASTE, "가호/")
	TCVAR:ARG:가호 = 1
;豊穣：野菜収穫時の収穫量アップ
SIF STRCOUNT(DISH_TASTE, "풍요/")
	TCVAR:ARG:풍요 = 1

;MASTER 이외의 처리
IF ARG != MASTER
	;맛의 평가, 구상측에서 제어되는 경우 컷
	SIF !TCVAR:ARG:요리평가치
		CALL REVIEW_DISH(ARG, DISH_TASTE)
	;투입
	SELECTCASE DISH_DRG
	CASE GETNUM(ITEM, "미약")
		TCVAR:ARG:미약 = 210
	CASE GETNUM(ITEM, "이뇨제")
		TCVAR:ARG:이뇨제 = 210
	CASE GETNUM(ITEM, "춘약")
		TCVAR:ARG:춘약 = 210
	CASE GETNUM(ITEM, "수면제")
		IF TCVAR:ARG:수면제강도 < 2
			TCVAR:ARG:수면제강도 = 2
			TCVAR:ARG:수면제차사용 = 1
		ENDIF
	ENDSELECT
	;;평가치 보정,기력과 체력 뿐
	SELECTCASE TCVAR:ARG:요리평가치
	CASE IS < 400
		TIMES 체력회복율, 0.6
		TIMES 기력회복율, 0.6
	CASE IS < 600
		TIMES 체력회복율, 0.8
		TIMES 기력회복율, 0.8
	CASE IS < 750
		TIMES 체력회복율, 1.0
		TIMES 기력회복율, 1.0
	CASEELSE
		TIMES 체력회복율, 1.1
		TIMES 기력회복율, 1.1
	ENDSELECT
ENDIF

;회복량 계산
; 체력회복량 = MAXBASE:ARG:체력 * 체력회복율 / 1000
; 기력회복량 = MAXBASE:ARG:기력 * 기력회복율 / 1000
; 정력회복량 = MAXBASE:ARG:정력 * 정력회복율 / 1000
; TSP회복량 = MAXBASE:ARG:TSP * TSP회복율 / 1000

;로터 요리
SIF STRCOUNT(DISH_TASTE, "로터/")
	EXP:ARG:C경험 += 30

;만복도상승
SIF STRCOUNT(DISH_TASTE, "푸짐/")
	TIMES 만복도, 1.2
SIF STRCOUNT(DISH_TASTE, "가벼운/")
	TIMES 만복도, 0.8
CALL 만복도상승(ARG, DISH_TYPE, 만복도)

;回復処理
; CALL RECOVER(ARG, 체력회복량, "체력", "식사에 의한 회복")
; CALL RECOVER(ARG, 기력회복량, "기력", "식사에 의한 회복")
CALL RECOVER_PERMIL(ARG, 체력회복율, "체력", 0, "식사에 의한 회복")
CALL RECOVER_PERMIL(ARG, 기력회복율, "기력", 0, "식사에 의한 회복")
CALL RECOVER_PERMIL(ARG, 정력회복율, "정력", 0, "식사에 의한 회복")
IF ARG == MASTER
	; CALL RECOVER(ARG, 정력회복량, "정력", "식사에 의한 회복")
	; CALL RECOVER(ARG, TSP회복량, "TSP", "식사에 의한 회복")
	CALL RECOVER_PERMIL(ARG, TSP회복율, "TSP", 0, "식사에 의한 회복")
ELSE
	PRINTFORML %CALLNAME:ARG + "의 평가…………", 40, LEFT%{TCVAR:ARG:요리평가치, 3}점
ENDIF

;動かないフラグ
TCVAR:ARG:가능한한움직이지않는다 = 1

;-------------------------------------------------
;요리を評価する関数
;ARGS	DISH_TASTE
;-------------------------------------------------
@REVIEW_DISH(CHARA, ARGS)
#DIM CHARA
#DIMS TASTE_CHARA_GOOD
#DIMS TASTE_CHARA_BAD
#DIM TASTE_GOOD
#DIM TASTE_BAD

TASTE_CHARA_GOOD = %GET_STR(, "캐릭터데이터", CHARA, "요리：좋아하는 맛")%
TASTE_CHARA_BAD = %GET_STR(, "캐릭터데이터", CHARA, "요리：싫어하는 맛")%

;共通設定；好き
;디저트はみんな好き
TASTE_CHARA_GOOD += "디저트/"
;갓만든はみんな好き
TASTE_CHARA_GOOD += "갓만든/"
;[요괴]は요력が好き
SIF CHECK_CHARA(CHARA, "요괴") && !CHECK_CHARA(CHARA, "반인간")
	TASTE_CHARA_GOOD += "요력/"
;[신령][인간]は신력が好き
SIF CHECK_CHARA(CHARA, "신령") || (CHECK_CHARA(CHARA, "인간") && !CHECK_CHARA(CHARA, "반인간"))
	TASTE_CHARA_GOOD += "신력/"
;[요정]は생명력が好き
SIF CHECK_CHARA(CHARA, "요정")
	TASTE_CHARA_GOOD += "생명력/"
;[마법사]は마력が好き
SIF CHECK_CHARA(CHARA, "마법사")
	TASTE_CHARA_GOOD += "마력/"
;[유령][츠쿠모가미]は영장が嫌いじゃないなら好き
SIF (CHECK_CHARA(CHARA, "유령") || CHECK_CHARA(CHARA, "츠쿠모가미")) && !STRCOUNT(TASTE_CHARA_BAD, "영장/")
	TASTE_CHARA_GOOD += "영장/"
;[츠쿠모가미]は오니의마력が好き
SIF CHECK_CHARA(CHARA, "츠쿠모가미")
	TASTE_CHARA_GOOD += "오니의마력/" * 3
;[유치]は어머니의 맛が好き
SIF TALENT:CHARA:유치
	TASTE_CHARA_GOOD += "어머니의 맛/"
;[유치]は어린이 런치が好き
SIF TALENT:CHARA:유치
	TASTE_CHARA_GOOD += "어린이 런치/" * 5
;DISH_ASSIなら질투は好き(보너스）
SIF CHARA == DISH_ASSI
	TASTE_CHARA_GOOD += "질투/" * 3
;BASEPOINTが500以上なら숨김맛は好き(보너스）
SIF DISH_BASEPOINT >= 500
	TASTE_CHARA_GOOD += "숨김맛/" * 2
;[動物耳]はまんまが好き
SIF TALENT:CHARA:동물귀
	TASTE_CHARA_GOOD += "맘마/" * 3
;夏は冷たいものが、冬は温かいものが好き(嫌いじゃなければ）
IF GET_MONTH() == "여름의 달" && !STRCOUNT(TASTE_CHARA_BAD, "차가운/")
	TASTE_CHARA_GOOD += "차가운/"
ELSEIF GET_MONTH() == "겨울의 달" && !STRCOUNT(TASTE_CHARA_BAD, "따뜻한/")
	TASTE_CHARA_GOOD += "따뜻한/"
ENDIF
;애정,ASSI→MASTERへの애정であって点数化できないのでは？,今のところフレーバー

;共通設定：嫌い
;[열화]はみんな嫌い
TASTE_CHARA_BAD += "열화/" * 3
;[철지난]はNG
TASTE_CHARA_BAD += "철지난/" * 6
;[요괴][유령][츠쿠모가미]は신력が好きじゃないなら嫌い
SIF (CHECK_CHARA(CHARA, "요괴") || CHECK_CHARA(CHARA, "유령") || CHECK_CHARA(CHARA, "츠쿠모가미")) && !STRCOUNT(TASTE_CHARA_GOOD, "신력/")
	TASTE_CHARA_BAD  += "신력/"
;[인간][신령]は요력が好きじゃないなら嫌い
SIF (CHECK_CHARA(CHARA, "인간") || CHECK_CHARA(CHARA, "신령")) && !STRCOUNT(TASTE_CHARA_GOOD, "요력/")
	TASTE_CHARA_BAD  += "요력/"
;[인간]は영장が好きじゃないなら嫌い
SIF CHECK_CHARA(CHARA, "인간") && !CHECK_CHARA(CHARA, "반인간") && !STRCOUNT(TASTE_CHARA_GOOD, "영장/")
	TASTE_CHARA_BAD  += "영장/"
;DISH_ASSIでないなら질투は嫌い(減点）
IF CHARA != DISH_ASSI
	IF TALENT:CHARA:연인
		TASTE_CHARA_BAD  += "질투/" * 5
	ELSEIF TALENT:CHARA:연모
		TASTE_CHARA_BAD  += "질투/" * 3
	ELSEIF TALENT:CHARA:사모
		TASTE_CHARA_BAD  += "질투/"
	ENDIF
ENDIF
;BASEPOINTが500未満なら숨김맛は嫌い(減点）
SIF DISH_BASEPOINT < 500
	TASTE_CHARA_BAD += "숨김맛/" * 2

;評価得点,得点はブレる
TASTE_GOOD = 300 + (80 + RAND:20) * STR_MULTI_COUNT(TASTE_CHARA_GOOD, ARGS)
;評価減点,減点は1.5倍
TASTE_BAD = 300 + 150 * STR_MULTI_COUNT(TASTE_CHARA_BAD, ARGS)

;総評
TCVAR:CHARA:요리평가치 = TASTE_GOOD * DISH_BASEPOINT * 2 / (TASTE_GOOD + TASTE_BAD)
[IF_DEBUG]
	PRINTFORML 좋아함：%TASTE_CHARA_GOOD%
	PRINTFORML 싫어함：%TASTE_CHARA_BAD%
	PRINTFORML 품목：%ARGS%
	PRINTFORML 기본：{DISH_BASEPOINT}
	PRINTFORML 득점：{TASTE_GOOD}
	PRINTFORML 감점：{TASTE_BAD}
	PRINTFORML 결과：{TCVAR:CHARA:요리평가치}
	WAIT
[ENDIF]

;-------------------------------------------------
;주로 오래된 구상에 맞추기 위한 자극적 미각 함수
;엄청매운/격감/매우 신 에는 대응하지만,고추냉이에는 대응 불가……
;-------------------------------------------------
@TASTE_REACTION(ARGS)
#FUNCTION
SIF STRCOUNT(DISH_TASTE, ARGS + "/") >= 5
	RETURNF 1

;-------------------------------------------------
;만복도상승
;-------------------------------------------------
@만복도상승(ARG, ARGS, ARG:1 = 0)
#DIM 만복도
IF ARG:1 == 0
	SELECTCASE ARGS
		CASE "경식"
			만복도 = 180
		CASE "주식"
			만복도 = 360
		CASE "디저트"
			만복도 = 180
	ENDSELECT
ELSE
	만복도 = ARG:1
ENDIF

SIF TALENT:ARG:대식가
	TIMES 만복도, 0.7
IF ARGS == "디저트"
	TCVAR:ARG:디저트공복시각 = 1440 * DAY + TIME + 만복도
ELSE
	TCVAR:ARG:공복시각 = 1440 * DAY + TIME + 만복도
ENDIF

repo_name: DNS/eraTWKR

path: ERB/커맨드관련/COMF/일상계/COMF414 식사한다.ERB

license: mit


code:
;-------------------------------------------------
;식사를 대접한다
;日常系コマンド、レベル1
;414_[먹는다]와 거의 같음,함수도 그쪽의 것을 유용
;-------------------------------------------------
@COM415
#DIM NOW_TARGET
#DIM EAT_TIME
CALL AssembleForMeal
CVARSET TCVAR, GETNUM(TCVAR, "요리평가치"), 0

IF DISH_TYPE == "주식"
	EAT_TIME = 40
ELSE
	EAT_TIME = 20
ENDIF

;구상 측의 제어
CALL KOJO_MESSAGE_SEND("SUCCESS",-1,TARGET,-1,-1)
SELECTCASE TFLAG:192
CASE 1
	IF RAND:(100 - ABL:MASTER:요리기능 * 2) <= 9
		TCVAR:TARGET:요리평가치 = 700
	ELSE
		TCVAR:TARGET:요리평가치 = 500
	ENDIF
CASE -1
	TCVAR:TARGET:요리평가치 = 400
CASE -2
	TFLAG:193 = -2
	RETURN
CASEELSE
	TCVAR:TARGET:요리평가치 = 0
ENDSELECT
NOW_TARGET = TARGET
;일단 현재 TARGET 이외가 먹는다
FOR LOCAL, 1, GET_TARGETNUM() + 1
	TARGET = TARGET:LOCAL
	SIF TARGET == NOW_TARGET
		CONTINUE
	;구상 측의 제어
	CALL KOJO_MESSAGE_SEND("SUCCESS",-1,TARGET,-1,-1)
	SELECTCASE TFLAG:192
	CASE 1
		IF RAND:(100 - ABL:MASTER:요리기능 * 2) <= 9
			TCVAR:TARGET:요리평가치 = 700
		ELSE
			TCVAR:TARGET:요리평가치 = 500
		ENDIF
	CASE -1
		TCVAR:TARGET:요리평가치 = 300
	CASE -2
		CONTINUE
	CASEELSE
		TCVAR:TARGET:요리평가치 = 0
	ENDSELECT
	;시식
	CALL COM414_実食(TARGET, EAT_TIME, TARGET == DISH_ASSI || CFLAG:TARGET:행동 == 5)
NEXT
;그 후에 TARGET이 먹는다
TARGET = NOW_TARGET
;현재의 TARGET은 보너스 확정
CALL COM414_実食(TARGET, EAT_TIME, 1)
;신뢰도,약간 큰, 평균 3
TFLAG:98 = (TCVAR:TARGET:요리평가치 / 100) / 2 + 1
TIME += EAT_TIME
SIF CFLAG:MASTER:동행
	CFLAG:MASTER:동행 += EAT_TIME
RETURN 1

;-------------------------------------------------
;実行判定
;-------------------------------------------------
@COM_ABLE415
;停止中は不可
SIF FLAG:70 == 1
	RETURN 0
;식사実行判定
SIF !TFLAG:100
	RETURN 0
;一括管理
SIF GLOBAL_COMABLE(415)
	RETURN RESULT
;停止中は不可
SIF FLAG:70 == 1
	RETURN 0
;TARGETがいない
SIF TARGET < 1
	RETURN 0
;수면中
SIF CFLAG:수면
	RETURN 0
;요리가 없다
SIF DISH_NAME == ""
	RETURN 0
;風呂場飯禁止
SIF BATHCHECK(CFLAG:MASTER:현재위치)
	RETURN 0
;주식は屋内じゃなきゃ無理
SIF DISH_TYPE == "주식" && !INROOM(CFLAG:MASTER:현재위치) ;KR판 임의수정, 일판 414 대응에 따라 일단 같이 수정함
	RETURN 0
;食べたばかり
IF DISH_TYPE == "디저트"
	SIF !TIME_PROGRESS(TCVAR:디저트공복시각)
		RETURN 0
ELSE
	SIF !TIME_PROGRESS(TCVAR:공복시각)
		RETURN 0
ENDIF
SIF CFLAG:MASTER:우후후
	RETURN 0
RETURN 1

path: ERB/커맨드관련/COMF/일상계/COMF415 대접한다.ERB


code:
;-------------------------------------------------
;연주한다
;일상계 커맨드, 레벨 1
;-------------------------------------------------
@COM416
#DIM DYNAMIC NOW_TARGET
#DIM DYNAMIC NUM_TARGET
#DIM DYNAMIC MUSIC_BONUS
#DIM DYNAMIC BAND_BONUS
#DIM DYNAMIC DANCE_BONUS
#DIM OHINERI
#DIM INTERRUPTED
#DIM OMAKE, 20 = 40,120,195,212,213,214,215,216,500,510,520,521,600,601,610,611,612,636,642,706
#DIM CHOSEN_OMAKE

TFLAG:사용악기 = 0
IF 연회장소재판정(MASTER)
;IF CFLAG:MASTER:현재위치 == TFLAG:연회장 && MASTER != TARGET && DAY >= FLAG:개시일 && TIME >= FLAG:33 && FLAG:참가인수
	IF ABL:MASTER:음악기능 < 3
		PRINTL 지금의 음악기능으로는 연회에 걸맞은 연주를 할 자신이 없다……
		RETURN -1
	ELSEIF ABL:MASTER:음악기능 <= ABL:TARGET:전투능력 - TALENT:TARGET:기분
		PRINTFORML 잘 연주하지 않으면 %조사처리(CALLNAME:TARGET, "는")% 돌을 던질 것 같\@ TALENT:TARGET:기분 < 0 ? 이 기분이 나빠보인다 # 다 \@
	ELSEIF ABL:MASTER:음악기능 < 5
		PRINTL 서투른 연주를 하다간 돌이 날아올지도 모른다
	ELSE
		PRINTL 연회를 어떤 악기로 흥을 돋울까……
	ENDIF
ELSE
	PRINTL 무엇을 사용할까……
ENDIF
{
	CALL ASK_M(
		"돌아간다", 1,
		ITEMNAME:30, MUSIC_ABLE(30),
		ITEMNAME:31, MUSIC_ABLE(31),
		ITEMNAME:32, MUSIC_ABLE(32),
		ITEMNAME:33, MUSIC_ABLE(33),
		ITEMNAME:34, MUSIC_ABLE(34)
	)
}
TFLAG:사용악기 = RESULT
SIF ITEM:연주지도서 && !RAND:2
	EXP:MASTER:연주경험 ++
SIF !TFLAG:사용악기
	RETURN -1
INTERRUPTED = 0
FOR LOCAL,1,CHARANUM
	SIF CFLAG:LOCAL:현재위치 != CFLAG:MASTER:현재위치
		CONTINUE
	SIF CFLAG:LOCAL:행동 != 5
		CONTINUE
	IF GROUPMATCH(CFLAG:LOCAL:직종, 음악, 놀이, ENKAI_SANKA, 꽐라된)
		PRINTFORML 「시끄러워！」
		CALL THROW_STONE(LOCAL)
	ELSEIF CFLAG:LOCAL:직종 == ENKAI_SANKA && !ACCOMPANY_ABLE(LOCAL)
		EXP:MASTER:연주경험 ++
		SIF ABL:LOCAL:전투능력 >= 4
			EXP:MASTER:연주경험 ++
		IF ABL:MASTER:음악기능 + TALENT:LOCAL:기분 >= ABL:LOCAL:전투능력
			PRINTFORML %조사처리(CALLNAME:LOCAL,"는")% %TEXTR("황홀해한다/눈을 반짝였다/당신의 연주를 칭찬했다")%
			OHINERI = MAX(RAND:(ABL:LOCAL:전투능력 + 1), 1)
			MONEY:2 += OHINERI
			PRINTPLAIN *짤랑*
			CALL COLORMESSAGE(@"{OHINERI}카리스마가 종이에 싸여 날아왔다！",C_YELLOW,1)
			IF !RAND:7
				IF !RAND:2
					;はずれくじ
					CHOSEN_OMAKE = 131
				ELSE
					CHOSEN_OMAKE = OMAKE:(RAND:20)
				ENDIF
				CALL COLORMESSAGE(@"%조사처리(ITEMNAME:(CHOSEN_OMAKE),"가")% 날아왔다！",C_YELLOW,1)
				ITEM:CHOSEN_OMAKE ++
			ENDIF
		ELSE
			PRINTFORML 「%TEXTR("시끄러워！/꺼져！/존나못해！")%」
			CALL THROW_STONE(LOCAL)
		ENDIF
	ENDIF
	SIF RESULT == -1
		INTERRUPTED ++
NEXT
IF INTERRUPTED
	PRINTFORML 「까다로운 손님이네」
	CALL COLORMESSAGE(@"%마스터는% 연주를 중단했다",C_YELLOW,1)
	RETURN -1
ENDIF

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 + ABL:MASTER:음악기능)
			;10%로 대성공
			EXP:MASTER:연주경험 ++
			EXP:MASTER:연주경험 += 5
			TFLAG:193 = 1
		ELSEIF LOCAL >= LOCAL:1
			;10~1%로 실패
			TFLAG:193 = -1
		ELSE
			;나머지는 성공
			EXP:MASTER:연주경험 ++
			TFLAG:193 = 0
		ENDIF
	;강제 성공 or대성공
	CASE 1
		IF RAND:100 <= (9 + ABL:MASTER:음악기능)
			;10%로 대성공
			EXP:MASTER:연주경험 ++
			EXP:MASTER:연주경험 += 5
			TFLAG:193 = 1
		ELSE
			;나머지는 성공
			EXP:MASTER:연주경험 ++
			TFLAG:193 = 0
		ENDIF
	;강제 실패
	CASE -1
		TFLAG:193 = -1
	;커맨드 종료
	CASE -2
		TFLAG:193 = -1
		RETURN 0
ENDSELECT

DOWNBASE:MASTER:체력 = 300
DOWNBASE:MASTER:기력 = 300

;그 자리에 있는 TARGET 전원이 돌린다
NOW_TARGET = TARGET
NUM_TARGET = GET_TARGETNUM()
CVARSET TCVAR, GETNUM(TCVAR, "연주참가"), 0

FOR LOCAL, 1, NUM_TARGET + 1
	SIF !SHIRAHU(TARGET:LOCAL)
		CONTINUE
	TARGET = TARGET:LOCAL
	CALL COM416_1
	SELECTCASE TCVAR:연주참가
	CASE 1, 2
		MUSIC_BONUS += ABL:음악기능 + 2 * TALENT:음감
	CASE 3
		DANCE_BONUS += ABL:음악기능
	ENDSELECT
NEXT

BAND_BONUS = CMATCH(TCVAR:연주참가, 1, 1) + CMATCH(TCVAR:연주참가, 2, 1)
IF TFLAG:193 < 0
	FOR LOCAL, 1, NUM_TARGET + 1
		SOURCE:(TARGET:LOCAL):반감 += MUSIC_BONUS * ABL:(TARGET:LOCAL):음악기능
		SIF TCVAR:(TARGET:LOCAL):연주참가
			SOURCE:(TARGET:LOCAL):울굴 += 3 * MUSIC_BONUS * ABL:음악기능
		SOURCE:(TARGET:LOCAL):반감 = SOURCE:(TARGET:LOCAL):반감 * (2 + BAND_BONUS + DANCE_BONUS) / 2
		SOURCE:(TARGET:LOCAL):울굴 = SOURCE:(TARGET:LOCAL):울굴 * (2 + BAND_BONUS + DANCE_BONUS) / 2
		SOURCE:(TARGET:LOCAL):환락 = SOURCE:(TARGET:LOCAL):환락 * 2 / (2 + BAND_BONUS + DANCE_BONUS)
		SOURCE:(TARGET:LOCAL):정복 = SOURCE:(TARGET:LOCAL):정복 * 2 / (2 + BAND_BONUS + DANCE_BONUS)
		;이 손의 개별 처리는 없는 편이 좋지만 생각나 버린 것은 어쩔 수 없다
		;루나사
		SIF TCVAR:[[루나사]]:연주참가
			TIMES SOURCE:(TARGET:LOCAL):울굴, 1.1
		SIF TCVAR:[[마이]]:연주참가
			TIMES SOURCE:(TARGET:LOCAL):울굴, 0.9
		SIF TCVAR:[[사토노]]:연주참가
			TIMES SOURCE:(TARGET:LOCAL):반감, 0.9
	NEXT
ELSE
	BAND_BONUS += TFLAG:193
	BAND_BONUS += MAX(SQRT(MUSIC_BONUS) - 1, 0)
	FOR LOCAL, 1, NUM_TARGET + 1
		SIF !SHIRAHU(TARGET:LOCAL)
			CONTINUE
		SOURCE:(TARGET:LOCAL):환락 += MUSIC_BONUS * 15
		SOURCE:(TARGET:LOCAL):정복 += MUSIC_BONUS * 10
		SOURCE:(TARGET:LOCAL):환락 = MAX(0, SOURCE:(TARGET:LOCAL):환락 * (2 + BAND_BONUS + DANCE_BONUS) / 2)
		SOURCE:(TARGET:LOCAL):정복 = MAX(0, SOURCE:(TARGET:LOCAL):정복 * (2 + BAND_BONUS + DANCE_BONUS) / 2)
		;메를랑
		SIF TCVAR:[[메를랑]]:연주참가
			TIMES SOURCE:(TARGET:LOCAL):환락, 1.1
		;라이코
		SIF TCVAR:[[라이코]]:연주참가
			TIMES SOURCE:(TARGET:LOCAL):정복, 1.1
		;코코로
		SIF TCVAR:[[코코로]]:연주참가
			TIMES SOURCE:(TARGET:LOCAL):환락, 1.2
		SIF TCVAR:[[코코로]]:연주참가
			TIMES SOURCE:(TARGET:LOCAL):정복, 1.2
	NEXT
ENDIF

TFLAG:호감도보너스 = BAND_BONUS * 50
TARGET = NOW_TARGET

TIME += 30
RETURN 1

@COM416_1

DOWNBASE:기력 += 100

;환락 강도
SOURCE:환락 = 700 + ABL:MASTER:음악기능 * 300 + ABL:친밀 * 50
;정복 강도
SOURCE:정복 = 100 * (ABL:MASTER:음악기능 + 1) + ABL:친밀 * 30

IF TFLAG:193 == -1
	TIMES SOURCE:환락 , 0.10
	TIMES SOURCE:정복 , 0.50
ELSEIF TFLAG:193 == 0
	TIMES SOURCE:환락 , 1.00
	TIMES SOURCE:정복 , 1.00
ELSE
	TIMES SOURCE:환락 , 2.00
	TIMES SOURCE:정복 , 2.00
ENDIF
;음악기능으로 환락이 한층 더 증감
IF ABL:MASTER:음악기능 >= 5
	TIMES SOURCE:환락 , 2.00
ELSEIF ABL:MASTER:음악기능 == 4
	TIMES SOURCE:환락 , 1.50
ELSEIF ABL:MASTER:음악기능 == 3
	TIMES SOURCE:환락 , 1.00
ELSEIF ABL:MASTER:음악기능 == 2
	TIMES SOURCE:환락 , 0.50
ELSE
	TIMES SOURCE:환락 , 0.10
ENDIF
;[음악지식]을 가지고 있는 경우, 환락 증가
SIF TALENT:MASTER:음악지식
	TIMES SOURCE:환락 , 1.50
;음감의 있고 없음으로 좀 더 증감
IF TALENT:MASTER:음감 == 2
	TIMES SOURCE:환락 , 2.00
ELSEIF TALENT:MASTER:음감 == 1
	TIMES SOURCE:환락 , 1.50
ELSEIF TALENT:MASTER:음감 == -1
	TIMES SOURCE:환락, 0.50
ENDIF

SIF TARGET <= 0
	RETURN 1
SELECTCASE TALENT:TARGET:음악지식
;악기 소유 캐릭터, 프리리바3 자매와 츠쿠모 자매와 라이코가 TARGET
CASE 1
	EXP:MASTER:연주경험 ++
	IF ACCOMPANY_ABLE(TARGET)
		TCVAR:연주일시 = TIME
		DOWNBASE:기력 += 200
		DOWNBASE:체력 += 100
		TIMES SOURCE:환락 , 2.00
		TCVAR:연주참가 = 1
		EXP:연주경험 ++
		PRINTFORMW %타겟은% 악기를 연주하기 시작했다!
		IF ABL:MASTER:음악기능 >= ABL:TARGET:음악기능
			EXP:연주경험 ++
			TIMES SOURCE:정복 , 1.50
		ENDIF
	ENDIF
;가창 캐릭터, 미스티아와 쿄코, 엘렌이 TARGET
CASE 2
	EXP:MASTER:연주경험 ++
	IF ACCOMPANY_ABLE(TARGET)
		TCVAR:연주일시 = TIME
		DOWNBASE:기력 += 200
		DOWNBASE:체력 += 100
		TIMES SOURCE:환락 , 2.00
		TCVAR:연주참가 = 2
		EXP:가창경험 ++
		PRINTFORMW %타겟은% %CALLNAME:MASTER%의 선율에 맞추어 노래하기 시작했다!
		IF ABL:MASTER:음악기능 >= ABL:TARGET:음악기능
			EXP:가창경험 ++
			TIMES SOURCE:정복 , 1.50
		ENDIF
	ENDIF
;무도 캐릭터, 마음, 마이, 사토노
CASE 3
	EXP:MASTER:연주경험 ++
	IF ACCOMPANY_ABLE(TARGET)
		TCVAR:연주일시 = TIME
		DOWNBASE:기력 += 200
		DOWNBASE:체력 += 100
		TIMES SOURCE:환락 , 2.00
		TCVAR:연주참가 = 3
		EXP:무도경험 ++
		PRINTFORMW %타겟은% %CALLNAME:MASTER%의 선율에 맞추어 활약하기 시작했다!
		IF ABL:MASTER:음악기능 >= ABL:TARGET:음악기능
			EXP:무도경험 ++
			TIMES SOURCE:정복 , 1.50
		ENDIF
	ENDIF
CASEELSE
	SIF ABL:MASTER:음악기능 <= ABL:TARGET:음악기능 || TALENT:TARGET:음악지식
		EXP:MASTER:연주경험 ++
ENDSELECT
RETURN 1

;-------------------------------------------------
;실행 판정
;-------------------------------------------------
@COM_ABLE416
;연주 실행 판정
SIF !TFLAG:100
	RETURN 0
;일괄관리
SIF GLOBAL_COMABLE(416)
	RETURN RESULT

;어느 악기(30~34)도 사용할 수 없다
LOCAL:1 = 0
FOR LOCAL,30,35
	SIF MUSIC_ABLE(LOCAL)
		LOCAL:1 ++
NEXT
SIF !LOCAL:1
	RETURN 0

;악기 삼종의 어느쪽이든을 가지고 있어도 13,24,30 목욕탕과 14,40 화장실에서는 연주할 수 없다
;SIF CFLAG:MASTER:현재위치 == 13 || CFLAG:MASTER:현재위치 == 14 || CFLAG:MASTER:현재위치 == 24 || CFLAG:MASTER:현재위치 == 30 || CFLAG:MASTER:현재위치 == 39 || CFLAG:MASTER:현재위치 == 40
SIF (IN_TOILET(CFLAG:MASTER:현재위치) || BATHCHECK(CFLAG:MASTER:현재위치)) && GET_MAPID(CFLAG:MASTER:현재위치) == MAIN_MAP
	RETURN 0
;기력 0
SIF BASE:MASTER:기력 <= 0
	RETURN 0
SIF CFLAG:우후후 == 2
	RETURN 0
;수면중
;차라리 억지로 기상시킨다고 하는 안도 있거나
SIF CFLAG:수면 && !CFLAG:동침중 || CFLAG:동침중
	RETURN 0
;업무중
SIF CFLAG:행동 == 5 && CFLAG:직종 != ENKAI_SANKA
	RETURN 0
;정지 중에는 불가
SIF FLAG:70
	RETURN 0
RETURN 1

@MUSIC_ABLE(ARG)
#FUNCTION
SIF !ITEM:ARG
	RETURNF 0
SELECTCASE ARG
;키보드, 기타, 애완동물
	CASE 30,32,33
		RETURNF 1
;피아노
;하쿠레이 신사 거실, 홍마관의 광장과 폐양관, 지령전의 광장, 서당에 설치하고 있다고 하는 형태입니다.
	CASE 31
		SIF GROUPMATCH(CFLAG:MASTER:현재위치,GET_MAP_REPLACEMENT(9),GET_MAP_REPLACEMENT(222),GET_MAP_REPLACEMENT(309),GET_MAP_REPLACEMENT(335))
			RETURNF 1
		;KR판 오리지날 저택 지원 업데이트
		SIF GROUPMATCH(CFLAG:MASTER:현재위치, GET_MAP_REPLACEMENT(1403),GET_MAP_REPLACEMENT(1412),GET_MAP_REPLACEMENT(1421))
			RETURNF 1
;바이올린
	CASE 34
		SIF ABL:MASTER:음악기능 >= 2
			RETURNF 1
	CASEELSE
		RETURNF 0
ENDSELECT
RETURNF 0

@ACCOMPANY_ABLE(ARG)
#FUNCTION
SIF BASE:ARG:기력 < 200
	RETURNF 0
SIF TIME_PROGRESS(TCVAR:ARG:연주일시) < 90
	RETURNF 0
SIF ABL:MASTER:음악기능 < 3
	RETURNF 0
SIF !SHIRAHU(ARG)
	RETURNF 0
SIF CFLAG:ARG:행동 == 5
	RETURNF 0

RETURNF 1

@THROW_STONE(ARG)
#DIM LISTENER_P
CALL COLORMESSAGE(@"%ARG는% 돌을 던졌다",C_YELLOW,1)
LISTENER_P = ABL:ARG:전투능력
IF RAND:(ABL:MASTER:전투능력 * (2 + CFLAG:ARG:탄막승부승리) + 1) > LISTENER_P
	CALL COLORMESSAGE(@"%마스터는% 화려하게 공격을 회피했다",C_YELLOW,1)
ELSE
	CALL RECOVER(MASTER, (LISTENER_P + 1) * (-150), "체력", @"%CALLNAME:ARG%의 투석")
	RETURN -1
ENDIF

path: ERB/커맨드관련/COMF/일상계/COMF416 연주한다_t.ERB


code:
;-------------------------------------------------
;선잠
;일상계 커맨드, 레벨 1
;-------------------------------------------------
@COM417
#DIM 회복전체력, 2
#DIM 회복전기력, 2
#DIM 회복후체력, 2
#DIM 회복후기력, 2
#DIM 회복률_체력, 4
#DIM 회복률_기력, 4
#DIM 회복률_정력, 4

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

회복률_체력:1 = 240
회복률_기력:1 = 300
회복률_정력:1 = 120

회복률_체력:2 = 280
회복률_기력:2 = 320
회복률_정력:2 = 140

회복률_체력:3 = 300
회복률_기력:3 = 360
회복률_정력:3 = 160

회복전체력:0 = BASE:MASTER:체력
회복전기력:0 = BASE:MASTER:기력
IF TARGET > 0 && CFLAG:TARGET:6 > 0
	회복전체력:1 = BASE:TARGET:체력
	회복전기력:1 = BASE:TARGET:기력
	CALL RECOVER_PERMIL(TARGET, 회복률_체력:(ITEM:오동나무침대), "체력", 1)
	CALL RECOVER_PERMIL(TARGET, 회복률_기력:(ITEM:오동나무침대), "기력", 1)
	CALL RECOVER_PERMIL(TARGET, 회복률_정력:(ITEM:오동나무침대), "정력", 1)
	회복후체력:1 = BASE:TARGET:체력
	회복후기력:1 = BASE:TARGET:기력
		;ABL:친밀을 본다
		IF ABL:친밀 <= 1
			SOURCE:사랑 += (ABL:친밀 * 30)
		ELSEIF ABL:친밀 <= 3
			SOURCE:환락 += 100 + (ABL:친밀 * 40)
			SOURCE:사랑 += 200 + (ABL:친밀 * 30)
		ELSEIF ABL:친밀 <= 5
			SOURCE:환락 += 400 + (ABL:친밀 * 50)
			SOURCE:사랑 += 300 + (ABL:친밀 * 30)
		ELSEIF ABL:친밀 <= 8
			SOURCE:환락 += 700 + (ABL:친밀 * 60)
			SOURCE:사랑 += 400 + (ABL:친밀 * 40)
		ELSEIF ABL:친밀 <= 11
			SOURCE:환락 += 1200 + (ABL:친밀 * 80)
			SOURCE:사랑 += 600 + (ABL:친밀 * 40)
		ELSE
			SOURCE:환락 += 2000 + (ABL:친밀 * 50)
			SOURCE:사랑 += 1500 + (ABL:친밀 * 20)
		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
		CFLAG:333 += 90
		TFLAG:98 += 3
	TFLAG:194 = 1
	PRINTFORML %타겟과% 함께 \@ TIME > 660 && TIME < 900? 낮잠# 선잠\@자기로 했다
ELSE
 	PRINTFORML %마스터는% 조금 \@ TIME > 660 && TIME < 900? 낮잠# 선잠\@자기로 했다
 	TFLAG:194 = 2
ENDIF

CALL RECOVER_PERMIL(MASTER, 회복률_체력:(ITEM:오동나무침대), "체력", 1)
CALL RECOVER_PERMIL(MASTER, 회복률_기력:(ITEM:오동나무침대), "기력", 1)
CALL RECOVER_PERMIL(MASTER, 회복률_정력:(ITEM:오동나무침대), "정력", 1)

TIME += 90
TFLAG:낮잠 = 90
회복후체력:0 = BASE:MASTER:체력
회복후기력:0 = BASE:MASTER:기력
; DRAWLINE
; PRINTFORML 체력+{ABS(회복후체력- 회복전체력)}(%CALLNAME:MASTER%)
; PRINTFORML 기력+{ABS(회복후기력- 회복전기력)}(%CALLNAME:MASTER%)
IF TFLAG:194 == 1
	; PRINTFORML 체력+{ABS(회복후체력:1 - 회복전체력:1)}(%CALLNAME:TARGET%)
	; PRINTFORML 기력+{ABS(회복후기력:1 - 회복전기력:1)}(%CALLNAME:TARGET%)
ENDIF
RETURN 1

;-------------------------------------------------
;실행 판정
;-------------------------------------------------
@COM_ABLE417
;정지 중에는 불가
SIF FLAG:70 == 1
	RETURN 0
;이동 실행 판정
SIF !TFLAG:100
	RETURN 0
;일괄관리
SIF GLOBAL_COMABLE(417)
	RETURN RESULT
;개인 방 설정
SIF CFLAG:MASTER:현재위치 != CFLAG:MASTER:311
	RETURN 0
SIF NEMUKE() < 180
	RETURN 0
SIF NEMUKE() > 720
	RETURN 0
SIF TFLAG:낮잠 > 0
	RETURN 0
SIF CFLAG:우후후 == 2
	RETURN 0
RETURN 1

path: ERB/커맨드관련/COMF/일상계/COMF417 낮잠잔다_t.ERB


code:
;-------------------------------------------------
;텃밭
;일상계 커맨드, 레벨 1
;-------------------------------------------------
@COM418
;LOCAL:1 = 1 + FLAG:畑拡張
LOCAL:1 = GETUNELENGTH418()

FOR LOCAL,0, LOCAL:1
	CALL SHOW_PLANT(LOCAL)
NEXT
PRINTL [999] 그만둔다
$INPUT_LOOP
INPUT
;현재 시간정지중은 표시만 가능
IF INRANGE(RESULT / 100, 0, LOCAL:1) && FLAG:70 == 0
	CALL FARMING(RESULT / 100, RESULT % 100)
	IF RESULT == 0
		RETURN -1
	ELSEIF FLAG:70 == 0
		TIME += RESULT
	ELSE
		BASE:MASTER:TSP -= RESULT * 3
	ENDIF
	RETURN 0
ELSE
	;TIME += 5
	RETURN -1
ENDIF

@FARMING(ARG, 행동번호)
#DIM 행동번호
#DIM 행동코스트
#DIM 밭사이즈

행동코스트 = 0
LOCALS = %HATAKE_NAME:ARG%
IF 행동번호 == 0
	IF PLANT_TYPE:ARG > 0
		PRINTFORML 이미 %조사처리(LOCALS,"가")% 심어져 있다
		;행동코스트 += 5
	ELSE
		PRINTL 어떤 것을 심습니까?
		CALL INPLANT(ARG)
		IF RESULT
			행동코스트 += 10
		ENDIF
	ENDIF
ELSEIF 행동번호 == 1
	IF !PLANT_DRY:ARG
		PRINTL 오늘은 이제 괜찮겠지
	;ELSEIF !TFLAG:물긷기
	ELSEIF VAR_WATER == ""
		PRINTL 물를 길어 와야해
	ELSE
		PLANT_DRY:ARG = 0
		PRINTFORML %LOCALS%에게 물을 주었다
		SIF ITEM:세방울의천수
			FLAG:천적곤신 = 1
		행동코스트 += 5
	ENDIF
ELSEIF 행동번호 == 2
	;収穫処理を関数化
	행동코스트 = HERVEST(ARG, LOCALS)

;全収穫追加
ELSEIF 행동번호 == 6
	;PRINTFORML 全ての畝を収穫します
	밭사이즈 = GETUNELENGTH418()
	FOR LOCAL,0,밭사이즈
		LOCALS = %HATAKE_NAME:LOCAL%
		행동코스트 += HERVEST(LOCAL, LOCALS)
	NEXT
ELSEIF 행동번호 == 3
	IF PLANT_DRY:ARG <= 4 && PLANT_GROW:ARG <= 10
		PRINTFORML %조사처리(LOCALS,"를")% 뽑아냅니까?
		CALL ASK_YN
		IF RESULT
			;행동코스트 += 5
			RETURN 0
		ENDIF
	ENDIF
	PLANT_TYPE:ARG = 0
	PLANT_DAYS:ARG = 0
	PLANT_GROW:ARG = 0
	PLANT_DRY:ARG = 0
	HATAKE_NAME:ARG =
	PLANT_FOOD:ARG = 0
	PRINTFORML %조사처리(LOCALS,"를")% 뽑아냈다
	행동코스트 += 10
;밭이 확장되면 전체로 합니다
ELSEIF 행동번호 == 4 && ITEM:간이풀장 && GETBIT (FLAG:풀장, 2)
	IF !PLANT_DRY:ARG
		PRINTL 오늘은 이제 괜찮겠지
	ELSE
		;PLANT_DRY:ARG = 0

		밭사이즈 = GETUNELENGTH418()
		FOR LOCAL,0, 밭사이즈
			PLANT_DRY:LOCAL = 0
		NEXT
		PRINTFORML %LOCALS%에게 물을 주었다
		SIF ITEM:세방울의천수
			FLAG:천적곤신 = 1
		행동코스트 += 5
	ENDIF
ELSEIF 행동번호 == 5 && ITEM:거름
	IF PLANT_FOOD:ARG
		PRINTL 비료를 너무 뿌리는 것도 좋지 않다
	ELSE
		PLANT_FOOD:ARG = 1
		PRINTFORML %LOCALS%에게 비료를 뿌렸다
		행동코스트 += 20
		ITEM:거름 --
	ENDIF
ELSE
	행동코스트 += 5
	RETURN 0
ENDIF
RETURN 행동코스트

@INPLANT(ARG)
FOR LOCAL, 0, 1000
	IF STRCOUNT(ITEMNAME:LOCAL, "의모종")
		;모종 이외를 제외
		SIF ITEM:LOCAL
			PRINTFORML [{LOCAL}]%ITEMNAME:(LOCAL), 14, LEFT%({ITEM:(LOCAL), 2, RIGHT}/{ITEM:(모종대응작물번호취득(LOCAL)), 2, RIGHT})
	ENDIF
NEXT
PRINTL [999] 그만둔다
$INPUT_LOOP
INPUT
IF ITEM:RESULT && STRCOUNT(ITEMNAME:RESULT, "의모종")
	PRINTFORML 밭 {ARG}에 %조사처리(ITEMNAME:(RESULT),"를")% 심었다
	ITEM:RESULT -= 1
	PLANT_TYPE:ARG = RESULT
	PLANT_DRY:ARG = 1
	;세방울의천수を持っている場合、植えてすぐに施肥、水撒き完了状態に
	IF ITEM:세방울의천수
		PLANT_DRY:ARG = 0
		PLANT_FOOD:ARG = 1
		FLAG:천적곤신 = 1
	ENDIF
	HATAKE_NAME:ARG = %ITEMNAME:(모종대응작물번호취득(PLANT_TYPE:ARG))%
	RETURN 1
ELSE
	RETURN 0
ENDIF

@SHOW_PLANT(ARG)
PRINTFORM 밭 {ARG}：
;正常なアイテムかチェック
IF ITEMNAME:모종대응작물번호취득(PLANT_TYPE:ARG) == ""
	PLANT_TYPE:ARG = 0
	PLANT_DAYS:ARG = 0
	PLANT_GROW:ARG = 0
	PLANT_DRY:ARG = 0
	HATAKE_NAME:ARG =
	PLANT_FOOD:ARG = 0
ENDIF
IF PLANT_TYPE:ARG > 0
	SETCOLOR 0x00FF00
	PRINTFORM %HATAKE_NAME:ARG + "재배중", 16, LEFT%
	IF PLANT_DRY:ARG > 4 || PLANT_GROW:ARG > 10
		SETCOLOR 0x994C00
		PRINT (마름)
	ELSE
		SELECTCASE PLANT_GROW:ARG
			CASE 10
				SETCOLOR 0xFF0000
				PRINT (익음)
			CASE 8,9
				SETCOLOR 0xFF8000
				PRINT (열매)
			CASE 6,7
				SETCOLOR 0xFFFF00
				PRINT (꽃)
			CASE 4,5
				PRINT (잎)
			CASEELSE
				PRINT (모종)
		ENDSELECT
	ENDIF
	IF !PLANT_DRY:ARG
		SETCOLOR C_AQUA
		PRINT 　물 뿌리기가 끝난 상태
	ENDIF
	IF PLANT_FOOD:ARG
		SETCOLOR C_CREAM
		IF ITEM:세방울의천수
			PRINT 　곤신의 축복이 느껴진다
		ELSE
			PRINT   거름주기가 끝난 상태
		ENDIF
	ENDIF
	RESETCOLOR
	PRINTL
	;시간정지중에는 텃밭의 상태를 보는것만
	SIF FLAG:70 == 1
		RETURN
	;물 뿌리기
	IF PLANT_DRY:ARG
		LOCAL = ARG * 100 + 1
		LOCALS = [%TOSTR(LOCAL, "000")%] - 물을 뿌린다
		PRINTBUTTONLC LOCALS, LOCAL
	ELSE
		PRINTLC
	ENDIF
	;수확
	IF 수확가능(ARG)
		LOCAL = ARG * 100 + 2
		LOCALS = [%TOSTR(LOCAL, "000")%] - 수확한다
		SIF PLANT_GROW:ARG == 10
			SETCOLOR 0xFF0000
		PRINTBUTTONLC LOCALS, LOCAL
		RESETCOLOR
	ELSE
		PRINTLC
	ENDIF
	;全収穫追加
	;全て収穫
	IF 수확가능(ARG)
		LOCAL = ARG * 100 + 6
		LOCALS = [%TOSTR(LOCAL, "000")%] - 모두 수확한다
		SIF PLANT_GROW:ARG == 10
			SETCOLOR 0xFF0000
		PRINTBUTTONLC LOCALS, LOCAL
		RESETCOLOR
	ELSE
		PRINTLC
	ENDIF
	;정지
	LOCAL = ARG * 100 + 3
	LOCALS = [%TOSTR(LOCAL, "000")%] - 뽑아낸다
	PRINTBUTTONLC LOCALS, ARG * 100 + 03
	;스프링 쿨러
	IF ITEM:간이풀장 && GETBIT (FLAG:풀장, 2) && PLANT_DRY:ARG
		LOCAL = ARG * 100 + 4
		LOCALS = [%TOSTR(LOCAL, "000")%] - 스프링 쿨러
		PRINTBUTTONLC LOCALS, LOCAL
	ELSE
		PRINTLC
	ENDIF
	;비료를 뿌린다
	IF ITEM:거름 && PLANT_FOOD:ARG == 0
		LOCAL = ARG * 100 + 5
		LOCALS = [%TOSTR(LOCAL, "000")%] - 비료를 뿌린다
		PRINTBUTTONLC LOCALS, LOCAL
	ELSE
		PRINTLC
	ENDIF
ELSE
	PRINTL 빈 곳
	;시간정지중에는 텃밭의 상태를 보는것만
	SIF FLAG:70 == 1
		RETURN
	;모종 심기
	LOCAL = ARG * 100 + 0
	LOCALS = [%TOSTR(LOCAL, "000")%] - 모종을 심는다
	PRINTBUTTONLC LOCALS, LOCAL
ENDIF
PRINTL

@모종대응작물번호취득(ARG)
#FUNCTION
IF STRCOUNT(ITEMNAME:ARG, "의모종")
	IF ARG == GETNUM(ITEM, "로터의모종")
		LOCAL = GETNUM(ITEM, "로터")
	ELSE
		LOCAL = ARG + 200
	ENDIF
ELSE
	LOCAL = ARG
ENDIF
RETURNF LOCAL

@수확가능(ARG)
#FUNCTION
RETURNF PLANT_GROW:ARG > 7 && !(PLANT_DRY:ARG > 4 || PLANT_GROW:ARG > 10)

;-------------------------------------------------
;실행 판정
;-------------------------------------------------
@COM_ABLE418
;정지 중에는 불가
;SIF FLAG:70 == 1
;	RETURN 0
;청소 실행 판정
SIF !TFLAG:100
	RETURN 0
;일괄관리
SIF GLOBAL_COMABLE(418)
	RETURN RESULT
;뜰
SIF !텃밭가능(CFLAG:MASTER:현재위치)
	RETURN 0
;텃밭 세트
SIF !ITEM:150
	RETURN 0
;기력 0
SIF BASE:MASTER:기력 <= 0
	RETURN 0
SIF CFLAG:우후후 == 2
	RETURN 0
RETURN 1

@GETUNELENGTH418()
#FUNCTION
#DIM 밭사이즈

IF TALENT:MASTER:채집Lv > 5
	밭사이즈 = 1 + 3
ELSEIF TALENT:MASTER:채집Lv > 4
	밭사이즈 = 1 + 2
ELSEIF TALENT:MASTER:채집Lv > 2
	밭사이즈 = 1 + 2
ELSEIF TALENT:MASTER:채집Lv > 0
	밭사이즈 = 1 + 1
ELSE
	밭사이즈 = 1
ENDIF
RETURNF 밭사이즈

;全収穫追加
;----------------------------------
;畝一つの収穫処理
;ARG:苗インデックス, ARGS:苗の名称
;-----------------------------------
@HERVEST(ARG, ARGS)
#FUNCTION
#DIM 행동코스트

	행동코스트 = 0

	;八百屋で購入できるようになったため収穫条件の厳格化
	IF 수확가능(ARG) == 0
		;PRINTL 収穫できる状態ではない
		RETURNF 행동코스트
	ENDIF
	SIF PLANT_DAYS:ARG > 9
		PLANT_GROW:ARG += 2
	SIF PLANT_FOOD:ARG
		PLANT_GROW:ARG ++
	SIF FLAG:천적곤신 && RAND:2 == 1
		PLANT_GROW:ARG += 2
	;大豊作…天滴とこやし補正でないと到達不能
	IF PLANT_GROW:ARG > 12
		PRINTL 대풍작이다!
		IF PLANT_FOOD:ARG
			LOCAL = 20 + RAND:6 + RAND:4
		ELSE
			LOCAL = 20
		ENDIF
	ELSEIF PLANT_GROW:ARG > 10
		PRINTL 풍작이다!
		IF PLANT_FOOD:ARG
			LOCAL = 14 + RAND:4 + RAND:3
		ELSE
			LOCAL = 14
		ENDIF
	ELSEIF PLANT_GROW:ARG > 7
		IF PLANT_FOOD:ARG
			LOCAL = 7 + RAND:3 + RAND:2
		ELSE
			LOCAL = 7
		ENDIF
	ELSE
		LOCAL = 5
	ENDIF
	SIF TCVAR:MASTER:풍요
		LOCAL += LOCAL / 5
	;ローター一強を崩すため収穫量ダウン
	IF 모종대응작물번호취득(PLANT_TYPE:ARG) == 0
		LOCAL /= 2
	ENDIF

	PRINTFORML {LOCAL}개의 %조사처리(ARGS,"를")% 수확했다
	ITEM:(모종대응작물번호취득(PLANT_TYPE:ARG)) += LOCAL
	PLANT_TYPE:ARG = 0
	PLANT_DAYS:ARG = 0
	PLANT_GROW:ARG = 0
	PLANT_DRY:ARG = 0
	HATAKE_NAME:ARG =
	PLANT_FOOD:ARG = 0
	행동코스트 += 20
RETURNF 행동코스트

path: ERB/커맨드관련/COMF/일상계/COMF418 텃밭_t.ERB


code:
;-------------------------------------------------
;물긷기
;일상계 커맨드, 레벨 1
;-------------------------------------------------
@COM419
SELECTCASE CFLAG:MASTER:현재위치
	CASE 안개의호수
		;TFLAG:水汲み = 2
		VAR_WATER = 안개의 호수의 물
	CASE 347
		VAR_WATER = 안개의 호수의 물
	CASE 옛지옥온천
		;TFLAG:水汲み = 3
		VAR_WATER = 지옥 온천의 물
	CASE 934
		VAR_WATER = 지옥 온천의 물
	CASE 산의호수
		VAR_WATER = 기적의 물
	CASE 814
		VAR_WATER = 기적의 물
	;아이템 설정 있어도 입수 경로가 생각해내지 못하기 때문에 코멘트 아웃
	;CASE
	;	TFLAG:물긷기 = 5
	;CASE
	;	TFLAG:물긷기 = 5
	;CASE 부엌
	;	TFLAG:물긷기 = 6
	;CASE 11
	;	TFLAG:물긷기 = 6
	;CASE 주택가
	;	TFLAG:물긷기 = 7
	;CASE 270
	;	TFLAG:물긷기 = 7
	CASEELSE
		VAR_WATER = 그냥 물
ENDSELECT

STAIN:MASTER:0 = 0
STAIN:MASTER:1 = 0
CFLAG:MASTER:구내정액 = 0
CFLAG:MASTER:안면정액 = 0
CFLAG:MASTER:손에정액 = 0
IF TARGET
	STAIN:0 = 0
	STAIN:1 = 0
	CFLAG:구내정액 = 0
	CFLAG:안면정액 = 0
	CFLAG:손에정액 = 0
ENDIF
PRINTFORML %조사처리(VAR_WATER,"를")% 퍼 올렸다
IF GET_MAPID(CFLAG:MASTER:현재위치) != MAIN_MAP
	PRINTL 가진 채로 걷는 것은 힘들기 때문에 귀가합니다
	CALL 외출처로부터귀가
ENDIF
TIME += 3
RETURN -1
;-------------------------------------------------
;실행 판정
;-------------------------------------------------
@COM_ABLE419
;정지 중에는 불가
SIF FLAG:70 == 1
	RETURN 0
;실행 판정
SIF !TFLAG:100
	RETURN 0
;일괄관리
SIF GLOBAL_COMABLE(419)
	RETURN RESULT
SIF !물긷기가능(CFLAG:MASTER:현재위치)
	RETURN 0
SIF CFLAG:우후후 == 2
	RETURN 0
RETURN 1

path: ERB/커맨드관련/COMF/일상계/COMF419 물긷기_t.ERB


code:
;-------------------------------------------------
;루코토와 대화
;일상계 커맨드, 레벨 1
;-------------------------------------------------
@COM420
PRINTL 「뭔가 용무가 있으신가요?」
PRINTL [0] - 사람을 찾고 있다
PRINTL [1] - 청소를 하고 싶다
PRINTL [2] - git에 대해
PRINTL [100] - 돌아간다
INPUT
IF RESULT == 0
	PRINTL 「누구를 찾으세요?」
	CALL HITOSAGASI()
ELSEIF RESULT == 1
CALL OHEYA_CHECK
ELSEIF RESULT == 2
	PRINTDATA
		DATAFORM 「git을 사용하면 패치를 한 방에 Merge할 수 있어요」
		DATAFORM 「git이 있으면 변경한 곳을 쉽게 파악 가능해져요」
		DATAFORM 「과거의 코드도 확실하게 보존해주고요」
	ENDDATA
	PRINTW 아무래도 굉장한 것인가 보다
	RETURN -1
ELSEIF RESULT == 100
	RETURN -1
ELSE
	RETURN -1
ENDIF
INPUTS
RESULT = TOINT(RESULTS)
IF RESULT == 0
	REPLACE RESULTS, CALLNAME:MASTER, "%CALLNAME:MASTER%"
	FOR LOCAL, 1, 19
		SIF STR:LOCAL == RESULTS
			RESULT = LOCAL
	NEXT
ENDIF
SIF RESULT == 0
	RETURN -1
; IF FLAG:자실잠금
; 	PRINTW 잠금을 풀지 않으면
; 	RESTART
; ENDIF
SIF IN_HOME(RESULT) == 1
	CALL SKIP_MOVE(CFLAG:MASTER:현재위치, RESULT)
RETURN -1

@OHEYA_CHECK
VARSET LOCAL
FOR LOCAL, MINROOM(), MAXROOM
	LOCALS = %NAME_FROM_PLACE(LOCAL)%
	SIF LOCALS == ""
		CONTINUE
	SIF CFLAG:MASTER:현재위치 == LOCAL
		SETCOLOR C_GREEN
	; PRINTBUTTON "["+LOCALS+"]", LOCAL
	; RESETCOLOR
	; PRINTFORM %" "*(22-STRLENS(LOCALS))%
	PRINTFORM [{LOCAL, 3}]%LOCALS, 24, LEFT%
	LOCALS = %SEIKETU(LOCAL), 15, RIGHT%
	PRINTFORM %LOCALS%
	RESETCOLOR
	LOCAL:1 ++
	SIF LOCAL:1 % 2 == 0
		PRINTL
NEXT
PRINTFORML
DRAWLINE
PRINTFORML [0] 돌아간다
;PRINTBUTTON "[확인 종료]", 0

@SEIKETU(ARG)
#FUNCTIONS
IF OUTROOF(ARG) && DAY:2 == 4
	SELECTCASE YOGORE:ARG
		CASE IS < 100
			SETCOLOR C_GREEN
			RETURNF "적설량:깔끔"
		CASE IS < 500
			SETCOLOR C_M_GREEN
			RETURNF "적설량:소"
		CASE IS < 1000
			SETCOLOR C_P_GREEN
			RETURNF "적설량:약간 소"
		CASE IS < 2000
			SETCOLOR 0xFFFFFF
			RETURNF "적설량:중"
		CASE IS < 3500
			SETCOLOR 0xFFFFFF
			RETURNF "적설량:약간 대"
		CASE IS < 5000
			SETCOLOR 0xFFFFFF
			RETURNF "적설량:대"
		CASEELSE
			SETCOLOR 0xFFFFFF
			RETURNF "적설량:눈더미"
	ENDSELECT
ELSE
	SELECTCASE YOGORE:ARG
		CASE IS < 100
			SETCOLOR C_GREEN
			RETURNF "청결도:최고"
		CASE IS < 500
			SETCOLOR C_M_GREEN
			RETURNF "청결도:고"
		CASE IS < 1000
			SETCOLOR C_P_GREEN
			RETURNF "청결도:약간 고"
		CASE IS < 2000
			SETCOLOR C_YELLOW
			RETURNF "청결도:중"
		CASE IS < 3500
			SETCOLOR C_V_PINK
			RETURNF "청결도:약간 저"
		CASE IS < 5000
			SETCOLOR C_RED
			RETURNF "청결도:저"
		CASEELSE
			SETCOLOR C_RED
			RETURNF "청결도:쓰레기산"
	ENDSELECT
ENDIF

@HITOSAGASI(ARG)
CALL HITOSAGASI_2(1)
CALL HITOSAGASI_2(2)
PRINTFORML [0] 돌아간다
;PRINTBUTTON "[확인 종료]", 0

;ARG=몇번째의 표시인가(1or2)
@HITOSAGASI_2(ARG)
SIF FLAG:정렬
	CALL CHARASORT_EX
FOR LOCAL:1, 1, EX_CHARANUM
	IF FLAG:정렬
		LOCAL = RESULT:(LOCAL:1)
		SIF LOCAL < 0
			CONTINUE
	ELSE
		LOCAL = LOCAL:1
		SIF LOCAL >= CHARANUM
			BREAK
	ENDIF
	SIF AT_HOME(LOCAL) == 0
		CONTINUE
	SIF CFLAG:LOCAL:현재위치 < MINROOM()
		CONTINUE
	SIF CFLAG:LOCAL:현재위치 == MAXROOM && CFLAG:LOCAL:수면
		CONTINUE
	IF ARG == 1
		SIF !CFLAG:LOCAL:신사거주
			CONTINUE
		SETCOLOR C_S_BLUE
	ELSEIF ARG == 2
		SIF CFLAG:LOCAL:신사거주
			CONTINUE
	ENDIF
	PRINTFORM %CALLNAME:LOCAL, 15, LEFT%
	RESETCOLOR
	LOCALS = %NAME_FROM_PLACE(CFLAG:LOCAL:현재위치)%
	; LOCALS = %NAME_FROM_PLACE(CFLAG:LOCAL:현재위치)%
	; SIF CFLAG:LOCAL:현재위치 == CFLAG:MASTER:311
	; 	LOCALS = %CALLNAME:MASTER% 방
	; PRINTBUTTON "["+LOCALS+"]", CFLAG:LOCAL:현재위치
	; PRINTFORM %" "*(22-STRLENS(LOCALS))%
	PRINTFORM [{CFLAG:LOCAL:현재위치, 3}] %LOCALS, 24, LEFT%
	IF LOCALS == ""
		PRINTFORML 알 수 없는 위치에 있습니다({CFLAG:LOCAL:현재위치})
	ELSEIF CFLAG:LOCAL:수면
		;PRINTL 취침중
		;KR판 추가수정, 취침중 색 변경
		CALL COLORMESSAGE("취침중", C_N_BLUE, 1)
	ELSEIF CFLAG:LOCAL:행동 == 5
		IF CFLAG:LOCAL:현재위치 == TFLAG:연회장 && TIME_PROGRESS(TIME:1) && (CFLAG:LOCAL:직종 == 49 || CFLAG:LOCAL:직종 == 51)
			PRINTL 연회중
		ELSE
			;PRINTL 일하는중
			;KR판 추가수정, 일하는중 색 변경
			CALL COLORMESSAGE("일하는중", C_D_ORANGE, 1)
		ENDIF
	ELSE
		PRINTL
	ENDIF
NEXT

;-------------------------------------------------
;실행 판정
;-------------------------------------------------
;루코토와이야기한다
@COM_ABLE420
;자택외는 불가
SIF AT_HOME(MASTER) == 0
	RETURN 0
;정지 중에는 불가
SIF FLAG:70 == 1
	RETURN 0
;이동 실행 판정
SIF !TFLAG:100
	RETURN 0
;일괄관리
SIF GLOBAL_COMABLE(420)
	RETURN RESULT
SELECTCASE MAIN_MAP
	CASE 0
		;루코토가 자고 있으면 안 됨
		SIF CFLAG:2:수면
			RETURN 0
		;루코토가 있는 곳
		SIF CFLAG:MASTER:현재위치 != CFLAG:2:현재위치
			RETURN 0
	CASE 3
		SIF CFLAG:MASTER:현재위치 != 323
			RETURN 0
	CASE 9
		SIF CFLAG:MASTER:현재위치 != 923
			RETURN 0
	CASEELSE
		RETURN 0
ENDSELECT

SIF CFLAG:우후후 == 2
	RETURN 0
RETURN 1

path: ERB/커맨드관련/COMF/일상계/COMF420 루코토와이야기_t.ERB


code:
;-------------------------------------------------
;발원함
;일상계 커맨드, 레벨 1
;-------------------------------------------------
@COM421
#DIM 감도상승캐릭
PRINTL 무엇을 바랍니까?
$INPUT_LOOP
PRINTL [0] - 결연(\1000)
SIF TALENT:MASTER:2 & 2
PRINTL [1] - 정력 절륜(\3000)
PRINTL [2] - 마음의 평안(\3000)
PRINTL [3] - 젖가슴 젖가슴(\3000)
PRINTL [10] - Girl의 팬티를 달라ー고!!!!(\5000)
PRINTL [15] - 모두가 H한 기분이 되길(\10000)
SIF TARGET && ABL:새드끼 >= 1
	PRINTFORML [16] - \@ TALENT:연인? 환상향에서 제일 귀여운# \@ %타겟이% 너무 격렬하므로 어떻게든 해
SIF TARGET
	PRINTFORML [20] - \@ TALENT:연인? 환상향에서 제일 귀여운# \@ %타겟이% 좀 더 H하게 되도록
SIF TALENT:TARGET:연모 && !TALENT:임신
	PRINTFORML [21] - 자식기원(현재의 자식보정:{CFLAG:자식보정})
;KR판 구잔재 또는 오리지날 22,31
PRINTFORML [22] - 연인의 감도를 올리고 싶어
PRINTFORML [30] - 여자 아이에게 미움받아 버린 것을 어떻게든 하고 싶다
PRINTFORML [31] - 여자 아이에게 약점잡혀 버린 것을 어떻게든 하고 싶다
;21/08/27 반발이력 삭제 추가
PRINTFORML [35] - 여자 아이의 응어리를 풀고 싶다
SIF CFLAG:MASTER:마력회수 && CFLAG:MASTER:요술망치 < 6
	PRINTFORML [40] - 요술망치의 대상을 없애면 좋겠다
SIF FLAG:개운대문구입회수 > 10
	PRINTFORML [50] - 악덕 상인에게 천벌을
SIF CAN_DOWSING()
	PRINTFORML [60] - 찾는 물건을 찾을 수 없다
PRINTL [999] - 역시 그만둔다
INPUT
SIF RESULT == 999
	RETURN -1

IF RESULT == 0
	IF MONEY < 1000
		PRINTL 돈이 부족하다
		GOTO INPUT_LOOP
	ENDIF
	PRINTL 누구를 떠올립니까?
	CALL SHOW_CHALALIST
	PRINTL
	PRINTL [999] - 역시 그만둔다
	INPUT
	IF !INRANGE(RESULT,1,CHARANUM)
		RETURN -1
	ELSE
		CALL GANKAKE_0(RESULT)
		MONEY -= 1000
	ENDIF
;정력 절륜
ELSEIF RESULT == 1
	IF MONEY < 3000
		PRINTL 돈이 부족하다
		GOTO INPUT_LOOP
	ENDIF
	MONEY -= 3000
	FLAG:발원내용 = 200
	IF EXP:MASTER:11 > (100 + FLAG:561 * 100) && FLAG:561 < 11
		LOCAL += 100
		FLAG:561 += 1
	ENDIF
	CALL BUFF_BASE(MASTER,BASE_정력, 500)
	FLAG:71 ++
;마음의 평안
ELSEIF RESULT == 2
	IF MONEY < 3000
		PRINTL 돈이 부족하다
		GOTO INPUT_LOOP
	ENDIF
	MONEY -= 3000
	CALL BUFF_BASE(MASTER, BASE_기력, 500)
	FLAG:발원내용 = 201
	FLAG:71 = 0
ELSEIF RESULT == 3
	IF MONEY < 3000
		PRINTL 돈이 부족하다
		GOTO INPUT_LOOP
	ENDIF
	MONEY -= 3000
	PRINTFORML %마스터는% 손을 모으면서 집중해서 젖가슴을 생각했다
	TFLAG:OPPAI = 1
ELSEIF RESULT == 10
	IF MONEY < 5000
		PRINTL 돈이 부족하다
		GOTO INPUT_LOOP
	ELSE
		MONEY -= 5000
		FLAG:발원내용 = 202
	ENDIF
ELSEIF RESULT == 15
	IF MONEY < 10000
		PRINTL 돈이 부족하다
		GOTO INPUT_LOOP
	ELSE
		MONEY -= 10000
		FLAG:발원내용 = 203
	ENDIF
ELSEIF RESULT == 16 && ABL:새드끼
		CALL IKENIE(TARGET,7)
ELSEIF RESULT == 20 && TARGET != 0
		CALL IKENIE(TARGET,2)
ELSEIF RESULT == 21 && TALENT:TARGET:연모
		CALL IKENIE(TARGET,6)
;;KR판 오리지날 22
ELSEIF RESULT == 22
	PRINTL 누구를?
	DRAWLINE
	FOR LOCAL, 1, CHARANUM
		SIF TALENT:LOCAL:연인 && !CFLAG:LOCAL:출금
			PRINTFORMLC [{LOCAL}] %CALLNAME:LOCAL, 15, LEFT%
	NEXT
	PRINTL
	DRAWLINE
	PRINTL [999] - 역시 그만둔다
	INPUT
	IF RESULT >= 1 && RESULT <= CHARANUM && TALENT:RESULT:연인
		감도상승캐릭=RESULT
		$INPUT_LOOP2
		PRINTFORML [1] - C감도 \@TALENT:감도상승캐릭:C감도?  - [%GET_TALENTNAME(101, TALENT:감도상승캐릭:C감도)%]  # \@
		PRINTFORML [2] - V감도 \@TALENT:감도상승캐릭:V감도?  - [%GET_TALENTNAME(102, TALENT:감도상승캐릭:V감도)%]  # \@
		PRINTFORML [3] - A감도 \@TALENT:감도상승캐릭:A감도?  - [%GET_TALENTNAME(103, TALENT:감도상승캐릭:A감도)%]  # \@
		PRINTFORML [4] - B감도 \@TALENT:감도상승캐릭:B감도?  - [%GET_TALENTNAME(104, TALENT:감도상승캐릭:B감도)%]  # \@
		PRINTFORML [5] - M감도 \@TALENT:감도상승캐릭:M감도?  - [%GET_TALENTNAME(106, TALENT:감도상승캐릭:M감도)%]  # \@
		PRINTL [999] - 역시 그만둔다
		INPUT
		SELECTCASE RESULT
			CASE 1,2,3,4
				IF TALENT:감도상승캐릭:(100+RESULT)>=1
					PRINTL 더 이상 감도를 올릴 수 없습니다.
					RETURN -1
				ELSE
					CALL IKENIE(감도상승캐릭, 8+RESULT)
				ENDIF
			CASE 5
				IF TALENT:감도상승캐릭:M감도>=2
					PRINTL 더 이상 감도를 올릴 수 없습니다.
					RETURN -1
				ELSE
					CALL IKENIE(감도상승캐릭, 13)
				ENDIF
			CASE 999
				RETURN -1
		ENDSELECT
	ELSE
		RETURN -1
	ENDIF

ELSEIF RESULT == 30
	PRINTL 누구를?
	DRAWLINE
	FOR LOCAL,1,CHARANUM
		SIF MARK:LOCAL:반발각인 && !CFLAG:LOCAL:출금
			PRINTFORMLC [{LOCAL}] %CALLNAME:LOCAL,15,LEFT%
	NEXT
	PRINTL
	DRAWLINE
	PRINTL [999] - 역시 그만둔다
	INPUT
	IF RESULT >= 1 && RESULT <= CHARANUM && MARK:RESULT:반발각인
		CALL IKENIE(RESULT,1)
	ELSE
		RETURN -1
	ENDIF
ELSEIF RESULT == 35
	PRINTL 누구를?
	DRAWLINE
	FOR LOCAL,1,CHARANUM
		SIF !MARK:LOCAL:반발각인 && MARK:LOCAL:반발취득이력 && !CFLAG:LOCAL:출금
			PRINTFORMLC [{LOCAL}] %CALLNAME:LOCAL,15,LEFT%
	NEXT
	PRINTL
	DRAWLINE
	PRINTL [999] - 역시 그만둔다
	INPUT
	IF RESULT >= 1 && RESULT <= CHARANUM && !MARK:RESULT:반발각인 && MARK:RESULT:반발취득이력
		CALL IKENIE(RESULT,14) ; KR판 임의수정, 번호 충돌로 인한 8 > 14 변경,
	ELSE
		RETURN -1
	ENDIF

;;KR판 오리지날 31
ELSEIF RESULT == 31
	PRINTL 누구를?
	DRAWLINE
	FOR LOCAL, 1, CHARANUM
		SIF CFLAG:LOCAL:약점잡음 && !CFLAG:LOCAL:출금
			PRINTFORMLC [{LOCAL}] %CALLNAME:LOCAL, 15, LEFT%
	NEXT
	PRINTL
	DRAWLINE
	PRINTL [999] - 역시 그만둔다
	INPUT
	IF RESULT >= 1 && RESULT <= CHARANUM && CFLAG:RESULT:약점잡음
		CALL IKENIE(RESULT, 8)
	ELSE
		RETURN -1
	ENDIF
ELSEIF RESULT == 40 && CFLAG:MASTER:마력회수 && CFLAG:MASTER:요술망치 < 6
	CALL IKENIE(71,3)
ELSEIF RESULT == 50 && FLAG:개운대문구입회수 > 10
	CALL IKENIE(53,5)
ELSEIF RESULT == 60 && CAN_DOWSING()
	CALL DOWSING_PANTS
ENDIF
DOWNBASE:MASTER:기력 = 100
TIME += 10
RETURN 1

;발원함
@COM_ABLE421
;정지 중에는 불가
SIF FLAG:70 == 1
	RETURN 0
;청소 실행 판정
SIF !TFLAG:100
	RETURN 0
;벌써 오늘 기원 드려서 등 연주한다
SIF FLAG:발원내용 > 0
	RETURN 0
;일괄관리
SIF GLOBAL_COMABLE(421)
	RETURN RESULT
;새전함
SIF !하늘의소리가능(CFLAG:MASTER:현재위치) && CFLAG:MASTER:현재위치 != 모리야신사본전
	RETURN 0
;기력 0
SIF BASE:MASTER:기력 <= 0
	RETURN 0
SIF CFLAG:우후후 == 2
	RETURN 0
RETURN 1

path: ERB/커맨드관련/COMF/일상계/COMF421 발원함_t.ERB


code:
;-------------------------------------------------
;하늘의 소리를 듣는다
;일상계 커맨드, 레벨 1
;-------------------------------------------------
@COM422
PRINTL [0] - 사람을 찾고 있다
PRINTL [1] - 청소를 하고 싶다
PRINTL [2] - 밖에 있는 사람을 찾고 싶다
;SIF STALKED
;	PRINTFORML [3] - 【쫒기】대상변경（현재 대상: %CALLNAME:STALKED%）
PRINTL [100] - 돌아간다
INPUT
IF RESULT == 0
	CALL HITOSAGASI()
ELSEIF RESULT == 1
	CALL OHEYA_CHECK
ELSEIF RESULT == 2
	CALL BROAD_HITOSAGASI
	TIME += 3
	RETURN 1
ELSEIF RESULT == 100
	RETURN -1
ENDIF
INPUTS
RESULT = TOINT(RESULTS)
IF RESULT == 0
	REPLACE RESULTS, CALLNAME:MASTER, "%CALLNAME:MASTER%"
	FOR LOCAL, 1, 19
		SIF STR:LOCAL == RESULTS
			RESULT = LOCAL
	NEXT
ENDIF

IF (RESULT >= 26 && RESULT <= 35) && ABL:MASTER:교양 < 1 && !INRANGE(CFLAG:MASTER:초기위치, 26,35)
	PRINTFORMW 미숙한 %마스터로%선 찾아낼 수 없다…
ELSE
	IF IN_HOME(RESULT) == 1
		SIF AT_HOME(MASTER) == 0
			GOTO MURIDESU
		CALL SKIP_MOVE(CFLAG:MASTER:현재위치, RESULT)
	ENDIF
ENDIF

TIME += 10
RETURN 1
$MURIDESU
PRINTW 여기에서는 갈 수 없다…
TIME += 10
RETURN 1

@BROAD_HITOSAGASI
$KAKUNIN
FOR LOCAL,0,11
	SIF LOCAL == MAIN_MAP
		CONTINUE
	LOCAL:1 = 5000 + LOCAL
	PRINTFORMLC [{LOCAL}] - %STR:(LOCAL:1)%
	CALL 광역체크(LOCAL,1)
	CALL 광역체크(LOCAL,2)
	PRINTL
NEXT
DRAWLINE
PRINT [100] - 확인 종료
$INPUT_LOOP
INPUT
IF RESULT == 100 || RESULT == MAIN_MAP
	RETURN -1
ELSEIF RESULT < 0
	CLEARLINE 1
	GOTO INPUT_LOOP
ELSEIF RESULT >= 11
	PRINTW 미작성입니다
	CLEARLINE 2
	GOTO INPUT_LOOP
ENDIF
CALL 광역체크(RESULT,2)
CALL ASK_YN("다른 지역을 본다","확인 종료")
SIF !RESULT
	GOTO KAKUNIN

@광역체크(ARG,ARG:1)
VARSET LOCAL

FOR LOCAL,1,CHARANUM
	SIF AT_HOME(LOCAL) == 1
		CONTINUE
	SIF CFLAG:LOCAL:현재위치 == MAXROOM && CFLAG:LOCAL:수면
		CONTINUE
	FOR LOCAL:1,10,100,10
		IF CFLAG:LOCAL:현재위치 == ARG * 100 + LOCAL:1
			;그 지역에 있는 캐릭터를표시
			IF ARG:1 == 2
				SIF CFLAG:LOCAL:행동 == 5
					SETCOLOR 255, 100, 0
				PRINTFORM %CALLNAME:LOCAL%
				RESETCOLOR
			ENDIF
			LOCAL:2 ++
		ENDIF
	NEXT
NEXT
;그 지역에 있는 인원수
IF ARG:1 == 1
	IF LOCAL:2
		PRINTFORML {LOCAL:2}인
	ELSE
		PRINTL 아무도 없다
	ENDIF
ENDIF

;하늘의 소리를 듣는다
@COM_ABLE422
;정지 중에는 불가
SIF FLAG:70 == 1
	RETURN 0
;실행 판정
SIF !TFLAG:100
	RETURN 0
;일괄관리
SIF GLOBAL_COMABLE(421)
	RETURN RESULT
;새전함
SIF !하늘의소리가능(CFLAG:MASTER:현재위치)
	RETURN 0
SIF CFLAG:우후후 == 2
	RETURN 0
RETURN 1

path: ERB/커맨드관련/COMF/일상계/COMF422 하늘의소리를듣는다_t.ERB


code:
;-------------------------------------------------
;도구를산다
;-------------------------------------------------
@COM423
;TFLAG:194 = 1
;;PRINTFORML {ITEMSALES:62}
;CALL ITEM_SALES
;DRAWLINE
;CALL LIST_ITEM("캇파 도구")
;DRAWLINE
;PRINTL 「지금이라면 싸게 해 두어」
;PRINTFORML 구입할 아이템을 선택해주세요 소지금 :\\%TOSTR(MONEY,"#,###")%
;;CALL TOOL_BUY
;CALL SHOW_ITEM, "캇파 도구", 3
;PRINTL
;DRAWLINE
;PRINT [100] - 돌아간다　　　　　[101] - 도구의 개조　[102] - 도구의 개발
;INPUT
;LOCAL = RESULT
;SELECTCASE LOCAL
;CASE 100
;	RETURN -1
;CASE 101
;	CALL TOOL_CUSTOM
;	SIF RESULT
;		RETURN RESULT
;CASE 102
;	PRINTL 「개발하려면 git이 필요하다」
;	PRINTW git란 도대체…
;	RETURN -1
;CASEELSE
;	SELECTCASE ITEMSTOCK(LOCAL)
;	CASE 1, 4
;		RETURN -1
;	CASE 2
;		PRINTW 품절입니다
;		RETURN -1
;	CASE 3
;		PRINTW 소지금이 충분하지 않습니다
;		RETURN -1
;	CASE 5
;		PRINTW 이미 충분히 가지고 있습니다
;		RETURN -1
;	CASEELSE
;		SIF !INRANGE(LOCAL, 0, 100)
;			RETURN -1
;	ENDSELECT
;	PRINTFORML %조사처리(ITEMNAME:LOCAL,"를")% 구입하겠습니까?
;	PRINTL [0] - 네  [1] - 아니오
;	INPUT
;	SIF RESULT
;		RETURN -1
;	ITEM:LOCAL ++
;	SELECTCASE ITEMSALES:LOCAL
;	CASE IS > 1
;		ITEMSALES:LOCAL --
;	CASE 1
;		ITEMSALES:LOCAL = -1
;	ENDSELECT
;	MONEY -= ITEMPRICE:LOCAL / 3
;ENDSELECT
;RESTART

;도구를산다
@COM_ABLE423
;일단 정지
RETURN 0
;정지 중에는 불가
SIF FLAG:70 == 1
	RETURN 0
;이동 실행 판정
SIF !TFLAG:100
	RETURN 0
;일괄관리
SIF GLOBAL_COMABLE(423)
	RETURN RESULT
;니토리가 있는 곳
SIF TARGET != 51
	RETURN 0
SIF CFLAG:우후후 == 2
	RETURN 0
RETURN 1

path: ERB/커맨드관련/COMF/일상계/COMF423 도구를산다_t.ERB


code:
;-------------------------------------------------
;약을산다
;-------------------------------------------------
@COM424
;#DIM 買うもの
;#DIM 바가지
;DRAWLINE
;CALL LIST_ITEM("토끼 약품")
;DRAWLINE
;PRINTFORML 구입할 아이템을 선택해주세요 소지금:%금액표시(MONEY)%
;PRINTL
;VARSET LOCALS
;CALL EX_SHOPPING(GETNUM(ITEM, "로션"),"로션 물병(와인)","로션이 든 큰병. 5회분은 있을 것이다. ", 1000, 5)
;CALL EX_SHOPPING(GETNUM(ITEM, "콘돔"),"콘돔 이득용 팩","50개나 들어가 있다. ", 1000, 50)
;CALL EX_SHOPPING(GETNUM(ITEM, "피임약"),"필(5정들이)","밝은 가족 계획", 5000, 5)
;CALL ITEM_SHOPPING(GETNUM(ITEM, "미약"),"호의를 품기 쉬워진다")
;CALL ITEM_SHOPPING(GETNUM(ITEM, "수면제"),"악용하면 안 돼요?")
;CALL ITEM_SHOPPING(GETNUM(ITEM, "영양드링크"),"타우린 1000mg 배합")
;CALL ITEM_SHOPPING(GETNUM(ITEM, "정력제"),"더러운 부자 납품업자")
;CALL ITEM_SHOPPING(GETNUM(ITEM, "우콘드링크"),"술 마시기 전에")
;CALL ITEM_SHOPPING(GETNUM(ITEM, "붕대"),"상처를 입은 데나 숨기고 싶은 장소에 감자")
;SIF TARGET == [[테위]] && !ITEM:토부「개운대문」
;	CALL ITEM_SHOPPING(GETNUM(ITEM, "토부「개운대문」"),"럭키 색골이 일어나는 꿈의 아이템")
;DRAWLINE
;PRINTL [999] 그만둔다
;INPUT
;
;IF RESULT == 999
;	RETURN -1
;ELSEIF RESULT == GETNUM(ITEM, "토부「개운대문」") && TARGET == [[테위]] && !ITEM:토부「개운대문」
;	CALL BOTTAKURI
;ELSEIF RESULT == GETNUM(ITEM, "로션")
;	CALL ITEM_CARTON(RESULT, 1000, 5)
;ELSEIF RESULT == GETNUM(ITEM, "콘돔")
;	CALL ITEM_CARTON(RESULT, 1000, 50)
;ELSEIF RESULT == GETNUM(ITEM, "피임약")
;	CALL ITEM_CARTON(RESULT, 5000, 5)
;ELSE
;	買うもの = RESULT
;	바가지 = ITEMPRICE:買うもの
;	CALL ITEMDATA(買うもの, "TYPE:토끼 약품")
;	IF RESULT
;		CALL ITEMDATA(買うもの, "구입")
;		SIF !RESULT
;			RESTART
;	ELSE
;		RESTART
;	ENDIF
;ENDIF
;RESTART

;약을산다
@COM_ABLE424
;일단 정지
RETURN 0
;정지 중에는 불가
SIF FLAG:70 == 1
	RETURN 0
;이동 실행 판정
SIF !TFLAG:100
	RETURN 0
;일괄관리
SIF GLOBAL_COMABLE(424)
	RETURN RESULT
SIF CFLAG:MASTER:현재위치 != CFLAG:[[우동게]]:현재위치 && CFLAG:MASTER:현재위치 != CFLAG:[[테위]]:현재위치
	RETURN 0
SIF CFLAG:우후후 == 2
	RETURN 0
RETURN 1

path: ERB/커맨드관련/COMF/일상계/COMF424 약을산다_t.ERB


code:
;-------------------------------------------------
;약을 탄다
;일상계 커맨드, 레벨 1
;-------------------------------------------------
@COM425
PRINTL 어느 약을 섞겠습니까?
$LOOP
SIF ITEM:41
	PRINTFORML [{41}] %ITEMNAME:41%
SIF ITEM:42
	PRINTFORML [{42}] %ITEMNAME:42%
SIF ITEM:250
	PRINTFORML [{250}] %ITEMNAME:250%
SIF ITEM:252
	PRINTFORML [{252}] %ITEMNAME:252%
PRINTL [999] 그만둔다
INPUT

SIF RESULT == 999
	RETURN 0
IF RESULT != 41 && RESULT != 42 && RESULT != 250 && RESULT != 252
	GOTO LOOP
ELSEIF ITEM:RESULT
	TFLAG:131 = RESULT
	PRINTFORML 차에 %조사처리(ITEMNAME:RESULT,"를")% 섞었습니다
	ITEM:RESULT -= 1
IF FLAG:70
	BASE:MASTER:TSP -= 30
ELSE
	TIME += 10
ENDIF
	RETURN 1
ELSE
	RETURN 0
ENDIF

;-------------------------------------------------
;실행 판정
;-------------------------------------------------
;약을 탄다
@COM_ABLE425
;목격자가 있으면 안 됨
SIF TARGET > 0 && !FLAG:70
	RETURN 0
SIF !TFLAG:100
	RETURN 0
;일괄관리
SIF GLOBAL_COMABLE(425)
	RETURN RESULT
;厨房・妖精のキッチン・遺跡の調理室・長屋街
SIF !KITCHEN(CFLAG:MASTER:현재위치) &&  CFLAG:MASTER:현재위치 != 29 &&  CFLAG:MASTER:현재위치 != 42 &&  CFLAG:MASTER:현재위치 != 주택가
	RETURN 0
;기력 0
SIF BASE:MASTER:기력 <= 0
	RETURN 0
SIF CFLAG:우후후 == 2
	RETURN 0
SIF TFLAG:131
	RETURN 0
RETURN 1

path: ERB/커맨드관련/COMF/일상계/COMF425 약을탄다_t.ERB


code:
;-------------------------------------------------
;위험한 약을산다
;-------------------------------------------------
@COM426

$LOOP
PRINTFORML 구입할 아이템을 선택해주세요 소지금:%금액표시(MONEY)%
PRINTL
VARSET LOCALS
LOCALS = [41] 미약　₩3000
PRINTFORM %LOCALS,48,LEFT%
PRINTL
LOCALS = [42] 이뇨제　₩3000
PRINTFORM %LOCALS,48,LEFT%
PRINTL
LOCALS = [250] 춘약　₩5000
PRINTFORM %LOCALS,48,LEFT%
PRINTL 호의를 품기 쉬워진다

;LOCALS = [2] 풍유제　₩2000
LOCALS = [2] 우유　₩2000
PRINTFORM %LOCALS,48,LEFT%
PRINTL 이것을 계속 마시면 가슴이 커질지도
LOCALS = [501] 축흉제　₩2000
PRINTFORM %LOCALS,48,LEFT%
PRINTL 이것을 계속 마시면 가슴이 작아질지도
LOCALS = [502] 아포톡신4869　₩10000
PRINTFORM %LOCALS,48,LEFT%
PRINTL 남도일을 바-보 로 하는 약
LOCALS = [503] 창코072　₩10000
PRINTFORM %LOCALS,48,LEFT%
PRINTL 거대한 육체를 즉석에서 만들어 내는 트레이닝 약물
LOCALS = [42] 타노시이드린크　₩3000
PRINTFORM %LOCALS,48,LEFT%
PRINTL 다복감을 가불해, 머지않아 감정이 시들고 끝난다
DRAWLINE
PRINTL [100] 그만둔다
INPUT
SELECTCASE RESULT
	CASE 0
		IF MONEY < ITEMPRICE:RESULT
			PRINTW 돈이 부족하다
			GOTO LOOP
		ELSEIF ITEM:RESULT > 50
			PRINTW 지금은 충분하다
			GOTO LOOP
		ELSE
			PRINTFORMW %조사처리(ITEMNAME:RESULT,"를")% 샀습니다
			ITEM:RESULT += 5
			MONEY -= ITEMPRICE:RESULT
			GOTO LOOP
		ENDIF
	CASE 100
		RETURN -1
	CASEELSE
		GOTO LOOP
ENDSELECT

RETURN 1

path: ERB/커맨드관련/COMF/일상계/COMF426 위험한약을산다_t.ERB


code:
;-------------------------------------------------
;요술망치를 쓴다
;일상계 커맨드, 레벨 1
;-------------------------------------------------
@COM428
SIF FLAG:역극 != 71
	PRINTL 신묘마루 「이용은 계획적으로」
PRINTL 무슨 소원을 빌겠습니까?
SIF TALENT:71:체형 != 0 && CFLAG:[[신묘마루]]:현재위치 != 54
	PRINTL [2] - 신묘마루를 평범한 크기로
IF GETBIT(TALENT:MASTER:성별, 1)
	PRINTL [3] - 경이적인 양물로!
	PRINTL [4] - 아예 인간 물건이 아닌 걸로!
ENDIF
SIF TALENT:MASTER:100 >= -4
	PRINTL [5] - 난쟁이로 해줘!
SIF TALENT:MASTER:100 < -4 && CFLAG:MASTER:요술망치 == 6
	PRINTL [6] - 원래 크기에 되돌려줘……
PRINTL [7] - 거인으로 해줘!
PRINTL
PRINTL [100] - 돌아간다
$LOOP
INPUT
IF RESULT == 2 && TALENT:71:체형 != 0 && CFLAG:[[신묘마루]]:현재위치 != 54
	PRINTFORMW 소원을 담아 요술망치를 휘둘러보았다
	PRINTFORMW 신묘마루의 몸은 평범한 소녀 사이즈가 되었다.
	CFLAG:MASTER:요술망치 = 8
	TALENT:71:체형 = 0
ELSEIF RESULT ==  3 && GETBIT(TALENT:MASTER:성별,1)
	PRINTW 소원을 담아 요술망치를 휘둘러보았다
	PRINTW 도저히 숨기지 못할 정도로 양물이 커졌다
	CFLAG:MASTER:요술망치 = 4
	CFLAG:MASTER:382 = TALENT:MASTER:형상
	TALENT:MASTER:형상 = 10
	CFLAG:MASTER:마력회수 = 6
ELSEIF RESULT == 4 && GETBIT(TALENT:MASTER:성별,1)
	PRINTW 소원을 담아 요술망치를 휘둘러보았다
	PRINTW 놀랍게도 자신의 물건이 아예 한 개 더 생겼다
	CFLAG:MASTER:382 = TALENT:MASTER:형상
	CFLAG:MASTER:요술망치 = 5
	TALENT:MASTER:183 = 1
	CFLAG:MASTER:마력회수 = 6
ELSEIF RESULT == 5 && TALENT:MASTER:100 >= -4
	PRINTFORMW 소원을 담아 요술망치를 휘둘러보았다
	PRINTFORMW %CALLNAME:MASTER%의 몸은 순식간에 줄어들었다
	CFLAG:MASTER:마력회수 = 3
	CFLAG:MASTER:요술망치 = 6
	FLAG:원래체격 = TALENT:MASTER:100
	TALENT:MASTER:체형 = -5
ELSEIF RESULT == 6 && TALENT:MASTER:체형 < -4 && CFLAG:MASTER:현재위치 == 54
	PRINTFORMW 「여기서 하지 마!」
	RETURN -1
ELSEIF RESULT == 6 && (TALENT:MASTER:체형 < -4 || TALENT:MASTER:100 > 4)
	PRINTFORMW 소원을 담아 요술망치를 휘둘러보았다
	PRINTFORMW %CALLNAME:MASTER%의 몸은 원래대로 돌아왔다
	TALENT:MASTER:100 = FLAG:원래체격
	CFLAG:MASTER:마력회수 = 3
	CFLAG:MASTER:요술망치 = 7
ELSEIF RESULT == 7 && TALENT:MASTER:체형 <= 4
	PRINTFORMW 소원을 담아 요술망치를 휘둘러보았다
	PRINTFORMW %CALLNAME:MASTER%의 몸은 커졌다
	CFLAG:MASTER:마력회수 = 3
	CFLAG:MASTER:요술망치 = 6
	FLAG:원래체격 = TALENT:MASTER:체형
	TALENT:MASTER:100 = 5
ELSEIF RESULT == 100
SIF FLAG:역극 != 71
	PRINTL 신묘마루 「그러는 게 현명하죠」
	RETURN -1
ELSE
	GOTO LOOP
ENDIF
TIME += 5

RETURN 1

;요술망치를 쓴다
@COM_ABLE428
;정지 중에는 불가
SIF FLAG:70 == 1
	RETURN 0
;이동 실행 판정
SIF !TFLAG:100
	RETURN 0
;일괄관리
SIF GLOBAL_COMABLE(428)
	RETURN RESULT
;신묘마루가 자고 있으면 불가
SIF CFLAG:71:수면
	RETURN 0
;신묘마루가 있는 곳. 신묘마루가 벌레통에 있을 때는 거실이나 툇마루에 있으면 세이프
IF CFLAG:MASTER:현재위치 != CFLAG:71:현재위치 && FLAG:역극 != 71
	IF CFLAG:71:현재위치 == 54 && (CFLAG:MASTER:현재위치 == 9 || CFLAG:MASTER:현재위치 == 10) && AT_HOME(MASTER)
	ELSE
	RETURN 0
	ENDIF
ENDIF
;SIF CFLAG:MASTER:현재위치 != CFLAG:71:현재위치
;	RETURN 0
SIF CFLAG:우후후 == 2
	RETURN 0
;마력회수중 및 신묘마루 거대화 중에는 사용할 수 없다
SIF CFLAG:MASTER:마력회수 > 0 || CFLAG:MASTER:요술망치 == 8
	RETURN 0
RETURN 1

path: ERB/커맨드관련/COMF/일상계/COMF428 요술망치를쓴다_t.ERB


code:
;-------------------------------------------------
;갈아입히기
;일상계 커맨드, 레벨 1
;-------------------------------------------------
@COM429
#DIM C_ID
#DIM ID_갈아입히기대상, 캐릭터수상한
#DIM 갈아입히기가능인원수
#DIM L_ID ;사용 리스트의 ID
CALL MAKE_CHARA_LIST("갈아입히기 가능 캐릭터리스트", L_ID, ID_갈아입히기대상, 갈아입히기가능인원수)
IF 갈아입히기가능인원수 <= 1
	PRINTFORMW %마스터는% 갈아입기로 했다
	CALL 복장갈아입히기(MASTER)
	CALL CLOTHES_SETTING_TRAIN(MASTER)
	RETURN -1
ENDIF

;갈아입음 대상의 선택
;리스트 작성시에 가부 판정 하고 있기 때문에 여기에서는 필요없습니다
PRINTFORML 옷을 갈아입을 수가 있습니다
PRINTFORML 누가 갈아입을까요?
PRINTFORML
CALL SIMPLE_CHARA_LIST(ID_갈아입히기대상, 갈아입히기가능인원수)
;캔슬했다
SIF RESULT == 999
	RETURN -1

;RESULT는 곧 썩으므로
C_ID = ID_갈아입히기대상:(RESULT)
SIF FLAG:시간정지 == 1 && !(C_ID == MASTER)
	CFLAG:C_ID:시간정지착의 = 1
CALL 복장갈아입히기(C_ID)
CALL CLOTHES_SETTING_TRAIN(C_ID)
RETURN 0

;CLOTHES_SETTING_TRAIN에 신발벗어 처리를 이동시켰으므로
;여기서 CLOTHES_SETTING_TRAIN 하면(자) 신발를 벗으며 끝내, 신발설정의 보존을 할 수 없습니다
;호출원으로 CLOTHES_SETTING_TRAIN 하는 것
@복장갈아입히기(C_ID)
#DIM C_ID
#DIM LINESTART2

LINESTART = LINECOUNT

CALL SHOW_CLOTHES(C_ID, "현재의 의상")
PRINTFORML %CALLNAME:C_ID%의 옷 갈아입는중
PRINTFORML
PRINTFORML [6] - 의상 확인
PRINTFORML [5] - 의상 즐겨찾기 지정
PRINTFORML [4] - 파자마의 변경
PRINTFORML [3] - 매일의 의상의 변경
PRINTFORML [2] - 의상의 일시 변경
PRINTFORML [1] - 팬티
PRINTFORML
PRINTFORML [0] - 돌아간다
DO
	INPUT
	LINESTART2 = LINECOUNT
	SELECTCASE RESULT
	CASE 6
		CALL SHOW_CHARA_CLOTHES(C_ID, 0)
		CLEARLINE LINECOUNT - LINESTART
		RESTART
	CASE 5
		$着せ替え5
		CALL SHOW_CLOTHES(C_ID, "즐겨찾는의상")
		PRINTFORML %CALLNAME:C_ID%의 즐겨찾는의상을 설정중
		PRINTFORML
		PRINTFORML [4] - 현재의 의상을 지정한다
		PRINTFORML [3] - 의상세트를 지정한다
		PRINTFORML [2] - 특정 캐릭터의 평상복의 흉내
		PRINTFORML [1] - 즐겨찾기 지정의 리셋
		PRINTFORML
		PRINTFORML [0] - 그만둔다
		DO
			INPUT
			SELECTCASE RESULT
			CASE 4
				CALL DECIDE_CLOTHES(C_ID, "즐겨찾는의상", "현재의 의상")
			CASE 3
				CALL COSPLAY_SET(C_ID, "즐겨찾는의상")
			CASE 2
				CALL COSPLAY_CHARA(C_ID, "즐겨찾는의상")
			CASE 1
				PRINTFORML 정말로 리셋 합니까?
				PRINTFORML
				PRINTFORML [1] - 리셋 한다
				PRINTFORML [0] - 그만둔다
				DO
					INPUT
					SELECTCASE RESULT
					CASE 1
						CALL CTRL_CLOTHES_SET(C_ID, "즐겨찾는의상의 리셋")
					CASE 0
						CLEARLINE LINECOUNT - LINESTART2
						GOTO 着せ替え5
					CASEELSE
						CLEARLINE 1
						CONTINUE
					ENDSELECT
				LOOP 1
			CASE 0
				CLEARLINE LINECOUNT - LINESTART
				RESTART
			CASEELSE
			ENDSELECT
			CLEARLINE LINECOUNT - LINESTART2
			GOTO 着せ替え5
		LOOP 1
	CASE 4
		IF C_ID == MASTER
			CLEARLINE LINECOUNT - LINESTART
			RESTART
		ENDIF
		$着せ替え4
		CALL SHOW_CLOTHES(C_ID, "오늘의 파자마")
		PRINTFORML %CALLNAME:C_ID%의 파자마를 설정중
		PRINTFORML
		PRINTFORML [5] - 좋아하는 대로 시킨다
		PRINTFORML [4] - 즐겨찾는의상으로 자 준다
		PRINTFORML [3] - 파자마를 지정한다
		PRINTFORML [2] - 전라로 자 준다
		PRINTFORML [1] - 팬티만으로 자 준다
		PRINTFORML
		PRINTFORML [0] - 그만둔다
		DO
			INPUT
			SELECTCASE RESULT
			CASE 5
				CFLAG:C_ID:파자마지정 = 0
			CASE 4
				SIF CFLAG:C_ID:즐겨찾는의상
					CALL CTRL_CLOTHES_SET(C_ID, "파자마의 변경_즐겨찾는의상")
			CASE 3
				CALL COSPLAY_SELECT(C_ID, "파자마", "파자마 세트")
			CASE 2
				CALL CTRL_CLOTHES_SET(C_ID, "파자마의 변경_전라")
			CASE 1
				CALL CTRL_CLOTHES_SET(C_ID, "파자마의 변경_판이치")
			CASE 0
				CLEARLINE LINECOUNT - LINESTART
				RESTART
			CASEELSE
				CLEARLINE 1
				CONTINUE
			ENDSELECT
			CLEARLINE LINECOUNT - LINESTART2
			GOTO 着せ替え4
		LOOP 1
	CASE 3
		$着せ替え3
		CALL SHOW_CLOTHES(C_ID, "오늘의 의상")
		PRINTFORML %CALLNAME:C_ID%의 평상복을 설정중
		PRINTFORML
		PRINTFORML [4] - 현재의 의상을 지정한다( 즐겨찾기에 덧쓰기됩니다)
		PRINTFORML [3] - 의상세트를 지정한다
		PRINTFORML [2] - 특정 캐릭터의 평상복의 흉내
		PRINTFORML [1] - 본인 맡김
		PRINTFORML
		PRINTFORML [0] - 그만둔다
		DO
			INPUT
			SELECTCASE RESULT
			CASE 4
				CALL DECIDE_CLOTHES(C_ID, "평상복", "현재의 의상")
			CASE 3
				CALL COSPLAY_SET(C_ID, "평상복")
			CASE 2
				CALL COSPLAY_CHARA(C_ID, "평상복")
			CASE 1
				PRINTFORMW 평상복의 설정은 본인의 기분에 맡깁니다
				CFLAG:C_ID:기본복장세트 = 0
			CASE 0
				CLEARLINE LINECOUNT - LINESTART
				RESTART
			ENDSELECT
			CLEARLINE LINECOUNT - LINESTART2
			GOTO 着せ替え3
		LOOP 1
	CASE 2
		$着せ替え2
		;#;PRINTFORML CFLAG:C_ID:의상일시변경 {CFLAG:C_ID:의상일시변경}
		CALL SHOW_CLOTHES(C_ID, "현재의 의상")
		PRINTFORML %CALLNAME:C_ID%의 현재의 의상을 갈아입히기중
		PRINTFORML
		PRINTFORML [4] - 즐겨찾는의상에 갈아입히기
		PRINTFORML [3] - 의상세트를 지정한다
		PRINTFORML [2] - 특정 캐릭터의 평상복의 흉내
		PRINTFORML [1] - 오늘의 Default에 되돌린다
		PRINTFORML
		PRINTFORML [0] - 그만둔다
		DO
			INPUT
			SELECTCASE RESULT
			CASE 4
				IF !CFLAG:C_ID:즐겨찾는의상
					CLEARLINE LINECOUNT - LINESTART2
					GOTO 着せ替え2
				ENDIF
				CALL DECIDE_CLOTHES(C_ID, "현재의 의상", "즐겨찾는의상")
			CASE 3
				CALL COSPLAY_SET(C_ID, "현재의 의상")
			CASE 2
				CALL COSPLAY_CHARA(C_ID, "현재의 의상")
			CASE 1
				PRINTFORMW 오늘의 의상을 다시 입혔다
				CALL CTRL_CLOTHES_SET(C_ID, "현재 의상의 변경_평상복")
			CASE 0
				CLEARLINE LINECOUNT - LINESTART
				RESTART
			ENDSELECT
			CLEARLINE LINECOUNT - LINESTART2
			GOTO 着せ替え2
		LOOP 1
	CASE 1
		$着せ替え1
		PRINTFORML %CALLNAME:C_ID%의 팬티를 음미중
		PRINTFORML 현재 착용중의 팬티：%GET_STR(C_ID, "하반신속옷_비켜놓기가능", EQUIP:C_ID:하반신속옷2, "이름")%
		SELECTCASE CFLAG:C_ID:지정팬티
		CASE 0
			PRINTFORML 　현재의 팬티 설정：지정 없음
		CASE 100
			PRINTFORML 　현재의 팬티 설정：노팬티 지정
		CASEELSE
			PRINTFORML 　현재의 팬티 설정：%GET_STR(C_ID, "하반신속옷_비켜놓기가능", CFLAG:C_ID:지정팬티, "이름")%
		ENDSELECT
		PRINTFORML
		PRINTFORML
		SIF C_ID == MASTER
			PRINTFORML [3] - 착용중인 팬티를 벗는다
		PRINTFORML [2] - 현재의 팬티를 즐겨찾기 지정
		PRINTFORML [1] - 팬티의 즐겨찾기 지정을 해제한다
		PRINTFORML
		PRINTFORML [0] - 그만둔다
		DO
			INPUT
			SELECTCASE RESULT
			CASE 3
				PRINTFORMW 현재 착용하고 있는 팬티를 벗었습니다
				EQUIP:C_ID:하반신속옷2 = 100
			CASE 2
				PRINTFORMW 현재의 팬티를 즐겨찾기로 지정했습니다
				CFLAG:C_ID:지정팬티 = EQUIP:C_ID:하반신속옷2
				SIF !CFLAG:C_ID:지정팬티
					CFLAG:C_ID:지정팬티 = 100
			CASE 1
				PRINTFORMW 팬티의 즐겨찾기 지정을 해제했습니다
				CFLAG:C_ID:지정팬티 = 0
			CASE 0
				CLEARLINE LINECOUNT - LINESTART
				RESTART
			ENDSELECT
			CLEARLINE LINECOUNT - LINESTART2
			GOTO 着せ替え1
		LOOP 1
	CASE 0
		RETURN
	CASEELSE
		CLEARLINE 1
		CONTINUE
	ENDSELECT
LOOP 1

;모방시키는 대상 캐릭터의 선택
@COSPLAY_CHARA(C_ID, TYPE)
#DIM  C_ID
#DIMS TYPE
#DIM  COS_CHARA
PRINTFORML %CALLNAME:C_ID%의 %조사처리(TYPE,"을")% 설정중
PRINTFORML 누구의 의상을 흉내내게 합니까?
CALL SHOW_CHARA_LIST("평상복 모방 가능 캐릭터리스트", "체력 기력")
COS_CHARA = RESULT
IF GROUPMATCH(COS_CHARA, 0, 999)
	PRINTFORMW 의상의 설정을 중단했다
	RETURN
ELSEIF COS_CHARA == C_ID
	SELECTCASE TYPE
	CASE "즐겨찾는의상"
		PRINTFORMW 의상의 설정을 중단했다
	CASE "평상복"
		PRINTFORMW 평상복의 설정은 본인의 기분에 맡깁니다
		CFLAG:C_ID:기본복장세트 = 0
	CASE "현재의 의상"
		PRINTFORMW 오늘의 의상을 다시 입혔다
		CALL CTRL_CLOTHES_SET(C_ID, "현재 의상의 변경_평상복")
	ENDSELECT
	RETURN
ENDIF
CALL DECIDE_CLOTHES(C_ID, TYPE, "캐릭터 평상복", COS_CHARA)
SIF RESULT
	RESTART

;의상세트의 카테고리 선택
@COSPLAY_SET(C_ID, TYPE)
#DIM  C_ID
#DIM  SET_ID
#DIMS TYPE
#DIMS CATEGORY
CALL SHOW_CLOTHES(C_ID, TYPE)
PRINTFORML %CALLNAME:C_ID%의 %조사처리(TYPE,"을")% 설정중
PRINTFORML 의상의 종류의 선택
PRINTFORML
PRINTFORML [3] - 기본 의상세트
PRINTFORML [2] - 코스프레 의상세트
PRINTFORML [1] - 캐릭터 특수 의상세트
PRINTFORML
PRINTFORML [0] - 그만둔다
DO
	INPUT
	SELECTCASE RESULT
	CASE 3
		CATEGORY '= "기본 의상세트"
	CASE 2
		CATEGORY '= "코스프레 의상세트"
	CASE 1
		CATEGORY '= "캐릭터 특수 의상세트"
	CASE 0
		RETURN
	CASEELSE
		REUSELASTLINE 무효인 입력입니다
		CONTINUE
	ENDSELECT
	BREAK
LOOP 1
CALL COSPLAY_SELECT(C_ID, TYPE, CATEGORY)
SIF !RESULT
	RESTART

;개개의 의상세트의 선택
@COSPLAY_SELECT(C_ID, TYPE, CATEGORY)
#DIM  C_ID
#DIM  SET_ID
#DIMS TYPE
#DIMS CATEGORY
PRINTFORML %CALLNAME:C_ID%의%조사처리(TYPE,"을")% 설정중(%CATEGORY%)
PRINTFORML 사용하는 의상세트를 선택해 주세요
PRINTFORML
CALL CLASS_LIST("의상세트", CATEGORY)
PRINTFORML
PRINTFORML [0] - 그만둔다
DO
	INPUT
	SET_ID = RESULT
	SELECTCASE SET_ID
	CASE 0
		RETURN
	CASEELSE
		SIF GET_INT(0, "의상세트" , SET_ID, CATEGORY)
			BREAK
		REUSELASTLINE 무효인 입력입니다
		CONTINUE
	ENDSELECT
LOOP 1
CALL DECIDE_CLOTHES(C_ID, TYPE, "의상세트", SET_ID)
SIF RESULT
	RESTART

;의상 결정의 최종 확인
@DECIDE_CLOTHES(C_ID, COS_SAVE, COS_LOAD, SET_ID)
#DIM  C_ID     ;설정하는 캐릭터
#DIMS COS_SAVE ;의상의 보존처
#DIMS COS_LOAD ;의상의 참조원
#DIM  SET_ID   ;참조 의상등의 ID
;#; PRINTFORML C_ID{C_ID}, COS_SAVE%COS_SAVE%, COS_LOAD%COS_LOAD%, SET_ID{SET_ID}
PRINTFORMW 최종 확인
CALL SHOW_CLOTHES(C_ID, COS_LOAD, SET_ID)
PRINTFORML
PRINTFORML 이 의상으로 괜찮겠습니까?
PRINTFORML
PRINTFORML [1] - 결정
PRINTFORML [0] - 다시 생각한다
PRINTFORML
PRINTFORML [9] - 그만둔다
DO
	INPUT
	SELECTCASE RESULT
	CASE 1
		BREAK
	CASE 0
		RETURN 1
	CASE 9
		RETURN
	CASEELSE
		REUSELASTLINE 무효인 입력입니다
		CONTINUE
	ENDSELECT
LOOP 1

SELECTCASE COS_LOAD
CASE "현재의 의상"
	SELECTCASE COS_SAVE
	CASE "평상복"
		PRINTFORMW 지금 착용하고 있는 의상을 매일 입어 주기로 했다
		CFLAG:C_ID:기본복장세트 = 100
		CALL CTRL_CLOTHES_SET(C_ID, "현재 의상의 보존_즐겨찾기")
	CASE "즐겨찾는의상"
		PRINTFORMW 지금 착용하고 있는 의상을 즐겨찾기로 지정했다
		CALL CTRL_CLOTHES_SET(C_ID, "현재 의상의 보존_즐겨찾기")
	ENDSELECT

CASE "의상세트"
	PRINTFORMW %CALLNAME:C_ID%의 %COS_SAVE%에서 %조사처리(GET_STR(C_ID, "의상세트", SET_ID, "이름"),"를")% 지정했습니다
	SELECTCASE COS_SAVE
	CASE "현재의 의상"
		CALL CTRL_CLOTHES_SET(C_ID, "현재 의상의 변경_의상세트", SET_ID)
	CASE "평상복"
		CALL CTRL_CLOTHES_SET(C_ID, "평상복의 변경_의상세트", SET_ID)
	CASE "즐겨찾는의상"
		CALL CTRL_CLOTHES_SET(C_ID, "즐겨찾는의상의 변경_의상세트", SET_ID)
	CASE "파자마"
		CALL CTRL_CLOTHES_SET(C_ID, "파자마의 변경_의상세트", SET_ID)
	ENDSELECT

CASE "캐릭터 평상복"
	PRINTFORMW %CALLNAME:C_ID%에게 %CALLNAME:SET_ID%의 모습을 흉내내게 하기로 했다
	SELECTCASE COS_SAVE
	CASE "현재의 의상"
		CALL CTRL_CLOTHES_SET(C_ID, "현재 의상의 변경_캐릭터 의상", SET_ID, "평상복")
	CASE "평상복"
		CALL CTRL_CLOTHES_SET(C_ID, "평상복의 변경_캐릭터 의상", SET_ID, "평상복")
	CASE "즐겨찾는의상"
		CALL CTRL_CLOTHES_SET(C_ID, "즐겨찾는의상의 변경_캐릭터 의상", SET_ID, "평상복")
	ENDSELECT

ENDSELECT

;갈아입히기
@COM_ABLE429
;이동 실행 판정
SIF !TFLAG:100
	RETURN 0
;일괄관리
SIF GLOBAL_COMABLE(429)
	RETURN RESULT
;개인 방 설정
SIF (CFLAG:MASTER:현재위치 != CFLAG:MASTER:311) && (CFLAG:현재위치 != CFLAG:311)
	RETURN 0
SIF !GETBIT(CFLAG:TARGET:기정사실, 1) && TARGET
	RETURN 0
SIF CFLAG:우후후
	RETURN 0
RETURN 1

path: ERB/커맨드관련/COMF/일상계/COMF429 갈아입히기_t.ERB


code:
;-------------------------------------------------
;갈아입는다
;일상계 커맨드, 레벨 1
;-------------------------------------------------
@COM430
#DIM 대상
#DIM 종류

;곤란한 일에 고유는 캐릭터로 명칭 판정하고 있는 것으로 당신이 신으면(자) 이름이 바뀐다

PRINTW 훔친 팬티로 갈아입을까?
DRAWLINE
CALL DISPLAY_ALL_COLLECTION(1,1)
DRAWLINE
PRINTFORML [0] 바꾸어 입지 않는다
$INPUT_LOOP
INPUT
IF RESULT == 0
	RETURN 0
ELSE
	대상 = RESULT / 100
	종류 = RESULT % 100
	CALL SPEND_HAVE_COLLECTION(RESULT)
	IF RESULT != 0
		CFLAG:MASTER:206 = 종류
		CFLAG:MASTER:246 = 종류
		CFLAG:MASTER:오늘팬티 = 종류
		CFLAG:MASTER:파자마팬티 = 종류
		PRINTFORM %마스터는%
		IF EQUIP:MASTER:하반신속옷2 == 0
			PRINTFORML %CALLNAME:(대상)%의 %조사처리(PANTSNAME(종류, 대상),"를")% 입었다
		ELSE
			PRINTFORM %PANTSNAME(EQUIP:MASTER:하반신속옷2)%에서
			PRINTFORML %CALLNAME:(대상)%의 %조사처리(PANTSNAME(종류, 대상),"로")% 갈아입었다
		ENDIF
		EQUIP:MASTER:하반신속옷2 = 종류
	ELSE
		GOTO INPUT_LOOP
	ENDIF
ENDIF
IF !FLAG:시간정지
	TIME += 3
ELSE
	BASE:MASTER:TSP -= 5
ENDIF
RETURN 1

;갈아입는다
@COM_ABLE430
;이동 실행 판정
SIF !TFLAG:100
	RETURN 0
;일괄관리
SIF GLOBAL_COMABLE(430)
	RETURN RESULT
;개인 방 설정
SIF (CFLAG:MASTER:현재위치 != CFLAG:MASTER:311) && (CFLAG:현재위치 != CFLAG:311)
	RETURN 0
;SIF CSTR:MASTER:12 == ""
SIF !FLAG:팬티수송
	RETURN 0
SIF !FLAG:시간정지 && (!GETBIT(CFLAG:TARGET:기정사실, 1) && TARGET)
	RETURN 0
SIF CFLAG:우후후
	RETURN 0
RETURN 1

path: ERB/커맨드관련/COMF/일상계/COMF430 갈아입는다_t.ERB


code:
;-------------------------------------------------
;욕실로느긋하게쉰다
;일상계 커맨드, 레벨 1
;-------------------------------------------------
@COM431
#DIM 회복전체력1
#DIM 회복전기력1
#DIM 회복후체력1
#DIM 회복후기력1
#DIM 회복전체력2
#DIM 회복전기력2
#DIM 회복후체력2
#DIM 회복후기력2
#DIM BathType

IF DAY * 1440 + TIME - EX:MASTER:전회입욕시각 < 360
	TFLAG:194 = 1
	PRINTFORML 조금 전 들어갔던 바로 직후다
	RETURN -1
ENDIF
DRAWLINE

IF BATHCHECK(CFLAG:MASTER:현재위치)
	BathType = 1
	CFLAG:MASTER:목욕탕 = 0
	SIF NEAR_BATH() == CFLAG:MASTER:현재위치
		PRINTFORML 욕실에는 편백나무의 좋은 향기가 감돌고 있다…
;풀장으로 느긋하게 쉬는 경우(휴식의 한층 더 약체화판)
ELSE
	BathType = 3
	IF GETBIT (FLAG:풀장, 2)
		STAIN:MASTER:0 = 0
		STAIN:MASTER:1 = 0
		STAIN:MASTER:2 = 2
		STAIN:MASTER:3 = 1
		STAIN:MASTER:4 = 8
		STAIN:MASTER:5 = 0
	ENDIF
ENDIF

회복전체력1 = BASE:MASTER:체력
회복전기력1 = BASE:MASTER:기력
CALL ODEKAKE_OFURO(MASTER, BathType)
회복후체력1 = BASE:MASTER:체력
회복후기력1 = BASE:MASTER:기력
; PRINTFORML 체력+{ABS(회복후체력1 - 회복전체력1)}(%CALLNAME:MASTER%)
; PRINTFORML 기력+{ABS(회복후기력1 - 회복전기력1)}(%CALLNAME:MASTER%)

IF TARGET > 0 && CFLAG:TARGET:태도 > 0 && !CFLAG:TARGET:수면
	회복전체력2 = BASE:TARGET:체력
	회복전기력2 = BASE:TARGET:기력
	CALL ODEKAKE_OFURO(TARGET, BathType)
	회복후체력2 = BASE:TARGET:체력
	회복후기력2 = BASE:TARGET:기력
	; PRINTFORML 체력+{ABS(회복후체력2 - 회복전체력2)}(%CALLNAME:TARGET%)
	; PRINTFORML 기력+{ABS(회복후기력2 - 회복전기력2)}(%CALLNAME:TARGET%)
ENDIF

TIME += 30

;욕실로느긋하게쉰다
@COM_ABLE431
;이동 실행 판정
SIF !TFLAG:100
	RETURN 0
;일괄관리
SIF GLOBAL_COMABLE(431)
	RETURN RESULT
;정지 중에는 불가
SIF FLAG:70 == 1
	RETURN 0
;수면중
SIF CFLAG:수면
	RETURN 0
;동침중
SIF CFLAG:동침중
	RETURN 0
;욕실이 있는 장소 이외는 불가
IF !BATHCHECK(CFLAG:MASTER:현재위치)
	SIF !ITEM:간이풀장
		RETURN 0
	;여름 이외에는 온수기능이 필요함
	SIF DAY:2 != 2 && !GETBIT (FLAG:풀장, 1)
		RETURN 0
	;넓은 장소가 아니면 불가능
	SIF !OPENPLACE(CFLAG:MASTER:현재위치)
		RETURN 0
	;야외 아니면 불가능
	SIF !OUTROOF(CFLAG:MASTER:현재위치)
		RETURN 0
	;외출중에는 불가능
	SIF !AT_HOME(MASTER)
		RETURN 0
ENDIF
SIF PLACE_SENTO(CFLAG:MASTER:현재위치)
	RETURN 0
SIF CFLAG:우후후 == 2
	RETURN 0
RETURN 1

path: ERB/커맨드관련/COMF/일상계/COMF431 욕실에서쉰다_t.ERB