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

EXP:MASTER:회화경험 ++

IF !(TALENT:술내성 == -2 || CFLAG:임신자각상태 == 1)
	LOCAL:3 = (MAXBASE:술기운 + MAXBASE:MASTER:술기운) * (LOCAL:2 + RAND:41) / 2000
	LOCAL:4 = (MAXBASE:술기운 + MAXBASE:MASTER:술기운) * (LOCAL:2 + RAND:41) / 2000
	BASE:술기운 += LOCAL:3
	BASE:MASTER:술기운 += LOCAL:4

	;술을 권하는 만큼 빨리 만족해 떠나 가버리는 것은 외롭기 때문에 코멘트 아웃
	;BASE:일량 = BASE:일량 - LOCAL:3
ENDIF

DOWNBASE:MASTER:체력 += 20
DOWNBASE:MASTER:기력 += 100

;소요시간
TIME += 30

DOWNBASE:기력 += 10

;신뢰
TFLAG:98 += 4

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

;ABL:순종을 본다
IF ABL:순종 <= 1
	SOURCE:환락 += (ABL:순종 * 50)
ELSEIF ABL:순종 <= 3
	SOURCE:환락 += 100 + (ABL:순종 * 40)
ELSEIF ABL:순종 <= 5
	SOURCE:환락 += 200 + (ABL:순종 * 50)
ELSEIF ABL:순종 <= 8
	SOURCE:환락 += 400 + (ABL:순종 * 70)
ELSEIF ABL:순종 <= 11
	SOURCE:환락 += 500 + (ABL:순종 * 60)
ELSE
	SOURCE:환락 += 800 + (ABL:순종 * 40)
ENDIF

;ABL:친밀 체크
IF ABL:친밀 <= 1
	SOURCE:환락 += (ABL:친밀 * 60)
ELSEIF ABL:친밀 <= 3
	SOURCE:환락 += 120 + (ABL:친밀 * 60)
ELSEIF ABL:친밀 <= 5
	SOURCE:환락 += 300 + (ABL:친밀 * 60)
ELSEIF ABL:친밀 <= 8
	SOURCE:환락 += 600 + (ABL:친밀 * 50)
ELSEIF ABL:친밀 <= 11
	SOURCE:환락 += 900 + (ABL:친밀 * 50)
ELSE
	SOURCE:환락 += 1400 + (ABL:친밀 * 30)
ENDIF

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

SIF SOURCE:환락 < 0
	SOURCE:환락 = 0

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

SELECTCASE ABL:MASTER:화술기능
	CASE 0
		TIMES SOURCE:환락 , 0.60
		TIMES SOURCE:정복 , 0.60
		TIMES SOURCE:수동 , 0.60
	CASE 1
		TIMES SOURCE:환락 , 0.70
		TIMES SOURCE:정복 , 0.70
		TIMES SOURCE:수동 , 0.70
	CASE 2
		TIMES SOURCE:환락 , 0.85
		TIMES SOURCE:정복 , 0.85
		TIMES SOURCE:수동 , 0.85
	CASE 3
		TIMES SOURCE:환락 , 1.00
		TIMES SOURCE:정복 , 1.00
		TIMES SOURCE:수동 , 1.00
	CASE 4
		TIMES SOURCE:환락 , 1.10
		TIMES SOURCE:정복 , 1.10
		TIMES SOURCE:수동 , 1.10
	CASEELSE
		TIMES SOURCE:환락 , 1.20
		TIMES SOURCE:정복 , 1.20
		TIMES SOURCE:수동 , 1.20
ENDSELECT
RETURN 1

;-------------------------------------------------
;실행 판정
;-------------------------------------------------
@COM_ABLE334
;잔을 주고 받는 실행 판정
SIF !TFLAG:100
	RETURN 0
;일괄관리
SIF GLOBAL_COMABLE(334)
	RETURN RESULT
;일내용이 연회 이외
SIF CFLAG:직종 != ENKAI_SANKA
	RETURN 0
;일량(연회에서 마시는 나머지량)이 제로
SIF BASE:일량 <= 0
	RETURN 0
;기력 0
SIF BASE:MASTER:기력 <= 0
	RETURN 0
;시간정지중
SIF FLAG:70
	RETURN 0
RETURN 1

path: ERB/커맨드관련/COMF/일상계/COMF334 잔들주고받음_t.ERB


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

SIF RAND:2
	EXP:MASTER:회화경험 ++

;랜덤에(0~2)+(성공 보정)%의 술기운감소
LOCAL:3 = MAX(MAXBASE:술기운 * (RAND:3 + LOCAL:2) / 100, 0)
BASE:술기운 = MAX(BASE:술기운 - LOCAL:3, 0)

DOWNBASE:MASTER:체력 += 20
DOWNBASE:MASTER:기력 += 100

;소요시간
TIME += 30

DOWNBASE:기력 += 10

;신뢰
TFLAG:98 += 10

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

;ABL:순종을 본다
IF ABL:순종 <= 1
	SOURCE:환락 += (ABL:순종 * 50)
ELSEIF ABL:순종 <= 3
	SOURCE:환락 += 100 + (ABL:순종 * 40)
ELSEIF ABL:순종 <= 5
	SOURCE:환락 += 200 + (ABL:순종 * 50)
ELSEIF ABL:순종 <= 8
	SOURCE:환락 += 400 + (ABL:순종 * 70)
ELSEIF ABL:순종 <= 11
	SOURCE:환락 += 500 + (ABL:순종 * 60)
ELSE
	SOURCE:환락 += 800 + (ABL:순종 * 40)
ENDIF

;ABL:친밀 체크
IF ABL:친밀 <= 1
	SOURCE:환락 += (ABL:친밀 * 50)
ELSEIF ABL:친밀 <= 3
	SOURCE:환락 += 80 + (ABL:친밀 * 50)
ELSEIF ABL:친밀 <= 5
	SOURCE:환락 += 200 + (ABL:친밀 * 50)
ELSEIF ABL:친밀 <= 8
	SOURCE:환락 += 500 + (ABL:친밀 * 40)
ELSEIF ABL:친밀 <= 11
	SOURCE:환락 += 800 + (ABL:친밀 * 40)
