code:
;-------------------------------------------------
;요리를만든다
;일상계 커맨드, 레벨 1
;-------------------------------------------------
@COM413
;식재료가 없다
IF !CAN_COOK("모두", MASTER)
	DRAWLINE
	PRINTFORMW 식재료가 없다
	RETURN -1
ENDIF
;먼저 조수 취득
IF TARGET <= 0
ELSEIF SHIRAHU(TARGET) == 1 && ABL:친밀 * 500 + ABL:순종 * 500 + ABL:요리기능 * 1000 > CFLAG:310 - CFLAG:MASTER:310
	DISHASSI = TARGET
ENDIF
CALL COOKING_MENU
IF !RESULT
	CALL RESET_DISH
	RETURN -1
ENDIF

;도마 보정으로 맛있게 할 수 있다
IF ITEM:은행나무도마
	SELECTCASE ITEM:은행나무도마
		CASE 1
			DISHQUALITY += RAND:3
		CASE 2
			DISHQUALITY += MAX(RAND:3, 1)
		CASE 3
			DISHQUALITY += MAX(RAND:4, 1)
	ENDSELECT
	PRINTFORML 식칼이 치는 도마가 기분 좋은 소리는 내고 있다…
ENDIF

IF TFLAG:194 == 1
	DOWNBASE:MASTER:체력 = 50
	DOWNBASE:MASTER:기력 = 50
	TIME += 15
	SIF CFLAG:동행
		CFLAG:동행 += 15
ELSEIF TFLAG:194 == 2
	DOWNBASE:MASTER:체력 = 100
	DOWNBASE:MASTER:기력 = 100
	TIME += 45
	SIF CFLAG:동행
		CFLAG:동행 += 45
ELSEIF TFLAG:194 == 3
	DOWNBASE:MASTER:체력 = 100
	DOWNBASE:MASTER:기력 = 100
	TIME += 45
	SIF CFLAG:동행
		CFLAG:동행 += 45
ELSEIF TFLAG:194 == 4
	DOWNBASE:MASTER:체력 = 150
	DOWNBASE:MASTER:기력 = 150
	TIME += 45
	SIF CFLAG:동행
		CFLAG:동행 += 45
ENDIF

IF TARGET > 0 && !CFLAG:수면 && !FLAG:70
	IF DISHASSI
		TFLAG:193 = 1
		EXP:요리경험 ++
	ELSE
		TFLAG:193 = 0
	ENDIF
	;고정으로 획득하는 소스
	SOURCE:환락 = 200

	;신뢰
	TFLAG:98 = 3

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

	;호감도를 본다
	IF CFLAG:2 <= 500
		SOURCE:환락 += CFLAG:2
	ELSEIF CFLAG:2 <= 5000
		SOURCE:환락 += 500 + (CFLAG:2 - 500) / 3
	ELSE
		SOURCE:환락 += 2000 + (CFLAG:2 - 5000) / 5
	ENDIF
	SIF SOURCE:환락 < 0
		SOURCE:환락 = 0
ENDIF
TCVAR:MASTER:308 = 0
SIF TARGET < 1 && (!GET_OPTION_COOKING("자동 맛내기 설정") || GET_OPTION_COOKING("이물 혼입 가능") || GET_OPTION_COOKING("약물 혼입 가능"))
	CALL MIX_MENU
SIF GET_OPTION_COOKING("자동 맛내기 설정")
	CALL AUTO_SEASONING

IF ITEM:조리지도서
	SIF !RAND:2
		EXP:MASTER:요리경험 ++
	SIF !RAND:2 && TARGET
		EXP:TARGET:요리경험 ++
ENDIF
DISHTIME = 1440 * DAY + TIME

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

RETURN 1

@COOKING_MENU
PRINTL 무엇을 만들겠습니까?
{
CALL ASK_M(
	"역시 그만둔다", 1,
	"경식",           CAN_COOK("경식", MASTER),
	"주식",           CAN_COOK("주식", MASTER),
	"디저트",       CAN_COOK("디저트", MASTER),
	"금단의 요리",     CAN_COOK("금단의 요리", MASTER),
	"생선 요리",         (CAN_COOK("생선 요리", MASTER) || CAN_COOK("개구리 요리", MASTER)))
}
SELECTCASE RESULT
CASE 1
	DISHTYPE = RESULT
	CALL INGREDIENT_CHOICE
	SIF RESULT == 0
		RETURN 0
	IF GET_OPTION_COOKING("요리 내용 자동 결정")
		CALL COOKING(, "「요리 내용 자동 결정」")
	ELSE
		CALL COOKING
		SIF RESULT == 0
			RETURN 0
	ENDIF
	TFLAG:194 = 1
	CALL VEGE_CHOICE
	CALL REMOVE_VEGE
	CALL SHOW_DISHDATA
	WAIT
	RETURN 1
CASE 2
	DISHTYPE = RESULT
	CALL INGREDIENT_CHOICE
	SIF RESULT == 0
		RETURN 0
	IF GET_OPTION_COOKING("요리 내용 자동 결정")
		CALL COOKING(, "「요리 내용 자동 결정」")
	ELSE
		CALL COOKING
		SIF RESULT == 0
			RETURN 0
	ENDIF
	TFLAG:194 = 2
	CALL VEGE_CHOICE
	CALL REMOVE_VEGE
	CALL SHOW_DISHDATA
	WAIT
	RETURN 1
CASE 3
	DISHTYPE = RESULT
	CALL INGREDIENT_CHOICE
	SIF RESULT == 0
		RETURN 0
	IF GET_OPTION_COOKING("요리 내용 자동 결정")
		CALL COOKING(, "「요리 내용 자동 결정」")
	ELSE
		CALL COOKING
		SIF RESULT == 0
			RETURN 0
	ENDIF
	TFLAG:194 = 3
	CALL VEGE_CHOICE
	CALL REMOVE_VEGE
	CALL SHOW_DISHDATA
	WAIT
	RETURN 1
CASE 4
	IF !ITEM:0
		PRINTFORMW 식재료가 충분하지 않습니다
		TIME += 5
		RETURN 0
	ENDIF

	ITEM:0 --
	DISHTYPE = 4
	CALL COOKING
	TFLAG:194 = FLAG:요리
	CALL VEGE_CHOICE
	CALL REMOVE_VEGE
	CALL SHOW_DISHDATA
	WAIT
	RETURN 1
CASE 5
	PRINTFORML 식재료를 선택해 주세요
	CALL ASK_M(@"물고기　{ITEM:물고기}마리 소지", ITEM:물고기, @"맛있는물고기　{ITEM:맛있는물고기}마리 소지", ITEM:맛있는물고기,@"개구리　{ITEM:개구리}마리 소지", ITEM:개구리 >= 3,"그만둔다",1)
	SELECTCASE RESULT
		CASE 0
			DISHQUALITY = 1
			DISHTYPE = 5
			;@COOKING용으로 일시적으로 5로 6이 대입되지만 다음에 DISHTYPE = 2로 덧쓰기된다
			DISHTASTE += GET_TASTE_INGREDIENT("물고기")
		CASE 1
			DISHQUALITY = 2
			DISHTYPE = 5
			DISHTASTE += GET_TASTE_INGREDIENT("맛있는물고기")
		CASE 2
			DISHQUALITY = 1
			DISHTYPE = 6
			DISHTASTE += GET_TASTE_INGREDIENT("개구리")
		CASE 3
			RETURN 0
	ENDSELECT
	IF GET_OPTION_COOKING("요리 내용 자동 결정")
		CALL COOKING(, "「요리 내용 자동 결정」")
	ELSE
		CALL COOKING
		SIF RESULT == 0
			RETURN 0
	ENDIF
	TFLAG:194 = 2
	CALL VEGE_CHOICE
	CALL REMOVE_VEGE
	CALL SHOW_DISHDATA
	WAIT
	RETURN 1
CASE 0
	RETURN 0
ENDSELECT

;요리 실행 함수
;요리 의뢰에 유용할 수 있도록(듯이) 작성
;먼저 호출해 원으로 DISHTYPE와 DISHQUALITY를 결정해 두는 것
;식재료의 소비 처리도 먼저 끝내 두는 것
@COOKING(CHARA, OP)
#DIM  CHARA ;캐릭터를 건네주면(자) 도와 준다(의뢰용, COM413는 실행 후에 요리경험 들어가므로 불요)
#DIMS CONST MENU_TYPE, 7 = "", "SNACK", "MAINDISH", "DESSERT", "FORBIDDEN","FISH", "FROG"
#DIMS OP
SIF CHARA
	DISHASSI = CHARA
IF STRCOUNT(OP, "「요리 내용 자동 결정」") || MENU_TYPE:DISHTYPE == "FORBIDDEN"
	CALL SET_DISHNAME(MENU_TYPE:DISHTYPE)
ELSE
	CALL SELECT_DISHNAME(MENU_TYPE:DISHTYPE)
	SIF RESULT == 0
		RETURN
ENDIF
PRINTFORMW %DISHNAME%를 만듭니다
SELECTCASE DISHTYPE
CASE 1
	CALL COOKING_TAKARI([[유유코]], 5)
	CALL COOKING_TAKARI([[시온]], 5)
CASE 2
	CALL COOKING_TAKARI([[유유코]], 10)
	CALL COOKING_TAKARI([[시온]], 10)
	EXP:MASTER:요리경험 ++
	IF CHARA
		EXP:CHARA:요리경험 ++
		SIF EXP:MASTER:요리경험 > EXP:CHARA:요리경험
			EXP:CHARA:요리경험 ++
	ENDIF
CASE 3
CASE 4
CASE 5
	YOGORE:(CFLAG:MASTER:현재위치) += 500
ENDSELECT
YOGORE:(CFLAG:MASTER:현재위치) += 500
	EXP:MASTER:요리경험 ++
	IF CHARA
		EXP:CHARA:요리경험 ++
		SIF EXP:MASTER:요리경험 > EXP:CHARA:요리경험
			EXP:CHARA:요리경험 ++
	ENDIF
SIF DISHASSI
	DISHTASTE += GET_TASTE_ASSIBONUS(DISHASSI)
DISHTASTE += GET_TASTE_ASSIBONUS(MASTER)
IF STRCOUNT(DISHTASTE, ESCAPE("잡곡/"))
	ITEM:잡곡 --
ELSEIF STRCOUNT(DISHTASTE, ESCAPE("묵은쌀/"))
	ITEM:묵은쌀 --
ELSEIF STRCOUNT(DISHTASTE, ESCAPE("백미/"))
	ITEM:백미 --
ELSEIF STRCOUNT(DISHTASTE, ESCAPE("맛있는물고기/"))
	ITEM:맛있는물고기 --
ELSEIF STRCOUNT(DISHTASTE, ESCAPE("물고기/"))
	ITEM:물고기 --
ELSEIF STRCOUNT(DISHTASTE, ESCAPE("개구리 요리/"))
	ITEM:개구리 -= 3
ENDIF
RETURN 1

;요리 명수동설정 함수
@SELECT_DISHNAME(MENU_TYPE)
#DIMS         MENU_TYPE      ;만들고 싶은 메뉴의 종류
#DIM          NUM_MENUS      ;
#DIM          FOOD_ID        ;
#DIMS DYNAMIC FOOD_NAME, 100 ;
#DIMS DYNAMIC FES_NAME       ;
#DIM  DYNAMIC CNT_SHOW       ;
FES_NAME '= FESTIVAL_MENU()
PRINTFORML 무엇을 만들까?
SELECTCASE MENU_TYPE
CASE "SNACK"
	PRINTFORML ＜경식 메뉴＞
	ARRAYCOPY "FOOD_SNACK", "FOOD_NAME"
	NUM_MENUS = MENUS_SNACK

CASE "MAINDISH"
	PRINTFORML ＜주식 메뉴＞
	ARRAYCOPY "FOOD_MAINDISH", "FOOD_NAME"
	NUM_MENUS = MENUS_MAINDISH

CASE "DESSERT"
	PRINTFORML ＜디저트 메뉴＞
	ARRAYCOPY "FOOD_DESSERT", "FOOD_NAME"
	NUM_MENUS = MENUS_DESSERT

CASE "FISH"
	PRINTFORML ＜생선 요리 메뉴＞
	ARRAYCOPY "FOOD_FISH", "FOOD_NAME"
	NUM_MENUS = MENUS_FISH

CASE "FROG"
	PRINTFORML ＜개구리 요리 메뉴＞
	ARRAYCOPY "FOOD_FROG", "FOOD_NAME"
	NUM_MENUS = MENUS_FROG
ENDSELECT
FOR FOOD_ID, NUM_MENUS - 1, -1, -1
	SIF !STRLENS(FOOD_NAME:FOOD_ID)
		CONTINUE
	LOCALS = [{FOOD_ID, 2}]%FOOD_NAME:FOOD_ID, 24%
	PRINTFORM
	PRINTBUTTON LOCALS, FOOD_ID
	CNT_SHOW ++
	SIF CNT_SHOW % 3 == 0
		PRINTFORML