ELSE
	SOURCE:환락 += 1200 + (ABL:친밀 * 30)
ENDIF

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

SIF SOURCE:환락 < 0
	SOURCE:환락 = 0

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

;-------------------------------------------------
;실행 판정
;-------------------------------------------------
@COM_ABLE335
;간호하는 실행 판정
SIF !TFLAG:100
	RETURN 0
;일괄관리
SIF GLOBAL_COMABLE(335)
	RETURN RESULT
;일내용이 만취하고 이외
SIF CFLAG:직종 != 만취한다
	RETURN 0
;기력 0
SIF BASE:MASTER:기력 <= 0
	RETURN 0
;시간정지중
SIF FLAG:70
	RETURN 0
RETURN 1

path: ERB/커맨드관련/COMF/일상계/COMF335 간호한다_t.ERB

license: mit


code:
;-------------------------------------------------
;무릎베개한다
;일상계 커맨드, 레벨 2
;-------------------------------------------------
@COM336
#DIM 회복전체력
#DIM 회복전기력
#DIM 회복후체력
#DIM 회복후기력
;무릎베개한다
IF TIME_PROGRESS(TFLAG:무릎베개) < 45
	DRAWLINE
	PRINTFORMW 당분간 시간을 두지 않으면 다리가 저린다
	RETURN -1
ENDIF
IF TALENT:MASTER:체형 < TALENT:체형 - 1
	DRAWLINE
	PRINTFORMW 체격차이적으로 힘들다
	RETURN -1
ENDIF
LOCAL = ABL:친밀 * 10 + TALENT:연모 * 50 + TALENT:유치 * 30 - TALENT:수치심 * 20 - TALENT:자존심 * 20
SIF BASE:체력 > MAXBASE:체력 * 4 / 5
	LOCAL -= 30
SIF BASE:체력 < MAXBASE:체력 * 2 / 5
	LOCAL += 30
SELECTCASE TFLAG:192
	;통상
	CASE 0
		LOCAL = MAX(LOCAL, 10)
		IF RAND:LOCAL > 120
			TFLAG:193 = 1
		ELSEIF RAND:LOCAL < 30
			TFLAG:193 = -1
		ELSE
			TFLAG:193 = 0
		ENDIF
	;강제 성공 or대성공
	CASE 1
		LOCAL = MAX(LOCAL, 10)
		IF RAND:LOCAL > 120
			TFLAG:193 = 1
		ELSE
			TFLAG:193 = 0
		ENDIF
	;강제 실패
	CASE -1
		TFLAG:193 = -1
	;커맨드 종료
	CASE -2
		TFLAG:193 = -1
		RETURN 0
ENDSELECT

DOWNBASE:기력 += 50

DOWNBASE:MASTER:기력 += 100

;고정으로 획득하는 소스
SOURCE:사랑 = 250
SOURCE:수동 = 70
SOURCE:반감 = 150
SIF TFLAG:193 == -1
	SOURCE:반감 += 150

;ABL:친밀을 본다
IF ABL:친밀 <= 5
	SOURCE:사랑 += (ABL:친밀 * 25)
ELSEIF ABL:친밀 <= 8
	SOURCE:사랑 += 600 + (ABL:친밀 * 30)
	SOURCE:노출 += 200 + (ABL:욕망 * 15)
ELSEIF ABL:친밀 <= 11
	SOURCE:사랑 += 800 + (ABL:친밀 * 30)
	SOURCE:복종 += ABL:친밀 * 40
	SOURCE:노출 += 300 + (ABL:욕망 * 20)
ELSE
	SOURCE:사랑 += 1000 + (ABL:친밀 * 40)
	SOURCE:복종 += ABL:친밀 * 50
	SOURCE:노출 += 700 + (ABL:욕망 * 25)
ENDIF

SOURCE:수동 = 150 + 300 * ABL:순종

IF TFLAG:193 == -1
	TIMES SOURCE:사랑 , 0.50
	TIMES SOURCE:수동 , 0.50
	TIMES SOURCE:노출 , 0.40
ELSEIF TFLAG:193 == 0
	TIMES SOURCE:사랑 , 1.00
	TIMES SOURCE:수동 , 1.00
	TIMES SOURCE:노출 , 0.90
ELSE
	TIMES SOURCE:사랑 , 1.50
	TIMES SOURCE:수동 , 2.00
	TIMES SOURCE:노출 , 1.80
	TIME += 20
	DOWNBASE:체력 -= 150
	DOWNBASE:기력 -= 300
	DOWNBASE:MASTER:기력 -= 50
ENDIF
TIME += 20
CALL SET_DERAY(6, TARGET)
;무릎베개 플래그
TFLAG:무릎베개 = 1440 * DAY + TIME
RETURN 1

;-------------------------------------------------
;실행 판정
;-------------------------------------------------
@COM_ABLE336
;무릎베개 실행 판정
SIF !TFLAG:100
	RETURN 0
;일괄관리
SIF GLOBAL_COMABLE(336)
	RETURN RESULT
;친해져 강도 2
SIF TCVAR:MASTER:친해져 < 2
	RETURN 0
;실내만
SIF !(INROOM(CFLAG:MASTER:현재위치))
	RETURN 0
;목욕탕
SIF BATHROOM()
	RETURN 0
;수면중
SIF CFLAG:수면
	RETURN 0
;업무중
SIF CFLAG:행동 == 5
	RETURN 0
;장난중, 동침중은 무리
SIF CFLAG:장난 || CFLAG:동침중
	RETURN 0
;기력 0
SIF BASE:MASTER:기력 <= 0
	RETURN 0
;식스나인 몸의자세
SIF TEQUIP:식스나인
	RETURN 0
;정지 중에는 불가
SIF FLAG:70
	RETURN 0
RETURN 1

path: ERB/커맨드관련/COMF/일상계/COMF336 무릎베개함_t.ERB


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

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

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

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

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

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

RETURNF 0

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


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

PRINTL 누구를 권합니까?
FOR LOCAL, 1, NUM_TARGET + 1
;	SIF CFLAG:(TARGET:LOCAL):태도 > 0 || TCVAR:(TARGET:LOCAL):만취 == 1
	SIF COM_351_CONDITION(TARGET:LOCAL) <= 0
		CONTINUE
	PRINTFORML [{LOCAL}] - %CALLNAME:(TARGET:LOCAL)%
NEXT
PRINTL [98] - 모아서 데리고나간다
PRINTL [99] - 동행 해제
PRINTL [100] - 그만둔다
DO
	INPUT
	SELECTCASE RESULT
	CASE 100
		RETURN -1
	CASE 99
		FOR LOCAL, 1, NUM_TARGET + 1
			SIF CFLAG:(TARGET:LOCAL):동행
				CFLAG:(TARGET:LOCAL):동행 =  0
			;한우산을씀도 없어진다
			TEQUIP:(TARGET:LOCAL):201 = 0
		NEXT
		CFLAG:MASTER:동행 = 0
		RETURN 1
	CASE 98
		FOR LOCAL, 1, NUM_TARGET + 1
			IF COM_351_CONDITION(TARGET:LOCAL) >= 3
				CFLAG:(TARGET:LOCAL):동행 = 60
				LOCAL:98 += 1
			ENDIF
		NEXT
		PRINTFORMW {LOCAL:98}인 정리해 데리고 나갑니다
		CFLAG:MASTER:동행 = 60
		TIME += LOCAL:98
		SIF CFLAG:TARGET:동행
			CALL KOJO_MESSAGE_SEND("DIRECT",351,TARGET,-1,-1)
		RETURN 1
	CASEELSE
		IF !INRANGE(RESULT, 1, NUM_TARGET)
			CLEARLINE 1
			CONTINUE
		ELSEIF COM_351_CONDITION(TARGET:RESULT) < 1
			CLEARLINE 1
			CONTINUE
		ELSEIF COM_351_CONDITION(TARGET:RESULT) < 2
			PRINTFORMW %조사처리(CALLNAME:(TARGET:RESULT),"는")% 지금 바쁩니다.
			CLEARLINE 2
			CONTINUE
		ENDIF
		BREAK
	ENDSELECT
LOOP 1

CFLAG:(TARGET:RESULT):동행 = 60
;우＋외＋우산 or상대가 우산때는 한우산을씀
SIF TIME:5 > 3 && TIME:5 < 14 && OUTROOF(CFLAG:MASTER:현재위치) && (ITEM:36 || EQUIP:TARGET:액세서리== 6)
	TEQUIP:TARGET:201 = 1
PRINTFORMW %조사처리(CALLNAME:(TARGET:RESULT),"를")% 데리고 나갑니다
CFLAG:MASTER:동행 = 60
TIME += 1
;SOURCE까지를 돌리지 않기 때문에 여기서 말을 표시시킨다
SIF CFLAG:TARGET:동행
	CALL KOJO_MESSAGE_SEND("DIRECT",351,TARGET,-1,-1)

RETURN 1

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

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

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

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

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

RETURNF 2

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


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

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

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

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

;-------------------------------------------------
;실행 판정
;-------------------------------------------------
@COM_ABLE352
;정지 중에는 불가
SIF FLAG:70
	RETURN 0
;망상중은 고백할 수 없다
SIF TFLAG:망상중 == 1
	RETURN 0
;고백하는 실행 판정
SIF !TFLAG:100
	RETURN 0
;일괄관리
SIF GLOBAL_COMABLE(352)
	RETURN RESULT
;둘이서 없으면 안 돼
SIF GET_TARGETNUM() > 1
	RETURN 0
;친해져 강도 2
SIF TCVAR:MASTER:친해져 < 2
	RETURN 0
;벌써 연인의 경우는 안 돼
SIF TALENT:연인
	RETURN 0

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

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


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

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

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

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


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

RETURN 1

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

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


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

RETURN 1

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

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


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

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

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

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


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

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

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

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


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

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

;신뢰
TFLAG:98 += 3

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

TIME += 30
RETURN 1

@COM363_1

DOWNBASE:기력 += 50

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

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

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

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

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

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

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


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


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

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

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

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

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

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

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

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

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


code:
;-------------------------------------------------
;自由行動に付き合う
;-------------------------------------------------
@COM368
#DIM 경과시간
#DIM 행동완료
#DIM 시간계수
#DIM 호감도계수
VARSET LOCAL
;경과시간設定
IF GROUPMATCH(자유행동에맡김_명칭(TARGET), "어떤 생각하는지", "함께 식사하기", "함께 집어먹기")
	;完了まで経過する
	경과시간 = Activity_Duration:TARGET
ELSEIF 자유행동에맡김_명칭(TARGET) == "요리를 돕기" && Activity_Duration:TARGET < 60
	;요리를 돕기は食事とセットなので料理段階までにする
	경과시간 = Activity_Duration:TARGET - 30
ELSEIF 자유행동에맡김_명칭(TARGET) == "책의 감상을 듣기" && Activity_Duration:TARGET > 30
	;読み終わる直前まで完了できない
	경과시간 = 10
ELSE
	;完了まで経過するが最大30分
	경과시간 = MIN(Activity_Duration:TARGET, 30)
ENDIF
;행동완료するまで経過してたら행동완료
IF 경과시간 >= Activity_Duration:TARGET
	행동완료 = 1
ELSE
	행동완료 = 0
ENDIF
;取得ソースの倍率
시간계수 = MAX(경과시간 / 10, 1)
IF CFLAG:TARGET:호감도 < 100
	호감도계수 = 0
ELSEIF CFLAG:TARGET:호감도 < 500
	호감도계수 = 1
ELSEIF CFLAG:TARGET:호감도 < 1000
	호감도계수 = 2
ELSEIF CFLAG:TARGET:호감도 < 5000
	호감도계수 = 3
ELSEIF CFLAG:TARGET:호감도 < 10000
	호감도계수 = 4
ELSEIF CFLAG:TARGET:호감도 < 30000
	호감도계수 = 5
ELSE
	호감도계수 = 6
ENDIF