NEXT
SIF CNT_SHOW % 3
	PRINTFORML
SIF STRLENS(FES_NAME) && MENU_TYPE == "MAINDISH"
	PRINTFORML 　[90]%FES_NAME, 24%
PRINTFORML 　[99]그만둔다
DO
	INPUT
	SELECTCASE RESULT
	CASE 99
		RETURN
	CASE 90
		SIF !(STRLENS(FES_NAME) && MENU_TYPE == "MAINDISH")
			GOTO RETRY
		DISHNAME  '= FES_NAME
		MENU_TYPE '= "FESTIVAL"
	CASE 0 TO NUM_MENUS - 1
		FOOD_ID = RESULT
		SIF !STRLENS(FOOD_NAME:FOOD_ID)
			GOTO RETRY
		DISHNAME  '= FOOD_NAME:FOOD_ID
	CASEELSE
		$RETRY
		PRINTFORML 무효인 입력입니다
		CONTINUE
	ENDSELECT
	BREAK
LOOP 1
SELECTCASE MENU_TYPE
CASE "SNACK"
	DISHTYPE = 1
	FLAG:요리 = FOOD_ID
CASE "MAINDISH"
	DISHTYPE = 2
	FLAG:요리 = FOOD_ID + 10
CASE "DESSERT"
	DISHTYPE = 3
	FLAG:요리 = FOOD_ID + 50
CASE "FISH"
	DISHTYPE = 2
CASE "FROG"
	DISHTYPE = 2
CASE "FESTIVAL"
	DISHTYPE = 5
	FLAG:요리 = 999
ENDSELECT
DISHTASTE += GET_TASTE_MENUTYPE(MENU_TYPE)
DISHTASTE += DISHNAME + "/" + GET_TASTE_DISH(DISHNAME)
RETURN 1

;요리 추첨 함수
;요리의 결정과 FLAG에의 기록, DISHNAME 결정까지
;DISHQUALITY의 설정은 호출해 원으로 실시하는 것
@SET_DISHNAME(MENU_TYPE)
#DIMS MENU_TYPE
#DIM  FOOD_ID
SELECTCASE MENU_TYPE
CASE "SNACK"
	DISHTYPE = 1
	FLAG:요리 = RAND:MENUS_SNACK + 1
	DISHNAME = %FOOD_SNACK:(FLAG:요리)%
CASE "MAINDISH"
	DISHTYPE = 2
	FOOD_ID = RAND:MENUS_MAINDISH
	FLAG:요리 = FOOD_ID + 10
	DISHNAME = %FOOD_MAINDISH:(FOOD_ID)%
	IF FESTIVAL_MENU() != ""
		DISHNAME = %FESTIVAL_MENU()%
		FLAG:요리 = 999
		DISHTYPE = 5
	ENDIF
CASE "DESSERT"
	DISHTYPE = 3
	FOOD_ID = RAND:MENUS_DESSERT
	DISHNAME = %FOOD_DESSERT:(FOOD_ID)%
	FLAG:요리 = FOOD_ID + 50
CASE "FORBIDDEN"
	DISHTYPE = 4
	DISHNAME = %FOOD_FORBIDDEN:(DAY:2)%
	FLAG:요리 = 99 + DAY:2
CASE "FISH"
	DISHTYPE = 2
	DISHNAME = %FOOD_FISH:(RAND:MENUS_FISH)%
CASE "FROG"
	DISHTYPE = 2
	DISHNAME = %FOOD_FROG:(RAND:MENUS_FROG)%
ENDSELECT

IF DISHTYPE == 5
	DISHTASTE += GET_TASTE_MENUTYPE("FESTIVAL")
ELSE
	DISHTASTE += GET_TASTE_MENUTYPE(MENU_TYPE)
ENDIF
DISHTASTE += DISHNAME + "/" + GET_TASTE_DISH(DISHNAME)

@식사(ARG)
#DIM 정력회복량
#DIM 기력회복량
#DIM 체력회복량
#DIM 정력회복율
#DIM 기력회복율
#DIM 체력회복율
#DIMS CONST DISH_TO_만복도 = "", "경식", "주식", "디저트", "주식", "주식"
#DIM COOK_POWER		;캐릭터의 조리력, 또는 외식할때의 맛
;회복율은 0.1%단위

정력회복량 = 0
기력회복량 = 0
체력회복량 = 0
정력회복율 = 0
기력회복율 = 0
체력회복율 = 0

SELECTCASE DISHTYPE
	CASE 1
	;경식
		체력회복율 = 65
		기력회복율 = 200
		정력회복율 = 50
	CASE 2
	;주식
		체력회복율 = 200
		기력회복율 = 300
		정력회복율 = 200
	CASE 3
	;디저트
		체력회복율 = 50
		기력회복율 = 500
		정력회복율 = 50
	CASE 4
	;금단의 요리
		체력회복율 = 300
		기력회복율 = 300
		정력회복율 = 300
		EXP:ARG:C경험 += 30
	CASE 5
	;축제 메뉴
		체력회복율 = 100
		기력회복율 = 150
		정력회복율 = 100
ENDSELECT

IF !DISH_RADICAL()
ELSEIF TASTE_GIVEUP(ARG, DISH_RADICAL())
	TIMES 체력회복율, 0.1
	TIMES 기력회복율, 0.1
	TIMES 정력회복율, 0.1
ELSE
	TIMES 체력회복율, 1.2
	TIMES 기력회복율, 1.2
	TIMES 정력회복율, 1.2
ENDIF
CALL 만복도상승(ARG, DISH_TO_만복도 :DISHTYPE)

체력회복량 = (MAXBASE:ARG:체력 * 체력회복율 / 1000) * (ABL:MASTER:요리기능 + 5 + DISHQUALITY) / 10
기력회복량 = (MAXBASE:ARG:기력 * 기력회복율 / 1000) * (ABL:MASTER:요리기능 + 5 + DISHQUALITY) / 10
정력회복량 = (MAXBASE:ARG:정력 * 정력회복율 / 1000) * (ABL:MASTER:요리기능 + 5 + DISHQUALITY) / 10
;추가 식재료 보너스
IF DISHVEGE > 0
	체력회복량 += 50
	기력회복량 += 50
	정력회복량 += 50
ENDIF

;料理の腕による上方補正
COOK_POWER = 8 + ABL:MASTER:요리기능 * 2
SIF DISHASSI
	COOK_POWER += ABL:DISHASSI:요리기능

CALL RECOVER(ARG, 체력회복량, "체력", "식사에 의한 회복")
CALL RECOVER(ARG, 기력회복량, "기력", "식사에 의한 회복")
IF ARG == MASTER
	CALL RECOVER(ARG, 정력회복량, "정력", "식사에 의한 회복")
ELSEIF STRLENS(DISHTASTE) && GET_OPTION_COOKING("채점 기능 온")
	CALL FOOD_TASTING(ARG, DISHTASTE, COOK_POWER)
	PRINTFORML %CALLNAME:ARG + "의 평가…………", 40, LEFT%{TCVAR:ARG:요리총평가치, 3}점
ENDIF

;장난을 가르쳐지고 있다
SELECTCASE DISH_MIXTURE()
CASE DISH_DRAG_미약
	TCVAR:TARGET:미약 = 210
CASE DISH_DRAG_이뇨제
	TCVAR:TARGET:이뇨제 = 210
CASE DISH_DRAG_춘약
	TCVAR:TARGET:춘약 = 210
CASE DISH_DRAG_수면제
	IF TCVAR:TARGET:수면제강도 < 2
		TCVAR:TARGET:수면제강도 = 2
		TCVAR:TARGET:수면제차사용 = 1
	ENDIF
ENDSELECT

@만복도상승(ARG, ARGS)
SIF TASTE_GIVEUP(ARG, DISH_RADICAL())
	RETURN
SELECTCASE ARGS
	CASE "경식"
		TCVAR:ARG:공복시각 = 1440 * DAY + TIME + 180
		SIF TALENT:ARG:대식가
			TCVAR:ARG:공복시각 -= 30
	CASE "주식"
		TCVAR:ARG:공복시각 = 1440 * DAY + TIME + 360
		SIF TALENT:ARG:대식가
			TCVAR:ARG:공복시각 -= 90
	CASE "디저트"
		TCVAR:ARG:디저트공복시각 = 1440 * DAY + TIME + 180
		SIF TALENT:ARG:대식가
			TCVAR:ARG:디저트공복시각 -= 30
ENDSELECT

;-------------------------------------------------
;실행 판정
;-------------------------------------------------
@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 DISHNAME != ""
	RETURN 0
RETURN 1

@HUNGER(ARG)
#FUNCTIONS
LOCAL = TCVAR:ARG:공복시각 - TIME:1
SELECTCASE LOCAL
	CASE IS > 270
	SETCOLOR C_GREEN
		RETURNF "만복"
	CASE IS > 180
	SETCOLOR C_P_GREEN
		RETURNF "든든"
	CASE IS > 0
	SETCOLOR C_P_YELLOW
		RETURNF "보통"
	CASEELSE
		RETURNF "식사가능"
ENDSELECT

@INGREDIENT_CHOICE
PRINTFORML 식재료를 선택해주세요
CALL ASK_M(@"잡곡({ITEM:48})", ITEM:48, @"묵은쌀({ITEM:50})", ITEM:50, @"백미({ITEM:47})", ITEM:47,"그만둔다",1)
SELECTCASE RESULT
	CASE 0
		DISHTASTE += GET_TASTE_INGREDIENT("잡곡")
	CASE 1
		DISHTASTE += GET_TASTE_INGREDIENT("묵은쌀")
	CASE 2
		DISHTASTE += GET_TASTE_INGREDIENT("백미")
	CASE 3
		DISHTYPE = 0
		RETURN 0
ENDSELECT
DISHQUALITY = RESULT + 1
RETURN DISHQUALITY

;추가하는 야채의 선택
@VEGE_CHOICE
#DIMS CONST VEGE_NAME = "", "양배추", "딸기", "순무", "오이", "토마토", "수박", "가지", "고구마", "포도", "백합근", "당근", "파", "산나물"
#DIM  VEGE_ID
#DIM  TEMP_INPUT
;야채가 없다
{
IF MAX(
	ITEM:양배추, ITEM:딸기,    ITEM:순무,
	ITEM:오이, ITEM:토마토,     ITEM:수박,
	ITEM:가지,     ITEM:고구마, ITEM:포도,
	ITEM:백합근,   ITEM:당근,   ITEM:파,
	ITEM:산나물                                    ) <= 0
}
	RETURN
ENDIF
DO
	PRINTFORML 요리에 추가하는 식재료를 선택해 주세요
	FOR VEGE_ID, VARSIZE("VEGE_NAME") - 1, 0, -1
		IF ITEM:(GETNUM(ITEM, VEGE_NAME:VEGE_ID)) > 0
			PRINTBUTTON @"{VEGE_ID, 2, RIGHT}[%VEGE_NAME:VEGE_ID, 10%]", VEGE_ID
		ELSE
			SETCOLOR 0x606060
			PRINTPLAINFORM {VEGE_ID, 2, RIGHT}[%VEGE_NAME:VEGE_ID, 10%]
			RESETCOLOR
		ENDIF
		IF VEGE_ID % 3 == 1
			PRINTFORML
		ELSE
			PRINTFORM
		ENDIF
	NEXT
	PRINTBUTTON @" 0[%"그만둔다", 10%]", 0
	PRINTFORML
	INPUT
	TEMP_INPUT = RESULT
	SELECTCASE TEMP_INPUT
	CASE 0
		RETURN
	CASE 1 TO VARSIZE("VEGE_NAME") - 1
		;예의범절이 나쁘지만 루프용으로 사용한 것을 사용해 돌리고 있습니다
		VEGE_ID = GETNUM(ITEM, VEGE_NAME:TEMP_INPUT)
		SIF ITEM:VEGE_ID <= 0
			GOTO RETRY
		BREAK
	CASEELSE
		$RETRY
		PRINTFORML 무효인 입력입니다
		CONTINUE
	ENDSELECT
LOOP 1
ITEM:VEGE_ID --
DISHVEGE  = VEGE_ID
DISHTASTE += ITEMNAME:VEGE_ID + "/" + GET_TASTE_VEGE(ITEMNAME:VEGE_ID)

@RESET_DISH
DISHTIME = 0
DISHSPOIL = 0
FLAG:요리 = 0
DISHQUALITY = 0
DISHTYPE = 0
DISHNAME =

DISHTASTE =
DISHVEGE = 0
DISHASSI = 0

;야채 제거 처리 실행 판정 함수
;서니크라피의 콤비로 요리하면 7 와리노나물 빼기
@CAN_REMOVE_VEGE
#FUNCTION
#DIM DYNAMIC VEGE_HATE_MAS
#DIM DYNAMIC VEGE_HATE_ASI
SIF !STRCOUNT(DISHTASTE, ESCAPE("야채/"))
	RETURNF 0
SIF FLAG:역극
	VEGE_HATE_MAS = STRCOUNT(GET_STR(, "캐릭터데이터", FLAG:역극, "요리：싫어하는 맛"), ESCAPE("야채/"))
SIF RAND(1, 11) <= VEGE_HATE_MAS
	RETURNF 1
SIF !DISHASSI
	RETURNF 0
VEGE_HATE_ASI = STRCOUNT(GET_STR(, "캐릭터데이터", DISHASSI, "요리：싫어하는 맛"), ESCAPE("야채/"))
SIF RAND(1, 11) <= VEGE_HATE_ASI
	RETURNF 2

;야채 제거 처리 실행 함수
;원래의 요리의 미각에도 영향이 나와 버리지만
;뭔가 이렇게, 요리의 밸런스적인 섬싱이 무너져 버리면 뇌내 보완해 주세요
;
;쿠라피가 베이스이기 (위해)때문에
;오이/고구마/파, 는 처리로부터 빠지고 있지만 귀찮아서 해 이대로
;
;종래는 토마토/당근이 상당히 강력했던 감이 있는 것인 종 밸런스는 잡힐지도
;야채 빼기 처리로 고평가를 받기 쉬운 「붉은/산뜻한」이 빠져 버린다
;그리고 영향을 받지 않는 딸기는 변함 없이 강력
@REMOVE_VEGE
SELECTCASE CAN_REMOVE_VEGE()
CASE 0
	RETURN
CASE 1
	PRINTFORML %마스터는% 요리로부터 남몰래 서투른 야채를 없앴다……
CASE 2
	PRINTFORML %조사처리(CALLNAME:DISHASSI,"는")% 요리로부터 남몰래 서투른 야채를 없앴다……
ENDSELECT

SIF STRCOUNT(DISHTASTE, ESCAPE("양배추/"))
	DISHTASTE '= REPLACE(DISHTASTE, "양배추\/|담백\/", "")

SIF STRCOUNT(DISHTASTE, ESCAPE("순무/"))
	DISHTASTE '= REPLACE(DISHTASTE, "순무\/|미끄러운\/", "")

SIF STRCOUNT(DISHTASTE, ESCAPE("토마토/"))
	DISHTASTE '= REPLACE(DISHTASTE, "토마토\/|붉은\/|산뜻한\/", "")

SIF STRCOUNT(DISHTASTE, ESCAPE("가지/"))
	DISHTASTE '= REPLACE(DISHTASTE, "가지\/|담백\/", "")

SIF STRCOUNT(DISHTASTE, ESCAPE("백합근/"))
	DISHTASTE '= REPLACE(DISHTASTE, "백합근\/|품위있는\/", "")

SIF STRCOUNT(DISHTASTE, ESCAPE("당근/"))
	DISHTASTE '= REPLACE(DISHTASTE, "당근\/|산뜻한\/", "")

SIF STRCOUNT(DISHTASTE, ESCAPE("산나물/"))
	DISHTASTE '= REPLACE(DISHTASTE, "산나물\/|야취\/", "")

DISHTASTE '= REPLACE(DISHTASTE, "야채\/", "야채 빼기\/")

IF DISHNAME == "야채볶음"
	DISHNAME = 콩나물볶음
	DISHTASTE += "검소/빈상/"
	DISHTASTE '= REPLACE(DISHTASTE, "야채볶음\/", "콩나물 볶음\/")
ELSEIF DISHNAME == "나물"
	DISHNAME = 나물없음
	DISHTASTE += "빈상/" * 3
	DISHTASTE '= REPLACE(DISHTASTE, "나물\/", "나물없음\/")
ELSEIF DISHNAME == "채소절임 곱빼기밥"
	DISHNAME = 곱빼기밥
	DISHTASTE '= REPLACE(DISHTASTE, "채소절임 곱빼기밥\/", "곱빼기밥\/")
ELSEIF DISHNAME == "모짜렐라 치즈와 토마토의 샐러드"
	DISHNAME = 모짜렐라치즈만의샐러드
	DISHTASTE += "치즈/" * 2
	DISHTASTE '= REPLACE(DISHTASTE, "모짜렐라 치즈와 토마토의 샐러드\/", "모짜렐라 치즈만의 샐러드\/")
ENDIF
DISHVEGE = 0

;특정의 메뉴의 실행 조건을 채우고 있는지를 판정
;일단, MASTER 이외도 건네줄 수 있도록(듯이) 했다
@CAN_COOK(MENU_TYPE, C_ID)
#FUNCTION
#DIM  DYNAMIC C_ID      ;조리 실행자의 C_ID
#DIMS DYNAMIC MENU_TYPE ;판정 대상이 되는 조리 메뉴
;축일 계(FESTIVAL)는 판정 없음이므로 거기만 주의(MAINDISH로부터의 파생이 된다)
SELECTCASE MENU_TYPE
CASE "SNACK", "경식"
	SIF MAX(ITEM:백미, ITEM:잡곡, ITEM:묵은쌀) > 0
		RETURNF 1
CASE "MAINDISH", "주식"
	SIF ABL:C_ID:요리기능 > 1 && MAX(ITEM:백미, ITEM:잡곡, ITEM:묵은쌀) > 0
		RETURNF 1
CASE "DESSERT", "디저트"
	SIF ABL:C_ID:요리기능 > 2 && MAX(ITEM:백미, ITEM:잡곡, ITEM:묵은쌀) > 0
		RETURNF 1
CASE "FORBIDDEN", "금단의 요리"
	SIF ABL:C_ID:요리기능 > 2 && ITEM:로터 > 0
		RETURNF 1
CASE "FISH", "생선 요리"
	SIF ABL:C_ID:요리기능 > 1 && MAX(ITEM:물고기, ITEM:맛있는물고기) > 0
		RETURNF 1
CASE "FROG", "개구리 요리"
	SIF ABL:C_ID:요리기능 > 1 && ITEM:개구리 >= 3
		RETURNF 1
CASE "ALL", "모두", ""
;DYNAMIC를 이용한 재귀 호출
	SIF CAN_COOK("SNACK", C_ID)
		RETURNF 1
	SIF CAN_COOK("MAINDISH", C_ID)
		RETURNF 1
	SIF CAN_COOK("DESSERT", C_ID)
		RETURNF 1
	SIF CAN_COOK("FORBIDDEN", C_ID)
		RETURNF 1
	SIF CAN_COOK("FISH", C_ID)
		RETURNF 1
	SIF CAN_COOK("FROG", C_ID)
		RETURNF 1
ENDSELECT
RETURNF 0

;요리명 표시용 F함수
@EX_DISHNAME
#FUNCTIONS
#DIMS DYNAMIC EX_DISHNAME
SIF DISHASSI
	EX_DISHNAME += CALLNAME:DISHASSI + @"%조사만처리(CALLNAME:DISHASSI,"와")% 만든 "
SIF DISHVEGE
	EX_DISHNAME += ITEMNAME:DISHVEGE + " 풍미의 "
SIF STRCOUNT(DISHTASTE, ESCAPE("달구경/"))
	EX_DISHNAME += "달구경 "
EX_DISHNAME += DISHNAME
IF !STRCOUNT(DISHTASTE, ESCAPE("야채 빼기/"))
ELSEIF !GROUPMATCH(DISHNAME, "콩나물 볶음", "나물없음", "곱빼기밥", "모짜렐라 치즈만의 샐러드")
	EX_DISHNAME += "(야채 빼기)"
ENDIF
RETURNF EX_DISHNAME

;이런 요리를 할 수 있었어!(을)를 표시하는 함수
@SHOW_DISHDATA
PRINTFORML ＜%EX_DISHNAME()%＞
CALL SHOW_TASTE(DISHTASTE)

;맛의 표시용 함수
;맛에 한하지 않고 사용해 돌릴 수 있는 그렇게?
;가로폭의 한계에 주의
@SHOW_TASTE(TASTE_STR)
#DIMS TASTE_STR               ;표시 대상의 맛데이터
#DIMS DYNAMIC TASTE_LIST, 100 ;미 리스트
#DIM  DYNAMIC TASTE_CNT,  100 ;미 리스트 각 요소의 중복 개수
#DIM  DYNAMIC TASTE_NUM       ;미의 종류의 총수
#DIM  DYNAMIC SHOW_NUM        ;표시한 맛의 수
#DIM  TASTE_ID                ;루프용
;맛리스트의 취득
CALLF CNT_SPLIT(TASTE_STR, TASTE_LIST, TASTE_CNT, TASTE_NUM)
;맛리스트의 표시
FOR TASTE_ID, 0, TASTE_NUM
	SIF !STRLENS(TASTE_LIST:TASTE_ID)
		CONTINUE
	LOCALS = [%TASTE_LIST:TASTE_ID%]Lv{TASTE_CNT:TASTE_ID, 2}
	;시스템측에서 6 문자, 맛명칭에 14 문자분을 깨어 앞
	PRINTFORM 　%LOCALS, 20%
	SHOW_NUM ++
	SIF SHOW_NUM % 5
		CONTINUE
	PRINTFORML
NEXT
SIF SHOW_NUM % 5
	PRINTFORML

;-------------------------------------------------
;미각 평가 처리 함수
;일단은 캐릭터라인만으로 평가할 수 있도록(듯이) 우수리가 TCVAR도 참조한다
;-------------------------------------------------
@FOOD_TASTING(C_ID, TASTE_FOOD, COOK_POWER)
#DIM          C_ID              ;대상 캐릭터
#DIM          COOK_POWER		;캐릭터의 조리력, 또는 외식할때의 맛
#DIMS         TASTE_FOOD        ;할 수 있던 요리의맛
TCVAR:C_ID:요리호평가치 = TASTE_GOOD(C_ID, TASTE_FOOD, COOK_POWER)
TCVAR:C_ID:요리악평가치 = TASTE_BAD(C_ID, TASTE_FOOD)
TCVAR:C_ID:요리총평가치 = TCVAR:C_ID:요리호평가치 * 100 / (TCVAR:C_ID:요리호평가치 + TCVAR:C_ID:요리악평가치)

SELECTCASE TCVAR:C_ID:요리총평가치
	CASE IS >= 80
		CALL KIGEN_CHANGE(C_ID,100,1)
	CASE IS < 40
		CALL KIGEN_CHANGE(C_ID,100, -1)
ENDSELECT

;미각 평가 함수 GOOD
@TASTE_GOOD(C_ID, TASTE_FOOD, COOK_POWER)
#FUNCTION
#DIM          C_ID              ;대상 캐릭터
#DIMS         TASTE_FOOD        ;할 수 있던 요리의맛
#DIMS DYNAMIC TASTE_CHARA       ;캐릭터의 취향
#DIM  DYNAMIC TASTE_GOOD        ;좋다!(이)라고 생각한 정도
#DIM  COOK_POWER				;캐릭터의 조리력, 또는 외식할때의 맛

TASTE_CHARA '= GET_STR(, "캐릭터데이터", C_ID, "요리：좋아하는 맛")
TASTE_GOOD = 30 + 10 * STR_MULTI_COUNT(TASTE_CHARA, TASTE_FOOD)
SIF STRCOUNT(TASTE_FOOD, ESCAPE("진수성찬/"))
	TASTE_GOOD += 20
SIF STRCOUNT(TASTE_FOOD, ESCAPE("메이드류/"))
	TASTE_GOOD += 5
SIF STRCOUNT(TASTE_FOOD, ESCAPE("가정적/"))
	TASTE_GOOD += 5
;야채 싫은은 야채 빼는걸 좋아한다（개개의 야채는 판정하지 않는다）
SIF STRCOUNT(TASTE_FOOD, ESCAPE("야채 빼기/"))
	TASTE_GOOD += STRCOUNT(GET_STR(, "캐릭터데이터", C_ID, "요리：싫어하는 맛"), ESCAPE("야채/"))

;만월 보너스
SIF GROUPMATCH(NAME_MOON(DAY:3), "만월", "보름 -중추의 명월- ") && STRCOUNT(TASTE_FOOD, ESCAPE("달구경/"))
	TASTE_GOOD += 3

SIF !STRLENS(DISHNAME)
	RETURNF MAX(TASTE_GOOD, 1)

;여기에서(보다)↓는 통상의 요리 처리 전용의 평가 처리입니다
IF !DISH_RADICAL()
ELSEIF TASTE_GIVEUP(C_ID, DISH_RADICAL())
	TIMES TASTE_GOOD, 0.1
ELSE
	TIMES TASTE_GOOD, 1.5
ENDIF