;ソースは全体的に控えめにしたつもりなんですが、参考にした元コマンドによっては効率良くなってるかも…
;多様なコマンドを元にしているため、ここでは極力簡潔な計算に留めています
SELECTCASE 자유행동에맡김_명칭(TARGET)
CASE "어떤 생각하는지"
	;신뢰도が低いと失敗
	IF CFLAG:TARGET:신뢰도 < 275 -(ABL:TARGET:친밀 * 25)
		TFLAG:193 = -1
		DOWNBASE:MASTER:기력 += 40 * 시간계수
		DOWNBASE:TARGET:기력 += 40 * 시간계수
		SOURCE:환락 = (50 + ((ABL:친밀 + ABL:MASTER:화술기능) * 25)) * 시간계수
		SOURCE:수동 = (30 + ((ABL:순종 + ABL:MASTER:화술기능) * 15)) * 시간계수
		EXP:MASTER:회화경험 ++
	ELSE
		DOWNBASE:MASTER:기력 += 20 * 시간계수
		DOWNBASE:TARGET:기력 += 20 * 시간계수
		SOURCE:환락 = (100 + ((ABL:친밀 + ABL:MASTER:화술기능) * 50)) * 시간계수
		SOURCE:수동 = (60 + ((ABL:순종 + ABL:MASTER:화술기능) * 30)) * 시간계수
		TFLAG:98 = 1
		EXP:MASTER:회화경험 ++
	ENDIF
CASE "함께 놀기"
	DOWNBASE:MASTER:체력 += 40 * 시간계수
	DOWNBASE:MASTER:기력 += 40 * 시간계수
	DOWNBASE:TARGET:체력 += 20 * 시간계수
	DOWNBASE:TARGET:기력 += 20 * 시간계수
	SELECTCASE RAND:10
	CASE 1
		;10%で大成功
		TFLAG:193 = 1
		SOURCE:환락 = (200 + ((ABL:친밀 + 호감도계수) * 80)) * 시간계수
		SOURCE:수동 = (120 + ((ABL:순종 + 호감도계수) * 80)) * 시간계수
		SOURCE:정복 = (120 + (ABL:새드끼 * 120)) * 시간계수
		TFLAG:98 = 2
	CASE 2
		;10%で失敗
		TFLAG:193 = -1
		SOURCE:환락 = (100 + ((ABL:친밀 + 호감도계수) * 30)) * 시간계수
		SOURCE:수동 = (50 + ((ABL:순종 + 호감도계수) * 20)) * 시간계수
		SOURCE:정복 = (50 + (ABL:새드끼 * 50)) * 시간계수
	CASEELSE
		SOURCE:환락 = (150 + ((ABL:친밀 + 호감도계수) * 50)) * 시간계수
		SOURCE:수동 = (100 + ((ABL:순종 + 호감도계수) * 50)) * 시간계수
		SOURCE:정복 = (100 + (ABL:새드끼 * 100)) * 시간계수
		TFLAG:98 = 1
	ENDSELECT
CASE "함께 식사하기", "함께 집어먹기", "요리를 나눠받기"
	IF TIME_PROGRESS(TCVAR:MASTER:공복시각) <= 0
		;空腹でなかったら効果減少
		TFLAG:193 = -1
		SOURCE:환락 = (50 + ((ABL:친밀 + 호감도계수) * 25)) * 시간계수
		SOURCE:수동 = (30 + ((ABL:순종 + 호감도계수) * 15)) * 시간계수
		SOURCE:정복 = (30 + (ABL:새드끼 * 10)) * 시간계수
		TCVAR:MASTER:공복시각 = MAX(1440 * DAY + TIME + 120, TCVAR:MASTER:공복시각)
		CALL RECOVER(MASTER, 1 * 경과시간, "체력", "식사에 의한 회복")
		CALL RECOVER(MASTER, 1 * 경과시간, "기력", "식사에 의한 회복")
		TFLAG:98 = 1
	ELSE
		SOURCE:환락 = (100 + ((ABL:친밀 + 호감도계수) * 50)) * 시간계수
		SOURCE:수동 = (60 + ((ABL:순종 + 호감도계수) * 30)) * 시간계수
		SOURCE:정복 = (60 + (ABL:새드끼 * 10)) * 시간계수
		;TARGETは自由行動処理で食事する
		TCVAR:MASTER:공복시각 = 1440 * DAY + TIME + 120
		CALL RECOVER(MASTER, 3 * 경과시간, "체력", "식사에 의한 회복")
		CALL RECOVER(MASTER, 3 * 경과시간, "기력", "식사에 의한 회복")
		TFLAG:98 = 2
	ENDIF
CASE "청소를 돕기"
	;경과시간に合わせるため簡略化
	LOCAL = YOGORE:(CFLAG:MASTER:현재위치)
	YOGORE:(CFLAG:MASTER:현재위치) = MAX(YOGORE:(CFLAG:MASTER:현재위치) -100 * 경과시간 / 5, 0)
	EX:MASTER:오늘의청소회수 += LOCAL - YOGORE:(CFLAG:MASTER:현재위치)
	DOWNBASE:MASTER:체력 += 20 * 시간계수
	DOWNBASE:MASTER:기력 += 40 * 시간계수
	DOWNBASE:TARGET:체력 += 10 * 시간계수
	DOWNBASE:TARGET:기력 += 20 * 시간계수
	SOURCE:환락 = (100 + ((ABL:순종 + ABL:MASTER:청소기능) * 50)) * 시간계수
	TFLAG:98 = 2
	EXP:MASTER:청소경험 ++
CASE "함께 운동하기"
	DOWNBASE:MASTER:체력 += 40 * 시간계수
	DOWNBASE:MASTER:기력 += 40 * 시간계수
	DOWNBASE:TARGET:체력 += 20 * 시간계수
	DOWNBASE:TARGET:기력 += 20 * 시간계수
	SOURCE:환락 = (150 + ((ABL:친밀 + ABL:MASTER:전투능력) * 50)) * 시간계수
	SOURCE:수동 = (100 + ((ABL:순종 + ABL:MASTER:전투능력) * 50)) * 시간계수
	SOURCE:정복 = (100 + ((ABL:새드끼 + ABL:전투능력) * 100)) * 시간계수
	TFLAG:98 = 2
	EXP:MASTER:전투경험 ++