TASTE_GOOD = TASTE_GOOD * COOK_POWER

;식사 결과 대성공때
SIF TFLAG:193 == 1
	TIMES TASTE_GOOD, 1.5
;꾸미고
SIF DISHSPOIL < 1
	TIMES TASTE_GOOD, 1.2

;자신이 만든 요리는 편애 한다
SIF DISHASSI == C_ID
	TIMES TASTE_GOOD, 1.1

;연모계-이룬다
IF TALENT:C_ID:연인
		TIMES TASTE_GOOD, 2.0
ELSEIF TALENT:C_ID:연모
	TIMES TASTE_GOOD, 1.3
ELSEIF TALENT:C_ID:사모
	TIMES TASTE_GOOD, 1.1
ENDIF

;조수 효과에 의한 추가 처리
SIF STRCOUNT(TASTE_FOOD, ESCAPE("빈상/"))
		TIMES TASTE_GOOD, 0.8
SIF STRCOUNT(TASTE_FOOD, ESCAPE("소쇄/"))
		TIMES TASTE_GOOD, 1.2
SELECTCASE GET_TALENTNAME(GETNUM(TALENT, "신령"), TALENT:C_ID:신령)
CASE "사신", "염라"
CASEELSE
	SIF TALENT:C_ID:신령 && STRCOUNT(TASTE_FOOD, ESCAPE("영험/"))
		TIMES TASTE_GOOD, 1.1
ENDSELECT

SELECTCASE GET_TALENTNAME(GETNUM(TALENT, "인간"), TALENT:C_ID:인간)
CASE "인간"
	SIF STR_MULTI_COUNT(TASTE_FOOD, ESCAPE("이상한/불온/"))
		TIMES TASTE_GOOD, 0.8
CASE "월인"
	SIF STRCOUNT(TASTE_FOOD, ESCAPE("달구경/"))
		TIMES TASTE_GOOD, 1.1
ENDSELECT

SIF STRCOUNT(TASTE_FOOD, ESCAPE("파워풀/")) && GET_TALENTNAME(GETNUM(TALENT, "회복속도"), TALENT:C_ID:회복속도) == "회복 느림"
		TIMES TASTE_GOOD, 1.1
SIF STRCOUNT(TASTE_FOOD, ESCAPE("섬세/")) && STR_MULTI_COUNT(TASTE_FOOD, ESCAPE("디저트/경식/"))
		TIMES TASTE_GOOD, 1.1
SIF STRCOUNT(TASTE_FOOD, ESCAPE("대화력/")) && STR_MULTI_COUNT(TASTE_FOOD, ESCAPE("농후/기름/"))
		TIMES TASTE_GOOD, 1.1
SIF STRCOUNT(TASTE_FOOD, ESCAPE("현란/")) && STRCOUNT(TASTE_FOOD, ESCAPE("품위있는/"))
		TIMES TASTE_GOOD, 1.1
SIF STRCOUNT(TASTE_FOOD, ESCAPE("풍류/")) && STRCOUNT(TASTE_FOOD, ESCAPE("일식/"))
		TIMES TASTE_GOOD, 1.1
SIF STRCOUNT(TASTE_FOOD, ESCAPE("실험적/")) && GET_TALENTNAME(GETNUM(TALENT, "성적흥미"), TALENT:C_ID:성적흥미) == "호기심"
		TIMES TASTE_GOOD, 1.1
SIF STRCOUNT(TASTE_FOOD, ESCAPE("요정풍/")) && TALENT:C_ID:요정
		TIMES TASTE_GOOD, 1.1
SIF STRCOUNT(TASTE_FOOD, ESCAPE("관능적/")) && (TALENT:C_ID:섹프 || TALENT:C_ID:애욕)
		TIMES TASTE_GOOD, 1.1

SIF STRCOUNT(TASTE_FOOD, ESCAPE("풍요/")) && STR_MULTI_COUNT(TASTE_FOOD, ESCAPE("야채/쌀/"))
		TIMES TASTE_GOOD, 1.2
SIF STRCOUNT(TASTE_FOOD, ESCAPE("류큐풍/")) && STR_MULTI_COUNT(TASTE_FOOD, ESCAPE("농후/기름/튀겨짐/"))
		TIMES TASTE_GOOD, 1.2
SIF STRCOUNT(TASTE_FOOD, ESCAPE("화려한/")) && STRCOUNT(TASTE_FOOD, ESCAPE("산뜻한/"))
		TIMES TASTE_GOOD, 1.5
SIF STRCOUNT(TASTE_FOOD, ESCAPE("카리스마/")) && STRCOUNT(TASTE_FOOD, ESCAPE("붉은/"))
		TIMES TASTE_GOOD, 1.5
SIF STRCOUNT(TASTE_FOOD, ESCAPE("수병풍/")) && STRCOUNT(TASTE_FOOD, ESCAPE("물고기/카레라이스/"))
		TIMES TASTE_GOOD, 1.5
SIF STRCOUNT(TASTE_FOOD, ESCAPE("화인소녀/")) && STRCOUNT(TASTE_FOOD, ESCAPE("중식/"))
		TIMES TASTE_GOOD, 2.0
SIF STRCOUNT(TASTE_FOOD, ESCAPE("명검/")) && STR_MULTI_COUNT(TASTE_FOOD, ESCAPE("생선회/신선한 생선회/스시/") )
		TIMES TASTE_GOOD, 2.0

IF STRCOUNT(TASTE_FOOD, ESCAPE("텐구류/"))
	SIF ALCOHOL_FACE(C_ID) != "　맨정신　"
		TIMES TASTE_GOOD, 1.1
ENDIF
IF STRCOUNT(TASTE_FOOD, ESCAPE("오니의 조미료/"))
	SELECTCASE ALCOHOL_FACE(C_ID)
	CASE "취기"
		TIMES TASTE_GOOD, 1.1
	CASE "주정꾼"
		TIMES TASTE_GOOD, 1.3
	CASE "곤드레만드레"
		TIMES TASTE_GOOD, 1.5
	ENDSELECT
ENDIF
SIF STRCOUNT(TASTE_FOOD, ESCAPE("반역/"))
	TASTE_GOOD = TASTE_GOOD * (MARK:C_ID:반발각인 + 1)

IF STRCOUNT(TASTE_FOOD, ESCAPE("빙결/"))
	SIF GET_MONTH() == "여름의 달"
		TIMES TASTE_GOOD, 2.0
ELSEIF STRCOUNT(TASTE_FOOD, ESCAPE("봄바람/"))
	SIF GROUPMATCH(GET_MONTH(), "겨울의 달", "봄의 달")
		TIMES TASTE_GOOD, 1.5
ELSEIF STRCOUNT(TASTE_FOOD, ESCAPE("가을풍/"))
	SIF GROUPMATCH(GET_MONTH(), "여름의 달", "가을의 달")
		TIMES TASTE_GOOD, 1.5
ENDIF

SIF STRCOUNT(TASTE_FOOD, ESCAPE("질투/")) && (TALENT:C_ID:사모 || TALENT:C_ID:연모 || TALENT:C_ID:연인)
		TIMES TASTE_GOOD, 0.5

SIF DISHASSI > 0 && CSVRELATION(C_ID, DISHASSI)
	TASTE_GOOD = TASTE_GOOD * CSVRELATION(C_ID, DISHASSI) / 100

TASTE_GOOD = TASTE_GOOD / 10
RETURNF MAX(TASTE_GOOD, 1)

;미각 평가 함수 BAD
@TASTE_BAD(C_ID, TASTE_FOOD)
#FUNCTION
#DIM          C_ID              ;대상 캐릭터
#DIMS         TASTE_FOOD        ;할 수 있던 요리의맛
#DIMS DYNAMIC TASTE_CHARA       ;캐릭터의 취향
#DIM  DYNAMIC TASTE_BAD         ;싫다! 라고 생각한 정도
TASTE_CHARA '= GET_STR(, "캐릭터데이터", C_ID, "요리：싫어하는 맛")
TASTE_BAD = 30 + 15 * STR_MULTI_COUNT(TASTE_CHARA, TASTE_FOOD)

SIF !STRLENS(DISHNAME)
	RETURNF MAX(TASTE_BAD, 1)

;정밀도 확보용
TASTE_BAD = TASTE_BAD * 10

IF !DISH_RADICAL()
ELSEIF TASTE_GIVEUP(C_ID, DISH_RADICAL())
	TIMES TASTE_BAD, 3.0
ELSE
	TIMES TASTE_BAD, 0.8
ENDIF

;식사 결과대실패때
SIF TFLAG:193 == -1
	TIMES TASTE_BAD, 1.5
;조리 경과시간
SELECTCASE DISHSPOIL
CASE 1
	TIMES TASTE_BAD, 1.2
CASE 2
	TIMES TASTE_BAD, 1.8
ENDSELECT

SIF DISHASSI == C_ID
	TIMES TASTE_BAD, 0.9

;조수 효과에 의한 추가 처리
SIF STRCOUNT(TASTE_FOOD, ESCAPE("빈상/"))
		TIMES TASTE_BAD, 1.2
SIF GET_TALENTNAME(GETNUM(TALENT, "인간"), TALENT:C_ID:인간) == "인간" && STR_MULTI_COUNT(TASTE_FOOD, ESCAPE("이상한/불온/"))
		TIMES TASTE_BAD, 1.1
SIF STRCOUNT(TASTE_FOOD, ESCAPE("배려/"))
		TIMES TASTE_BAD, 0.9
SIF STRCOUNT(TASTE_FOOD, ESCAPE("메이드류/"))
		TIMES TASTE_BAD, 0.9
SIF STRCOUNT(TASTE_FOOD, ESCAPE("가정적/"))
		TIMES TASTE_BAD, 0.9
SIF STRCOUNT(TASTE_FOOD, ESCAPE("행운/"))
		TIMES TASTE_BAD, 0.8

SIF DISHASSI > 0 && CSVRELATION(C_ID, DISHASSI)
	TASTE_BAD = TASTE_BAD * 100 / CSVRELATION(C_ID, DISHASSI)

TASTE_BAD = TASTE_BAD / 10

RETURNF MAX(TASTE_BAD, 1)

;-------------------------------------------------
;장난 관련 판정
;-------------------------------------------------
;장난에 의한 식사의 중단 처리
;일단 판정 BIT 돌려주고 있지만 별로(호빵) 의미는 없을 것이다
@TASTE_GIVEUP(C_ID, TASTE_TYPE)
#FUNCTION
#DIM         C_ID			;판정 대상 캐릭터
#DIM         TASTE_TYPE		;장난의 타입
SELECTCASE TASTE_TYPE
CASE DISH_RADICAL_엄청매운
	SIF GETBIT(CFLAG:C_ID:미각기호, DISH_RADICAL_엄청매운)
		RETURNF 0
	SIF STRCOUNT(GET_STR(, "캐릭터데이터", C_ID, "요리：좋아하는 맛"), ESCAPE("스파이스/"))
		RETURNF 0
	RETURNF DISH_RADICAL_엄청매운
CASE DISH_RADICAL_격감
	SIF GETBIT(CFLAG:C_ID:미각기호, DISH_RADICAL_격감)
		RETURNF 0
	SIF STRCOUNT(GET_STR(, "캐릭터데이터", C_ID, "요리：좋아하는 맛"), ESCAPE("단/"))
		RETURNF 0
	RETURNF DISH_RADICAL_격감
CASE DISH_RADICAL_고추냉이
	SIF GETBIT(CFLAG:C_ID:미각기호, DISH_RADICAL_고추냉이)
		RETURNF 0
	SIF STRCOUNT(GET_STR(, "캐릭터데이터", C_ID, "요리：좋아하는 맛"), ESCAPE("스파이스/"))
		RETURNF 0
	RETURNF DISH_RADICAL_고추냉이
CASE DISH_RADICAL_레몬
	SIF GETBIT(CFLAG:C_ID:미각기호, DISH_RADICAL_레몬)
		RETURNF 0
	RETURNF DISH_RADICAL_레몬
ENDSELECT

;요리에 장난이 베풀어지고 있는지 아닌지
;진한/얇은 것 맛내기는 제외
@DISH_MIXTURE()
#FUNCTION
LOCAL = DISH_RADICAL()
SIF LOCAL
	RETURNF LOCAL
LOCAL = DISH_DRAG()
	RETURNF LOCAL
RETURNF

;장난에 의해 과격한 맛이 하는 요리이다
@DISH_RADICAL()
#FUNCTION
SIF GETBIT(TCVAR:MASTER:308, DISH_RADICAL_엄청매운)
	RETURNF DISH_RADICAL_엄청매운
SIF GETBIT(TCVAR:MASTER:308, DISH_RADICAL_격감)
	RETURNF DISH_RADICAL_격감
SIF GETBIT(TCVAR:MASTER:308, DISH_RADICAL_고추냉이)
	RETURNF DISH_RADICAL_고추냉이
SIF GETBIT(TCVAR:MASTER:308, DISH_RADICAL_레몬)
	RETURNF DISH_RADICAL_레몬
RETURNF

;약물이 사들여진 요리이다
@DISH_DRAG()
#FUNCTION
SIF GETBIT(TCVAR:MASTER:308, DISH_DRAG_미약)
	RETURNF DISH_DRAG_미약
SIF GETBIT(TCVAR:MASTER:308, DISH_DRAG_이뇨제)
	RETURNF DISH_DRAG_이뇨제
SIF GETBIT(TCVAR:MASTER:308, DISH_DRAG_춘약)
	RETURNF DISH_DRAG_춘약
SIF GETBIT(TCVAR:MASTER:308, DISH_DRAG_수면제)
	RETURNF DISH_DRAG_수면제
RETURNF

;-------------------------------------------------
;여기에서 요리의맛정보의 기술
;-------------------------------------------------
;GET_TASTE계는 캐릭터라인을 건네주어 캐릭터라인이 되돌아 오는 형식
;이유로서는 실제로 요리를 만드는 장면 이외에도 사용할 수 있도록(듯이) 하기 위한(해)
;반환값은"HOGE/"로 반드시 말미에"/"를 넣는 것(나중에의 추가에 대응할 수 있도록(듯이) 한다)
;-------------------------------------------------
;요리의 종류
@GET_TASTE_MENUTYPE(ARGS)
#FUNCTIONS
SELECTCASE ARGS
CASE "SNACK"
	RETURNF "경식/"
CASE "MAINDISH"
	RETURNF "주식/"
CASE "DESSERT"
	RETURNF "디저트/"
CASE "FORBIDDEN"
	RETURNF "수수께끼 요리/"
	;"금단"은 식재료측에서 부여하고 있습니다
CASE "FISH"
	RETURNF "생선 요리/"
CASE "FROG"
	RETURNF "개구리 요리/"
CASE "FESTIVAL"
	RETURNF "진수성찬/"
ENDSELECT

;메인 식재료
@GET_TASTE_INGREDIENT(ARGS)
#FUNCTIONS
SELECTCASE ARGS
CASE "잡곡"
	RETURNF "잡곡/야취/"
CASE "묵은쌀"
	RETURNF "묵은쌀/검소/"
CASE "백미"
	RETURNF "백미/품위있는/"
CASE "개구리"
	RETURNF "야취/"
CASE "물고기"
	RETURNF "물고기/검소/"
CASE "맛있는물고기"
	RETURNF "맛있는물고기/품위있는/"
CASE "로터"
	RETURNF "금단/"
ENDSELECT

;추가 식재료=야채
;추가 식재료는 호출해 원으로 식재료명 자체를 부여
@GET_TASTE_VEGE(ARGS)
#FUNCTIONS
SELECTCASE ARGS
CASE "양배추"
	RETURNF "야채/담백/"
CASE "딸기"
	RETURNF "과일/귀여운/붉은/산뜻한/"
CASE "순무"
	RETURNF "야채/미끄러운/"

CASE "오이"
	RETURNF "야채/물기/"
CASE "토마토"
	RETURNF "야채/붉은/산뜻한/"
CASE "수박"
	RETURNF "과일/물기/단/붉은/"

CASE "가지"
	RETURNF "야채/담백/"
CASE "고구마"
	RETURNF "야채/볼륨감/"
CASE "포도"
	RETURNF "과일/귀여운/단/"

CASE "백합근"
	RETURNF "야채/품위있는/"
CASE "당근"
	RETURNF "야채/산뜻한/"
CASE "파"
	RETURNF "야채/스파이스/"

CASE "산나물"
	RETURNF "야채/야취/"
ENDSELECT

;각 요리의맛
;각 요리는 호출해 원으로 요리명 자체를 부여
@GET_TASTE_DISH(ARGS)
#FUNCTIONS
SELECTCASE ARGS
;주식
CASE "잡탕죽"
	RETURNF "일식/쌀/담백/"
CASE "계란덮밥"
	RETURNF "일식/쌀/계란/담백/매끄러운/심플/"
CASE "야채볶음"
	RETURNF "야채/심플/"
CASE "된장국"
	RETURNF "일식/국물/"
CASE "나물"
	RETURNF "일식/야채/담백/"
CASE "우동"
	RETURNF "일식/면류/미끄러운/"
CASE "소면"
	RETURNF "일식/면류/담백/미끄러운/"
CASE "소바"
	RETURNF "일식/면류/야취/담백/미끄러운/"
CASE "오믈렛"
	RETURNF "양식/계란/볼륨감/"
CASE "스튜"
	RETURNF "양식/국물/볼륨감/농후/"
CASE "햄버그"
	RETURNF "양식/고기 요리/볼륨감/농후/"
CASE "그라탕"
	RETURNF "양식/치즈/볼륨감/농후/"
CASE "카레라이스"
	RETURNF "양식/쌀/볼륨감/스파이스/농후/"
CASE "샤브샤브"
	RETURNF "일식/고기 요리/담백/"
CASE "라면"
	RETURNF "중식/면류/미끄러운/"
CASE "생강구이"
	RETURNF "일식/고기 요리/볼륨감/기름/"
CASE "스테이크"
	RETURNF "양식/고기 요리/야취/볼륨감/기름/"
CASE "유린기"
	RETURNF "중식/고기 요리/닭고기/볼륨감/튀겨짐/기름/사각사각/"
CASE "모짜렐라 치즈와 토마토의 샐러드"
	RETURNF "양식/야채/치즈/토마토/담백/산뜻한/붉은/"
CASE "도핑 콘소메 수프"
	RETURNF "양식/수수께끼 요리/국물/금단/스파이스/"
CASE "중화풍 타조 카르파쵸"
	RETURNF "중식/고기 요리/닭고기/벌레고기/볼륨감/튀겨짐/기름/사각사각/산뜻한/"
CASE "긴기 요리"
	RETURNF "수수께끼 요리/볼륨감/심플/"
CASE "튀김"
	RETURNF "일식/튀겨짐/기름/사각사각/"
CASE "고봉밥"
	RETURNF "일식/쌀/볼륨감/심플/"
CASE "채소절임 곱빼기밥"
	RETURNF "일식/쌀/야채/검소/담백/볼륨감/심플/"

;감미
CASE "푸딩"
	RETURNF "양식/품위있는/계란/말랑말랑/미끄러운/"
CASE "케이크"
	RETURNF "양식/품위있는/반죽/계란/볼륨감/산뜻한/"
CASE "젤리"
	RETURNF "양식/말랑말랑/담백/산뜻한/물기/"
CASE "타르트"
	RETURNF "양식/반죽/계란/귀엽다/"
CASE "쿠키"
	RETURNF "양식/반죽/계란/사각사각/귀엽다/"
CASE "파이"
	RETURNF "양식/반죽/사각사각/"
CASE "양갱"
	RETURNF "일식/팥소/볼륨감/미끄러운/"
CASE "찹살떡"
	RETURNF "일식/팥소/볼륨감/쫄깃한/"
CASE "카스테라"
	RETURNF "양식/품위있는/반죽/계란/"
CASE "경단"
	SIF GROUPMATCH(NAME_MOON(DAY:3), "만월", "보름 -중추의 명월- ")
		RETURNF "일식/쫄깃한/달구경/"
	RETURNF "일식/쫄깃한/"
CASE "과일모듬"
	RETURNF "과일/담백/산뜻한/심플/"
CASE "파운드케이크"
	RETURNF "양식/반죽/계란/"
CASE "안미츠"
	RETURNF "일식/팥소/물기/미끄러운/"
CASE "야쇼마"
	RETURNF "일식/쫄깃한/심플/"
CASE "타피오카 밀크티"
	RETURNF "미끄러운/쫄깃한/귀엽다/물기/"

;경식
CASE "샌드위치"
	RETURNF "양식/반죽/"
CASE "주먹밥"
	RETURNF "일식/심플/"
CASE "햄버거"
	RETURNF "양식/야취/반죽/볼륨감/"
CASE "스콘"
	RETURNF "양식/품위있는/반죽/"
CASE "슈마이"
	RETURNF "중식/고기 요리/"
CASE "고기만두"
	RETURNF "중식/반죽/고기 요리/농후/쫄깃한/"
CASE "피쉬＆칩스"
	RETURNF "생선 요리/튀겨짐/기름/"
CASE "타코스"
	RETURNF "양식/야취/반죽/농후/"
CASE "타코야키"
	RETURNF "일식/반죽/"

;금단
CASE "튀김 로터"
	RETURNF "튀겨짐/기름/"
CASE "살짝 데친 E마사지기풍 로터"
	RETURNF "담백/"
CASE "클리캡용 로터의 쥠"
	RETURNF "일식/담백/"
CASE "오나홀로 만든 로터 조림"
	RETURNF "일식/국물/볼륨감/농후/"

;개구리 요리
CASE "개구리 튀김"
	RETURNF "고기 요리/튀겨짐/기름/사각사각/"
CASE "개구리 카레"
	RETURNF "양식/쌀/고기 요리/볼륨감/스파이스/농후/"
CASE "개구리 소테"
	RETURNF "양식/고기 요리/기름/"
CASE "개구리의 소금구이"
	RETURNF "고기 요리/심플/"

;생선 요리
CASE "스시"
	RETURNF "일식/품위있는/담백/산뜻한/"
CASE "생선구이"
	RETURNF "일식/심플/"
CASE "조린 생선"
	RETURNF "일식/물기/"
CASE "장어구이"
	RETURNF "일식/농후/"
CASE "신선한 생선회"
	RETURNF "일식/품위있는/담백/심플/산뜻한/"
CASE "마리네"
	RETURNF "양식/담백/산뜻한/"
CASE "뫼니에르"
	RETURNF "양식/사각사각/"
CASE "생선회"
	RETURNF "일식/품위있는/담백/심플/"
CASE "양념구이"
	RETURNF "일식/농후/"
CASE "타츠다튀김"
	RETURNF "일식/튀겨짐/기름/사각사각/"
CASE "피쉬 카레"
	RETURNF "양식/쌀/볼륨감/스파이스/농후/"
CASE "정어리 파이"
	RETURNF "수수께끼 요리/양식/반죽/사각사각/"

;진수성찬
CASE "오세치요리"
	RETURNF "일식/품위있는/볼륨감/산뜻한/"
CASE "에호마키"
	RETURNF "일식/쌀/볼륨감/"
CASE "토시코시 소바"
	RETURNF "일식/면류/미끄러운/"
ENDSELECT

;조수로 부여되는 미각
@GET_TASTE_ASSIBONUS(C_ID)
#FUNCTIONS
#DIM          C_ID
#DIMS DYNAMIC TEMP_TASTE
IF C_ID == MASTER && FLAG:역극
	TEMP_TASTE '= GET_STR(, "캐릭터데이터", FLAG:역극, "요리：조수 효과")
ELSE
	TEMP_TASTE '= GET_STR(, "캐릭터데이터", C_ID, "요리：조수 효과")
ENDIF

SELECTCASE GET_TALENTNAME(GETNUM(TALENT, "신령"), TALENT:C_ID:신령)
CASE "사신", "염라"
	TEMP_TASTE += "명계풍/"
CASEELSE
	SIF TALENT:C_ID:신령
		TEMP_TASTE += "영험/"
ENDSELECT

SELECTCASE GET_TALENTNAME(GETNUM(TALENT, "인간"), TALENT:C_ID:인간)
CASE "인간"
CASE "마법사"
	TEMP_TASTE += "마법/"
CASE "무녀"
	TEMP_TASTE += "영험/"
CASE "천인"
	TEMP_TASTE += "천계풍/"
CASE "선인"
	TEMP_TASTE += "정묘/"
CASE "달인"
	TEMP_TASTE += "월도풍/"
ENDSELECT

SIF GET_TALENTNAME(GETNUM(TALENT, "비생물"), TALENT:C_ID:비생물) == "영체"
	TEMP_TASTE += "불가사의/"

SIF TALENT:C_ID:요정
	TEMP_TASTE += "요정풍/"
SIF TALENT:C_ID:오니
	TEMP_TASTE += "오니의 조미료/"
SIF TALENT:C_ID:텐구
	TEMP_TASTE += "텐구류/"
SIF TALENT:C_ID:한기선호
	TEMP_TASTE += "빙결/"

SIF TALENT:C_ID:조합지식
	TEMP_TASTE += "허브/"
SIF GET_TALENTNAME(GETNUM(TALENT, "회복속도"), TALENT:C_ID:회복속도) == "회복 빠름" || TALENT:C_ID:고무
	TEMP_TASTE += "파워풀/"