CASE "책의 감상을 듣기"
	;読み終わる直前まで聞けない
	IF Activity_Duration:TARGET > 30
		TFLAG:193 = -1
		DOWNBASE:MASTER:기력 += 40 * 시간계수
		SOURCE:반감 = 50
	ELSE
		DOWNBASE:MASTER:기력 += 20 * 시간계수
		DOWNBASE:TARGET:기력 += 20 * 시간계수
		SOURCE:환락 = (100 + ((ABL:친밀 + ABL:MASTER:교양) * 50)) * 시간계수
		SOURCE:수동 = (100 + ((ABL:순종 + ABL:MASTER:교양) * 50)) * 시간계수
		TFLAG:98 = 1
		EXP:MASTER:회화경험 ++
		EXP:MASTER:학습경험 ++
	ENDIF
CASE "요리를 돕기"
	DOWNBASE:MASTER:체력 += 20 * 시간계수
	DOWNBASE:MASTER:기력 += 20 * 시간계수
	DOWNBASE:TARGET:체력 += 10 * 시간계수
	DOWNBASE:TARGET:기력 += 10 * 시간계수
	SOURCE:환락 = (100 + ((ABL:순종 + ABL:MASTER:요리기능) * 50)) * 시간계수
	TFLAG:98 = 1
	EXP:MASTER:요리경험 ++
CASE "세션을 함께하기", "음악 반주하기"
	IF !GROUPMATCH(1, MUSIC_ABLE(30), MUSIC_ABLE(31), MUSIC_ABLE(32), MUSIC_ABLE(33), MUSIC_ABLE(34), MUSIC_ABLE(35))
		;楽器が使えないと見てるだけ
		TFLAG:193 = -2
		DOWNBASE:MASTER:기력 += 20 * 시간계수
		DOWNBASE:TARGET:체력 += 10 * 시간계수
		DOWNBASE:TARGET:기력 += 20 * 시간계수
		SOURCE:환락 = (50 + ((ABL:친밀 + ABL:MASTER:음악기능) * 10)) * 시간계수
	ELSE
		DOWNBASE:MASTER:체력 += 40 * 시간계수
		DOWNBASE:MASTER:기력 += 40 * 시간계수
		DOWNBASE:TARGET:체력 += 20 * 시간계수
		DOWNBASE:TARGET:기력 += 20 * 시간계수
		SELECTCASE RAND:(10 + ABL:MASTER:음악기능)
		CASE 0
			;失敗
			TFLAG:193 = -1
			SOURCE:환락 = (100 + ((ABL:친밀 + ABL:MASTER:음악기능) * 20)) * 시간계수
		CASE 1 TO 9
			;成功
			SOURCE:환락 = (150 + ((ABL:친밀 + ABL:MASTER:음악기능) * 50)) * 시간계수
			TFLAG:98 = 1
		CASEELSE
			;음악기능があるとその確率で大成功
			TFLAG:193 = 1
			SOURCE:환락 = (200 + ((ABL:친밀 + ABL:MASTER:음악기능) * 80)) * 시간계수
			TFLAG:98 = 2
		ENDSELECT
		;その場にいる他のキャラにもソースが入る
		FOR LOCAL, 1, GET_TARGETNUM() + 1
			SIF TARGET:LOCAL == TARGET
				CONTINUE
			SIF !SHIRAHU(TARGET:LOCAL)
				CONTINUE
			SOURCE:(TARGET:LOCAL):환락 = ((150 + (50 * TFLAG:193)) + ((ABL:(TARGET:LOCAL):친밀 + ABL:MASTER:음악기능) * (50 + (30 * TFLAG:193)))) * 시간계수
		NEXT
		EXP:MASTER:연주경험 ++
	ENDIF
CASE "채집을 돕기"
	DOWNBASE:MASTER:체력 += 20 * 시간계수
	DOWNBASE:MASTER:기력 += 40 * 시간계수
	DOWNBASE:TARGET:체력 += 10 * 시간계수
	DOWNBASE:TARGET:기력 += 20 * 시간계수
	SOURCE:환락 = (150 + ((ABL:친밀 + ABL:MASTER:채집기능) * 50)) * 시간계수
	SOURCE:수동 = (100 + ((ABL:순종 + ABL:MASTER:채집기능) * 50)) * 시간계수
	TFLAG:98 = 1
	EXP:MASTER:채집경험 ++
CASE "함께 낚시하기"
	IF !ITEM:낚싯대
		;낚싯대がないと見てるだけ
		TFLAG:193 = -1
		DOWNBASE:MASTER:기력 += 50 * 시간계수
		DOWNBASE:TARGET:체력 += 10 * 시간계수
		DOWNBASE:TARGET:기력 += 20 * 시간계수
		SOURCE:환락 = (50 + ((ABL:친밀 + ABL:MASTER:낚시기능) * 25)) * 시간계수
	ELSE
		DOWNBASE:MASTER:체력 += 20 * 시간계수
		DOWNBASE:MASTER:기력 += 40 * 시간계수
		DOWNBASE:TARGET:체력 += 10 * 시간계수
		DOWNBASE:TARGET:기력 += 20 * 시간계수
		SOURCE:환락 = (150 + ((ABL:친밀 + ABL:MASTER:낚시기능) * 50)) * 시간계수
		SOURCE:수동 = (100 + ((ABL:순종 + ABL:MASTER:낚시기능) * 50)) * 시간계수
		TFLAG:98 = 1
		EXP:MASTER:낚시경험 ++
	ENDIF
CASE "실험을 돕기"
	DOWNBASE:MASTER:체력 += 20 * 시간계수
	DOWNBASE:MASTER:기력 += 40 * 시간계수
	DOWNBASE:TARGET:체력 += 10 * 시간계수
	DOWNBASE:TARGET:기력 += 20 * 시간계수
	SOURCE:환락 = (150 + ((ABL:친밀 + ABL:MASTER:조제기능) * 50)) * 시간계수
	SOURCE:수동 = (100 + ((ABL:순종 + ABL:MASTER:조제기능) * 50)) * 시간계수
	TFLAG:98 = 1
	EXP:MASTER:조제경험 ++
CASE "함께 한가로이 쉬기"
	;ソースはちょびっとだけ
	CALL RECOVER_PERMIL(MASTER,20, "체력", 1)
	CALL RECOVER_PERMIL(MASTER,30, "기력", 1)
	CALL RECOVER_PERMIL(TARGET,20, "체력", 1)
	CALL RECOVER_PERMIL(TARGET,30, "기력", 1)
	SOURCE:환락 = (100 + ((ABL:친밀 + 호감도계수) * 10)) * 시간계수
	SOURCE:수동 = (50 + ((ABL:순종 + 호감도계수) * 5)) * 시간계수
CASE "저녁반주를 함께하기"
	;相手の술내성によって飲む酒が変わる,ソースも相手の술내성依存,なお술내성マイナスは晩酌しない
	DOWNBASE:MASTER:체력 += 20 * 시간계수
	DOWNBASE:MASTER:기력 += 10 * 시간계수
	CALL DRUNKEN(MASTER, MAX(50 + TALENT:TARGET:술내성, 51))
	SOURCE:환락 = (150 + ((ABL:친밀 + TALENT:TARGET:술내성) * 50)) * 시간계수
	SOURCE:수동 = (100 + ((ABL:순종 + TALENT:TARGET:술내성) * 50)) * 시간계수
	SOURCE:정복 = (100 + ((ABL:새드끼 + TALENT:TARGET:술내성) * 50)) * 시간계수
	TFLAG:98 = 1
CASE "쇼핑을 돕기"
	DOWNBASE:MASTER:체력 += 20 * 시간계수
	DOWNBASE:MASTER:기력 += 20 * 시간계수
	DOWNBASE:TARGET:체력 += 10 * 시간계수
	DOWNBASE:TARGET:기력 += 10 * 시간계수
	SOURCE:환락 = (200 + ((ABL:순종 + 호감도계수)  * 50)) * 시간계수
	TFLAG:98 = 1
CASEELSE
	PRINTFORMW 자유행동이 설정되어 있지 않습니다!
	RETURN -1
ENDSELECT
TIME += 경과시간

RETURN 1
;-------------------------------------------------
;명칭
;-------------------------------------------------
@자유행동에맡김_명칭(ARG)
#FUNCTIONS
SELECTCASE Activity_Type:ARG
CASE 0
	RETURNF "어떤 생각하는지"
CASE 1
	RETURNF "함께 놀기"
CASE 2
	RETURNF "함께 식사하기"
CASE 3
	RETURNF "함께 집어먹기"
CASE 4
	RETURNF "청소를 돕기"
CASE 5
	RETURNF "함께 운동하기"
CASE 6
	RETURNF "책의 감상을 듣기"
CASE 7
	IF Activity_Duration:ARG > 30
		RETURNF "요리를 돕기"
	ELSE
		RETURNF "요리를 나눠받기"
	ENDIF
CASE 8
	IF TALENT:ARG:음악지식 == 1
		RETURNF "세션을 함께하기"
	ELSE
		RETURNF "음악 반주하기"
	ENDIF
CASE 9
	RETURNF "채집을 돕기"
CASE 10
	RETURNF "함께 낚시하기"
CASE 11
	RETURNF "실험을 돕기"
CASE 12
	RETURNF "함께 한가로이 쉬기"
CASE 13
	RETURNF "저녁반주를 함께하기"
CASE 14
	RETURNF "쇼핑을 돕기"
CASEELSE
	RETURNF "자유행동에 맡김"
ENDSELECT
;-------------------------------------------------
;実行判定
;-------------------------------------------------
@COM_ABLE368
;停止中は不可
SIF FLAG:70
	RETURN 0
SIF !TFLAG:100
	RETURN 0
;一括管理
SIF GLOBAL_COMABLE(368)
	RETURN RESULT
;기력0
SIF BASE:MASTER:기력 <= 0
	RETURN 0
;自由行動中でない（自由行動条件参照）
SIF !Activity_Duration:TARGET
	RETURN 0
;;付き合えない自由行動
;SIF GROUPMATCH(CFLAG:TARGET:ActivityType, )
;	RETURN 0
RETURN 1

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


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

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

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

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

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

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

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


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

IF IN_HOME(TFLAG:195) != 1 && NEXTCOM != -1
	NEXTCOM = -1
	RETURN 0
ENDIF
;인원수 카운트를 리셋
VARSET COUNTCHARA
;방의 인원수 카운트를 설정
FOR LOCAL,1,CHARANUM
	COUNTCHARA:(CFLAG:LOCAL:현재위치) ++
NEXT
입욕거부 = 0
CALL TURN_RESET

DRAWLINE
;
;	// 자택 맵의 표시를 신묘화 방식으로
;

CALL DRAW_MAP

PRINTL
PRINTFORM 현재{(CFLAG:MASTER:현재위치)}:
PRINTFORMS NAME_FROM_PLACE(CFLAG:MASTER:현재위치)
PRINTL 에 있습니다

IF FLAG:짐작모드 == 1
	PRINTL
	PRINT 색의 설명：
	CALL COLORMESSAGE("체류중　", 0xFF64C8, 0)
	CALL COLORMESSAGE("업무중　", 0xFF6400, 0)
	CALL COLORMESSAGE("수면중　", 0x0078b4, 0)
	CALL COLORMESSAGE("모브　　", C_D_PINK, 0)
	CALL COLORMESSAGE("자동행동", C_YELLOW, 1)
ELSEIF FLAG:짐작모드 == 2
	PRINT 청결도：
	CALL COLORMESSAGE("　 중 　", 0xFFFF00, 0)
	CALL COLORMESSAGE("　 저 　", 0xFF00FF, 0)
	CALL COLORMESSAGE("쓰레기산", 0xFF0000, 1)
ENDIF

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

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