SIF GET_TALENTNAME(GETNUM(TALENT, "습득속도"), TALENT:C_ID:습득속도) == "습득 빠름" || GET_TALENTNAME(GETNUM(TALENT, "회복속도"), TALENT:C_ID:회복속도) == "회복 느림"
	TEMP_TASTE += "섬세/"
SIF TALENT:C_ID:음악지식 >= 1 || TALENT:C_ID:음감 >= 1
	TEMP_TASTE += "예술적/"
SIF TALENT:C_ID:섹프 || TALENT:C_ID:애욕
	TEMP_TASTE += "관능적/"
SIF TALENT:C_ID:사모 || TALENT:C_ID:연모
	TEMP_TASTE += "애정/"
SIF TALENT:C_ID:헌신적
	TEMP_TASTE += "배려/"
SIF GROUPMATCH(ALCOHOL_FACE(C_ID), "곤드레만드레", "주정꾼")
	TEMP_TASTE += "고주망태/"
SIF TALENT:C_ID:응답 < 0
	TEMP_TASTE += "마일드/"
RETURNF TEMP_TASTE

@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
PRINTFORML 요리하는 낌새를 알아채고 %ARG가% 왔다……

@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

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


code:
;-------------------------------------------------
;식사한다
;日常系コマンド、レベル1
;-------------------------------------------------
@COM414
#DIM 회복전체력_MASTER
#DIM 회복전기력_MASTER
#DIM 회복후체력_MASTER
#DIM 회복후기력_MASTER
#DIM 회복전체력_TARGET
#DIM 회복전기력_TARGET
#DIM 회복후체력_TARGET
#DIM 회복후기력_TARGET
#DIM NUM_TARGET
#DIM NOW_TARGET
#DIM NOW_SUCCESS
#DIM T_ID
CALL AssembleForMeal
NUM_TARGET = GET_TARGETNUM()
VARSET LOCAL
회복전체력_MASTER = BASE:MASTER:체력
회복전기력_MASTER = BASE:MASTER:기력
IF TARGET
	회복전체력_TARGET = BASE:TARGET:체력
	회복전기력_TARGET = BASE:TARGET:기력
	CALL COM414_CTRL_EAT_DISH("PRI")
	SIF RESULT < 0
		RETURN
	;信頼
	TFLAG:98 += 3
	SIF ABL:MASTER:요리기능 > 1
		TFLAG:98 ++
	SIF ABL:MASTER:요리기능 > 3
		TFLAG:98 ++

	;장난を仕込まれていない
	IF !TASTE_GIVEUP(TARGET, DISH_RADICAL()) && TFLAG:192 >= 0
		;味付けがツボだと失敗しない
		IF CFLAG:TARGET:미각기호 & TCVAR:MASTER:308
			TFLAG:193 = MAX(TFLAG:193,0)
			;信頼にも修正
			TFLAG:98 += 2
		ENDIF
	ENDIF
	SELECTCASE DISHTYPE
		CASE 1

		CASE 2,4,5

		CASE 3

	ENDSELECT

	;特殊な식사フラグ
	SELECTCASE DISHNAME
		CASE "샤브샤브"
			;その場にはいてないキャラがいるか確認
			FOR LOCAL, 1, NUM_TARGET + 1
				SIF EQUIP:(TARGET:LOCAL):하반신속옷2 > 0
					CONTINUE
				TFLAG:194 = 1
				BREAK
			NEXT
		CASE "긴기 요리"
			TFLAG:194 = 34
		CASE "모짜렐라 치즈와 토마토의 샐러드"
			TFLAG:194 = 30
		CASE "도핑 콘소메 수프"
			TFLAG:194 = 31
		CASEELSE
			SIF DISHTYPE == 4
				TFLAG:194 = 2
	ENDSELECT

	;その場に居るTARGET全員で回す
	;TARGET:0以外を先に処理して最後にTARGET:0
	NOW_TARGET = TARGET
	NOW_SUCCESS = TFLAG:193
	FOR LOCAL:4, 1, NUM_TARGET + 1
		TARGET = TARGET:(LOCAL:4)
		SIF TARGET == NOW_TARGET
			CONTINUE
		CALL KOJO_MESSAGE_SEND("SUCCESS",-1,TARGET,-1,-1)
		SIF TFLAG:193 == -2
			CONTINUE
		CALL COM414_CTRL_EAT_DISH("LATER")
		CALL COM414_1
	NEXT
	TARGET = NOW_TARGET
	TFLAG:193 = NOW_SUCCESS

	IF !CFLAG:수면
		CALL COM414_1
	ELSE
		SIF TFLAG:193 == 1
			EXP:MASTER:회화경험 --
	ENDIF
	회복후체력_TARGET = BASE:TARGET:체력
	회복후기력_TARGET = BASE:TARGET:기력
ENDIF

;軽食
IF DISHTYPE == 1
	CALL 식사(MASTER)
	TIME += 20
	SIF CFLAG:동행
		CFLAG:동행 += 20
;요리が샤브샤브ではいてないキャラがいると노팬티샤브샤브に
ELSEIF TFLAG:194 == 1
	BASE:MASTER:체력 = MIN(BASE:MASTER:체력 + MAXBASE:MASTER:체력 / 3 , MAXBASE:MASTER:체력)
	BASE:MASTER:기력 = MIN(BASE:MASTER:기력 + MAXBASE:MASTER:기력 / 2 , MAXBASE:MASTER:기력)
	BASE:MASTER:정력 = MIN(BASE:MASTER:정력 + MAXBASE:MASTER:정력 / 2 , MAXBASE:MASTER:정력)
	;식사をしたフラグ
	CALL 만복도상승(MASTER,"주식")
	TIME += 40
	SIF CFLAG:동행
		CFLAG:동행 += 40
ELSEIF DISHTYPE == 2
	CALL 식사(MASTER)
	TIME += 40
	SIF CFLAG:동행
		CFLAG:동행 += 40
ELSEIF DISHTYPE == 3
	CALL 식사(MASTER)
	TIME += 20
	SIF CFLAG:동행
		CFLAG:동행 += 20
ELSEIF DISHTYPE == 4 || DISHTYPE == 5
	CALL 식사(MASTER)
	TIME += 40
	SIF CFLAG:동행
		CFLAG:동행 += 40
ENDIF
회복후체력_MASTER = BASE:MASTER:체력
회복후기력_MASTER = BASE:MASTER:기력
;CALL RESET_DISH
DRAWLINE
PRINTFORML 체력+{ABS(회복후체력_MASTER - 회복전체력_MASTER)}（%CALLNAME:MASTER%）
PRINTFORML 기력+{ABS(회복후기력_MASTER - 회복전기력_MASTER)}（%CALLNAME:MASTER%）
IF TARGET
	PRINTFORML 체력+{ABS(회복후체력_TARGET - 회복전체력_TARGET)}（%CALLNAME:TARGET%）
	PRINTFORML 기력+{ABS(회복후기력_TARGET - 회복전기력_TARGET)}（%CALLNAME:TARGET%）
ENDIF
RETURN 1

;식사結果の成功制御、判定部分がほぼ同一だったので切り出し
@COM414_CTRL_EAT_DISH(SCENE)
#DIMS SCENE
SELECTCASE TFLAG:192
CASE 0
	;通常
	LOCAL = RAND:(100 - ABL:MASTER:요리기능 * 2)
	LOCAL:1 = MIN(90 + GET_SUCCESS_RATE() / 5, 99)
	SELECTCASE LOCAL
		CASE IS <= 9
			TFLAG:193 = 1
		CASE IS >= LOCAL:1
			;10～1％で失敗
			TFLAG:193 = -1
		CASEELSE
			;残りは成功
			TFLAG:193 = 0
	ENDSELECT
CASE 1
	IF RAND:(100 - ABL:MASTER:요리기능 * 2) <= 9
		TFLAG:193 = 1
	ELSE
		;残りは成功
		TFLAG:193 = 0
	ENDIF
CASE -1
	TFLAG:193 = -1
CASE -2
	TFLAG:193 = -2
ENDSELECT

IF SCENE == "PRI"
	SIF TFLAG:192 == -2
		RETURN -1
	SELECTCASE TFLAG:193
	CASE 1
		TFLAG:98 = 2
	CASE -1
		TFLAG:98 = -2
	CASEELSE
		TFLAG:98 = 0
	ENDSELECT
ENDIF

@COM414_1
#DIM 空腹
#DIM DISH_ITAZURA
空腹 = 0
IF DISHTYPE == 3
	SIF TIME_PROGRESS(TCVAR:디저트공복시각)
		空腹 = 1
ELSE
	SIF TIME_PROGRESS(TCVAR:공복시각)
		空腹 = 1
ENDIF
SIF !空腹
	RETURN

;満腹でない
;固定で獲得するソース
SELECTCASE DISHSPOIL
	CASE 0
		SOURCE:환락 = 800
	CASE 1
		SOURCE:환락 = 400
	CASE 2
		SOURCE:환락 = 100
		SOURCE:불결 = 400
		SOURCE:반감 = 400
ENDSELECT

;ABL:순종をみる
IF ABL:순종 <= 1
	SOURCE:환락 += (ABL:순종 * 60)
ELSEIF ABL:순종 <= 3
	SOURCE:환락 += 500 + (ABL:순종 * 60)
ELSEIF ABL:순종 <= 5
	SOURCE:환락 += 700 + (ABL:순종 * 60)
ELSEIF ABL:순종 <= 8
	SOURCE:환락 += 1000 + (ABL:순종 * 75)
ELSEIF ABL:순종 <= 11
	SOURCE:환락 += 1500 + (ABL:순종 * 75)
ELSE
	SOURCE:환락 += 3000 + (ABL:순종 * 30)
ENDIF

;노팬티샤브샤브で노출追加
SIF TFLAG:194 == 1
	SOURCE:노출 += 1000
;호감도をみる
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

;장난요리を先に処理
DISH_ITAZURA = TASTE_GIVEUP(TARGET, DISH_RADICAL())
SELECTCASE DISH_ITAZURA
CASE 0
	;미각기호を見る
	SIF CFLAG:TARGET:미각기호 & TCVAR:MASTER:308
		SOURCE:환락 += 200
CASE DISH_RADICAL_엄청매운
	SOURCE:고통 += 500
CASE DISH_RADICAL_격감
	SOURCE:반감 += 300
CASE DISH_RADICAL_고추냉이
	SOURCE:고통 += 500
CASE DISH_RADICAL_레몬
	SOURCE:불결 += 300
ENDSELECT
IF DISH_ITAZURA
	SOURCE:반감 += 500
	TFLAG:98 -= 2
	IF TALENT:유치
		TIMES SOURCE:고통, 1.2
		TIMES SOURCE:반감, 1.2
		TIMES SOURCE:불결, 1.2
	ENDIF
	IF CFLAG:행동 == 5
		TIMES SOURCE:반감, 1.2
		TIMES SOURCE:불결, 1.2
		TFLAG:98 -= 2
	ENDIF
	SOURCE:환락 = 0
	IF TALENT:대식가
		TIMES SOURCE:반감, 1.2
		TIMES SOURCE:불결, 1.2
		TFLAG:98 -= 2
	ENDIF
	CALL KIGEN_CHANGE(TARGET, 70, -1)
	CALL 식사(TARGET)
	RETURN
ENDIF

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

IF TFLAG:193 == -1
	TIMES SOURCE:환락 , 0.10
	TIMES SOURCE:정복 , 0.50
	TIMES SOURCE:수동 , 0.50
ELSEIF TFLAG:193 == 0
	TIMES SOURCE:환락 , 1.00
	TIMES SOURCE:정복 , 1.00
	TIMES SOURCE:수동 , 1.00
	CALL KIGEN_CHANGE(TARGET,30,1)
ELSE
	TIMES SOURCE:환락 , 2.00
	TIMES SOURCE:정복 , 2.00
	TIMES SOURCE:수동 , 2.00
	IF TALENT:기분 < 0
		CALL KIGEN_CHANGE(TARGET,100,1)
	ELSE
		CALL KIGEN_CHANGE(TARGET,50,1)
	ENDIF
ENDIF
SOURCE:환락 = SOURCE:환락 * (ABL:MASTER:요리기능 + DISHQUALITY * 2) / 5
SOURCE:정복 = SOURCE:정복 * (ABL:MASTER:요리기능 + DISHQUALITY * 2) / 5
SOURCE:수동 = SOURCE:수동 * (ABL:MASTER:요리기능 + DISHQUALITY * 2) / 5
IF CFLAG:행동 == 5
	TIMES SOURCE:환락 , 2.00
	TIMES SOURCE:정복 , 2.00
	TIMES SOURCE:수동 , 2.00
	TFLAG:98 += 2
ENDIF
CALL 식사(TARGET)

SIF TALENT:대식가
	TIMES SOURCE:환락 , 1.50

;-------------------------------------------------
;実行判定
;-------------------------------------------------
@COM_ABLE414
;식사実行判定
SIF !TFLAG:100
	RETURN 0