DO
	INPUTS
	;시스템계를 먼저 처리
	SELECTCASE RESULTS
	CASE "Z", "z"
		SIF !TALENT:MASTER:위치짐작 || !AT_HOME(MASTER) || CFLAG:우후후
			GOTO STR_RETRY
		TFLAG:206 = CFLAG:MASTER:현재위치
		CALL HITOSAGASI()
		INPUT
		SIF GROUPMATCH(RESULT, 0, CFLAG:MASTER:현재위치)
			RESTART
		IF MAP_CAN_MOVE(RESULT) == 0
			IF TFLAG:이동불능메시지 == 999
				PRINTFORMW 열쇠가 걸려 있다
				CLEARLINE 2
				REUSELASTLINE
			ELSE
				TRYCALLFORM MAP_CANNOT_WORD_{MAIN_MAP}(RESULT)
			ENDIF
			TFLAG:이동불능메시지 = 0
			NEXTCOM = -1
			RETURN 0
		ELSEIF IN_HOME(RESULT) == 1
			CALL SKIP_MOVE(CFLAG:MASTER:현재위치, RESULT)
			RETURN
		ENDIF
		RESTART
	CASE "X", "x"
		SIF !TALENT:MASTER:오방짐작 || !AT_HOME(MASTER) || CFLAG:우후후
			GOTO STR_RETRY
		TFLAG:206 = CFLAG:MASTER:현재위치
		CALL OHEYA_CHECK
		INPUT
		SIF GROUPMATCH(RESULT, 0, CFLAG:MASTER:현재위치)
			RESTART
		IF MAP_CAN_MOVE(RESULT) == 0
			IF TFLAG:이동불능메시지 == 999
				PRINTFORMW 열쇠가 걸려 있다
				CLEARLINE 2
				REUSELASTLINE
			ELSE
				TRYCALLFORM MAP_CANNOT_WORD_{MAIN_MAP}(RESULT)
			ENDIF
			TFLAG:이동불능메시지 = 0
			NEXTCOM = -1
			RETURN 0
		ELSEIF IN_HOME(RESULT) == 1
			CALL SKIP_MOVE(CFLAG:MASTER:현재위치, RESULT)
			RETURN
		ENDIF
		RESTART
	CASE "C", "c"
		FLAG:이동처표시 += 1
		SIF FLAG:이동처표시 > 2
			FLAG:이동처표시 = 0
		RESTART
	CASE ""
		CONTINUE
	ENDSELECT

	;반각 숫자의 경우만 판정을 속행
	IF ISNUMERIC(RESULTS)
		RESULT = TOINT(RESULTS)
	ELSE
		$STR_RETRY
		PRINTW 부정확한 입력입니다
		CLEARLINE 2
		REUSELASTLINE
		CONTINUE
	ENDIF

	;시스템계를 먼저 처리
	SELECTCASE RESULT
	CASE BUTTON돌아간다, CFLAG:MASTER:현재위치
		$MOVE_CANCEL
		NEXTCOM = -1
		RETURN -1
	CASE BUTTON전환왼쪽
		TFLAG:맵변환 -= 1
		SIF TFLAG:맵변환 <= 0
			TFLAG:맵변환 = MAP_PAGES
		RESTART
	CASE BUTTON전환오른쪽
		TFLAG:맵변환 += 1
		SIF TFLAG:맵변환 > MAP_PAGES
			TFLAG:맵변환 = 1
		RESTART
	CASE 0
		IF IN_HOME(CFLAG:MASTER:초기위치) != 1
			PRINTW 초기 위치가 부정확합니다. 방으로 변경합니다.
			CFLAG:MASTER:초기위치 = Default초기위치
		ENDIF
		CALL SKIP_MOVE(CFLAG:MASTER:현재위치, CFLAG:MASTER:초기위치)
		RETURN
	CASE 200
		IF TALENT:MASTER:위치짐작 && TALENT:MASTER:오방짐작
			FLAG:짐작모드 += 1
			SIF FLAG:짐작모드 >= 3
				FLAG:짐작모드 = 0
		ELSEIF TALENT:MASTER:위치짐작
			FLAG:짐작모드 = !FLAG:짐작모드
		ELSEIF TALENT:MASTER:오방짐작
			FLAG:짐작모드 = (!FLAG:짐작모드) * 2
		ENDIF
		RESTART
	ENDSELECT

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

	;TW의 방침으로서 비추천이지만 박수 입력으로 이것이 있으면(자) 입력 문자수 줄어들어 편리하다
	SIF INRANGE(RESULT, 1, 99)
		RESULT += MAIN_MAP * 100

	SIF RESULT == CFLAG:MASTER:현재위치
		GOTO MOVE_CANCEL

	;이동 불가능하면 연주해
	;이동 범위외
	IF IN_HOME(RESULT) != 1
		TFLAG:맵변환 = 0
		PRINTW 이동범위 밖
		CLEARLINE 2
		REUSELASTLINE
		CONTINUE
	;이동 불능인
	ELSEIF MAP_CAN_MOVE(RESULT) == 0
		TFLAG:맵변환 = 0
		IF TFLAG:이동불능메시지 == 999
			PRINTFORMW 열쇠가 걸려 있다
			CLEARLINE 2
			REUSELASTLINE
		ELSE
			TRYCALLFORM MAP_CANNOT_WORD_{MAIN_MAP}(RESULT)
		ENDIF
		TFLAG:이동불능메시지 = 0
		CONTINUE
	ENDIF

	;ELSEIF CAN_SKIPMOVE(MAIN_MAP) 벌써 전부 스킵무브로 한다
	CALL SKIP_MOVE(CFLAG:MASTER:현재위치, RESULT)
	RETURN

	;eraTW4. 570 proto 시점에서는 이하 꼬박 죽어 분기
	;반드시 RETURN나 RESTART로 날 뿐만 아니라, 시간경과 처리 등은 SKIP_MOVE측에서 하고 있다
	IF FLAG:70 == 1
		SIF TALENT:MASTER:100 < -4
		BASE:MASTER:TSP -= 15
		BASE:MASTER:TSP -= 5
		IF TFLAG:운반
			BASE:MASTER:TSP -= 3
			CFLAG:(TFLAG:운반):현재위치 = CFLAG:MASTER:현재위치
		ENDIF
	ELSE
		;난쟁이끼리동행해도 언제나 대로의 속도가 되는 것은 난쟁이의 지혜의 덕분이다
		SIF TALENT:MASTER:100 < -4 && !CFLAG:MASTER:동행
		TIME += 7
		TIME += 3
		IF CFLAG:93:동행 && !GETBIT (FLAG:풀장, 0)
			TIME += 2
			BASE:MASTER:체력 = MAX(BASE:MASTER:체력 - 5,500)
		ENDIF
	ENDIF

	;eraTW4.570 proto 시점에서는 은밀중 플래그를 사용하지 않은 같아?
	;자세한 사양이 조금 잘 모른다

		;은밀 해제 처리
	;	요점 검증
	;IF CFLAG:MASTER:은밀중
	;	FOR LOCAL, 1, CHARANUM
	;		;MASTER의 전턴 위치가 개인 방이었을 경우
	;		IF (CFLAG:LOCAL:311 == CFLAG:MASTER:전턴위치) || (CFLAG:LOCAL:현재위치 == CFLAG:MASTER:311 && CFLAG:MASTER:전턴위치 == CFLAG:MASTER:311)
	;			CFLAG:LOCAL:은밀중 = 0
	;			CFLAG:LOCAL:장난 = 0
	;		ENDIF
	;		;MASTER의 현재 위치가 개인 방이었을 경우
	;		SIF ((CFLAG:MASTER:현재위치 == CFLAG:LOCAL:311) && CFLAG:LOCAL:수면) || ((CFLAG:LOCAL:현재위치 == CFLAG:MASTER:311 && CFLAG:MASTER:현재위치 == CFLAG:MASTER:311) && CFLAG:LOCAL:수면)
	;			CFLAG:LOCAL:은밀중 = 1
	;	NEXT
	;	;개인 방 이외는 은밀할 수 없을… 터
	;	IF CFLAG:MASTER:현재위치 < 13
	;		CFLAG:MASTER:은밀중 = 0
	;		CFLAG:MASTER:장난 = 0
	;	ENDIF
	;ENDIF
	PREVCOM = 400
	STR:0 = 이동
	;NEXTCOM에 무엇인가의 값이 들어가 있는 경우는 그것을 고쳐 쓰지 않는다
	;그렇지 않은 경우―1으로 리셋
	SIF NEXTCOM == 0
		NEXTCOM = -1
	RETURN 0
	;죽어 분기 여기까지
LOOP 1

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

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

;ARG:0	출발 위치
;ARG:1	최종목적지
VARSET LOCAL
VARSET 중계지점
잠정목적지 = 최종목적지
경과시간 = 0
중계회수 = 0
TFLAG:맵변환 = 0
IF (CAN_MOVE(CFLAG:MASTER:현재위치, 잠정목적지) & 1)
	직전위치 = ARG
	경과시간 = 1
	CFLAG:MASTER:현재위치 = 최종목적지
	RESULT = 최종목적지
	GOTO STOP
ELSE
	TRYCALLFORM SKIP_MOVE_{MAIN_MAP}(최종목적지)
	직전위치 = RESULT
ENDIF

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

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

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

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

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

TSP소비배율 = 5
SIF TALENT:MASTER:100 < -4
	TSP소비배율 += 15
SIF TFLAG:운반
	TSP소비배율 += 3
IF FLAG:70 == 1 || (GETBIT(FLAG:순간이동, 1) && !CFLAG:MASTER:동행 && BASE:MASTER:TSP > TSP소비배율 * 경과시간)
	BASE:MASTER:TSP -= TSP소비배율 * 경과시간
	SIF TFLAG:운반
		CFLAG:(TFLAG:운반):현재위치 = CFLAG:MASTER:현재위치
ELSE
	SIF TALENT:MASTER:100 < -4 && !CFLAG:MASTER:동행
		TIME += 7 * 경과시간
	TIME += 3 * 경과시간
	IF CFLAG:93:동행 && !GETBIT (FLAG:풀장, 0)
		TIME += 2 * 경과시간
		BASE:MASTER:체력 = MAX(BASE:MASTER:체력 - (5 * 경과시간), 500)
	ENDIF
ENDIF

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

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


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

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

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

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


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

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

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

CALL OYASUMI

RETURN 1

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

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

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

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

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

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


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

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

;회복률_체력:1 =
;회복률_기력:1 =
;
;회복률_체력:2 =
;회복률_기력:2 =
;
;회복률_체력:3 =
;회복률_기력:3 =

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

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

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


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

IF NEMUKE() >= 720
	DRAWLINE
;	PRINTL 폐문 시간을 넘었기에 외출할 수는 없습니다
	PRINTL 졸음기가 있으니 외출하지 않는 편이 낫겠지
	RETURN -1
ELSEIF LOCAL:1 > 1
	DRAWLINE
	PRINTL 두 명 이상 데리고 나갈 수는 없다
	RETURN -1
ELSEIF LOCAL:2 || BASE:MASTER:기력 == 0
	DRAWLINE
	PRINTFORML 몸 상태가 좋지 못해서 외출할 수는 없다 \@ BASE:MASTER:기력 == 0 ? (기력 제로) # (동행자가 몸 상태 안 좋음)\@
	RETURN -1
ELSEIF LOCAL:3 && FESTIVAL() == ""
	DRAWLINE
	PRINTL 동행자가 일하는 날이기에 외출할 수는 없다
	RETURN -1
ELSEIF TIME:5 == 9 || TIME:5 == 5
	DRAWLINE
	PRINTL 악천후이기에 외출할 수는 없다
	RETURN -1
ELSEIF TALENT:MASTER:100 < -4
	DRAWLINE
	PRINTL 이 몸으로 외출하는 건 위험하다
	RETURN -1
ENDIF
IF !CHK_ENTRANCE(CFLAG:MASTER:현재위치, MAIN_MAP)
	PRINTFORML 일단은 %조사처리(NAME_FROM_PLACE(ENTRANCE),"로")% 이동합니다
	CALL SKIP_MOVE(CFLAG:MASTER:현재위치, ENTRANCE)
ENDIF
LOCAL:3 = 0
DRAWLINE
CALL OTHERREGIONS
LOCAL:2 = RESULT
LOCAL = 0
IF LOCAL:2 == MAIN_MAP || LOCAL:2 == 100
	RETURN -1
ENDIF
RETURN 1

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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


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

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

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

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

TIME += 60
SIF CFLAG:동행
	CFLAG:동행 += 60
EXP:MASTER:학습경험 ++
SIF ITEM:103 && !RAND:2
	EXP:MASTER:학습경험 ++
SIF ITEM:214 > 0
	EXP:MASTER:학습경험 ++
SIF ITEM:느티책상의자 && !RAND:2
	EXP:MASTER:학습경험 ++
RETURN 1

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

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