;一括管理
SIF GLOBAL_COMABLE(414)
	RETURN RESULT
;停止中は不可
SIF FLAG:70 == 1
	RETURN 0
;장난をした요리は自分で食べない
SIF DISH_RADICAL() && !TARGET
	RETURN 0
;요리がない
SIF DISHNAME == ""
	RETURN 0
;軽食以外は屋内じゃなきゃ無理
SIF FLAG:20 >= 10 && !INROOM(CFLAG:MASTER:현재위치)
	RETURN 0
;食べたばかり
IF DISHTYPE == 3
	SIF !TIME_PROGRESS(TCVAR:MASTER:디저트공복시각)
		RETURN 0
ELSE
	SIF !TIME_PROGRESS(TCVAR:MASTER:공복시각)
		RETURN 0
ENDIF
SIF CFLAG:MASTER:우후후
	RETURN 0
RETURN 1

path: ERB/커맨드관련/COMF/일상계/COMF414 먹는다.ERB

license: mit


code:
;-------------------------------------------------
;식사를 대접한다
;日常系コマンド、レベル1
;-------------------------------------------------
@COM415
VARSET LOCAL
CALL AssembleForMeal
SELECTCASE TFLAG:192
	;通常
	CASE 0
		LOCAL = RAND:(100 - ABL:MASTER:요리기능 * 2)
		LOCAL:1 = 90 + GET_SUCCESS_RATE() / 5
		SIF LOCAL:1 > 99
			LOCAL:1 = 99
		IF LOCAL <= 9
			;10％で大成功
			EXP:MASTER:회화경험 ++
			TFLAG:193 = 1
			TFLAG:98 = 2
		ELSEIF LOCAL >= LOCAL:1
			;10～1％で失敗
			TFLAG:193 = -1
			TFLAG:98 = -2
		ELSE
			;残りは成功
			TFLAG:193 = 0
			TFLAG:98 = 0
		ENDIF
	;強制成功or大成功
	CASE 1
		IF RAND:(100 - ABL:MASTER:요리기능 * 2) <= 9
			;10％で大成功
			EXP:MASTER:회화경험 ++
			TFLAG:193 = 1
			TFLAG:98 = 2
		ELSE
			;残りは成功
			TFLAG:193 = 0
			TFLAG:98 = 0
		ENDIF
	;強制失敗
	CASE -1
		TFLAG:193 = -1
		TFLAG:98 = -2
	;コマンド終了
	CASE -2
		TFLAG:193 = -1
		RETURN 0
ENDSELECT

;信頼
TFLAG:98 += 3
SIF ABL:MASTER:요리기능 > 1
	TFLAG:98 ++
SIF ABL:MASTER:요리기능 > 3
	TFLAG:98 ++
;先制発生時は失敗しない
SIF TCVAR:20 && TFLAG:192 >= 0
	TFLAG:193 = MAX(TFLAG:193,0)
;장난を仕込まれていない
IF !TASTE_GIVEUP(TARGET, DISH_RADICAL()) && TFLAG:192 >= 0
	;味付けがツボだと失敗しない
	IF CFLAG:TARGET:미각기호 & TCVAR:MASTER:308
		TFLAG:193 = MAX(TFLAG:193,0)
		TFLAG:98 += 2
	ENDIF
ENDIF

DOWNBASE:MASTER:기력 += 50

;その場に居るTARGET全員で回す
;TARGET:0以外を先に処理して最後にTARGET:0
LOCAL:2 = TARGET
LOCAL:3 = TFLAG:193
FOR LOCAL:4, 1, GET_TARGETNUM() + 1
	TARGET = TARGET:(LOCAL:4)
	SIF TARGET == LOCAL:2
		CONTINUE
	SIF CFLAG:수면
		CONTINUE
	CALL KOJO_MESSAGE_SEND("SUCCESS",-1,TARGET,-1,-1)
	SELECTCASE TFLAG:192
		;通常
		CASE 0
			LOCAL = RAND:(100 - ABL:MASTER:요리기능 * 2)
			LOCAL:1 = 90 + GET_SUCCESS_RATE() / 5
			SIF LOCAL:1 > 99
				LOCAL:1 = 99
			IF LOCAL <= 9
				TFLAG:193 = 1
			ELSEIF LOCAL >= LOCAL:1
				;10～1％で失敗
				TFLAG:193 = -1
			ELSE
				;残りは成功
				TFLAG:193 = 0
			ENDIF
		;強制成功or大成功
		CASE 1
			IF RAND:(100 - ABL:MASTER:요리기능 * 2) <= 9
				TFLAG:193 = 1
			ELSE
				;残りは成功
				TFLAG:193 = 0
			ENDIF
		;強制失敗
		CASE -1,-2
			TFLAG:193 = -1
		;コマンド終了
		;CASE -2
			;RETURN 0
	ENDSELECT
	CALL COM415_1
NEXT
TARGET = LOCAL:2
TFLAG:193 = LOCAL:3
CALL COM415_1

SELECTCASE DISHTYPE
	CASE 1,3
		TIME += 20
		SIF CFLAG:동행
			CFLAG:동행 += 20
	CASE 2,4,5
		TIME += 40
		SIF CFLAG:동행
			CFLAG:동행 += 40
ENDSELECT

;CALL RESET_DISH

RETURN 1

@COM415_1
#DIM 空腹
#DIM DISH_ITAZURA
空腹 = 0
IF DISHTYPE == 3
	SIF TIME_PROGRESS(TCVAR:디저트공복시각)
		空腹 = 1
ELSE
	SIF TIME_PROGRESS(TCVAR:공복시각)
		空腹 = 1
ENDIF

SIF !空腹
	RETURN

;固定で獲得するソース
SELECTCASE DISHSPOIL
	CASE 0
		SOURCE:환락 = 1600
	CASE 1
		SOURCE:환락 = 400
	CASE 2
		SOURCE:환락 = 100
		SOURCE:불결 = 400
		SOURCE:반감 = 400
ENDSELECT

;ABL:순종をみる
IF ABL:순종 <= 1
	SOURCE:환락 += (ABL:순종 * 60)
ELSEIF ABL:순종 <= 3
	SOURCE:환락 += 500 + (ABL:순종 * 60)
ELSEIF ABL:순종 <= 5
	SOURCE:환락 += 700 + (ABL:순종 * 60)
ELSEIF ABL:순종 <= 8
	SOURCE:환락 += 1200 + (ABL:순종 * 75)
ELSEIF ABL:순종 <= 11
	SOURCE:환락 += 2000 + (ABL:순종 * 75)
ELSE
	SOURCE:환락 += 3000 + (ABL:순종 * 30)
ENDIF

;호감도をみる
IF CFLAG:2 <= 500
	SOURCE:환락 += CFLAG:2
ELSEIF CFLAG:2 <= 5000
	SOURCE:환락 += 1000 + (CFLAG:2 - 500) / 3
ELSE
	SOURCE:환락 += 2500 + (CFLAG:2 - 5000) / 5
ENDIF
SIF SOURCE:환락 < 0
	SOURCE:환락 = 0

;장난요리を先に処理
DISH_ITAZURA = TASTE_GIVEUP(TARGET, DISH_RADICAL())
SELECTCASE DISH_ITAZURA
CASE 0
	;미각기호を見る
	SIF CFLAG:TARGET:미각기호 & TCVAR:MASTER:308
		SOURCE:환락 += 200
CASE DISH_RADICAL_엄청매운
	SOURCE:고통 += 500
CASE DISH_RADICAL_격감
	SOURCE:반감 += 300
CASE DISH_RADICAL_고추냉이
	SOURCE:고통 += 500
CASE DISH_RADICAL_레몬
	SOURCE:불결 += 300
ENDSELECT
IF DISH_ITAZURA
	SOURCE:반감 += 500
	TFLAG:98 -= 2
	IF TALENT:유치
		TIMES SOURCE:고통, 1.2
		TIMES SOURCE:반감, 1.2
		TIMES SOURCE:불결, 1.2
	ENDIF
	IF CFLAG:행동 == 5
		TIMES SOURCE:반감, 1.2
		TIMES SOURCE:불결, 1.2
		TFLAG:98 -= 2
	ENDIF
	SOURCE:환락 = 0
	IF TALENT:대식가
		TIMES SOURCE:반감, 1.2
		TIMES SOURCE:불결, 1.2
		TFLAG:98 -= 2
	ENDIF
	CALL KIGEN_CHANGE(TARGET, 70, -1)
	CALL 식사(TARGET)
	RETURN
ENDIF

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

IF TFLAG:193 == -1
	TIMES SOURCE:환락 , 0.10
	TIMES SOURCE:정복 , 0.50
	TIMES SOURCE:수동 , 0.50
ELSEIF TFLAG:193 == 0
	TIMES SOURCE:환락 , 1.00
	TIMES SOURCE:정복 , 1.00
	TIMES SOURCE:수동 , 1.00
	CALL KIGEN_CHANGE(TARGET,30,1)
ELSE
	TIMES SOURCE:환락 , 2.00
	TIMES SOURCE:정복 , 2.00
	TIMES SOURCE:수동 , 2.00
	IF TALENT:기분 < 0
		CALL KIGEN_CHANGE(TARGET,100,1)
	ELSE
		CALL KIGEN_CHANGE(TARGET,50,1)
	ENDIF
ENDIF
SOURCE:환락 = SOURCE:환락 * (ABL:MASTER:요리기능 + DISHQUALITY * 2) / 5
SOURCE:정복 = SOURCE:정복 * (ABL:MASTER:요리기능 + DISHQUALITY * 2) / 5
SOURCE:수동 = SOURCE:수동 * (ABL:MASTER:요리기능 + DISHQUALITY * 2) / 5
IF CFLAG:행동 == 5
	TIMES SOURCE:환락 , 2.00
	TIMES SOURCE:정복 , 2.00
	TIMES SOURCE:수동 , 2.00
	TFLAG:98 += 2
ENDIF
CALL 식사(TARGET)
SIF TALENT:대식가
	TIMES SOURCE:환락 , 1.50

;-------------------------------------------------
;実行判定
;-------------------------------------------------
@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
SIF TARGET < 1
	RETURN 0
;수면中
SIF CFLAG:수면
	RETURN 0
;요리
SIF !DISHTYPE
	RETURN 0
;軽食以外は屋内じゃなきゃ無理
SIF DISHTYPE != 1 && !INROOM(CFLAG:MASTER:현재위치)
	RETURN 0
;食べたばかり
IF DISHTYPE == 3
	SIF !TIME_PROGRESS(TCVAR:디저트공복시각)
		RETURN 0
ELSE
	SIF !TIME_PROGRESS(TCVAR:공복시각)
		RETURN 0
ENDIF
;장난をした요리は別コマンド
SIF TCVAR:MASTER:308 > 8
	RETURN 0
SIF CFLAG:우후후 == 2
	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
PRINTL 무엇을 사용할까……
{
	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:직종, 40, 41, 42, 43, 44, 47, 48, 50)
		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(@"{ABL:LOCAL:전투능력}카리스마가 종이에 싸여 날아왔다！",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):반감 += 2 * MUSIC_BONUS * ABL:음악기능
		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
	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 + 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 = 125
회복률_기력:0 = 150
회복률_정력:0 = 50

회복률_체력:1 = 150
회복률_기력:1 = 150
회복률_정력:1 = 60

회복률_체력:2 = 160
회복률_기력:2 = 180
회복률_정력:2 = 70

회복률_체력:3 = 180
회복률_기력:3 = 200
회복률_정력:3 = 80

회복전체력: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:밭확장
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 행동코스트
행동코스트 = 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:물긷기
		PRINTL 물를 길어 와야해
	ELSE
		PLANT_DRY:ARG = 0
		PRINTFORML %LOCALS%에게 물을 주었다
		SIF ITEM:세방울의천수
			FLAG:천적곤신 = 1
		행동코스트 += 5
	ENDIF
ELSEIF 행동번호 == 2
	;채소가게에서 구매할 수 있게 되었기에 수확조건의 엄격화
	IF 수확가능(ARG) == 0
		PRINTL 수확할 형편이 못된다
		RETURN 0
	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 = 14 + RAND:6
		ELSE
			LOCAL = 14
		ENDIF
	ELSEIF PLANT_GROW:ARG > 10
		PRINTL 풍작이다!
		IF PLANT_FOOD:ARG
			LOCAL = 10 + RAND:4
		ELSE
			LOCAL = 10
		ENDIF
	ELSEIF PLANT_GROW:ARG > 7
		IF PLANT_FOOD:ARG
			LOCAL = 5 + RAND:3
		ELSE
			LOCAL = 5
		ENDIF
	ELSE
		LOCAL = 3
	ENDIF
	PRINTFORML {LOCAL}개의 %조사처리(LOCALS,"를")% 수확했다
	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
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
		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)
#DIM 모종번호개시
#DIM 모종번호종료
CALL ITEM_RANGE("원예용품")
모종번호개시 = RESULT:0
모종번호종료 = RESULT:1
FOR LOCAL, 모종번호개시, 모종번호종료
	;모종 이외를 제외
	SIF ITEM:LOCAL && 모종판정(LOCAL)
		PRINTFORML [{LOCAL}]%ITEMNAME:(LOCAL), 14, LEFT%({ITEM:(LOCAL), 2, RIGHT}/{ITEM:(모종대응작물번호취득(LOCAL)), 2, RIGHT})
NEXT
PRINTL [999] 그만둔다
$INPUT_LOOP
INPUT
IF ITEM:RESULT && 모종판정(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 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
	;정지
	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:195 && 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
RETURNF ITEM_TYPES(ARG, "원예용품") && STRFIND(ITEMNAME:ARG, "의모종") != -1

@모종대응작물번호취득(ARG)
#FUNCTION
IF 모종판정(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

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


code:
;-------------------------------------------------
;물긷기
;일상계 커맨드, 레벨 1
;-------------------------------------------------
@COM419
SELECTCASE CFLAG:MASTER:현재위치
	CASE 안개의호수
		TFLAG:물긷기 = 2
	CASE 347
		TFLAG:물긷기 = 2
	CASE 옛지옥온천
		TFLAG:물긷기 = 3
	CASE 934
		TFLAG:물긷기 = 3
	CASE 산의호수
		TFLAG:물긷기 = 5
	CASE 814
		TFLAG:물긷기 = 5
	;아이템 설정 있어도 입수 경로가 생각해내지 못하기 때문에 코멘트 아웃
	;CASE
	;	TFLAG:물긷기 = 5
	;CASE
	;	TFLAG:물긷기 = 5
	;CASE 부엌
	;	TFLAG:물긷기 = 6
	;CASE 11
	;	TFLAG:물긷기 = 6
	;CASE 주택가
	;	TFLAG:물긷기 = 7
	;CASE 270
	;	TFLAG:물긷기 = 7
	CASEELSE
		TFLAG:물긷기 = 1
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 %조사처리(STR:(7000 + TFLAG:물긷기),"를")% 퍼 올렸다
IF GET_MAPID(CFLAG:MASTER:현재위치) != MAIN_MAP
	PRINTL 가진 채로 걷는 것은 힘들기 때문에 귀가합니다
	CALL 외출처로부터귀가
ENDIF
TIME += 3

;-------------------------------------------------
;실행 판정
;-------------------------------------------------
@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
IF (RESULT >= 26 && RESULT <= 35) && ABL:MASTER:교양 < 1 && !MAIN_MAP && !INRANGE(CFLAG:MASTER:초기위치, 26,35)
	PRINTFORMW 미숙한 %마스터로%선 찾아낼 수 없다…
ELSE
	IF IN_HOME(RESULT) == 1
		;NEXTCOM = GETNUM(TRAINNAME, "이동")
		;TFLAG:195 = RESULT
		CALL SKIP_MOVE(CFLAG:MASTER:현재위치, RESULT)
	ENDIF
ENDIF
RETURN -1

@OHEYA_CHECK
VARSET LOCAL
TFLAG:이동불능메시지 = 0
FOR LOCAL,MINROOM(),MAXROOM
	LOCALS = %NAME_FROM_PLACE(LOCAL)%
	SIF LOCAL == CFLAG:MASTER:311
		LOCALS = %CALLNAME:MASTER% 방
	SIF LOCALS == ""
		GOTO SYOURYAKU
	SIF CFLAG:MASTER:현재위치 == LOCAL
		SETCOLOR 0 , 255, 0
	PRINTBUTTON "["+LOCALS+"]", LOCAL
	RESETCOLOR
	PRINTFORM %" "*(22-STRLENS(LOCALS))%
	LOCALS = %SEIKETU(LOCAL)%
	PRINTFORM %LOCALS,15,RIGHT%
	RESETCOLOR
	LOCAL:1 ++
	SIF LOCAL:1 % 2 == 0
		PRINTL
	$SYOURYAKU
NEXT
PRINTFORML
DRAWLINE
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 0xFFFF00
			RETURNF "청결도:중"
		CASE IS < 3500
			SETCOLOR 0xFF00FF
			RETURNF "청결도:약간 저"
		CASE IS < 5000
			SETCOLOR 0xFF00FF
			RETURNF "청결도:저"
		CASEELSE
			SETCOLOR 0xFF0000
			RETURNF "청결도:쓰레기산"
	ENDSELECT
ENDIF

@HITOSAGASI(ARG)
IF ARG
	FOR LOCAL,1,CHARANUM
		SIF CFLAG:LOCAL:신사거주 > 0
			CONTINUE
		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
				PRINTFORML %CALLNAME:LOCAL,15,LEFT%
				LOCAL:2 ++
			ENDIF
		NEXT
	NEXT
	SIF !LOCAL:2
		PRINTFORML 아무도 없다
ELSE
	FOR LOCAL,1,CHARANUM
		SIF AT_HOME(LOCAL) == 0
			CONTINUE
		SIF CFLAG:LOCAL:현재위치 < MINROOM()
			CONTINUE
		SIF CFLAG:LOCAL:현재위치 == MAXROOM && CFLAG:LOCAL:수면
			CONTINUE
		SIF CFLAG:LOCAL:신사거주
			SETCOLOR 160, 210, 255
		PRINTFORM %CALLNAME:LOCAL,15,LEFT%
		RESETCOLOR
		LOCALS = %NAME_FROM_PLACE(CFLAG:LOCAL:현재위치)%
		SIF CFLAG:LOCAL:현재위치 == CFLAG:MASTER:311
			LOCALS = %CALLNAME:MASTER% 방
		PRINTBUTTON "["+LOCALS+"]", CFLAG:LOCAL:현재위치
		PRINTFORM %" "*(22-STRLENS(LOCALS))%
		IF LOCALS == ""
			PRINTFORML 알 수 없는 위치에 있습니다({CFLAG:LOCAL:현재위치})
		ELSEIF CFLAG:LOCAL:수면
			PRINTL 취침중
		ELSEIF CFLAG:LOCAL:행동 == 5
			IF CFLAG:LOCAL:현재위치 == TFLAG:연회장 && TIME_PROGRESS(TIME:1) && (CFLAG:LOCAL:직종 == 49 || CFLAG:LOCAL:직종 == 51)
				PRINTL 연회중
			ELSE
				PRINTL 일하는중
			ENDIF
		ELSE
			PRINTL
		ENDIF
	NEXT
ENDIF
PRINTBUTTON "[확인 종료]", 0

;-------------------------------------------------
;실행 판정
;-------------------------------------------------
;루코토와이야기한다
@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] - 걸의 팬티 늦고-!(\5000)
PRINTL [15] - 모두가 H인 기분이 되도록(\10000)
SIF TARGET && ABL:새드끼 >= 3
	PRINTFORML [16] - \@ TALENT:연인?  환상향 1이나 원 좋은# \@%타겟이% 너무 격렬하므로 어떻게든 해
SIF TARGET
	PRINTFORML [20] - \@ TALENT:연인?  환상향 1이나 원 좋은# \@%타겟이% 좀 더 H가 되도록
SIF TALENT:TARGET:연모 && !TALENT:임신
	PRINTFORML [21] - 자식기원(현재의 자식보정:{CFLAG:자식보정})
;KR판 구잔재 또는 오리지날 22,31
PRINTFORML [22] - 연인의 감도를 올리고 싶어
PRINTFORML [30] - 여자아이에게 미움받아 버린 것을 어떻게든 하고 싶다
PRINTFORML [31] - 여자아이에게 약점잡혀 버린 것을 어떻게든 하고 싶다
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 [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
;;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:현재위치) && 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 바가지
DRAWLINE
CALL LIST_ITEM("토끼 약품")
DRAWLINE
PRINTFORML 구입할 아이템을 선택해주세요 소지금 :\\%TOSTR(MONEY,"#,###")%
PRINTL
VARSET LOCALS
CALL EX_SHOPPING("로션 물병(와인)","로션이 든 큰병. 5회분은 있을 것이다. ", 0,1000)
CALL EX_SHOPPING("콘돔 이득용 팩","50개나 들어가 있다. ", 1,1000)
CALL EX_SHOPPING("필(5정들이)","밝은 가족 계획", 2,5000)
CALL EX_SHOPPING("미약","호의를 품기 쉬워진다", 250)
CALL EX_SHOPPING("수면제","악용하면 안 돼요?", 252)
CALL EX_SHOPPING("영양드링크","타우린 1000mg 배합", 501)
CALL EX_SHOPPING("정력제","더러운 부자 납품업자", 502)
CALL EX_SHOPPING("우콘드링크","술 마시기 전에", 510)
CALL EX_SHOPPING("붕대","상처를 입은 데나 숨기고 싶은 장소에 감자", 520)
SIF TARGET == 53 && !ITEM:130
	CALL EX_SHOPPING("토부「개운대문」","럭키 색골이 일어나는 꿈의 아이템", 130)
DRAWLINE
PRINTL [100] 그만둔다
INPUT
SELECTCASE RESULT
	CASE 0
		CALL BUY_ABLE(40,1000,5)
	CASE 1
		CALL BUY_ABLE(45,1000,50)
	CASE 2
		CALL BUY_ABLE(49,5000,5)
	CASE 130
		SIF TARGET == 53 && !ITEM:130
			CALL BOTTAKURI
	;정리하고 구매 함수로 수매
	;이것들의 아이템은 특히 할인은 없기 때문에 @BUY_ABLE를 사용하는 필연성이 없다
	CASE 250, 252, 501, 502, 510, 520
		SELECTCASE ITEMSTOCK(RESULT)
		CASE 1, 4
		CASE 2
			PRINTW 품절입니다
		CASE 3
			PRINTW 소지금이 충분하지 않습니다
		CASE 5
			PRINTW 이미 충분히 가지고 있습니다
		CASEELSE
			CALL ITEM_MATOMEGAI(RESULT)
		ENDSELECT
	CASE 100
		RETURN -1
	CASEELSE
ENDSELECT
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:52:현재위치 && CFLAG:MASTER:현재위치 != CFLAG:53:현재위치
	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 구입할 아이템을 선택해주세요 소지금 :\\%TOSTR(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
	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
	PRINTFORMW 소원을 담아 요술망치를 휘둘러보았다
	PRINTFORMW 신묘마루의 몸은 평범한 소녀 사이즈가 되었다.
	CFLAG:MASTER:요술망치 = 8
	TALENT:71:체형 = 0
ELSEIF RESULT ==  3
	PRINTW 소원을 담아 요술망치를 휘둘러보았다
	PRINTW 도저히 숨기지 못할 정도로 양물이 커졌다
	CFLAG:MASTER:요술망치 = 4
	CFLAG:MASTER:382 = TALENT:MASTER:형상
	TALENT:MASTER:형상 = 10
	CFLAG:MASTER:마력회수 = 6
ELSEIF RESULT == 4
	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
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
	SELECTCASE RESULT
	CASE 6
		CALL SHOW_CHARA_CLOTHES(C_ID, 0)
	CASE 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
					CASEELSE
						REUSELASTLINE 무효인 입력입니다
						CONTINUE
					ENDSELECT
					RESTART
				LOOP 1
			CASE 0
				RESTART
			CASEELSE
			ENDSELECT
			RESTART
		LOOP 1
	CASE 4
		SIF C_ID == MASTER
			RESTART
		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
			CASEELSE
				REUSELASTLINE 무효인 입력입니다
				CONTINUE
			ENDSELECT
			RESTART
		LOOP 1
	CASE 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
			ENDSELECT
			RESTART
		LOOP 1
	CASE 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
				SIF !CFLAG:C_ID:거름필요한의상
					RESTART
				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
			ENDSELECT
			RESTART
		LOOP 1
	CASE 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
		PRINTFORML [2] - 현재의 팬티를 거름필요 지정
		PRINTFORML [1] - 팬티의 거름필요 지정을 해제한다
		PRINTFORML
		PRINTFORML [0] - 그만둔다
		DO
			INPUT
			SELECTCASE RESULT
			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
			ENDSELECT
			RESTART
		LOOP 1
	CASE 0
		RETURN
	CASEELSE
		REUSELASTLINE 무효인 입력입니다
		CONTINUE
	ENDSELECT
	RESTART
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)

;개개의 의상세트의 선택
@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 SMALL_PLACE(CFLAG:MASTER:현재위치) || AT_HOME(MASTER) == 0
		RETURN 0
ENDIF
SIF PLACE_SENTO(CFLAG:MASTER:현재위치)
	RETURN 0
SIF CFLAG:우후후 == 2
	RETURN 0
RETURN 1

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