code:
;-----------------------------------------------------------
;지역간의 소요시간
;　　博　寺　里　湖　竹　森　川　山　守　地　月
;
;博　－　30　20　50　40　50　70　40　60　20 120
;寺　30　－　10　40　20　40　60　70　90　50 110
;里　20　10　－　30　20　30　50　60　80　40 100
;湖　50　40　30　－　50　30　50　30　50　50　70
;竹　40　20　20　50　－　50　70　80 100　60 120
;森　50　40　30　30　50　－　20　60　80　70 100
;川　70　60　50　50　70　20　－　30　50　50　70
;山　80　70　60　30　80　60　30　－　20　20　40
;守 100　90　80　50 100　80　50　20　－　40　20
;地　20　50　40　50　60　70　50　20　40　－　60
;月 120 110 100　70 120 100　70　40　20　60　－
;산~숲은 강을 경유(수동)로 가면 10분 빠르다
;달은 기본적으로守+20
;-----------------------------------------------------------
@TIME_REQUIRED(출발지역, 행선지)
#FUNCTION
#DIM 출발지역
#DIM 행선지

SELECTCASE 출발지역
	CASE 0
		LOCAL = TIME_REQUIRED0(행선지)
	CASE 1
		LOCAL = TIME_REQUIRED1(행선지)
	CASE 2
		LOCAL = TIME_REQUIRED2(행선지)
	CASE 3
		LOCAL = TIME_REQUIRED3(행선지)
	CASE 4
		LOCAL = TIME_REQUIRED4(행선지)
	CASE 5
		LOCAL = TIME_REQUIRED5(행선지)
	CASE 6
		LOCAL = TIME_REQUIRED6(행선지)
	CASE 7
		LOCAL = TIME_REQUIRED7(행선지)
	CASE 8
		LOCAL = TIME_REQUIRED8(행선지)
	CASE 9
		LOCAL = TIME_REQUIRED9(행선지)
	CASE 10
		LOCAL = TIME_REQUIRED10(행선지)
	CASE 13
		LOCAL = TIME_REQUIRED13(행선지)
	CASE 14
		LOCAL = TIME_REQUIRED14(행선지)
	CASEELSE
		LOCAL = 0
ENDSELECT

;코마치의 능력
SIF CFLAG:[[코마치]]:동행
	LOCAL = LOCAL * 2 / 3
;와카사기히메 부담
SIF CFLAG:[[와카사기히메]]:동행 && !GETBIT (FLAG:풀장, 0)
	LOCAL = LOCAL * 3 / 2
;미코의 능력
IF CFLAG:[[미코]]:동행 && INRANGE(CFLAG:[[미코]]:현재위치, 100, 199)
	IF 행선지 == MAP달
		LOCAL = 30
	ELSE
		LOCAL = 10
	ENDIF
ENDIF

;(天候パッチ)悪天候時には所要時間増加
SELECTCASE TIME:5
	CASE 4, 6, 10, 12
		TIMES LOCAL, 1.2
	CASE 7, 8, 11, 13
		TIMES LOCAL, 1.5
	CASE 5, 15
		TIMES LOCAL, 2
	CASE 9
		TIMES LOCAL, 3
	CASE 14
		TIMES LOCAL, 4
ENDSELECT
;(天候パッチ)強風時には所要時間増加
SELECTCASE WIND_VELOCITY
	CASE 1
		TIMES LOCAL, 2
	CASE 2
		TIMES LOCAL, 4
	CASE IS >= 3
		TIMES LOCAL, 6
ENDSELECT

;その他のショートカット効果
SIF SHORTCUT(출발지역, 행선지)
	LOCAL = LOCAL * 1 / 2
;月の羽衣の効果
SIF (행선지 == MAP달 || 출발지역 == MAP달) && ITEM:달의날개옷
	LOCAL = MIN(LOCAL, 40)

RETURNF LOCAL

;-----------------------------------------------------------
;신사에서 다른 지역으로의 소요 시간
;-----------------------------------------------------------
@TIME_REQUIRED0(ARG)
#FUNCTION
SELECTCASE ARG
	CASE MAP신사
		RETURNF 0
	CASE MAP절
		RETURNF 30
	CASE MAP마을
		RETURNF 20
	CASE MAP호수
		RETURNF 50
	CASE MAP죽림
		RETURNF 40
	CASE MAP숲
		RETURNF 50
	CASE MAP명계
		RETURNF 70
	CASE MAP산록
		RETURNF 40
	CASE MAP산정
		RETURNF 60
	CASE MAP지저
		RETURNF 20
	CASE MAP달
		RETURNF 80
	;KR판 오리지날 주택/저택
	CASE MAP주택, MAP저택
		RETURNF 10
ENDSELECT
;-----------------------------------------------------------
;명련사에서 다른 지역으로의 소요 시간
;-----------------------------------------------------------
@TIME_REQUIRED1(ARG)
#FUNCTION
SELECTCASE ARG
	CASE MAP신사
		RETURNF 30
	CASE MAP절
		RETURNF 0
	CASE MAP마을
		RETURNF 10
	CASE MAP호수
		RETURNF 40
	CASE MAP죽림
		RETURNF 20
	CASE MAP숲
		RETURNF 40
	CASE MAP명계
		RETURNF 60
	CASE MAP산록
		RETURNF 70
	CASE MAP산정
		RETURNF 90
	CASE MAP지저
		RETURNF 50
	CASE MAP달
		RETURNF 110
	;KR판 오리지널 주택/저택
	CASE MAP주택, MAP저택
		RETURNF 40
ENDSELECT
;-----------------------------------------------------------
;인간 마을에서 다른 지역으로의 소요 시간
;-----------------------------------------------------------
@TIME_REQUIRED2(ARG)
#FUNCTION
SELECTCASE ARG
	CASE MAP신사
		RETURNF 20
	CASE MAP절
		RETURNF 10
	CASE MAP마을
		RETURNF 0
	CASE MAP호수
		RETURNF 30
	CASE MAP죽림
		RETURNF 20
	CASE MAP숲
		RETURNF 30
	CASE MAP명계
		RETURNF 50
	CASE MAP산록
		RETURNF 60
	CASE MAP산정
		RETURNF 80
	CASE MAP지저
		RETURNF 40
	CASE MAP달
		RETURNF 100
	;KR판 오리지날 주택/저택
	CASE MAP주택, MAP저택
		RETURNF 30
ENDSELECT
;-----------------------------------------------------------
;안개의 호수에서 다른 지역으로의 소요 시간
;-----------------------------------------------------------
@TIME_REQUIRED3(ARG)
#FUNCTION
SELECTCASE ARG
	CASE MAP신사
		RETURNF 50
	CASE MAP절
		RETURNF 40
	CASE MAP마을
		RETURNF 30
	CASE MAP호수
		RETURNF 0
	CASE MAP죽림
		RETURNF 50
	CASE MAP숲
		RETURNF 30
	CASE MAP명계
		RETURNF 50
	CASE MAP산록
		RETURNF 30
	CASE MAP산정
		RETURNF 50
	CASE MAP지저
		RETURNF 50
	CASE MAP달
		RETURNF 70
	;KR판 오리지날 주택/저택
	CASE MAP주택, MAP저택
		RETURNF 60
ENDSELECT
;-----------------------------------------------------------
;죽림에서 다른 지역으로의 소요 시간
;-----------------------------------------------------------
@TIME_REQUIRED4(ARG)
#FUNCTION
SELECTCASE ARG
	CASE MAP신사
		RETURNF 40
	CASE MAP절
		RETURNF 20
	CASE MAP마을
		RETURNF 20
	CASE MAP호수
		RETURNF 50
	CASE MAP죽림
		RETURNF 0
	CASE MAP숲
		RETURNF 50
	CASE MAP명계
		RETURNF 70
	CASE MAP산록
		RETURNF 80
	CASE MAP산정
		RETURNF 100
	CASE MAP지저
		RETURNF 60
	CASE MAP달
		RETURNF 120
	;KR판 오리지날 주택/저택
	CASE MAP주택, MAP저택
		RETURNF 50
ENDSELECT
;-----------------------------------------------------------
;마법의숲에서 다른 지역으로의 소요 시간
;-----------------------------------------------------------
@TIME_REQUIRED5(ARG)
#FUNCTION
SELECTCASE ARG
	CASE MAP신사
		RETURNF 50
	CASE MAP절
		RETURNF 40
	CASE MAP마을
		RETURNF 30
	CASE MAP호수
		RETURNF 30
	CASE MAP죽림
		RETURNF 50
	CASE MAP숲
		RETURNF 0
	CASE MAP명계
		RETURNF 20
	CASE MAP산록
		RETURNF 60
	CASE MAP산정
		RETURNF 80
	CASE MAP지저
		RETURNF 70
	CASE MAP달
		RETURNF 100
	;KR판 오리지날 주택/저택
	CASE MAP주택, MAP저택
		RETURNF 60
ENDSELECT
;-----------------------------------------------------------
;명계에서 다른 지역으로의 소요 시간
;-----------------------------------------------------------
@TIME_REQUIRED6(ARG)
#FUNCTION
SELECTCASE ARG
	CASE MAP신사
		RETURNF 70
	CASE MAP절
		RETURNF 60
	CASE MAP마을
		RETURNF 50
	CASE MAP호수
		RETURNF 50
	CASE MAP죽림
		RETURNF 70
	CASE MAP숲
		RETURNF 20
	CASE MAP명계
		RETURNF 0
	CASE MAP산록
		RETURNF 30
	CASE MAP산정
		RETURNF 50
	CASE MAP지저
		RETURNF 50
	CASE MAP달
		RETURNF 70
	;KR판 오리지날 주택/저택
	CASE MAP주택, MAP저택
		RETURNF 80
ENDSELECT
;-----------------------------------------------------------
;산록에서 다른 지역으로의 소요 시간
;-----------------------------------------------------------
@TIME_REQUIRED7(ARG)
#FUNCTION
SELECTCASE ARG
	CASE MAP신사
		RETURNF 40
	CASE MAP절
		RETURNF 70
	CASE MAP마을
		RETURNF 60
	CASE MAP호수
		RETURNF 30
	CASE MAP죽림
		RETURNF 80
	CASE MAP숲
		RETURNF 60
	CASE MAP명계
		RETURNF 30
	CASE MAP산록
		RETURNF 0
	CASE MAP산정
		RETURNF 20
	CASE MAP지저
		RETURNF 20
	CASE MAP달
		RETURNF 40
	;KR판 오리지날 주택/저택
	CASE MAP주택, MAP저택
		RETURNF 50
ENDSELECT
;-----------------------------------------------------------
;산정에서 다른 지역으로의 소요 시간
;-----------------------------------------------------------
@TIME_REQUIRED8(ARG)
#FUNCTION
SELECTCASE ARG
	CASE MAP신사
		RETURNF 60
	CASE MAP절
		RETURNF 90
	CASE MAP마을
		RETURNF 80
	CASE MAP호수
		RETURNF 50
	CASE MAP죽림
		RETURNF 100
	CASE MAP숲
		RETURNF 80
	CASE MAP명계
		RETURNF 50
	CASE MAP산록
		RETURNF 20
	CASE MAP산정
		RETURNF 0
	CASE MAP지저
		RETURNF 40
	CASE MAP달
		RETURNF 20
	;KR판 오리지날 주택/저택
	CASE MAP주택, MAP저택
		RETURNF 70
ENDSELECT
;-----------------------------------------------------------
;지저에서 다른 지역으로의 소요 시간
;-----------------------------------------------------------
@TIME_REQUIRED9(ARG)
#FUNCTION
SELECTCASE ARG
	CASE MAP신사
		RETURNF 20
	CASE MAP절
		RETURNF 50
	CASE MAP마을
		RETURNF 40
	CASE MAP호수
		RETURNF 50
	CASE MAP죽림
		RETURNF 60
	CASE MAP숲
		RETURNF 70
	CASE MAP명계
		RETURNF 50
	CASE MAP산록
		RETURNF 20
	CASE MAP산정
		RETURNF 40
	CASE MAP지저
		RETURNF 0
	CASE MAP달
		RETURNF 60
	;KR판 오리지날 주택/저택
	CASE MAP주택, MAP저택
		RETURNF 30
ENDSELECT
;-----------------------------------------------------------
;달에서 다른 지역으로의 소요 시간
;-----------------------------------------------------------
@TIME_REQUIRED10(ARG)
#FUNCTION
SELECTCASE ARG
	CASE MAP신사
		RETURNF 120
	CASE MAP절
		RETURNF 110
	CASE MAP마을
		RETURNF 100
	CASE MAP호수
		RETURNF 70
	CASE MAP죽림
		RETURNF 120
	CASE MAP숲
		RETURNF 100
	CASE MAP명계
		RETURNF 70
	CASE MAP산록
		RETURNF 40
	CASE MAP산정
		RETURNF 20
	CASE MAP지저
		RETURNF 60
	CASE MAP달
		RETURNF 0
	;KR판 오리지날 주택/저택
	CASE MAP주택, MAP저택
		RETURNF 80
ENDSELECT

;-----------------------------------------------------------
;KR판 오리지널, 주택에서 다른 지역으로의 소요 시간
;-----------------------------------------------------------
@TIME_REQUIRED13(ARG)
#FUNCTION
SELECTCASE ARG
	CASE MAP신사
		RETURNF 10
	CASE MAP절
		RETURNF 40
	CASE MAP마을
		RETURNF 30
	CASE MAP호수
		RETURNF 60
	CASE MAP죽림
		RETURNF 50
	CASE MAP숲
		RETURNF 60
	CASE MAP명계
		RETURNF 80
	CASE MAP산록
		RETURNF 50
	CASE MAP산정
		RETURNF 70
	CASE MAP지저
		RETURNF 30
	CASE MAP달
		RETURNF 80
	;KR판 오리지날 주택/저택
	CASE MAP주택, MAP저택
		RETURNF 0
ENDSELECT

;-----------------------------------------------------------
;KR판 오리지널, 저택에서 다른 지역으로의 소요 시간
;-----------------------------------------------------------
@TIME_REQUIRED14(ARG)
#FUNCTION
SELECTCASE ARG
	CASE MAP신사
		RETURNF 10
	CASE MAP절
		RETURNF 40
	CASE MAP마을
		RETURNF 30
	CASE MAP호수
		RETURNF 60
	CASE MAP죽림
		RETURNF 50
	CASE MAP숲
		RETURNF 60
	CASE MAP명계
		RETURNF 80
	CASE MAP산록
		RETURNF 50
	CASE MAP산정
		RETURNF 70
	CASE MAP지저
		RETURNF 30
	CASE MAP달
		RETURNF 80
	;KR판 오리지날 주택/저택
	CASE MAP주택, MAP저택
		RETURNF 0
ENDSELECT
;-----------------------------------------------------------
;지점간 이동시 숏컷 효과
;돌아오는 길이 늦어지는 사양은 철폐
;목적지가 -1이면 산책을 통한 같은 지역으로의 이동
;기본적으로 조력에 의한 것이므로 목적지는 관계없으나 확장성도 겸해 설정해 둔다.
;-----------------------------------------------------------
@SHORTCUT(현위치, 목적지)
#FUNCTION
#DIM 현위치
#DIM 목적지
SIF FLAG:시간정지 || GETBIT(FLAG:순간이동, 0)
	RETURNF 0

SELECTCASE 현위치
	CASE MAP신사
		SIF 0
			RETURNF 0
	CASE MAP절
		SIF 0
			RETURNF 0
	CASE MAP마을
		SIF 0
			RETURNF 0
	CASE MAP호수
		SIF 0
			RETURNF 0
	CASE MAP죽림
		;죽림 안 한정
		IF 목적지 == -1
			SIF GROUPMATCH(FLAG:데이트상대, [[우동게]], [[모코우]], [[카구야]], [[카게로]], [[케이네]], [[유카]], [[에이린]], [[메디슨]])
				RETURNF 1
			SIF GROUPMATCH(TARGET, [[우동게]], [[모코우]], [[카구야]], [[카게로]], [[케이네]], [[유카]], [[에이린]], [[메디슨]])
				RETURNF 1
		ENDIF
	CASE MAP숲
		SIF 0
			RETURNF 0
	CASE MAP명계
		SIF GROUPMATCH(FLAG:데이트상대, [[요우무]], [[유카리]], [[에이키]], [[유유코]], [[코마치]], [[쿠타카]], [[미마]], [[클라운피스]], [[헤카티아]], [[야치에]], [[마유미]], [[케이키]], [[사키]])
			RETURNF 1
		SIF GROUPMATCH(TARGET, [[요우무]], [[유카리]], [[에이키]], [[유유코]], [[코마치]], [[쿠타카]], [[미마]], [[클라운피스]], [[헤카티아]], [[야치에]], [[마유미]], [[케이키]], [[사키]])
			RETURNF 1
	CASE MAP산록
		SIF 0
			RETURNF 0
	CASE MAP산정
		SIF GROUPMATCH(FLAG:데이트상대, [[사나에]], [[카나코]], [[스와코]], [[텐시]], [[이쿠]])
			RETURNF 1
		SIF GROUPMATCH(TARGET, [[사나에]], [[카나코]], [[스와코]], [[텐시]], [[이쿠]])
			RETURNF 1
	CASE MAP지저
		SIF 0
			RETURNF 0
	CASE MAP달
		SIF 0
			RETURNF 0
ENDSELECT
RETURNF 0


code:
@일정경묘사(ARG)
;ARG는 캐릭터 캐릭터별의 정경묘사에 부디.
IF CFLAG:ARG:직종 == 48
	PRINTFORMW %ARG는% \@ TALENT:ARG:연모 ? %마스터를% 신경 쓰면서 # 바쁘게\@ 연회 준비를 하고 있다.
ELSEIF CFLAG:ARG:직종 == 50
	PRINTFORMW %ARG는% \@ TALENT:ARG:연모 ? %마스터를% 신경 쓰면서 # 묵묵히\@ 연회 정리를 하고 있다.
ELSEIF CFLAG:ARG:직종 == 46
	PRINTFORMW %ARG는% \@ TALENT:ARG:연모 ? %CALLNAME:MASTER%에 가끔식 시선을 돌리며 # \@놀고 있다.
ELSEIF CFLAG:ARG:직종 == 52
	SELECTCASE ARG
		;어쨌거나 여자 모임 ※나중에 캐릭터마다 개성있게 하고 싶기 때문에 분기만 만들어 둔다
		CASE 4
			SELECTCASE RAND:2
			CASE 0
				PRINTFORML %ARG는%, 여자들과 떠들썩하게 담소하고 있다.
			CASEELSE ;KR판 구잔재.
				PRINTFORML %ARG는%, 유유코와 최근 무서웠던 일을 이야기해 노란 비명을 지르고 있다.
			ENDSELECT
		CASE 26
			SELECTCASE RAND:2
			CASE 0
				PRINTFORML %ARG는%, 여자들과 떠들썩하게 담소하고 있다.
			CASEELSE ;KR판 구잔재.
				PRINTFORML %ARG는%, 미마와 함께 염라에의 험담으로 분위기를 살리고 있다.
			ENDSELECT
		CASE 32
			SELECTCASE RAND:2
			CASE 0
				PRINTFORML %ARG는%, 여자들과 떠들썩하게 담소하고 있다.
			CASEELSE ;KR판 구잔재.
				PRINTFORML %ARG는%, 신키와 유행의 네일 아트에 대해 말하고 있다.
			ENDSELECT
		CASE 55
			SELECTCASE RAND:2
			CASE 0
				PRINTFORML %ARG는%, 여자들과 떠들썩하게 담소하고 있다.
			CASEELSE ;KR판 구잔재.
				PRINTFORML %ARG는%, 에이린에 안티 에이징의 화제를 털고 있다.
			ENDSELECT
		CASE 66
			SELECTCASE RAND:2
			CASE 0
				PRINTFORML %ARG는%, 여자들과 떠들썩하게 담소하고 있다.
			CASEELSE ;KR판 구잔재.
				PRINTFORML %ARG는%, 유카리의 접시로부터 닭꼬치를 군것질하고 있다.
			ENDSELECT
		CASE 72
			SELECTCASE RAND:2
			CASE 0
				PRINTFORML %ARG는%, 여자들과 떠들썩하게 담소하고 있다.
			CASEELSE ;KR판 구잔재.
				PRINTFORML %ARG는%, 카나코와 즉 친구인 것을 서로 맹세하고 있다.
			ENDSELECT
		CASE 102
			SELECTCASE RAND:2
			CASE 0
				PRINTFORML %ARG는%, 여자들과 떠들썩하게 담소하고 있다.
			CASEELSE ;KR판 구잔재.
				PRINTFORML %ARG는%, 오키나와 반짝반짝의 많이 붙은 스맛폰을 서로 보이고 있다.
			ENDSELECT
		CASE 124
			SELECTCASE RAND:2
			CASE 0
				PRINTFORML %ARG는%, 여자들과 떠들썩하게 담소하고 있다.
			CASEELSE ;KR판 구잔재.
				PRINTFORML %ARG는%, 뱌쿠렌과 서로의 머리카락의 예쁨을 칭찬하고 서로 뜯고.
			ENDSELECT
	ENDSELECT
		;여자 모임 여기까지
ELSE
	SELECTCASE ARG
		CASE 30
			IF INRANGE(TIME, CLOCK_TO_TIME(9, 0), CLOCK_TO_TIME(11, 59))
				PRINTFORML %ARG는% 엄숙히 %조사처리(GET_JOBNAME(ARG), "를")% 진행하고 있다.
			ELSEIF INRANGE(TIME, CLOCK_TO_TIME(12, 0), CLOCK_TO_TIME(12, 59))
				PRINTFORML %ARG는% %조사처리(GET_JOBNAME(ARG), "를")% 취하고 있다.
			ELSE
				PRINTFORML %ARG는% 담담하게 %조사처리(GET_JOBNAME(ARG), "를")% 진행하고 있다.
			ENDIF
		CASE 54
			PRINTFORMW %ARG는% 책에 박힌 얼굴을 들지도 않는다…
		CASE 57
			PRINTFORMW %ARG는% 한가롭게 %조사처리(GET_JOBNAME(ARG), "를")% 하고 있다.
		CASE 67
			IF TIME >= 720 && TIME <= 780
				PRINTFORMW %ARG는% \@ TALENT:ARG:연모 ? %마스터를% 신경 쓰면서 # \@아이들과 %조사처리(GET_JOBNAME(ARG), "를")% 취하고 있다.
			ELSE
				PRINTFORMW %ARG는% \@ TALENT:ARG:연모 ? %마스터를% 신경 쓰면서 # \@%조사처리(GET_JOBNAME(ARG), "를")% 하고 있다.
			ENDIF
		CASE 70
			IF DAY % 7 == 3 || DAY % 7 == 4
				PRINTFORML %ARG는% 책을 읽으면서 %조사처리(GET_JOBNAME(ARG), "를")% 하고 있다.
			ELSE
				PRINTFORML %ARG는% 내용을 확인하면서 정중하게 %조사처리(GET_JOBNAME(ARG), "를")% 하고 있다.
			ENDIF
		CASEELSE
			PRINTFORML %ARG는% 기분 좋게 %조사처리(GET_JOBNAME(ARG), "를")% 해내고 있다.
	ENDSELECT
ENDIF
@연회묘사(ARG)
;FLAG:연회개최플래그를 사용해 연회 종별로 나누어 써도 괜찮을지도

IF TCVAR:ARG:만취 == 0
	IF CFLAG:ARG:직종 == 49 && TALENT:ARG:연모 == 1
		PRINTFORMW %ARG는% %CALLNAME:MASTER%에 가끔씩 눈길을 주면서 연회를 즐기고 있다.
	ELSE
		PRINTFORML %ARG는% 연회를 즐기고 있다.
	ENDIF
ELSE
	IF TALENT:ARG:연모 == 1
		PRINTFORMW %ARG는% %CALLNAME:MASTER%에 가끔씩 눈길을 주면서 만취하고 있다.
	ELSE
		PRINTFORML %ARG는% 만취해서 녹초가 되어 있다.
	ENDIF
ENDIF
IF CFLAG:ARG:직종 == 51 && (BASE:ARG:술기운 > (MAXBASE:ARG:술기운 / 10) * 8)
	PRINTW 　취기는 꽤 남은 것 같다…
ELSEIF CFLAG:ARG:직종 == 51 && (BASE:ARG:술기운 > (MAXBASE:ARG:술기운 / 10) * 6)
	PRINTW 　취기가 해소되려면 아직 시간이 필요할 것 같다…
ELSEIF CFLAG:ARG:직종 == 51
	PRINTW 　조금 있으면 취기가 깰 것 같다…
ELSEIF CFLAG:ARG:직종 == 49 && (BASE:ARG:술기운 > (MAXBASE:ARG:술기운 / 10) * 6)
	IF TALENT:ARG:감정결여 && RAND:4
		ELSEIF !RAND:10
			IF !RAND:2
				PRINTFORMW 　%CALLNAME:ARG%의 눈이 감겨있다…
				PRINTFORMW 　나쁜 술버릇을 가진 것 같다
					TALENT:ARG:15 = -1
			ELSE
				PRINTFORMW 　%ARG는% 무척 즐거워 보인다
				PRINTFORMW 　좋은 느낌으로 취기가 올라온 것 같다
					TALENT:ARG:15 = 1
			ENDIF
		ELSE
			IF TALENT:ARG:15 == -1
				PRINTFORMW 　%ARG는% 몸을 비비 꼬고 있다…
			ELSEIF TALENT:ARG:15 == 1
				PRINTFORMW 　%ARG는% 의미도 없이 웃고 있다…
			ELSE
				PRINTW 　슬슬 취기에서 회복된 것 같다…
			ENDIF
	 	ENDIF
ELSEIF CFLAG:ARG:직종 == 49 && (BASE:ARG:술기운 > (MAXBASE:ARG:술기운 / 10) * 4)
	PRINTW 　조금 기분이 업되었다…
ELSEIF TALENT:ARG:술내성 == -2 || CFLAG:ARG:임신자각상태 == 1
	IF BASE:ARG:일량 >= (MAXBASE:ARG:일량 / 3) * 2
		PRINTW 　술은 마시지 않고 담소하고 있다…
	ELSEIF BASE:ARG:일량 >= (MAXBASE:ARG:일량 / 3)
		IF CFLAG:ARG:임신자각상태 == 1
			PRINTW 　정신을 바짝 차리고 술을 마시지 않으며 즐기고 있다…
		ELSEIF TALENT:ARG:술내성 == -2
			PRINTW 　여전히 술은 마시지 않는 것 같다…
		ENDIF
	ELSEIF TALENT:ARG:술내성 == -2 || CFLAG:ARG:임신자각상태 == 1
		PRINTW 　술에는 일절 손대지 않을 태세다…
	ENDIF
ELSEIF CFLAG:ARG:직종 == 49
	PRINTW 　아직 쌩쌩한 편이다…
ENDIF

license: mit


code:
;考え事
@EXIST_FreeAct0
#LOCALSIZE 1
#LOCALSSIZE 1

;オブジェクト本体
@FreeAct0(ARG, O_DATA, V_NAME)
#FUNCTION
#LOCALSIZE 1
#LOCALSSIZE 1
#DIMS O_DATA
#DIMS V_NAME
SELECTCASE O_DATA
CASE "명칭"
	CALLF MAKE_STR(V_NAME, "어떤 생각하는지")
CASE "CHAIN"
;他キャラに連鎖する場合コメントアウト外すこと
;	CALLF MAKE_INT(V_NAME, 1)
CASE "경과시간"
;自由行動に付き合うコマンドでの경과시간
	CALLF MAKE_INT(V_NAME, Activity_Duration:TARGET)
ENDSELECT

@자유행동내용_0(CHARA, ARGS,시간계수, CHAIN)
#DIM CHARA
#DIM CHAIN
#DIM 현위치
#DIM 메시지표시
#DIM 시간계수
현위치 = CFLAG:CHARA:현재위치
메시지표시 = 현위치 == CFLAG:MASTER:현재위치 ? 1 # 0
TRYCCALLFORM UNIQUE_FA_{CHARA}(CHARA, ARGS, 시간계수)
RETURN RESULT
CATCH
SELECTCASE ARGS
	CASE "발생"
		;在住キャラが自室にいる時
		SIF !CFLAG:CHARA:신사거주
			RETURN 0
		SIF 현위치 != CFLAG:CHARA:신사거주
			RETURN 0
		SIF BASE:CHARA:기력 <= 500
			RETURN 0
		SIF 메시지표시
			PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% 무엇인가 생각을 하기 시작했다.
		;返し値は행동時間
		RETURN 20 + RAND:20
	CASE "행동중"
		IF 메시지표시
			PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% %TEXTR("심사숙고하고 있다/턱을 괴고 생각하고 있다/건성으로 생각을 하고 있다/생각에 잠겨 있다")%.
		ENDIF
	CASE "완료"
		SIF 메시지표시
			PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% 생각을 마친 것 같다.
	CASE "중단"
		;중단メッセージは우후후突入時等でも表示されてしまうので表示しない
	CASE "같이한다"
		PRINTFORML %조교자는% %CALLNAME:TARGET%에게 생각을 물었다
		IF TFLAG:193 < 0
			PRINTFORML %타겟은% 몸을 굳히곤 어물쩍 념겼다…
		ELSE
			PRINTFORML 종잡을 수 없는 생각이었던 것 같다…
		ENDIF
	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
ENDSELECT
ENDCATCH


code:
;遊ぶ
@EXIST_FreeAct1
#LOCALSIZE 1
#LOCALSSIZE 1

;オブジェクト本体
@FreeAct1(ARG, O_DATA, V_NAME)
#FUNCTION
#LOCALSIZE 1
#LOCALSSIZE 1
#DIMS O_DATA
#DIMS V_NAME
#DIM 경과시간

SELECTCASE O_DATA
CASE "명칭"
	CALLF MAKE_STR(V_NAME, "함께 놀기")
CASE "CHAIN"
;他キャラに連鎖する場合コメントアウト外すこと
	CALLF MAKE_INT(V_NAME, 1)
CASE "경과시간"
;自由行動に付き合うコマンドでの경과시간
;未入力だと最大30分
;	CALLF MAKE_INT(V_NAME, 경과시간)
ENDSELECT

@자유행동내용_1(CHARA, ARGS, 시간계수, CHAIN)
#DIM CHARA
#DIM CHAIN
#DIM 현위치
#DIM 메시지표시
#DIM 시간계수
#DIM 경과시간
현위치 = CFLAG:CHARA:현재위치
메시지표시 = 현위치 == CFLAG:MASTER:현재위치 ? 1 # 0
SELECTCASE ARGS
	CASE "발생"
		;［유치］持ちが屋外にいる時
		SIF !TALENT:CHARA:유치
			RETURN 0
		SIF !OUTROOF(현위치) && !전투훈련가능(현위치)
			RETURN 0
		SIF BASE:CHARA:기력 <= 500
			RETURN 0
		SIF 메시지표시
			PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% \@ CHAIN ? %조사처리(CALLNAME:CHAIN,"과")% 같이 놀기 시작했다. # %NAME_FROM_PLACE(현위치)%에서 놀기 시작했다.\@
		RETURN 60 + RAND:60
	CASE "행동중"
		IF 메시지표시
			PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% %TEXTR(@"뛰어다니고 있다/들떠 있다/잘 놀고 있다/%마스터에게% 장난치려 하고 있다")%.
		ENDIF
	CASE "완료"
		SIF 메시지표시
			PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% 놀다 지쳤던 모양이다.
	CASE "중단"
		;中断メッセージはうふふ突入時等でも表示されてしまうので表示しない
	CASE "같이한다"
		PRINTFORML %조교자는% %타겟의% 놀이에 가담했다
		IF TFLAG:193 > 0
			PRINTFORML 크게 달아올랐다…
		ELSEIF TFLAG:193 < 0
			PRINTFORML 별로 흥이 나지 않았다…
		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:친밀 + 호감도계수(TARGET)) * 80)) * 시간계수
			SOURCE:수동 = (120 + ((ABL:순종 + 호감도계수(TARGET)) * 80)) * 시간계수
			SOURCE:정복 = (120 + (ABL:새드끼 * 120)) * 시간계수
			TFLAG:98 = 2
		CASE 2
			;10%で失敗
			TFLAG:193 = -1
			SOURCE:환락 = (100 + ((ABL:친밀 + 호감도계수(TARGET)) * 30)) * 시간계수
			SOURCE:수동 = (50 + ((ABL:순종 + 호감도계수(TARGET)) * 20)) * 시간계수
			SOURCE:정복 = (50 + (ABL:새드끼 * 50)) * 시간계수
		CASEELSE
			SOURCE:환락 = (150 + ((ABL:친밀 + 호감도계수(TARGET)) * 50)) * 시간계수
			SOURCE:수동 = (100 + ((ABL:순종 + 호감도계수(TARGET)) * 50)) * 시간계수
			SOURCE:정복 = (100 + (ABL:새드끼 * 100)) * 시간계수
			TFLAG:98 = 1
		ENDSELECT
ENDSELECT


code:
@EXIST_FreeAct10
#LOCALSIZE 1
#LOCALSSIZE 1

;オブジェクト本体
@FreeAct10(ARG, O_DATA, V_NAME)
#FUNCTION
#LOCALSIZE 1
#LOCALSSIZE 1
#DIMS O_DATA
#DIMS V_NAME
#DIM 경과시간
경과시간 = Activity_Duration:TARGET
SELECTCASE O_DATA
;自由行動に付き合うコマンドの名称
CASE "명칭"
	CALLF MAKE_STR(V_NAME, "함께 낚시하기")
CASE "CHAIN"
;他キャラに連鎖しない場合コメントアウトすること
	CALLF MAKE_INT(V_NAME, 1)
CASE "경과시간"
;自由行動に付き合うコマンドでの경과시간
;0だと30分か残り時間すべての小さい方
	CALLF MAKE_INT(V_NAME, 0)
ENDSELECT

@자유행동내용_10(CHARA, ARGS, 시간계수, CHAIN)
#DIM CHARA
#DIM CHAIN
#DIM 현위치
#DIM 메시지표시
#DIM 시간계수
#DIM 경과시간
현위치 = CFLAG:CHARA:현재위치
메시지표시 = 현위치 == CFLAG:MASTER:현재위치 ? 1 # 0
SELECTCASE ARGS
	CASE "발생"
		;釣りLv1以上のキャラが釣りできる場所にいる時
		SIF TALENT:CHARA:낚시Lv < 1
			RETURN 0
		SIF !FISHING_SPOT(현위치)
			RETURN 0
		SIF BASE:CHARA:기력 <= 500
			RETURN 0
		SIF 메시지표시
			PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% \@ CHAIN ? %조사처리(CALLNAME:CHAIN,"과")% 행동을 같이하기 시작했다.# 낚시대를 꺼냈다.\@
		RETURN 60 + RAND:120
	CASE "행동중"
		IF 메시지표시
			SELECTCASE RAND:4
			CASE 1
				PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% 물고기를 낚아 올렸다.
			CASEELSE
				PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% 한가로이 낚시를 하고 있다.
			ENDSELECT
		ENDIF
	CASE "완료"
		;완료までいったら経験+2
		EXP:CHARA:낚시경험 += 2
		SIF 메시지표시
			PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% 낚시를 마친 것 같다.
	CASE "중단"
		EXP:CHARA:낚시경험 += 1
	CASE "같이한다"
		;自由行動に付き合ったとき用メッセージ
		IF TFLAG:193 < 0
			PRINTFORML %조교자는% %타겟이% 낚시를 하는 옆에서 멍하니 있었다…
		ELSE
			PRINTFORML %조교자는% %타겟의% 옆에서 같이 낚시를 했다
			PRINTFORML %TEXTR(@"%타겟은% 무엇인가 낚아 올린 것 같다…/낚싯대를 당기지 않은 채 한가로이 시간을 보냈다…/작은 물고기를 낚아올렸기에 %타겟의% 통에 넣었다…")%
		ENDIF
	CASE "소스"
		;付き合うコマンド選択時の入手ソース、시간계수は付き合った時間の1/10
		IF !ITEM:낚싯대
			;낚싯대がないと見てるだけ
			TFLAG:193 = -1
			DOWNBASE:MASTER:기력 += 50 * 시간계수
			DOWNBASE:TARGET:체력 += 10 * 시간계수
			DOWNBASE:TARGET:기력 += 20 * 시간계수
			SOURCE:환락 = (50 + ((ABL:친밀 + TALENT:MASTER:낚시Lv) * 25)) * 시간계수
		ELSE
			DOWNBASE:MASTER:체력 += 20 * 시간계수
			DOWNBASE:MASTER:기력 += 40 * 시간계수
			DOWNBASE:TARGET:체력 += 10 * 시간계수
			DOWNBASE:TARGET:기력 += 20 * 시간계수
			SOURCE:환락 = (150 + ((ABL:친밀 + TALENT:MASTER:낚시Lv) * 50)) * 시간계수
			SOURCE:수동 = (100 + ((ABL:순종 + TALENT:MASTER:낚시Lv) * 50)) * 시간계수
			TFLAG:98 = 1
			EXP:MASTER:낚시경험 ++
		ENDIF
ENDSELECT


code:
@EXIST_FreeAct11
#LOCALSIZE 1
#LOCALSSIZE 1

;オブジェクト本体
@FreeAct11(ARG, O_DATA, V_NAME)
#FUNCTION
#LOCALSIZE 1
#LOCALSSIZE 1
#DIMS O_DATA
#DIMS V_NAME
#DIM 경과시간
경과시간 = Activity_Duration:TARGET
SELECTCASE O_DATA
;自由行動に付き合うコマンドの名称
CASE "명칭"
	CALLF MAKE_STR(V_NAME, "실험을 돕기")
CASE "CHAIN"
;他キャラに連鎖しない場合コメントアウトすること
	CALLF MAKE_INT(V_NAME, 1)
CASE "경과시간"
;自由行動に付き合うコマンドでの경과시간
;0だと30分か残り時間すべての小さい方
	CALLF MAKE_INT(V_NAME, 0)
ENDSELECT

@자유행동내용_11(CHARA, ARGS, 시간계수, CHAIN)
#DIM CHARA
#DIM CHAIN
#DIM 현위치
#DIM 메시지표시
#DIM 시간계수
#DIM 경과시간
현위치 = CFLAG:CHARA:현재위치
메시지표시 = 현위치 == CFLAG:MASTER:현재위치 ? 1 # 0
SELECTCASE ARGS
	CASE "발생"
		;조제기능1以上のキャラが調合できる場所（あなた私室以外）または自室にいる時
		SIF TALENT:CHARA:조제Lv < 1
			RETURN 0
		SIF BASE:CHARA:기력 <= 500
			RETURN 0
		;連鎖時はスキップ
		IF !CHAIN
			SIF PHARMACY_SPOT(현위치) != 2 && 현위치 != CFLAG:CHARA:신사거주
				RETURN 0
		ENDIF
		SIF 메시지표시
			PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% \@ CHAIN ? %조사처리(CALLNAME:CHAIN,"을")% 돕기 시작했다.# 실험 준비를 시작했다.\@
		RETURN 60 + RAND:30
	CASE "행동중"
		IF 메시지표시
			PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% %TEXTR("실험 기구를 조정하고 있다/실험 도구를 늘어놓고 있다/실험 기록을 붙이고 있다/수상한 실험을 하고 있다")%.
		ENDIF
	CASE "완료"
		EXP:CHARA:조제경험 += 1
		SIF 메시지표시
			PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% 실험을 마친 듯 하다.
	CASE "중단"
		EXP:CHARA:조제경험 += 1
	CASE "같이한다"
		;自由行動に付き合ったとき用メッセージ
		PRINTFORML %조교자는% %타겟의% 실험을 도왔다
		SELECTCASE RAND:3
		CASE 1
			PRINTFORML %타겟이% 무엇을 하고 싶은지 잘 모르겠다…
		CASE 2
			PRINTFORML 위험물을 다루었기 때문에 신경이 쓰였다…
		CASEELSE
			PRINTFORML %타겟은% 만족한 표정을 짓고 있다…
		ENDSELECT
	CASE "소스"
		;付き合うコマンド選択時の入手ソース、시간계수は付き合った時間の1/10
		DOWNBASE:MASTER:체력 += 20 * 시간계수
		DOWNBASE:MASTER:기력 += 40 * 시간계수
		DOWNBASE:TARGET:체력 += 10 * 시간계수
		DOWNBASE:TARGET:기력 += 20 * 시간계수
		SOURCE:환락 = (150 + ((ABL:친밀 + TALENT:MASTER:조제Lv) * 50)) * 시간계수
		SOURCE:수동 = (100 + ((ABL:순종 + TALENT:MASTER:조제Lv) * 50)) * 시간계수
		TFLAG:98 = 1
		EXP:MASTER:조제경험 ++
ENDSELECT


code:
@EXIST_FreeAct12
#LOCALSIZE 1
#LOCALSSIZE 1

;オブジェクト本体
@FreeAct12(ARG, O_DATA, V_NAME)
#FUNCTION
#LOCALSIZE 1
#LOCALSSIZE 1
#DIMS O_DATA
#DIMS V_NAME
#DIM 경과시간
경과시간 = Activity_Duration:TARGET
SELECTCASE O_DATA
;自由行動に付き合うコマンドの名称
CASE "명칭"
	CALLF MAKE_STR(V_NAME, "함께 한가로이 쉬기")
CASE "CHAIN"
;他キャラに連鎖しない場合コメントアウトすること
	CALLF MAKE_INT(V_NAME, 1)
CASE "경과시간"
;自由行動に付き合うコマンドでの경과시간
;0だと30分か残り時間すべての小さい方
	CALLF MAKE_INT(V_NAME, 0)
ENDSELECT

@자유행동내용_12(CHARA, ARGS, 시간계수, CHAIN)
#DIM CHARA
#DIM CHAIN
#DIM 현위치
#DIM 메시지표시
#DIM 시간계수
#DIM 경과시간
현위치 = CFLAG:CHARA:현재위치
메시지표시 = 현위치 == CFLAG:MASTER:현재위치 ? 1 # 0
SELECTCASE ARGS
	CASE "발생"
		;昼間に休憩できる場所または푹쉼장소にいる時
		SIF !INRANGE(TIME, 600, 960)
			RETURN 0
		SIF !휴식가능(현위치) && !푹쉼장소(현위치)
			RETURN 0
		;炬燵が発生するならそっちを優先する
		SIF 코타츠발생가능(CHARA, 현위치)
			RETURN 0
		SIF 메시지표시
			PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% \@ CHAIN ? %CALLNAME:CHAIN%에게 꾀여 한가로이 지내기 시작했다.# 한숨 돌려 쉬기 시작했다.\@
		RETURN 60 + RAND:30
	CASE "행동중"
		IF 메시지표시
			PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% %TEXTR("하품을 하고 있다/맥이 풀려 있다/멍하니 있다/한가롭다")%.
		ENDIF
	CASE "완료"
		SIF 메시지표시
			PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% 휴식을 마친 것 같다.
	CASE "중단"
	CASE "같이한다"
		;自由行動に付き合ったとき用メッセージ
		PRINTFORML %조교자는% %타겟과% 함께 %TEXTR("멍하니/느긋하게/한가롭게")% 시간을 보냈다…
	CASE "소스"
		;付き合うコマンド選択時の入手ソース、시간계수は付き合った時間の1/10
		CALL RECOVER_PERMIL(MASTER, 30, "체력", 1)
		CALL RECOVER_PERMIL(MASTER, 80, "기력", 1)
		CALL RECOVER_PERMIL(TARGET, 40, "체력", 1)
		CALL RECOVER_PERMIL(TARGET, 100, "기력", 1)
		SOURCE:환락 = (100 + ((ABL:친밀 + 호감도계수(TARGET)) * 10)) * 시간계수
		SOURCE:수동 = (50 + ((ABL:순종 + 호감도계수(TARGET)) * 5)) * 시간계수
ENDSELECT


code:
@EXIST_FreeAct13
#LOCALSIZE 1
#LOCALSSIZE 1

;オブジェクト本体
@FreeAct13(ARG, O_DATA, V_NAME)
#FUNCTION
#LOCALSIZE 1
#LOCALSSIZE 1
#DIMS O_DATA
#DIMS V_NAME
#DIM 경과시간
경과시간 = Activity_Duration:TARGET
SELECTCASE O_DATA
;自由行動に付き合うコマンドの名称
CASE "명칭"
	CALLF MAKE_STR(V_NAME, "저녁반주를 함께하기")
CASE "CHAIN"
;他キャラに連鎖しない場合コメントアウトすること
	CALLF MAKE_INT(V_NAME, 1)
CASE "경과시간"
;自由行動に付き合うコマンドでの경과시간
;0だと30分か残り時間すべての小さい方
	CALLF MAKE_INT(V_NAME, 0)
ENDSELECT

@자유행동내용_13(CHARA, ARGS, 시간계수, CHAIN)
#DIM CHARA
#DIM CHAIN
#DIM 현위치
#DIM 메시지표시
#DIM 시간계수
#DIM 경과시간
현위치 = CFLAG:CHARA:현재위치
메시지표시 = 현위치 == CFLAG:MASTER:현재위치 ? 1 # 0
SELECTCASE ARGS
	CASE "발생"
		;酒飲めるキャラが夜間に푹쉼장소にいる時
		SIF TALENT:CHARA:술내성 < 0
			RETURN 0
		SIF !INRANGE(TIME, 1200, 1440) && !INRANGE(TIME, 0, 120)
			RETURN 0
		SIF !푹쉼장소(현위치)
			RETURN 0
		SIF 메시지표시
			PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% \@ CHAIN ? %조사처리(CALLNAME:CHAIN,"과")% 행동을 같이하기 시작했다.# 술울 꺼내 저녁 반주를 시작했다.\@
		RETURN 60 + RAND:30
	CASE "행동중"
		;ちょっとずつ酔う,酔いすぎるとSHIRAHUではなくなり중단されるので注意
		BASE:CHARA:술기운 += TIME_PROGRESS(TIME:1) * (RAND:3 + 1) * (4 - TALENT:CHARA:술내성)
		IF 메시지표시
			PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% %TEXTR("술을 마시고 미소 짓고 있다/차분히 술을 맛보고 있다/취한 기분에 젖어 있다/한가로이 술을 마시고 있다")%.
		ENDIF
	CASE "완료"
		BASE:CHARA:술기운 += TIME_PROGRESS(TIME:1) * (RAND:3 + 1) * (4 - TALENT:CHARA:술내성)
		SIF 메시지표시
			PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% 저녁 반주를 마친 것 같다.
	CASE "중단"
		BASE:CHARA:술기운 += TIME_PROGRESS(TIME:1) * (RAND:3 + 1) * (4 - TALENT:CHARA:술내성)
	CASE "같이한다"
		;自由行動に付き合ったとき用メッセージ
		PRINTFORML %조교자는% %타겟의% 저녁 반주를 함께하며 술잔을 나누었다
		SELECTCASE TALENT:TARGET:술내성
		CASE 0, 1
			PRINTFORML 따뜻한 술과 함께 담소를 나눴다…
		CASE 2
			PRINTFORML 감칠맛나는 술에 가볍게 취했다…
		CASEELSE
			PRINTFORML 독한 술이었다…
		ENDSELECT
	CASE "소스"
		;付き合うコマンド選択時の入手ソース、시간계수は付き合った時間の1/10
		;相手の술내성によって飲む酒が変わる,ソースも相手の술내성依存,なお술내성マイナスは晩酌しない
		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
ENDSELECT


code:
@EXIST_FreeAct14
#LOCALSIZE 1
#LOCALSSIZE 1

;オブジェクト本体
@FreeAct14(ARG, O_DATA, V_NAME)
#FUNCTION
#LOCALSIZE 1
#LOCALSSIZE 1
#DIMS O_DATA
#DIMS V_NAME
#DIM 경과시간
경과시간 = Activity_Duration:TARGET
SELECTCASE O_DATA
;自由行動に付き合うコマンドの名称
CASE "명칭"
	CALLF MAKE_STR(V_NAME, "쇼핑을 돕기")
CASE "CHAIN"
;他キャラに連鎖しない場合コメントアウトすること
	CALLF MAKE_INT(V_NAME, 1)
CASE "경과시간"
;自由行動に付き合うコマンドでの경과시간
;0だと30分か残り時間すべての小さい方
	CALLF MAKE_INT(V_NAME, 0)
ENDSELECT

@자유행동내용_14(CHARA, ARGS, 시간계수, CHAIN)
#DIM CHARA
#DIM CHAIN
#DIM 현위치
#DIM 메시지표시
#DIM 시간계수
#DIM 경과시간
현위치 = CFLAG:CHARA:현재위치
메시지표시 = 현위치 == CFLAG:MASTER:현재위치 ? 1 # 0
SELECTCASE ARGS
	CASE "발생"
		;お店にいる時
		SIF !KAIDASHI_SHOP(현위치) && !FLOWER_SHOP(현위치) && !SAKE_SHOP(현위치) && !YASAI_SHOP(현위치)
			RETURN 0
		SIF BASE:CHARA:기력 <= 500
			RETURN 0
		SIF !INRANGE(TIME, 540, 1140)
			RETURN 0
		SIF 메시지표시
			PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% \@ CHAIN ? %조사처리(CALLNAME:CHAIN,"과")% 행동을 같이하기 시작했다.# 장바구니를 꺼냈다.\@
		RETURN 60 + RAND:30
	CASE "행동중"
		IF 메시지표시
			PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% %TEXTR("값싸고 좋은 물건을 찾고 있다/물건을 손에 들고 평가하고 있다/무엇을 살까 고민하고 있다/마음대로 쇼핑하고 있다.")%
		ENDIF
	CASE "완료"
		SIF 메시지표시
			PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% 쇼핑을 마친 것 같다.
	CASE "중단"
	CASE "같이한다"
		;自由行動に付き合ったとき用メッセージ
		PRINTFORML %조교자는% %타겟의% 쇼핑을 도왔다
		PRINTFORML %CALLNAME:TARGET%%TEXTR(@"%조사만처리(CALLNAME:TARGET,"는")% 어떤 것을 살까 고민하고 있다…/의 말을 듣고 비슷한 상품을 긁어모았다…/의 짐을 들고 여기저기 돌아다녔다…")%
	CASE "소스"
		;付き合うコマンド選択時の入手ソース、시간계수は付き合った時間の1/10
		DOWNBASE:MASTER:체력 += 20 * 시간계수
		DOWNBASE:MASTER:기력 += 20 * 시간계수
		DOWNBASE:TARGET:체력 += 10 * 시간계수
		DOWNBASE:TARGET:기력 += 10 * 시간계수
		SOURCE:환락 = (200 + ((ABL:순종 + 호감도계수(TARGET))  * 50)) * 시간계수
		TFLAG:98 = 1
ENDSELECT


code:
@EXIST_FreeAct15
#LOCALSIZE 1
#LOCALSSIZE 1

;오브젝트 본체
@FreeAct15(ARG, O_DATA, V_NAME)
#FUNCTION
#LOCALSIZE 1
#LOCALSSIZE 1
#DIMS O_DATA
#DIMS V_NAME
#DIM 경과시간
경과시간 = Activity_Duration:TARGET
SELECTCASE O_DATA
;自由行動に付き合うコマンドの名称
CASE "명칭"
	CALLF MAKE_STR(V_NAME, "상황을 살핀다")
CASE "CHAIN"
;他キャラに連鎖しない場合コメントアウトすること
	CALLF MAKE_INT(V_NAME, 1)
CASE "경과시간"
;自由行動に付き合うコマンドでの경과시간
;0だと30分か残り時間すべての小さい方
	CALLF MAKE_INT(V_NAME, 0)
ENDSELECT

@자유행동내용_15(CHARA, ARGS, 시간계수, CHAIN)
#DIM CHARA
#DIM CHAIN
#DIM 현위치
#DIM 메시지표시
#DIM 시간계수
#DIM 경과시간
현위치 = CFLAG:CHARA:현재위치
메시지표시 = 현위치 == CFLAG:MASTER:현재위치 ? 1 # 0
SELECTCASE ARGS
	CASE "발생"
		;屋外で発生
		SIF INROOM(현위치)
			RETURN 0
		;仕事予定の邪魔をしない
		SIF !CHARA_HOLIDAY(CHARA)
			RETURN 0
		;에이키様は常に起点
		SIF CHARA == 30
			GOTO START
		;코마치/쿠타카以外の신령と蓬莱人は対象外
		SIF CHECK_CHARA(CHARA, "봉래인") || (TALENT:CHARA:신령 && !GROUPMATCH(CHARA, 76, 129))
			RETURN 0
		;에이키様がすでに説教中なら発生
		SIF Activity_Type:30 != 15 || 현위치 != CFLAG:30:현재위치 || !Activity_Duration:30
			RETURN 0
		$START
		IF 메시지표시
			;PRINTFORM %CALLNAME:CHARA% KR판 임의수정, 조사처리에 따른 CALLNAME 호출위치 이동
			IF CHARA == 30
				PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% %FA15_TARGET(0)%에게 설교를 시작했다。
			ELSE
				PRINTFORMW %CALLNAME:CHARA%도 \@ CHAIN ? 말려들어 설교를 듣기 시작했다 # 에이키의 설교에 붙잡혔다 \@…
			ENDIF
		ELSEIF CHARA == 30
			CALLF FA15_TARGET(0)
		ENDIF
		;自由행동にかける時間をRETURNする。코마치のみ最低保障2時間
		IF CHARA == 30
			RETURN 60 + RAND:30
		ELSE
			LOCAL = 30 + RAND:60 + ((CHARA == 76) * 90)
			Activity_Duration:30 = MAX(Activity_Duration:30, LOCAL)
			RETURN LOCAL
		ENDIF
	CASE "행동중"
		;행동중の処理、地の아야もここで。
		IF 메시지표시
			IF CHARA == 30
				PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% %FA15_TARGET(1)%에게 %TEXTR("간곡하게/장황하게/길게/")% 설교하고 있다…
			ELSEIF 현위치 != CFLAG:30:현재위치 || Activity_Type:30 != 15
				CALL FA15_RESET(CHARA)
			ELSE
				PRINTFORM %조사처리(CALLNAME:CHARA,"는")% 에이키의 설교
				SELECTCASE CFLAG:CHARA:성격경향
					;気弱系
					CASE 1
						PRINTFORMW %TEXTR("에 눈물짓고/를 듣고 고개를 떨구고")% 있다…
					;強気系
					CASE 2
						PRINTFORMW %TEXTR("몰래 혀를 내밀고/를 적당히 흘려 듣고")% 있다…
					;素直系
					CASE 3
						PRINTFORMW %TEXTR("를 듣고 풀이 죽어/에 일일이 고개를 끄덕이고")% 있다…
					;真面目系
					CASE 4
						PRINTFORMW を%TEXTR("를 듣고 반성하고/진지하게 듣고")% 있다…
					;その他
					CASEELSE
						PRINTFORMW を%TEXTR("를 얌전히 받아들이고/를 가만히 듣고")% 있다…
				ENDSELECT
			ENDIF
		ELSEIF CHARA != 30 && 현위치 != CFLAG:30:현재위치
			CALL FA15_RESET(CHARA)
		ENDIF
	CASE "완료"
		;행동시간を使い切ったときの処理、地の아야もここで
		IF 메시지표시
			IF CHARA == 30
				PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% 겨우 설교를 마친 것 같다。
			ELSE
				PRINTDATAW
					DATAFORM 겨우 설교가 끝나서 %조사처리(CALLNAME:CHARA,"는")% \@ CFLAG:CHARA:성격경향 == 2 ? 녹초가 되어 # 안심하고 \@ 있다.
					DATAFORM %조사처리(CALLNAME:CHARA,"는")% 설교가 끝나고 \@ CFLAG:CHARA:성격경향 == 1 ? 눈시울을 적시고 있다 # 작게 한숨을 내쉬었다 \@.
					DATAFORM 설교가 끝나고 %조사처리(CALLNAME:CHARA,"는")% \@ CFLAG:CHARA:성격경향 == 4 ? 성실하게 감사의 말을 전했다 # 멋쩍은 얼굴을 했다 \@.
				ENDDATA
			ENDIF
		ENDIF
	CASE "중단"
		;中断メッセージは우후후突入時等でも表示されてしまうので表示しない
		;説教する側がいなくなった場合の処理
		IF CHARA == 30
			FOR COUNT, 1, CHARANUM
				SIF Activity_Type:COUNT != 15
					CONTINUE
				CALL FA15_RESET(COUNT)
			NEXT
		ENDIF
	CASE "같이한다"
		;自由행동に付き合ったとき用メッセージ
		PRINTFORML %조사처리(CALLNAME:PLAYER,"는")% 왠지 모르게 설교를 들어보았다。
		IF TFLAG:193
			PRINTFORML 에이키에게 들켜서 설교당하고 말았다…
		ELSE
			LOCALS = %\@ CHARA == 30 ? %FA15_TARGET(1)% # %CALLNAME:CHARA% \@%
			PRINTDATAL
				DATAFORM ……언제 끝날지 짐작도 안 간다。
				DATAFORM ……자신이 아니라서 정말 다행이야。
				DATAFORM ……운이 없는 %LOCALS%에게 좀 동정하고 말았다。
			ENDDATA
		ENDIF
	CASE "소스"
		;付き合うコマンド選択時の入手ソース、시간계수は付き合った時間の1/10
		;ソースの基準よくわかんないので適当
		DOWNBASE:MASTER:기력 += 20 * 시간계수
		;15%でいっしょに説教されて入手ソース増/MASTER消費기력激増
		IF !RAND:6
			TFLAG:193 = 1
			SOURCE:30:환락 = (100 + ((ABL:30:친밀 + 호감도계수(TARGET)) * 40)) * 시간계수
			SOURCE:30:정복 = (60 + (ABL:30:새드끼 * 60)) * 시간계수
			IF TARGET != 30
				SOURCE:TARGET:수동 = (30 + ((ABL:순종 + 호감도계수(TARGET)) * 50)) * 시간계수
				SOURCE:TARGET:굴종 = (30 + ((ABL:순종 + 호감도계수(TARGET)) * 50)) * 시간계수
				DOWNBASE:TARGET:기력 += 10 * 시간계수
			ENDIF
			DOWNBASE:MASTER:기력 += 150 * 시간계수
		ELSE
			SOURCE:환락 = (50 + ((ABL:친밀 + 호감도계수(TARGET)) * 30)) * 시간계수
			SOURCE:정복 = (20 + (ABL:새드끼 * 50)) * 시간계수
			IF TARGET != 30
				SOURCE:TARGET:수동 = (20 + ((ABL:순종 + 호감도계수(TARGET)) * 20)) * 시간계수
				SOURCE:TARGET:굴종 = (20 + ((ABL:순종 + 호감도계수(TARGET)) * 20)) * 시간계수
				DOWNBASE:TARGET:기력 += 10 * 시간계수
			ENDIF
		ENDIF
ENDSELECT
;説教相手を表示する式中関数
@FA15_TARGET(ARG)
#FUNCTIONS
#DIM 누계
#DIMS 모브
#DIMS 네임드
;説教開始は仕様上常に모브キャラ
IF !ARG
	SELECTCASE GET_MAPID(CFLAG:30:현재위치)
		CASE 0
			모브 = 요괴
		CASE 1
			모브 = 참배객
		CASE 2
			모브 = %TEXTR("마을 아가씨/마을 사람/")%
		CASE 3
			모브 = %TEXTR("메이드 요정/홉고블린/")%
		CASE 4
			모브 = 이나바
		CASE 5
			모브 = 둔갑%TEXTR("고양이/너구리/여우/")%
		CASE 6
			모브 = %TEXTR("좀비 페어리/사신/")%
		CASE 7
			모브 = 캇파
		CASE 8
			모브 = %TEXTR("참배객/텐구/캇파/")%
			SIF INRANGE(CFLAG:30:현재위치, 830, 850)
				모브 = 천인
		CASE 9
			모브 = 오니
		CASE 10
			모브 = %TEXTR("옥토/월인/")%
	ENDSELECT
	LOCALS = %TEXTR("지나가던/눈이 마주친/근처에 있었던/운 나쁘게 도망치지 못한")%%모브%
	RETURNF LOCALS
;에이키様と同じ場所にいて自由행동=15且つ행동시간中のキャラが説教され中
ELSE
	네임드 =
	누계 = 0
	FOR COUNT, 1, CHARANUM
		SIF COUNT == 30
			CONTINUE
		SIF CFLAG:30:현재위치 != CFLAG:COUNT:현재위치
			CONTINUE
		SIF Activity_Type:COUNT != 15 || !Activity_Duration:COUNT
			CONTINUE
		네임드 += @"%\@ 누계 ? 와 # \@%%CALLNAME:COUNT%"
		누계 ++
	NEXT
	SIF 누계
		RETURNF 네임드
	RETURNF 모브
ENDIF
;집합等での強制中断処理
@FA15_RESET(ARG)
Activity_Type:ARG = 0
Activity_Duration:ARG = 0
RETURN


code:
@EXIST_FreeAct16
#LOCALSIZE 1
#LOCALSSIZE 1

;오브젝트 본체
@FreeAct16(ARG, O_DATA, V_NAME)
#FUNCTION
#LOCALSIZE 1
#LOCALSSIZE 1
#DIMS O_DATA
#DIMS V_NAME
#DIM 경과시간
경과시간 = Activity_Duration:TARGET
SELECTCASE O_DATA
;자유행동에 어울린다コマンドの명칭
CASE "명칭"
	IF GROUPMATCH(TARGET, 5, 6, 7, 14, 111)
		CALLF MAKE_STR(V_NAME, "장난을 같이한다")
	ELSE
		CALLF MAKE_STR(V_NAME, "상황을 살핀다")
	ENDIF
CASE "CHAIN"
;他キャラに連쇠사슬しない場合コメントアウトすること
	;CALLF MAKE_INT(V_NAME, 1)
CASE "경과시간"
;자유행동에 어울린다コマンドでの경과시간
;0だと30分か残り時間すべての小さい方
	CALLF MAKE_INT(V_NAME, 10)
ENDSELECT

@자유행동내용_16(CHARA, ARGS, 시간계수, CHAIN)
#DIM CHARA
#DIM CHAIN
#DIM 현위치
#DIM 메시지표시
#DIM 시간계수
#DIM 경과시간
#DIM 장치인 = 5, 6, 7, 14, 111
#DIM 발안자
#DIM 기록, 200
#DIM 낙하자
#DIM 랭크
#DIM 리셋
현위치 = CFLAG:CHARA:현재위치
메시지표시 = 현위치 == CFLAG:MASTER:현재위치 ? 1 # 0
IF 리셋 != DAY
	VARSET 기록
	발안자 = 0
	낙하자 = 0
	리셋 = DAY
ENDIF
SELECTCASE ARGS
	CASE "발생"
		;屋外で発生
		SIF !OUTROOF(현위치)
			RETURN 0
		;仕事予定あれば장치인ない
		SIF MATCH(장치인, CHARA, 0) && !CHARA_HOLIDAY(CHARA)
			RETURN 0
		;三요정と치르노・클라운피스が起点
		IF MATCH(장치인, CHARA, 0) && !(발안자 || FA16_HOLE:0)
			발안자 = CHARA
			FA16_HOLE:0 = 현위치
			GOTO ACT
		ENDIF
		;すでに落とし穴があれば一回だけ参加
		IF MATCH(장치인, CHARA, 0)
			SIF 현위치 != FA16_HOLE:0 || 기록:CHARA
				RETURN 0
			GOTO ACT
		ENDIF

		;落とし穴に落ちる側判定
		SIF !발안자 || 낙하자
			RETURN 0
		SIF 기록:CHARA || FA16_HOLE:0 != 현위치
			RETURN 0
		랭크 = CSVABL(CHARA, GETNUM(ABL, "전투능력"))
		;原作の強キャラに回避補正
		SIF 랭크 > 4 && !RAND:4
			RETURN 0
		SIF 메시지표시
			PRINTFORMW %CALLNAME:CHARA%가 %CALLNAME:발안자%가 파놓은 함정에 빠졌다！！
		기록:CHARA = 1
		낙하자 = CHARA
		;引っかかった人と参加者の행동시간を1に設定
		FOR COUNT, 0, 5
			SIF 기록:(장치인:COUNT) != 2 || Activity_Type:(장치인:COUNT) != 16 || !Activity_Duration:(장치인:COUNT)
				CONTINUE
			Activity_Duration:(장치인:COUNT) = 1
		NEXT
		RETURN 1

		;落とし穴장치인る側処理
		$ACT
		기록:CHARA = 2
		IF 메시지표시
			PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% \@ CHARA == 발안자 ? 장난으로 함정을 파냈다 # %CALLNAME:발안자%의 함정을 손질하기 시작했다 \@…
			SIF !FA16_HOLE:1
				FA16_HOLE:1 = 1
		ENDIF
		;自由행동にかける時間をRETURNする
		SIF CHARA == 발안자
			RETURN 40 + RAND:30
		SIF !Activity_Duration:발안자
			RETURN 30 + RAND:20
		RETURN Activity_Duration:발안자
	CASE "행동중"
		;행동中の処理、地の아야もここで
		SIF !메시지표시
			RETURN
		IF 낙하자
			SELECTCASE 랭크
				CASE IS <= 1
					PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% %TEXTR(@"깔깔 웃고 있다/덩실거리며 기뻐하고 있다/화려하게 승리의 포즈를 취하고 있다")%.
				CASE 2, 3, 4
					PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% %TEXTR(@"애써 웃음을 참고 있다/살짝 승리의 포즈를 취했다")%.
				CASEELSE
					PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% %TEXTR("도망갈 준비를 하고/얼굴이 파랗게 질려")% 있다…
			ENDSELECT
		ELSE
			PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% 함정%TEXTR(@"에서 파낸 흙을 숨기고 있다/에 \@ DAY:2 == 4 ? 눈 # 낙엽 \@을 씌우고 있다/을 늘리고 있다")%.
		ENDIF
	CASE "완료"
		;행동시간を使い切ったときの処理、地の아야もここで
		IF !MATCH(장치인, CHARA, 0)
			IF 메시지표시
				SELECTCASE 랭크
					CASE IS <= 1
						PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% 잠시 %TEXTR("기절해/뒤집혀")% 있다가、허둥지둥 함정에서 기어 나왔다…
					CASE 2, 3, 4
						PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% 바로 함정에서 뛰쳐나와 %TEXTR("범인을 찾기 시작했다/주위를 두리번두리번 둘러보고 있다")%…
					CASEELSE
						PRINTFORML %조사처리(CALLNAME:CHARA,"가")% 함정에서 사뿐히 올라왔다。
						PRINTFORMW %TEXTR(@"왠지 분위기가 험악하다/\@ TALENT:CHARA:기분 == 1 ? 웃는 얼굴 그대로인 # 무표정한 \@ 것이 오히려 더 무섭다/")%…
				ENDSELECT
			ENDIF
		ELSEIF 낙하자
			IF 메시지표시
				SELECTCASE 랭크
					CASE IS <= 1
						PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% %CALLNAME:낙하자%%TEXTR("을 끌어 올렸다/에게 웃으며 사과했다")%.
					CASE 2, 3, 4
						PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% %TEXTR("모르는 체하고 있다/웃음을 참고 있다")%.
					CASEELSE
						PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% %TEXTR("식은땀을 흘리고 있다/몸을 숨기고 있다")%…
				ENDSELECT
			ENDIF
		ELSEIF 메시지표시
			PRINTFORMW \@ FA16_HOLE:1 == 2 ? %CALLNAME:MASTER%밖에 # 아무도 \@ 걸리지 않아 %조사처리(CALLNAME:CHARA,"는")% 질려 버린 것 같다。
		ENDIF
		Activity_Type:CHARA = 0
		SIF !낙하자
			RETURN
		FOR COUNT, 0, 5
			SIF Activity_Type:(장치인:COUNT) == 16 && FA16_HOLE:0 == CFLAG:(장치인:COUNT):현재위치
				RETURN
		NEXT
		낙하자 = 0
		RETURN
	CASE "중단"
		;中断メッセージは우후후突入時等でも表示されてしまうので表示しない
	CASE "같이한다"
		;自由행동に付き合ったとき用メッセージ
		IF 낙하자 || !MATCH(장치인, TARGET, 0)
			SIF !MATCH(장치인, TARGET, 0)
				낙하자 = TARGET
			PRINTFORM %조사처리(CALLNAME:PLAYER,"는")% \@ TARGET != 낙하자 ? %조사처리(CALLNAME:TARGET,"과")% 함께 # \@
			SELECTCASE 랭크
				CASE IS <= 1
					PRINTFORML %조사처리(CALLNAME:낙하자,"가")% 떨어진 함정을 들여다보았다。
					PRINTFORML 함정의 바닥에 %TEXTR("엉덩방아를 찧은/팬티를 그대로 드러낸/눈을 뱅뱅 돌리고 있는")% %조사처리(CALLNAME:낙하자,"가")% 보였다。
				CASE 2, 3, 4
					PRINTFORML 함정의 모습을 \@ TARGET != 낙하자 ? 몰래 # \@ 엿보았다。
					PRINTFORML 함정의 바닥에서 %조사처리(CALLNAME:낙하자,"는")% 기운차게 욕을 하고 있다.
				CASEELSE
					PRINTFORML %조사처리(CALLNAME:낙하자,"가")% 떨어진 함정에 조심조심 다가갔다.
					PRINTFORMW 함정 밑바닥에서 걷잡을 수 없을 정도의 살기가 치솟아 오르고 있다…
			ENDSELECT
		ELSE
			PRINTFORML %조사처리(CALLNAME:PLAYER,"는")% %조사처리(CALLNAME:TARGET,"과")% 함께 함정을 %TEXTR("하나 더 팠다/더 깊게 했다/눈에 띄지 않도록 작업했다")%.
			SIF !FA16_HOLE:1
				FA16_HOLE:1 = 1
		ENDIF
	CASE "소스"
		;付き合うコマンド選択時の入手ソース、시간계수は付き合った時間の1/10
		IF CHARA == 낙하자
			SOURCE:울굴 += 50 + 랭크 * 50
			SOURCE:고통 += 350 - 랭크 * 50
		ELSE
			SOURCE:환락 = 20 + ((ABL:친밀 * 15)) * 시간계수
			SOURCE:수동 = 10 + ((ABL:순종 * 10)) * 시간계수
		ENDIF
ENDSELECT


code:
@EXIST_FreeAct17
#LOCALSIZE 1
#LOCALSSIZE 1

;オブジェクト本体
@FreeAct17(ARG, O_DATA, V_NAME)
#FUNCTION
#LOCALSIZE 1
#LOCALSSIZE 1
#DIMS O_DATA
#DIMS V_NAME
#DIM 경과시간
경과시간 = Activity_Duration:TARGET
SELECTCASE O_DATA
;自由行動に付き合うコマンドの名称
CASE "명칭"
	CALLF MAKE_STR(V_NAME, "함께 눈으로 만들기")
CASE "CHAIN"
;他キャラに連鎖しない場合コメントアウトすること
	CALLF MAKE_INT(V_NAME, 1)
CASE "경과시간"
;自由行動に付き合うコマンドでの경과시간
;未入力だと最大30分
;	CALLF MAKE_INT(V_NAME, 0)
ENDSELECT

@자유행동내용_17(CHARA, ARGS, 시간계수, CHAIN=0)
#DIM CHARA
#DIM CHAIN
#DIM 현위치
#DIM 메시지표시
#DIM 시간계수
#DIM 경과시간
#DIMS 작품
현위치 = CFLAG:CHARA:현재위치
메시지표시 = 현위치 == CFLAG:MASTER:현재위치 ? 1 # 0
SELECTCASE ARGS
	CASE "발생"
		;冬の屋外で訓練できる場所
		SIF !OUTROOF(현위치)
			RETURN 0
		SIF !전투훈련가능(현위치)
			RETURN 0
		SIF DAY:2 != 4
			RETURN 0
		SIF BASE:CHARA:기력 <= 500
			RETURN 0
		;積もってないとダメ
		SIF YOGORE:현위치 < 500
				RETURN 0
		;吹雪,猛吹雪中はダメ
		SIF GROUPMATCH(날씨, 10)
			RETURN 0
		SIF FLAG:이상기상 == 10
			RETURN 0
		;連鎖でない場合は先に作ってあったらダメ
		SIF !CHAIN && FA17_OBJ:(현위치 % 100)
			RETURN 0

		;ここから作成決定後の処理
		;連鎖でない場合、作成位置と作成者を記録
		IF !CHAIN
			CALL FA17_OBJNAME(CHARA)
			FA17_OBJ:(현위치 % 100) = CHARA
			작품 = %RESULTS%
		ENDIF
		IF 메시지표시
			PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% \@ CHAIN ? %CALLNAME:CHAIN%을 돕기 시작했다。# %작품%을 만들기 시작했다。\@
			FA17_EXIST:(현위치 % 100) += 10
		ENDIF
		RESULT = CHAIN ? 1 # RESULT
		RETURN RESULT
	CASE "행동중"
		;ちょっとだけ掃除される
		YOGORE:(현위치) = MAX(YOGORE:(현위치) -50 * TIME_PROGRESS(TIME:1) / 5, 0)
		IF 메시지표시
			PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% %TEXTR("눈을 모으고 있다/눈을 뭉치고 있다/형태를 다듬고 있다")%。
			FA17_EXIST:(현위치 % 100) += 10
		ENDIF
	CASE "완료"
		IF 메시지표시
			PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% %작품%을 완성시키고 만족한 것 같다。
			FA17_EXIST:(현위치 % 100) += 10
		ENDIF
		;作成完了のフラグ
		FA17_OBJ:(현위치 % 100) += 1000
	CASE "중단"
		;中断メッセージはうふふ突入時等でも表示されてしまうので表示しない
	CASE "같이한다"
		PRINTFORML %조사처리(CALLNAME:PLAYER,"는")% %타겟의% %작품%만들기를 도왔다
	CASE "소스"
		;遊びに付き合うと一緒
		DOWNBASE:MASTER:체력 += 40 * 시간계수
		DOWNBASE:MASTER:기력 += 40 * 시간계수
		DOWNBASE:TARGET:체력 += 20 * 시간계수
		DOWNBASE:TARGET:기력 += 20 * 시간계수
		SOURCE:환락 = (150 + ((ABL:친밀 + 호감도계수(TARGET)) * 50)) * 시간계수
		SOURCE:수동 = (100 + ((ABL:순종 + 호감도계수(TARGET)) * 50)) * 시간계수
		SOURCE:정복 = (100 + (ABL:새드끼 * 100)) * 시간계수
		TFLAG:98 = 1
ENDSELECT

@FA17_OBJNAME(CHARA)
#DIM CHARA
#DIM 제작자
LOCAL = 30
제작자 = CHARA > 1000 ? CHARA % 1000 # CHARA
RESULTS:1 = 가 장식되어 있다
SELECTCASE 제작자
	CASE [[에이카]]
		RESULTS = 초다단 눈사람
		RESULTS:1 = 이 우뚝 솟아 있다
		LOCAL = 90
	CASE [[유카]]
		RESULTS = 아이스 플라워
		LOCAL = 40
	CASE [[누에]]
		RESULTS = 눈우주인
		RESULTS:1 = 이 이쪽을 보고 있다…
	CASE [[마미조]]
		RESULTS = 눈너구리
		RESULTS:1 = 에 잎사귀가 얹혀 있다
	CASE [[미케]]
		RESULTS = 눈마네키네코
	CASE [[미스마루]]
		RESULTS = 음양설옥
		RESULTS:1 = 이 둥실둥실 떠 있다
	CASE [[마유미]], [[케이키]]
		RESULTS = 눈하니와
		RESULTS:1 = 가 %\@ CHARA == [[마유미]] ? 서 있다 # 돌아다니고 있다… \@%
		LOCAL = 40
	CASE [[리카]]
		RESULTS = 눈전차
		RESULTS:1 = 가 놓여 있다
		LOCAL = 60
	CASEELSE
		;ウサミミ
		IF TALENT:제작자:동물귀 == 2
			RESULTS = 눈토끼
		;月人
		ELSEIF GET_TRIBENAME(제작자, GETNUM(TALENT, "인간")) == "월인"
			RESULTS = 눈토끼
		;教養3以上
		ELSEIF CSVABL(제작자, GETNUM(ABL, "교양")) >= 3
			RESULTS = 눈토끼
		ELSE
			RESULTS = 눈사람
			RESULTS:1 = 이 서 있다
		ENDIF
		SIF CHARA > 1000
			RESULTS = %\@ RESULTS == "눈사람" ? 커다란 # 귀여운 \@% %RESULTS%
ENDSELECT
RETURN LOCAL + RAND:30


code:
@EXIST_FreeAct18
#LOCALSIZE 1
#LOCALSSIZE 1

;オブジェクト本体
@FreeAct18(ARG, O_DATA, V_NAME)
#FUNCTION
#LOCALSIZE 1
#LOCALSSIZE 1
#DIMS O_DATA
#DIMS V_NAME
#DIM 경과시간
경과시간 = Activity_Duration:TARGET
SELECTCASE O_DATA
;自由行動に付き合うコマンドの名称
CASE "명칭"
	CALLF MAKE_STR(V_NAME, "코타츠에서 쉬기") ;炬燵でくつろぐ 코타츠에서 느긋하게 쉬기로 할 경우, 커맨드창 레이아웃이 깨지는 관계로 축약
CASE "CHAIN"
;他キャラに連鎖しない場合コメントアウトすること
	CALLF MAKE_INT(V_NAME, 1)
CASE "경과시간"
;自由行動に付き合うコマンドでの경과시간
;0だと30分か残り時間すべての小さい方
	CALLF MAKE_INT(V_NAME, 0)
ENDSELECT

@자유행동내용_18(CHARA, ARGS, 시간계수, CHAIN)
#DIM CHARA
#DIM CHAIN
#DIM 현위치
#DIM 메시지표시
#DIM 시간계수
#DIM 경과시간
현위치 = CFLAG:CHARA:현재위치
메시지표시 = 현위치 == CFLAG:MASTER:현재위치 ? 1 # 0
SELECTCASE ARGS
	CASE "발생"
		;冬の炬燵がある場所で発生
		SIF !코타츠발생가능(CHARA, 현위치)
			RETURN 0
		SIF 메시지표시
			;PRINTFORMW %CALLNAME:CHARA%は\@ CHAIN ? %CALLNAME:CHAIN%に釣られて炬燵に入った。# 炬燵でまったりし始めた。\@
			PRINTFORMW %조사처리(CALLNAME:CHARA,"는") %\@ CHAIN ? %CALLNAME:CHAIN%에게 이끌려 코타츠에 들어갔다。# 코타츠에서 느긋하게 있기 시작했다。\@
		;猫耳
		IF TALENT:CHARA:동물귀 == 4
			RETURN 120 + RAND:60
		;それ以外の動物耳
		ELSEIF TALENT:CHARA:동물귀
			RETURN 90 + RAND:45
		ELSE
			RETURN 60 + RAND:30
		ENDIF
	CASE "행동중"
		IF 메시지표시
			;PRINTFORMW %CALLNAME:CHARA%は炬燵に入って%TEXTR("温まっている/丸くなっている/ぬくぬくしている/あくびをしている/くつろいでいる")%。
			PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% 코타츠에 들어가 %TEXTR("데워지고 있다/누그러져 있다/따끈따끈해져 있다/하품을 하고 있다/느긋하게 쉬고 있다")%。
		ENDIF
	CASE "완료"
		SIF 메시지표시
			;PRINTFORMW %CALLNAME:CHARA%は%TEXTR("意を決して炬燵から這い出た/十分温まって炬燵から出た/暑くなってきたので炬燵から出た/ハッとして炬燵から出た")%。
			PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% %TEXTR("큰맘을 먹고 코타츠에서 기어나왔다/충분히 데워져 코타츠에서 나왔다/더워지기 시작해서 코타츠에서 나왔다/뜨거워서 코타츠에서 나왔다")%。
	CASE "중단"
	CASE "같이한다"
		;自由行動に付き合ったとき用メッセージ
		;PRINTFORML %CALLNAME:PLAYER%は%CALLNAME:TARGET%と一緒に炬燵で%TEXTR("温まって/丸くなって/暖を取って")%%TEXTR("ぼーっとした/ダラダラした/のんびりした/くつろいだ")%…
		PRINTFORML %조사처리(CALLNAME:PLAYER,"는")% %타겟과% 함께 코타츠에서 %TEXTR("데워져/누그러져/몸을 녹이며")% %TEXTR("멍하니 있다/늘어져 있다/여유롭게 있다/느긋하게 있다")%…
	CASE "소스"
		;付き合うコマンド選択時の入手ソース、시간계수は付き合った時間の1/10
		;のんびりすると同じ
		CALL RECOVER_PERMIL(MASTER, 30, "체력", 1)
		CALL RECOVER_PERMIL(MASTER, 80, "기력", 1)
		CALL RECOVER_PERMIL(TARGET, 50, "체력", 1)
		CALL RECOVER_PERMIL(TARGET, 100, "기력", 1)
		SOURCE:환락 = (100 + ((ABL:친밀 + 호감도계수(TARGET)) * 10)) * 시간계수
		SOURCE:수동 = (50 + ((ABL:순종 + 호감도계수(TARGET)) * 5)) * 시간계수
ENDSELECT

;炬燵発生条件
;ARG  현재위치
@코타츠발생가능(CHARA, ARG)
#FUNCTION
#DIM CHARA
;冬のみ
SIF GET_MONTH() != "겨울의 달"
	RETURNF 0
;炬燵のある場所のみ
SIF !코타츠가있는장소(ARG)
	RETURNF 0
;水棲と氷精はダメ
SIF TALENT:CHARA:수서 || TALENT:CHARA:빙정
	RETURNF 0
RETURNF 1


code:
;食事
@EXIST_FreeAct2
#LOCALSIZE 1
#LOCALSSIZE 1

;オブジェクト本体
@FreeAct2(ARG, O_DATA, V_NAME)
#FUNCTION
#LOCALSIZE 1
#LOCALSSIZE 1
#DIMS O_DATA
#DIMS V_NAME
#DIM 경과시간
경과시간 = Activity_Duration:TARGET
SELECTCASE O_DATA
CASE "명칭"
	CALLF MAKE_STR(V_NAME, "함께 식사하기")
CASE "CHAIN"
;他キャラに連鎖する場合コメントアウト外すこと
	CALLF MAKE_INT(V_NAME, 1)
CASE "경과시간"
;自由行動に付き合うコマンドでの경과시간
;未入力だと最大30分
	CALLF MAKE_INT(V_NAME, 경과시간)
ENDSELECT

@자유행동내용_2(CHARA, ARGS, 시간계수, CHAIN)
#DIM CHARA
#DIM CHAIN
#DIM 현위치
#DIM 메시지표시
#DIM 시간계수
#DIM 경과시간
현위치 = CFLAG:CHARA:현재위치
메시지표시 = 현위치 == CFLAG:MASTER:현재위치 ? 1 # 0
SELECTCASE ARGS
	CASE "발생"
		SIF !푹쉼장소(현위치) && 현위치 != CFLAG:CHARA:신사거주
			RETURN 0
		SIF TIME_PROGRESS(TCVAR:CHARA:공복시각) <= 0
			RETURN 0
		SIF 메시지표시
			PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% \@ CHAIN ? %조사처리(CALLNAME:CHAIN,"과")% 같이 식사를 시작했다.# 식사를 준비했다.\@
		;행동が始まった段階で空腹は満たされる,以降も행동が終わるまで一定の満腹を得る,この時点では満腹だけ
		TCVAR:CHARA:공복시각 = 1440 * DAY + TIME + 120
		RETURN 60 + RAND:30
	CASE "행동중"
		CALL 자유행동식사(CHARA)
		SIF 메시지표시
			PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% 식사를 하고 있다.
	CASE "완료"
		CALL 자유행동식사(CHARA)
		SIF 메시지표시
			PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% 식사를 끝냈다.
	CASE "중단"
		CALL 자유행동식사(CHARA)
	CASE "같이한다"
		PRINTFORML %조교자는% %타겟과% 함께 식사를 했다
		IF TFLAG:193 < 0
			PRINTFORML 그렇게 배가 고프지는 않았다
		ELSE
			PRINTFORML 마음편히 단란한 한 때를 보냈다…
		ENDIF
	CASE "소스"
		CALL FreeActMeal(TARGET, 시간계수)
ENDSELECT

@FreeActMeal(ARG, 시간계수)
#DIM 시간계수
#DIM 경과시간
경과시간 = Activity_Duration:ARG
IF TIME_PROGRESS(TCVAR:MASTER:공복시각) <= 0
	;空腹でなかったら効果減少
	TFLAG:193 = -1
	SOURCE:환락 = (50 + ((ABL:친밀 + 호감도계수(ARG)) * 25)) * 시간계수
	SOURCE:수동 = (30 + ((ABL:순종 + 호감도계수(ARG)) * 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:친밀 + 호감도계수(ARG)) * 50)) * 시간계수
	SOURCE:수동 = (60 + ((ABL:순종 + 호감도계수(ARG)) * 30)) * 시간계수
	SOURCE:정복 = (60 + (ABL:새드끼 * 10)) * 시간계수
	;TARGETは自由行動処理で食事する
	TCVAR:MASTER:공복시각 = 1440 * DAY + TIME + 120
	CALL RECOVER(MASTER, 3 * 경과시간, "체력", "식사에 의한 회복")
	CALL RECOVER(MASTER, 3 * 경과시간, "기력", "식사에 의한 회복")
	TFLAG:98 = 2
ENDIF


code:
;つまみ食い
@EXIST_FreeAct3
#LOCALSIZE 1
#LOCALSSIZE 1

;オブジェクト本体
@FreeAct3(ARG, O_DATA, V_NAME)
#FUNCTION
#LOCALSIZE 1
#LOCALSSIZE 1
#DIMS O_DATA
#DIMS V_NAME
#DIM 경과시간
경과시간 = Activity_Duration:TARGET
SELECTCASE O_DATA
CASE "명칭"
	CALLF MAKE_STR(V_NAME, "함께 집어먹기")
CASE "CHAIN"
;他キャラに連鎖する場合コメントアウト外すこと
	CALLF MAKE_INT(V_NAME, 1)
CASE "경과시간"
;自由行動に付き合うコマンドでの경과시간
;未入力だと最大30分
	CALLF MAKE_INT(V_NAME, 경과시간)
ENDSELECT

@자유행동내용_3(CHARA, ARGS, 시간계수, CHAIN)
#DIM CHARA
#DIM CHAIN	;連鎖主
#DIM 현위치
#DIM 메시지표시
#DIM 시간계수
#DIM 경과시간
현위치 = CFLAG:CHARA:현재위치
메시지표시 = 현위치 == CFLAG:MASTER:현재위치 ? 1 # 0
SELECTCASE ARGS
	CASE "발생"
		;요정および特定のキャラが空腹状態で집어먹기스팟にいる時
		SIF !TALENT:CHARA:요정 && !GROUPMATCH(CHARA, [[루미아]], [[코이시]], [[유유코]], [[시온]])
			RETURN 0
		SIF !집어먹기스팟(현위치)
			RETURN 0
		SIF TIME_PROGRESS(TCVAR:CHARA:공복시각) <= 0
			RETURN 0
		SIF 메시지표시
			PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% \@ CHAIN ? %조사처리(CALLNAME:CHAIN,"과")% 같이 집어먹기 시작했다.# 몰래 집어먹기 시작했다.\@
		TCVAR:CHARA:공복시각 = 1440 * DAY + TIME + 120
		RETURN 30 + RAND:30
	CASE "행동중"
		SIF 메시지표시
			PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% 몰래 집어먹고 있다.
		CALL 자유행동식사(CHARA)
	CASE "완료"
		SIF 메시지표시
			PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% 집어먹기를 마치고 만족한 것 같다.
		CALL 자유행동식사(CHARA)
	CASE "중단"
		CALL 자유행동식사(CHARA)
	CASE "같이한다"
		PRINTFORML %조교자는% %타겟의% 집어먹기에 가담했다
		IF TFLAG:193 < 0
			PRINTFORML 그렇게 배가 고프지는 않았다
		ELSE
			PRINTFORML 약간 배도 부르고, 스릴있게 즐길 수 있었다…
		ENDIF
	CASE "소스"
		CALL FreeActMeal(TARGET, 시간계수)
ENDSELECT


code:
;掃除を手伝う
@EXIST_FreeAct4
#LOCALSIZE 1
#LOCALSSIZE 1

;オブジェクト本体
@FreeAct4(ARG, O_DATA, V_NAME)
#FUNCTION
#LOCALSIZE 1
#LOCALSSIZE 1
#DIMS O_DATA
#DIMS V_NAME
#DIM 경과시간
경과시간 = Activity_Duration:TARGET
SELECTCASE O_DATA
CASE "명칭"
	CALLF MAKE_STR(V_NAME, "청소를 돕기")
CASE "CHAIN"
;他キャラに連鎖する場合コメントアウト外すこと
	CALLF MAKE_INT(V_NAME, 1)
CASE "경과시간"
;自由行動に付き合うコマンドでの경과시간
;未入力だと最大30分
	;CALLF MAKE_INT(V_NAME, 경과시간)
ENDSELECT

@자유행동내용_4(CHARA, ARGS, 시간계수, CHAIN)
#DIM CHARA
#DIM CHAIN
#DIM 현위치
#DIM 메시지표시
#DIM 시간계수
#DIM 경과시간
현위치 = CFLAG:CHARA:현재위치
메시지표시 = 현위치 == CFLAG:MASTER:현재위치 ? 1 # 0
SELECTCASE ARGS
	CASE "발생"
		;個室にいる時
		SIF !BEDROOM(현위치)
			RETURN 0
		SIF BASE:CHARA:기력 <= 500
			RETURN 0
		;악취내성（청소부）によって積極性が変わる
		IF TALENT:CHARA:악취내성 < 0 || TALENT:CHARA:청소부
			SIF YOGORE:(현위치) < 2000
				RETURN 0
		ELSEIF TALENT:CHARA:악취내성 == 0
			SIF YOGORE:(현위치) < 3500
				RETURN 0
		ELSEIF TALENT:CHARA:악취내성 > 0
			SIF YOGORE:(현위치) < 5000
				RETURN 0
		ENDIF
		SIF 메시지표시
			PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% \@ CHAIN ? %조사처리(CALLNAME:CHAIN,"을")% 돕기 시작했다.# 더러움이 신경쓰여 청소를 시작했다.\@
		RETURN 30 + RAND:20
	CASE "행동중"
		;実際に掃除する
		YOGORE:(현위치) = MAX(YOGORE:(현위치) -250 * TIME_PROGRESS(TIME:1) / 5, 0)
		IF 메시지표시
			PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% %TEXTR("쓰레기를 정리하고 있다/정리정돈을 하고 있다/먼지를 털어내고 있다/싹싹 방청소를 하고 있다")%.
		ENDIF
	CASE "완료"
		;청소경험が入る
		EXP:CHARA:청소경험 += 3
		SIF 메시지표시
			PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% 청소를 끝낸 것 같다.
	CASE "중단"
		;중단されても청소경험は入る
		EXP:CHARA:청소경험 += 1
	CASE "같이한다"
		PRINTFORML %조교자는% %타겟이% %TEXTR("모아둔 쓰레기를 치우거나/털었던 장소를 걸레로 닦아내거나/닿지 않을 곳을 청소하거나")% 하며 도왔다
	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:청소경험 ++
		EXP:TARGET:청소경험 ++
ENDSELECT

path: ERB/MOVEMENTS/자유행동/FREE_ACT_4 청소를돕기.ERB


code:
;一緒に運動する
@EXIST_FreeAct5
#LOCALSIZE 1
#LOCALSSIZE 1
;オブジェクト本体
@FreeAct5(ARG, O_DATA, V_NAME)
#FUNCTION
#LOCALSIZE 1
#LOCALSSIZE 1
#DIMS O_DATA
#DIMS V_NAME
#DIM 경과시간
경과시간 = Activity_Duration:TARGET
SELECTCASE O_DATA
CASE "명칭"
	CALLF MAKE_STR(V_NAME, "함께 운동하기")
CASE "CHAIN"
;他キャラに連鎖する場合コメントアウト外すこと
	CALLF MAKE_INT(V_NAME, 1)
CASE "경과시간"
;自由行動に付き合うコマンドでの경과시간
;未入力だと最大30分
	;CALLF MAKE_INT(V_NAME, 경과시간)
ENDSELECT

@자유행동내용_5(CHARA, ARGS, 시간계수, CHAIN)
#DIM CHARA
#DIM CHAIN
#DIM 현위치
#DIM 메시지표시
#DIM 시간계수
#DIM 경과시간
현위치 = CFLAG:CHARA:현재위치
메시지표시 = 현위치 == CFLAG:MASTER:현재위치 ? 1 # 0
SELECTCASE ARGS
	CASE "발생"
		;전투능력1以上のキャラが訓練できる場所にいる時,ただし演奏優先
		SIF ABL:CHARA:전투능력 < 1
			RETURN 0
		SIF BASE:CHARA:기력 <= MAXBASE:CHARA:기력 / 2
			RETURN 0
		SIF TALENT:CHARA:음악지식
			RETURN 0
		SIF !전투훈련가능(현위치)
			RETURN 0
		SIF 메시지표시
			PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% \@ CHAIN ? %조사처리(CALLNAME:CHAIN,"과")% 행동을 같이하기 시작했다.# 한숨 돌리고 운동을 시작했다.\@
		RETURN 60 + RAND:60
	CASE "행동중"
		IF 메시지표시
			PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% %TEXTR("탄막놀이 연습을 하고 있다/숨을 헐떡이고 있다/호흡을 가다듬고 있다/열심히 운동하고 있다")%.
		ENDIF
	CASE "완료"
		EXP:CHARA:전투경험 += 1
		SIF 메시지표시
			PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% 운동을 마치고 한숨 돌렸다.
	CASE "중단"
		EXP:CHARA:전투경험 += 1
	CASE "같이한다"
		PRINTFORML %조교자는% %타겟과% %TEXTR("함께 근력 단련에 힘썼다/의 대련을 함께했다/서로 도우며 스트레칭을 했다")%
	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:전투경험 ++
ENDSELECT


code:
;読書
@EXIST_FreeAct6
#LOCALSIZE 1
#LOCALSSIZE 1
;オブジェクト本体
@FreeAct6(ARG, O_DATA, V_NAME)
#FUNCTION
#LOCALSIZE 1
#LOCALSSIZE 1
#DIMS O_DATA
#DIMS V_NAME
#DIM 경과시간
경과시간 = Activity_Duration:TARGET
SELECTCASE O_DATA
CASE "명칭"
	CALLF MAKE_STR(V_NAME, "책의 감상을 듣기")
CASE "CHAIN"
;他キャラに連鎖する場合コメントアウト外すこと
;	CALLF MAKE_INT(V_NAME, 1)
CASE "경과시간"
;自由行動に付き合うコマンドでの경과시간
;未入力だと最大30分
	IF Activity_Duration:TARGET > 30
		CALLF MAKE_INT(V_NAME, 10)
	ELSE
		CALLF MAKE_INT(V_NAME, 0)
	ENDIF
ENDSELECT

@자유행동내용_6(CHARA, ARGS, 시간계수, CHAIN)
#DIM CHARA
#DIM CHAIN
#DIM 현위치
#DIM 메시지표시
#DIM 시간계수
#DIM 경과시간
현위치 = CFLAG:CHARA:현재위치
메시지표시 = 현위치 == CFLAG:MASTER:현재위치 ? 1 # 0
SELECTCASE ARGS
	CASE "발생"
		;교양1以上のキャラが読書できる場所または自室にいる時
		SIF ABL:CHARA:교양 < 1
			RETURN 0
		SIF BASE:CHARA:기력 <= 500
			RETURN 0
		SIF !IS_LIBRARY(현위치, 1) || 현위치 != CFLAG:CHARA:신사거주
			RETURN 0
		SIF 메시지표시
			PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% 책을 읽기 시작했다.
		RETURN 60 + RAND:60
	CASE "행동중"
		SIF 메시지표시
			PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% 묵묵히 책을 읽고 있다.
	CASE "완료"
		EXP:CHARA:학습경험 += 1
		SIF 메시지표시
			PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% 책을 다 읽은 것 같다.
	CASE "중단"
		EXP:CHARA:학습경험 += 1
	CASE "같이한다"
		PRINTFORML %조교자는% %CALLNAME:TARGET%에게 책의 감상을 물었다
		IF TFLAG:193 < 0
			PRINTFORML 집중하고 있어 대답이 돌아오지 않았다…
		ELSE
			PRINTFORML %타겟과% 책의 내용으로 흥이 달아올랐다…
		ENDIF
	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
ENDSELECT


code:
@EXIST_FreeAct7
#LOCALSIZE 1
#LOCALSSIZE 1

;オブジェクト本体
@FreeAct7(ARG, O_DATA, V_NAME)
#FUNCTION
#LOCALSIZE 1
#LOCALSSIZE 1
#DIMS O_DATA
#DIMS V_NAME
#DIM 경과시간
경과시간 = Activity_Duration:TARGET
SELECTCASE O_DATA
;自由行動に付き合うコマンドの名称
CASE "명칭"
	IF Activity_Duration:ARG > 30
		CALLF MAKE_STR(V_NAME, "요리를 돕기")
	ELSE
		CALLF MAKE_STR(V_NAME, "요리를 나눠받기")
	ENDIF
CASE "CHAIN"
;他キャラに連鎖しない場合コメントアウトすること
	CALLF MAKE_INT(V_NAME, 1)
CASE "경과시간"
;自由行動に付き合うコマンドでの경과시간
;0だと30分か残り時間すべての小さい方
	IF Activity_Duration:TARGET > 30
		경과시간 = Activity_Duration:TARGET - 30
	ELSE
		경과시간 = 0
	ENDIF
	CALLF MAKE_INT(V_NAME, 경과시간)
ENDSELECT

@자유행동내용_7(CHARA, ARGS, 시간계수, CHAIN)
#DIM CHARA
#DIM CHAIN
#DIM 현위치
#DIM 메시지표시
#DIM 시간계수
#DIM 경과시간
현위치 = CFLAG:CHARA:현재위치
메시지표시 = 현위치 == CFLAG:MASTER:현재위치 ? 1 # 0
SELECTCASE ARGS
	CASE "발생"
		;요리기능1以上のキャラが空腹状態で台所にいる時
		SIF ABL:CHARA:요리기능 < 1
			RETURN 0
		SIF !KITCHEN(현위치)
			RETURN 0
		SIF TIME_PROGRESS(TCVAR:CHARA:공복시각) <= 0
			RETURN 0
		IF 메시지표시
			IF CHAIN
				IF Activity_Duration:CHARA > 30
					PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% %조사처리(CALLNAME:CHAIN,"을")% 돕기 시작했다.
				ELSE
					PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% %CALLNAME:CHAIN%의 요리를 나눠받았다.
				ENDIF
			ELSE
				PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% 공복을 느껴 요리를 시작했다.
			ENDIF
		ENDIF
		RETURN 60 + RAND:30
	CASE "행동중"
		;食事とセット
		IF Activity_Duration:CHARA > 30
			SIF 메시지표시
				PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% 경쾌하게 요리를 하고 있다.
		ELSE
			SIF 메시지표시
				PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% 만든 음식을 먹고 있다.
			CALL 자유행동식사(CHARA)
		ENDIF
	CASE "완료"
		;완료までしたら요리경험+2
		EXP:CHARA:요리경험 += 2
		SIF 메시지표시
			PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% 식사를 마친 것 같다.
		CALL 자유행동식사(CHARA)
	CASE "중단"
		EXP:CHARA:요리경험 += 1
		SIF Activity_Duration:CHARA <= 30
			CALL 자유행동식사(CHARA)
	CASE "같이한다"
		;自由行動に付き合ったとき用メッセージ
		IF TFLAG:193 == 2
			PRINTFORML %조교자는% %타겟의% 요리를 도왔다
			SELECTCASE ABL:TARGET:요리기능
			CASE IS <= 1
				PRINTFORML %타겟의% 요리는 위험하다…
			CASE 2, 3
				PRINTFORML %타겟은% 침착하게 요리를 하고있다…
			CASEELSE
				PRINTFORML %타겟이% 솜씨 좋게 요리를 해 따라가기 버겁다…
			ENDSELECT
			PRINTFORML %조교자는% %타겟이% 만든 요리를 나누어받았다
		ELSEIF TFLAG:193 < 0
			PRINTFORML 그렇게 배가 고프지는 않았다
		ELSE
			PRINTFORML 조금 배가 불렀다…
		ENDIF

	CASE "소스"
		IF Activity_Duration:TARGET > 30
			;付き合うコマンド選択時の入手ソース、시간계수は付き合った時間の1/10
			DOWNBASE:MASTER:체력 += 20 * 시간계수
			DOWNBASE:MASTER:기력 += 20 * 시간계수
			DOWNBASE:TARGET:체력 += 10 * 시간계수
			DOWNBASE:TARGET:기력 += 10 * 시간계수
			SOURCE:환락 = (100 + ((ABL:순종 + ABL:MASTER:요리기능) * 50)) * 시간계수
			TFLAG:98 = 1
			EXP:MASTER:요리경험 ++
			TFLAG:193 = 2
		ELSE
			CALL FreeActMeal(TARGET, 시간계수)
		ENDIF
ENDSELECT


code:
@EXIST_FreeAct8
#LOCALSIZE 1
#LOCALSSIZE 1

;オブジェクト本体
@FreeAct8(ARG, O_DATA, V_NAME)
#FUNCTION
#LOCALSIZE 1
#LOCALSSIZE 1
#DIMS O_DATA
#DIMS V_NAME
#DIM 경과시간
경과시간 = Activity_Duration:TARGET
SELECTCASE O_DATA
;自由行動に付き合うコマンドの名称
CASE "명칭"
	IF TALENT:ARG:음악지식 == 1
		CALLF MAKE_STR(V_NAME, "세션을 함께하기")
	ELSE
		CALLF MAKE_STR(V_NAME, "음악 반주하기")
	ENDIF
CASE "CHAIN"
;他キャラに連鎖しない場合コメントアウトすること
	CALLF MAKE_INT(V_NAME, 1)
CASE "경과시간"
;自由行動に付き合うコマンドでの경과시간
;0だと30分か残り時間すべての小さい方
	CALLF MAKE_INT(V_NAME, 0)
ENDSELECT

@자유행동내용_8(CHARA, ARGS, 시간계수, CHAIN)
#DIM CHARA
#DIM CHAIN
#DIM 현위치
#DIM 메시지표시
#DIM 시간계수
#DIM 경과시간
현위치 = CFLAG:CHARA:현재위치
메시지표시 = 현위치 == CFLAG:MASTER:현재위치 ? 1 # 0
SELECTCASE ARGS
	CASE "발생"
		;［음악지식］持ちのキャラが訓練できる場所にいる時
		SIF !TALENT:CHARA:음악지식
			RETURN 0
		SIF !전투훈련가능(현위치)
			RETURN 0
		SIF BASE:CHARA:기력 <= MAXBASE:CHARA:기력 / 2
			RETURN 0
		IF 메시지표시
			IF CHAIN
				SELECTCASE TALENT:CHAIN:음악지식
				CASE 1
					SELECTCASE TALENT:CHARA:음악지식
					CASE 1
						PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% %조사처리(CALLNAME:CHAIN,"과")%의 세션을 시작했다.
					CASE 2
						PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% %CALLNAME:CHAIN%의 연주에 맞춰 노래하기 시작했다.
					CASE 3
						PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% %CALLNAME:CHAIN%의 연주에 맞춰 춤추기 시작했다.
					ENDSELECT
				CASE 2
					SELECTCASE TALENT:CHARA:음악지식
					CASE 1
						PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% %CALLNAME:CHAIN%의 노래에 맞춰 연주하기 시작했다.
					CASE 2
						PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% %조사처리(CALLNAME:CHAIN,"과")%의 코러스를 시작했다.
					CASE 3
						PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% %CALLNAME:CHAIN%의 노래에 맞춰 춤추기 시작했다.
					ENDSELECT
				CASE 3
					SELECTCASE TALENT:CHARA:음악지식
					CASE 1
						PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% %CALLNAME:CHAIN%의 안무에 맞춰 연주를 시작했다.
					CASE 2
						PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% %CALLNAME:CHAIN%의 안무에 맞춰 노래하기 시작했다.
					CASE 3
						PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% %조사처리(CALLNAME:CHAIN,"과")% 같이 춤추기 시작했다.
					ENDSELECT
				ENDSELECT
			ELSE
				SELECTCASE TALENT:CHARA:음악지식
				CASE 1
					PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% 천천히 연주를 시작했다.
				CASE 2
					PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% 천천히 노래부르기 시작했다.
				CASE 3
					PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% 천천히 춤추기 시작했다.
				ENDSELECT
			ENDIF
		ENDIF
		RETURN 60 + RAND:30
	CASE "행동중"
		IF 메시지표시
			SELECTCASE TALENT:CHARA:음악지식
			CASE 1
				PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% 속시원하게 연주하고 있다.
			CASE 2
				PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% 마음대로 노래하고 있다.
			CASE 3
				PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% 화려하게 춤추고 있다.
			ENDSELECT
		ENDIF
	CASE "완료"
		SELECTCASE TALENT:CHARA:음악지식
		CASE 1
			EXP:CHARA:연주경험 += 1
			SIF 메시지표시
				PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% 연주를 마치고 한숨 돌렸다.
		CASE 2
			EXP:CHARA:가창경험 += 1
			SIF 메시지표시
				PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% 노래를 마치고 한숨 돌렸다.
		CASE 3
			EXP:CHARA:무도경험 += 1
			SIF 메시지표시
				PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% 안무를 마치고 한숨 돌렸다.
		ENDSELECT
	CASE "중단"
		SELECTCASE TALENT:CHARA:음악지식
		CASE 1
			EXP:CHARA:연주경험 += 1
		CASE 2
			EXP:CHARA:가창경험 += 1
		CASE 3
			EXP:CHARA:무도경험 += 1
		ENDSELECT
	CASE "같이한다"
		IF TFLAG:193 == -2
			SELECTCASE TALENT:TARGET:음악지식
			CASE 1
				PRINTFORML %마스터는% 쓸 수 있는 악기가 없어 %타겟의% 연주를 멍하니 들었다…
			CASE 2
				PRINTFORML %마스터는% 쓸 수 있는 악기가 없어 %타겟의% 노래를 멍하니 들었다…
			CASE 3
				PRINTFORML %마스터는% 쓸 수 있는 악기가 없어 %타겟의% 춤을 멍하니 보았다…
			ENDSELECT
		ELSE
			SELECTCASE TALENT:TARGET:음악지식
			CASE 1
				PRINTFORML %마스터는% %타겟과% 나란히 세션을 했다
				IF TFLAG:193 > 0
					PRINTFORML %타겟은% 리듬을 타며 연주하고 있다…
				ELSEIF TFLAG:193 < 0
					PRINTFORML %타겟은% 떨떠름한 표정을 짓고 있다…
				ELSE
					PRINTFORML %타겟은% 침착하게 연주하고 있다…
				ENDIF
			CASE 2
				PRINTFORML %마스터는% %타겟의% 노래에 맞추어 반주를 했다
				IF TFLAG:193 > 0
					PRINTFORML %타겟은% 리듬을 타며 노래하고 있다…
				ELSEIF TFLAG:193 < 0
					PRINTFORML %타겟은% 떨떠름한 표정을 짓고 있다…
				ELSE
					PRINTFORML %타겟은% 침착하게  노래하고 있다…
				ENDIF
			CASE 3
				PRINTFORML %마스터는% %타겟의% 안무에 맞추어 반주를 했다
				IF TFLAG:193 > 0
					PRINTFORML %타겟은% 리듬을 타며 춤추고 있다…
				ELSEIF TFLAG:193 < 0
					PRINTFORML %타겟은% 떨떠름한 표정을 짓고 있다…
				ELSE
					PRINTFORML %타겟은% 침착하게 춤추고 있다…
				ENDIF
			ENDSELECT
		ENDIF
	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
ENDSELECT


code:
@EXIST_FreeAct9
#LOCALSIZE 1
#LOCALSSIZE 1

;オブジェクト本体
@FreeAct9(ARG, O_DATA, V_NAME)
#FUNCTION
#LOCALSIZE 1
#LOCALSSIZE 1
#DIMS O_DATA
#DIMS V_NAME
#DIM 경과시간
경과시간 = Activity_Duration:TARGET
SELECTCASE O_DATA
;自由行動に付き合うコマンドの名称
CASE "명칭"
	CALLF MAKE_STR(V_NAME, "채집을 돕기")
CASE "CHAIN"
;他キャラに連鎖しない場合コメントアウトすること
	CALLF MAKE_INT(V_NAME, 1)
CASE "경과시간"
;自由行動に付き合うコマンドでの경과시간
;0だと30分か残り時間すべての小さい方
	CALLF MAKE_INT(V_NAME, 0)
ENDSELECT

@자유행동내용_9(CHARA, ARGS, 시간계수, CHAIN)
#DIM CHARA
#DIM CHAIN
#DIM 현위치
#DIM 메시지표시
#DIM 시간계수
#DIM 경과시간
현위치 = CFLAG:CHARA:현재위치
메시지표시 = 현위치 == CFLAG:MASTER:현재위치 ? 1 # 0
SELECTCASE ARGS
	CASE "발생"
		;採集Lv1以上のキャラが採集できる場所にいる時
		SIF TALENT:CHARA:채집Lv < 1
			RETURN 0
		SIF !GATHERING_SPOT(현위치)
			RETURN 0
		SIF BASE:CHARA:기력 <= 500
			RETURN 0
		SIF 메시지표시
			PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% \@ CHAIN ? %조사처리(CALLNAME:CHAIN,"을")% 돕기 시작했다.# 주위를 둘러본 후, 채집작업을 시작했다.\@
		RETURN 60 + RAND:120
	CASE "행동중"
		IF 메시지표시
			PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% %TEXTR("주위를 샅샅이 뒤지고 있다/무엇인가를 발견한 것 같다/열심히 채집하고 있다/쓸만한 소재를 찾고 있다")%.
		ENDIF
	CASE "완료"
		EXP:CHARA:채집경험 += 1
		SIF 메시지표시
			PRINTFORMW %조사처리(CALLNAME:CHARA,"는")% 채집을 마친 것 같다.
	CASE "중단"
		EXP:CHARA:채집경험 += 1
	CASE "같이한다"
		;自由行動に付き合ったとき用メッセージ
		PRINTFORML %조교자는% %타겟의% 채집을 도왔다
		PRINTFORML %TEXTR(@"%타겟은% 레어한 물건을 찾고 있는 것 같다…/목표로 한 것은 좀처럼 발견되지 않는다…/적당히 주운 것을 %CALLNAME:TARGET%에게 건네주었다…")%
	CASE "소스"
		;付き合うコマンド選択時の入手ソース、시간계수は付き合った時間の1/10
		DOWNBASE:MASTER:체력 += 20 * 시간계수
		DOWNBASE:MASTER:기력 += 40 * 시간계수
		DOWNBASE:TARGET:체력 += 10 * 시간계수
		DOWNBASE:TARGET:기력 += 20 * 시간계수
		SOURCE:환락 = (150 + ((ABL:친밀 + TALENT:MASTER:채집Lv) * 50)) * 시간계수
		SOURCE:수동 = (100 + ((ABL:순종 + TALENT:MASTER:채집Lv) * 50)) * 시간계수
		TFLAG:98 = 1
		EXP:MASTER:채집경험 ++
ENDSELECT


code:
[SKIPSTART]
;SKIPSTART～SKIPENDを外してXXを新しい数値に置換すること
@EXIST_FreeActXX
#LOCALSIZE 1
#LOCALSSIZE 1

;オブジェクト本体
@FreeActXX(ARG, O_DATA, V_NAME)
#FUNCTION
#LOCALSIZE 1
#LOCALSSIZE 1
#DIMS O_DATA
#DIMS V_NAME
#DIM 경과시간
경과시간 = Activity_Duration:TARGET
SELECTCASE O_DATA
;自由行動に付き合うコマンドの名称
CASE "명칭"
	CALLF MAKE_STR(V_NAME, "")
CASE "CHAIN"
;他キャラに連鎖しない場合コメントアウトすること
	CALLF MAKE_INT(V_NAME, 1)
CASE "경과시간"
;自由行動に付き合うコマンドでの경과시간
;0だと30分か残り時間すべての小さい方
	CALLF MAKE_INT(V_NAME, 0)
ENDSELECT

@자유행동내용_XX(CHARA, ARGS, 시간계수, CHAIN)
#DIM CHARA
#DIM CHAIN
#DIM 현위치
#DIM 메시지표시
#DIM 시간계수
#DIM 경과시간
현위치 = CFLAG:CHARA:현재위치
메시지표시 = 현위치 == CFLAG:MASTER:현재위치 ? 1 # 0
SELECTCASE ARGS
	CASE "발생"
		;発生条件、ここでRETURN 0すると発生しない
		;CHAINは連鎖元キャラに相当
		SIF 메시지표시
			PRINTFORMW %CALLNAME:CHARA%は\@ CHAIN ? %CALLNAME:CHAIN%を手伝い始めた。# 活動を始めた。\@
		;自由行動にかける時間をRETURNする
		RETURN 60 + RAND:30
	CASE "행동중"
		;行動中の処理、地の文もここで
		IF 메시지표시
			PRINTFORMW %CALLNAME:CHARA%は%TEXTR("呼吸している/瞬きしている/変顔している")%。
		ENDIF
	CASE "완료"
		;行動時間を使い切ったときの処理、地の文もここで
		SIF 메시지표시
			PRINTFORMW %CALLNAME:CHARA%は活動を終えたようだ。
	CASE "중단"
		;中断したときの処理、地の文もここで
	CASE "같이한다"
		;自由行動に付き合ったとき用メッセージ
		PRINTFORML %CALLNAME:PLAYER%は%CALLNAME:TARGET%に付き合った
	CASE "소스"
		;付き合うコマンド選択時の入手ソース、시간계수は付き合った時間の1/10
			;SOURCE:환락 = (50 + ((ABL:친밀 + 호감도계수) * 25)) * 시간계수
			;SOURCE:수동 = (30 + ((ABL:순종 + 호감도계수) * 15)) * 시간계수
ENDSELECT
[SKIPEND]


code:
@자유행동처리(ARG)
;자유행동조건を満たしていない場合は발생せず、중단される
IF !자유행동조건(ARG)
	SIF Activity_Duration:ARG
		TRYCALLFORM 자유행동내용_{Activity_Type:ARG}(ARG, "중단")
	Activity_Duration:ARG = 0
	Activity_Type:ARG = 0
	RETURN
ENDIF
;自由행동중の処理
IF Activity_Duration:ARG
	;경과시간分減っていく
	Activity_Duration:ARG = MAX(Activity_Duration:ARG - TIME_PROGRESS(TIME:1), 0)
	;0になったら종료
	IF !Activity_Duration:ARG
		;CALL 자유행동내용(ARG, Activity_Type:ARG, "완료")
		TRYCALLFORM 자유행동내용_{Activity_Type:ARG}(ARG, "완료")
		;自由行動中口上,X-1,完了時
		SIF CFLAG:ARG:현재위치 == CFLAG:MASTER:현재위치
			CALL KOJO_MESSAGE_SEND("EVENT", 32, ARG, Activity_Type:ARG, 1)
	;まだ행동중
	ELSE
		TRYCALLFORM 자유행동내용_{Activity_Type:ARG}(ARG, "행동중")
		;自由行動中口上,X-0,行動中
		SIF CFLAG:ARG:현재위치 == CFLAG:MASTER:현재위치
			CALL KOJO_MESSAGE_SEND("EVENT", 32, ARG, Activity_Type:ARG, 0)
		;連鎖しない행동は除く（考え事,読書）
		IF FreeAct_Chain(ARG)
			FOR LOCAL, 1, CHARANUM
				;LOCALが連鎖対象でARGが連鎖主
				IF !Activity_Duration:LOCAL && CFLAG:LOCAL:현재위치 == CFLAG:ARG:현재위치 && RELATION:LOCAL:ARG > 100 && LOCAL != ARG && 자유행동조건(LOCAL)
					;引数を付けて발생
					TRYCALLFORM 자유행동내용_{Activity_Type:ARG}(LOCAL, "발생", 0, ARG)
					IF RESULT
						;連鎖主の행동をトレースする
						Activity_Duration:LOCAL = Activity_Duration:ARG
						Activity_Type:LOCAL = Activity_Type:ARG
						TCVAR:LOCAL:가능한한움직이지않는다 = 1
					ENDIF
				ENDIF
			NEXT
		ENDIF
	ENDIF
	;가능한한움직이지않는다ようにする
	TCVAR:ARG:가능한한움직이지않는다 = 1
	RETURN
ENDIF

;自由행동발생処理

;基本발생率,移動率の15を参考
;最初は判定値がRAND1000だったけど800にしてみる
SIF 5 * TIME_PROGRESS(TIME:1) < RAND:800
	RETURN
;とりあえず20個分回す
CALL FISHER_YATES_SHAFFLE(20)
FOR LOCAL, 0, 20
	RESULT = 0
	TRYCALLFORM 자유행동내용_{SHAFFLE_ARRAY:LOCAL}(ARG, "발생")
	IF RESULT
		;RESULT=행동時間
		Activity_Duration:ARG = RESULT
		Activity_Type:ARG = SHAFFLE_ARRAY:LOCAL
		TCVAR:ARG:가능한한움직이지않는다 = 1
		BREAK
	ENDIF
NEXT

@자유행동조건(ARG)
#FUNCTION
;拠点にいない
SIF !AT_HOME(ARG)
	RETURNF 0
;正常な状態ではない
SIF !SHIRAHU(ARG)
	RETURNF 0
;우후후中
SIF CFLAG:ARG:우후후
	RETURNF 0
;仕事中（행동중）
SIF CFLAG:ARG:행동
	RETURNF 0
;데일리中
SIF CFLAG:ARG:데일리
	RETURNF 0
;동행中
SIF CFLAG:ARG:동행
	RETURNF 0
;移動している
SIF CFLAG:ARG:현재위치 != CFLAG:ARG:전턴위치
	RETURNF 0
;天候ダメージがある
SIF 날씨에의한영향(ARG, CFLAG:ARG:현재위치) < 0
	RETURNF 0
;妊娠中
SIF CFLAG:ARG:임신자각상태 == 1
	RETURNF 0
RETURNF 1

@자유행동식사(CHARA)
#DIM CHARA
;2時間分の食事,あまり頻発するとあなたが食べさせられなくなってしまうので少なめ
TCVAR:CHARA:공복시각 = 1440 * DAY + TIME + 120
CALL RECOVER(CHARA, 3 * TIME_PROGRESS(TIME:1), "체력", "식사에 의한 회복")
CALL RECOVER(CHARA, 3 * TIME_PROGRESS(TIME:1), "기력", "식사에 의한 회복")


code:
[SKIPSTART]
@UNIQUE_FA_XX(CHARA, ARGS,시간계수)
#DIM CHARA
#DIM CHAIN
#DIM 현위치
#DIM 메시지표시
#DIM 시간계수
현위치 = CFLAG:CHARA:현재위치
메시지표시 = 현위치 == CFLAG:MASTER:현재위치 ? 1 # 0

UNIQUE_FA_NAME:CHARA = ナントカする

SELECTCASE ARGS
	CASE "발생"
		;在住キャラが自室にいる時
		SIF !CFLAG:CHARA:신사거주
			RETURN 0
		SIF 현위치 != CFLAG:CHARA:신사거주
			RETURN 0
		SIF BASE:CHARA:기력 <= 500
			RETURN 0
		SIF 메시지표시
			PRINTFORMW %CALLNAME:CHARA%はなにやらナントカし始めた。
		;返し値は行動時間
		RETURN 90
	CASE "행동중"
		IF 메시지표시
			PRINTFORMW %CALLNAME:CHARA%はナントカしている
		ENDIF
	CASE "완료"
		SIF 메시지표시
			PRINTFORMW %CALLNAME:CHARA%はナントカを終えたようだ。
	CASE "중단"
		;중단メッセージはうふふ突入時等でも表示されてしまうので表示しない
	CASE "같이한다"
		PRINTFORML %CALLNAME:PLAYER%は%CALLNAME:CHARA%にナントカを尋ねた
		IF TFLAG:193 < 0
			PRINTFORML %CALLNAME:CHARA%は身体を強張らせ、ナントカしてしまった…
		ELSE
			PRINTFORML ナントカだったようだ…
		ENDIF
	CASE "소스"
		DOWNBASE:MASTER:기력 += 20 * 시간계수
		DOWNBASE:TARGET:기력 += 20 * 시간계수
		SOURCE:환락 = (100 + ((ABL:친밀 + ABL:MASTER:화술기능) * 50)) * 시간계수
		SOURCE:수동 = (60 + ((ABL:순종 + ABL:MASTER:화술기능) * 30)) * 시간계수
ENDSELECT
[SKIPEND]


code:
;-----------------------------------------------------------
;처음부터
;-----------------------------------------------------------
@NEWGAME
게임시작처리중 = 1
;본체버전을 기록
SAVESTR:본체버전 = %eraTW_Version%
;클래스 변수 초기화
CALL MAKE_ALL_CLASS_LIST
;Default 옵션
CALL DEFAULT_OPTION
;카리스마 초기화
CALL SET_CHARISMA("NEW")
PBAND = 12

;일자 1 일째
DAY = 1
DAY:2 = 1
DAY:3 = 1
;FLAG:술벌레 = 1
VAR_FERMENT = 그냥 물
;(天候パッチ)冷害発生回数・風害発生回数・水害発生回数・連続降水カウンターをリセット
IS_COLD_CROP_DAMAGE = 0
IS_STORM_CROP_DAMAGE = 0
IS_FLOOD_CROP_DAMAGE = 0
CONTINUOUS_RAINFALL = 0
;(天候パッチ)降雪・雪崩判定を解除
CONTINUOUS_SNOWFALL = 0
SNOW_COVERAGE = 0
POSSIBLITY_AVALANCHE = 0
;(天候パッチ)時間帯をリセット
WEATHER_TIMEZOME = 0
;(天候パッチ)長期天候傾向をリセット
YEAR_WEATHER_CONTROL = 0
;(天候パッチ)短期予報を行う
CALL WEATHER_FORECAST_1TERM
;(天候パッチ)1日予報を行う
CALL WEATHER_FORECAST_1DAY

;캐릭터 생성
CALL ADD_ALL_CHARACTERS
;MASTER생성
CALL NEWGAME_MAKE
;recolored map or default
CALL DEFAULT_MAP_COLOR
;주거설정
CALL SET_MAINHOME
;옵션
CALL NEWGAME_OPTION

;캐릭터 설정
FOR LOCAL,0,CHARANUM
	;개시 위치
	CFLAG:LOCAL:현재위치 = CFLAG:LOCAL:초기위치
	;복장
	CALL SELECT_CLOTHES(LOCAL, "오늘의 의상")
	CALL CTRL_CLOTHES_SET(LOCAL, "현재 의상의 변경_평상복")
	CALL CLOTHES_SETTING_TRAIN(LOCAL)
	CALL 속옷확인리셋(LOCAL)
	CVARSET BASE, GETNUM(BASE, "술기운"), 0
NEXT
;MASTER기상시간 세트(7시)
TIME:3 = 420
;MASTER수면중 플래그ON
CALL SET_SLEEP(1,MASTER,0)
게임시작처리중 = 0
RETURN 0

;FileName_SHOP_CUSTOM.ERB -------------------------- Rev1.00
;CALL		USER
;ARG		NONE
;RETURN		VOID
;COMMENT
;캐릭터를 추가했을 때에 하나 하나 여기를 만질 필요가 없게
;캐릭터수상한은 ERH 파일로 정의
;-----------------------------------------------------------
@ADD_ALL_CHARACTERS
FOR LOCAL,CHARANUM,캐릭터수상한
	SIF !EXISTCSV(LOCAL)
		CONTINUE
	ADDCHARA LOCAL
	CALL SET_MINIMUM_EXP_ALL(LOCAL)
	CALL KOJO_MULTIPLE(LOCAL)
	IF !EXP:LOCAL:키스경험
		TALENT:LOCAL:키스미경험 = 1
	ENDIF
NEXT

;-----------------------------------------------------------
;설정 변경
;-----------------------------------------------------------
@NEWGAME_OPTION
#DIMS choices, 100
;초기화
;무능력자, 농민
SETBIT FLAG:1000, 1
SETBIT FLAG:1000, 2
;TINKO
SIF !TALENT:MASTER:형상
	TALENT:MASTER:형상 = 3
;복장
SIF !CFLAG:MASTER:기본복장세트
	CALL MASTER_CLOTHES_INIT
;
SIF !게임시작처리중
	뉴게임특전 '= "없음"
;선택지
VARSET choices
PRINTL
PRINTL
PRINTL 게임 개시 전에 각종 설정을 변경할 수 있습니다.
DRAWLINE
;당신설정
SIF !FLAG:역극
	choices:0 '= @"%마스터를% 커스터마이즈한다"
SIF HAS_PENIS(MASTER)
	choices:1 '= @"%CALLNAME:MASTER%의 남성기는 %TINKO_SIMPLE(MASTER)%이다"
choices:2 '= @"%CALLNAME:MASTER%의 복장은 %MASTER_CLOTHES_NAME(CFLAG:MASTER:기본복장세트)%이다"
IF FLAG:생활능력무
	choices:3 '= @"%CALLNAME:MASTER%에겐 고백할만한 담력이 없다"
ELSE
	choices:3 '= @"%CALLNAME:MASTER%의 담력은 보통이다"
ENDIF
IF FLAG:지주
	choices:4 '= @"%마스터는% %CALLNAME:(FLAG:지주)%의 밑에서 일하는 농민이다"
ELSE
	choices:4 '= @"%마스터는% 홀가분한 자유인이다"
ENDIF
choices:5 '= @"%마스터는% %GET_MAPNAME(MAIN_MAP)%의 %STR:(Default초기위치 + (MAIN_MAP ? 8000 # 0) )%에서 삽니다"
;환상향
choices:10 '= @"각 캐릭터의 처녀・비처녀를 변경할 수 있습니다"
choices:11 '= @"각 캐릭터의 체형을 변경할 수 있습니다"
;특전
IF 게임시작처리중
	choices:20 '= NEWGAMEBONUS_TEXT()
ELSEIF 게임인계처리중
	choices:20 '= 주회특전_표시()
ENDIF

CALL ASK_CHOICES(choices, 100, "종료하고 시작한다")
SELECTCASE RESULT
	CASE 0
		IF !FLAG:역극
			CALL CUSTOM_TERMINAL(MASTER)
			CALL SET_MAINHOME
		ENDIF
	CASE 100
		CALL VIRGIN_SET_APPLY
		CALL SET_BODY_APPLY
		CALL NEWGAME_BONUS_APPLY
		CALL SET_APPLY_NOUMIN
		;CALL 주회특전_적용
		ITEM:싸구려식재 = 10
		RETURN
	CASE 1
		SIF HAS_PENIS(MASTER)
			CALL TINKO_DECIDE(MASTER)
	CASE 2
		CALL MASTER_CLOTHES
	CASE 3
		CALL KAISYONASI
	CASE 4
		CALL RESET_NOUMIN
		CALL SET_NOUMIN
	CASE 5
		CALL SET_MAINHOME
	CASE 10
		CALL VIRGIN_SET
	CASE 11
		CALL BODY_SET
	CASE 20
		IF 게임시작처리중
			CALL NEWGAME_BONUS_SELECT
		ELSEIF 게임인계처리중
			CALL 주회특전
		ENDIF
ENDSELECT
RESTART

;-----------------------------------------------------------
;설정 변경
;-----------------------------------------------------------
@NEWGAME_VERUP
;연인수정이 끝난 플래그를 세운다
;KR판은 연인이 구버전 일판 기반 플래그이므로 주석처리
; SETBIT FLAG:1000, 3
; SETBIT FLAG:1000, 4
CALL VERSION_UP
CALL VERSION_UP_KR
PRINTW 게임 개시처리 종료
SAVEDATA 99, "처음부터"
PRINTL 자동으로 저장되었습니다.
PRINTW 게임 업데이트 처리로 넘어가시겠습니까?
CALL ASK_YN()
IF !RESULT
	CALL UPDATE
ELSE
	PRINTL 업데이트를 건너뛰었습니다.
	PRINTW 기상 전의 SHOP 화면에서 업데이트 해주세요
ENDIF


code:
;처음부터・강하게 뉴게임용
;전원설정 이외 변수는 모드 클리어되니 주의
#DIM 게임시작처리중
#DIM 게임인계처리중

#DIM CHARADATA 초기정조, 1
#DIM SAVEDATA 전원의정조
#DIM SAVEDATA 전원로리화
#DIM SAVEDATA 전원난쟁이화
#DIM SAVEDATA 전원동물귀화
#DIM SAVEDATA 전원후타나리화
#DIM SAVEDATA SuccSetting, 200
#DIM SAVEDATA SuccBASE,200, 2
#DIM SAVEDATA SuccABL,200, 100
#DIM SAVEDATA SuccEXP,200, 100
#DIM SAVEDATA TalentSet, 200, 160

#DIMS 뉴게임특전

#DIM 전회의체력
#DIM 전회의체력증가량
#DIM 전회의기력
#DIM 전회의기력증가량
#DIM 전회의정력
#DIM 전회의정력증가량
#DIM 전회의캐릭터수
#DIM 전회의역극출금
#DIM 전회의팬티, 300, 40
#DIM 전회의CFLAG, 300


code:
;-----------------------------------------------------------
;【뉴게임특전】
;-----------------------------------------------------------
@NEWGAME_BONUS_SELECT
#DIMS buttonText, 10
SETCOLOR 103,228,126
PRINTFORML 【뉴 게임 특전】
RESETCOLOR
PRINTFORML 좋아하는 것을 선택해 주세요
PRINTFORML TWKR에서는 실적보너스로 얻는 능력 중 하나를 선택할 수도 있습니다.
buttonText:0 '= "￥50000"
buttonText:1 '= "초기 호감도・신뢰도 업"
buttonText:2 '= "초기 능력 업"
buttonText:3 '= "애욕을 독점하는 미라다의돌 밀레니엄"
;KR판 오리지날 뉴 게임 특전. 추후 일판 보너스 추가시 배열 buttonText도 같이 만져야함. 일판 기본값 10
buttonText:4 '= "【붉은실】"
buttonText:5 '= "【절륜】"
buttonText:6 '= "【수수께끼의매력】"
buttonText:7 '= "【만능잉태】"
buttonText:8 '= "【익스텐드】"
buttonText:9 '= "【습득 빠름】"
CALL ASK_BUTTONS(buttonText)
SELECTCASE RESULT
	CASE 0
		뉴게임특전 '= "￥50000"
	CASE 1
		CALL NEWGAME_BONUS_CHARA
		IF !RESULT
			RESTART
		ENDIF
	CASE 2
		뉴게임특전 '= "초기 능력 업"
	CASE 3
		뉴게임특전 '= "호색한 세트"
	;KR판 오리지날 뉴게임특전
	CASE 4 TO 9
		CALL TWKR_NEWGMAE_BONUS(buttonText:RESULT)
		IF !RESULT
			RESTART
		ENDIF
ENDSELECT
PRINTFORMW %뉴게임특전%을 선택합니다.
RETURN

;-----------------------------------------------------------
;초기 호감도
;-----------------------------------------------------------
@NEWGAME_BONUS_CHARA
PRINTFORML 캐릭터 한 명의 초기호감도를 500、신뢰도를 50으로 합니다
PRINTFORML 대상을 골라주세요
CALL ASK_CALLNAME
IF RESULT == 999
	RETURN 0
ELSE
	뉴게임특전 '= TOSTR(RESULT)
	RETURN 1
ENDIF

;-----------------------------------------------------------
;특전 적용
;미지정의 경우는 소지금
;-----------------------------------------------------------
@NEWGAME_BONUS_APPLY
#DIM C_ID
C_ID = TOINT(뉴게임특전)
SELECTCASE 뉴게임특전
	CASE "없음"
	CASE ""
		MONEY += 50000
	CASE "￥50000"
		MONEY += 50000
	CASE "초기 능력 업"
		ABL:MASTER:청소기능 = 1
		ABL:MASTER:교양 = 1
		ABL:MASTER:요리기능 = 1
		ABL:MASTER:기교 = 2
		ABL:MASTER:화술기능 = 3
	CASE "호색한 세트"
		ITEM:미라다의돌 += 1
		ITEM:로터 += 1
		ITEM:미약 += 5
		MAXBASE:MASTER:TSP = 500
		BASE:MASTER:TSP = MAXBASE:MASTER:TSP
		MONEY:1 = 1800
	;KR판 오리지날
	CASE "【붉은실】"
		SETBIT FLAG:호감도보너스취득상황, 8
		TALENT:MASTER:붉은실 = 1
	CASE "【절륜】"
		SETBIT FLAG:팬티보너스취득상황, 8
		TALENT:MASTER:절륜 = 1
	CASE "【수수께끼의매력】"
		SETBIT FLAG:함락보너스취득상황, 3
		TALENT:MASTER:수수께끼의매력 = 1
	CASE "【만능잉태】"
		SETBIT FLAG:잉태보너스취득상황, 1
		TALENT:MASTER:만능잉태 = 1
	CASE "【익스텐드】"
		SETBIT FLAG:탄막승부보너스취득상황, 5
		TALENT:MASTER:익스텐드 = 1
	CASE "【습득 빠름】"
		SETBIT FLAG:기술보너스취득상황, 6
		TALENT:MASTER:습득속도 = 1

	CASEELSE
		CFLAG:C_ID:호감도 = 500
		CFLAG:C_ID:신뢰도 = 100
		IF CHECK_CHARA(C_ID, "신령")
			TALENT:MASTER:신령잉태 = 1
		ELSEIF CHECK_CHARA(C_ID, "츠쿠모가미")
			TALENT:MASTER:츠쿠모가미잉태 = 1
		ELSEIF CHECK_CHARA(C_ID, "봉래인")
			TALENT:MASTER:봉래잉태 = 1
		ELSEIF CHECK_CHARA(C_ID, "유령")
			TALENT:MASTER:유령잉태 = 1
		ELSEIF CHECK_CHARA(C_ID, "인형")
			TALENT:MASTER:인형잉태 = 1
		ENDIF
ENDSELECT

;-----------------------------------------------------------
;설정 표시용 텍스트화
;-----------------------------------------------------------
@NEWGAMEBONUS_TEXT
#FUNCTIONS
SELECTCASE 뉴게임특전
	CASE ""
		RETURNF "" + "뉴 게임 특전을 선택할 수 있습니다" + ""
	CASE "￥50000"
		RETURNF "\\50000을 가지고 시작합니다"
	CASE "초기 능력 업"
		RETURNF "일부 능력의 상승으로 빠른 단계부터 가사 등이 편해집니다"
	CASE "애욕을 독점하는 미라다의돌 밀레니엄"
		RETURNF "일부 능력의 상승과 특수한 아이템으로 빠른 단계부터 야한 것을 하기 쉬워집니다"
	CASE "【붉은실】", "【절륜】", "【수수께끼의매력】", "【만능잉태】", "【익스텐드】", "【습득 빠름】"
		RETURNF @"%뉴게임특전%을 가지고 시작합니다"
	CASEELSE
		RETURNF @"%CALLNAME:TOINT(뉴게임특전)%의 호감도와 신뢰도가 오른 상태로 시작합니다 임신이 어려운 종족의 경우 확률 향상 능력도 추가로 취득합니다"
ENDSELECT

;KR판 오리지날 뉴게임 보너스
;ARGS = buttonText:RESULT
@TWKR_NEWGMAE_BONUS(ARGS)
SELECTCASE ARGS
	CASE "【붉은실】"
		PRINTFORML 데이트 중 상대와의 상성을 올릴수 있는 특성입니다.
	CASE "【절륜】"
		PRINTFORML 사정시 체력, 기력이 감소하지 않고 사정량이 2배 증가합니다.
	CASE "【수수께끼의매력】"
		PRINTFORML 대부분의 커맨드에 보정이 붙으며 호감도 상승량이 증가합니다.
	CASE "【만능잉태】"
		PRINTFORML 어떤 종족이라도 임신시키기 쉬워집니다.
	CASE "【익스텐드】"
		PRINTFORML 탄막승부시 잔기가 1개 증가합니다.
	CASE "【습득 빠름】"
		PRINTFORML 기교 및 성기술 ABL이 쉽게 오릅니다.
	CASEELSE
		THROW 상정하지 않은 인자 %ARGS%
ENDSELECT

PRINTFORML 괜찮겠습니까?
CALL ASK_YN
IF !RESULT
	뉴게임특전 '= ARGS
	RETURN 1
ELSE
	RETURN 0
ENDIF


code:
;-----------------------------------------------------------
;캐릭터 커스터마이즈
;-----------------------------------------------------------
@CUSTOM_TERMINAL(ARG, HIKITSUGI)
#DIM HIKITSUGI
CALL CUSTOM_INIT(ARG)
CLEARLINE 1000
;이름 버튼 표시
DRAWLINE
CALL CUSTOM_NAME_BUTTON(ARG)
;BASE 버튼 표시
DRAWLINE
CALL CUSTOM_BASE_BUTTON(ARG)
;능력・성기술표시
CALL PRINT_STATE_ABL(ARG)
PRINTL
CALL COLORMESSAGE(@"　[2000] 능력의 설정",0x70C070,1)
;소질표시
CALL PRINT_STATE_TALENT(ARG)
SETCOLOR 0x70C070
PRINTL 　[3000] 소질의 설정
RESETCOLOR
;경험표시
CALL PRINT_STATE_EXP(ARG)
PRINTL
CALL COLORMESSAGE(@"　[4000] 경험의 설정",0x70C070,1)
IF HIKITSUGI
	CALL COLORMESSAGE(@"　[5000] 인계 설정의 보존",0x70C070,1)
ENDIF
RESETCOLOR
DRAWLINE
PRINTL 　[9999] 설정 종료
PRINTL
INPUT
SELECTCASE RESULT
	CASE 9999
		PRINTL 이걸로 정말 괜찮겠습니까?
		CALL ASK_YN()
		SIF !RESULT
			RETURN 1
	;NAME
	CASE 0 TO 999
		CALL CUSTOM_NAME(ARG, RESULT)
	;BASE
	CASE 1000 TO 1999
		CALL CUSTOM_BASE(ARG, RESULT - 1000)
	;ABL
	CASE 2000
		CALL CUSTOM_MENU("ABL", ARG)
	;TALENT
	CASE 3000
		CALL CUSTOM_MENU("TALENT", ARG)
	;EXP
	CASE 4000
		CALL CUSTOM_MENU("EXP", ARG)
	CASE 5000
		IF HIKITSUGI
			CALL SAVE_CUSTOM_TALENT(ARG, "연인")
		ENDIF
ENDSELECT
RESTART
;-----------------------------------------------------------
;배타 처리
;-----------------------------------------------------------
@CUSTOM_INIT(ARG)
;ARG가 여자, 후타나리일 때의 배타
IF TALENT:ARG:성별 & 1
	ABL:ARG:호모끼 = 0
	ABL:ARG:게이중독 = 0
	EXP:ARG:게이경험 = 0
	IF !(TALENT:ARG:2 & 2)
		EXP:ARG:사정경험 = 0
		EXP:ARG:삽입경험 = 0
	ENDIF
	SIF TALENT:ARG:성별 != 1
		TALENT:ARG:구현 = 0
;ARG가 남자일 때의 배타
ELSE
	ABL:ARG:V감각 = 0
	ABL:ARG:레즈끼 = 0
	ABL:ARG:레즈중독 = 0
	EXP:ARG:레즈경험 = 0
	EXP:ARG:분유경험 = 0
	EXP:ARG:V경험 = 0
	EXP:ARG:파이즈리경험 = 0
	EXP:ARG:V성교경험 = 0
	EXP:ARG:V확장경험 = 0
	EXP:ARG:자궁구개발경험 = 0
	TALENT:ARG:V감도 = 0
	TALENT:ARG:처녀 = 0
	TALENT:ARG:모유체질 = 0
	TALENT:ARG:가슴사이즈 = -2
	TALENT:ARG:걸레 = 0
	TALENT:ARG:초경 = 0
	TALENT:ARG:구현 = 0
ENDIF
;거시기
IF TALENT:ARG:2 & 2
	MAXBASE:ARG:정력 = 1000
	BASE:ARG:정력 = 1000
	MAXBASE:ARG:발기 = 1500
	;실적보너스분
	SIF ARG == MASTER && GETBIT(FLAG:702,8)
		MAXBASE:MASTER:정력 += 100
ELSE
	TALENT:ARG:비동정 = 0
	MAXBASE:ARG:정력 = 0
	BASE:ARG:정력 = 0
	MAXBASE:ARG:발기 = 0
ENDIF
;처녀라면 V계 경험 없음
IF TALENT:ARG:처녀 == 1
	ABL:ARG:V감각 = 0
	EXP:ARG:V경험 = 0
	EXP:ARG:V성교경험 = 0
	EXP:ARG:V확장경험 = 0
	EXP:ARG:자궁구개발경험 = 0
	CSTR:ARG:처녀상실이력 =
	CFLAG:ARG:처녀상실기념일 = 0
	CFLAG:ARG:처녀상실대상 = 0
;비처녀는 V경험 1
ELSEIF TALENT:ARG:2 & 1 && EXP:ARG:V경험 == 0
	EXP:ARG:V경험 = 1
ENDIF

;퍼스트 키스
IF !EXP:ARG:키스경험
	TALENT:ARG:키스미경험 = 1
ELSE
	TALENT:ARG:키스미경험 = 0
ENDIF

;-----------------------------------------------------------
;이름 변경 버튼
;-----------------------------------------------------------
@CUSTOM_NAME_BUTTON(ARG)
#DIMS CONST colortext = "[변경]"
#DIMS html
;이름
html '= @"<button value='{0}'>" + HTML_SPACE(2) + @"이름: %NAME:ARG%"+ HTML_SPACE(2) + colortext + "</button>"
html += HTML_SPACE(4)
;통칭
html += @"<button value='{1}'>" + @"통칭: %CALLNAME:ARG%"+ HTML_SPACE(2) + colortext + "</button>"
HTML_PRINT html + "

"

@CUSTOM_NAME(ARG, ARG:1)
SELECTCASE ARG:1
	CASE 0
		PRINTL
		PRINTFORML 현재의 이름은 %NAME:ARG% 입니다.
		PRINTFORML 변경하시려면 새 이름을 입력해주세요. (공란으로 캔슬)
		PRINTL
		INPUTS
		IF RESULTS != ""
			NAME:ARG '= RESULTS
			PRINTFORMW 변경했습니다. 현재의 이름은 %NAME:ARG% 입니다.
		ENDIF
	CASE 1
		PRINTL
		PRINTFORML 현재의 통칭은 %CALLNAME:ARG% 입니다.
		PRINTFORML 변경하시려면 새 통칭을 입력해주세요. (공란으로 캔슬)
		PRINTL
		INPUTS
		IF RESULTS != ""
			CALLNAME:ARG '= RESULTS
			PRINTFORMW 변경했습니다. 현재의 통칭은 %CALLNAME:ARG% 입니다.
		ENDIF
ENDSELECT

;-----------------------------------------------------------
;베이스 변경 버튼
;-----------------------------------------------------------
@CUSTOM_BASE_BUTTON(ARG)
#DIM baseButtonVal = 1000
PRINT
CALL BASE_BAR(ARG, "체력", 28, "초록")

IF BASE:ARG:체력 > 1000
	SETCOLOR 0x70C070
	PRINTBUTTON "[－]", 0 + baseButtonVal
ELSE
	SETCOLOR 0x969696
	PRINT [－]
ENDIF
IF BASE:ARG:체력 < 2500
	SETCOLOR 0x70C070
	PRINTBUTTON "[＋]", 1 + baseButtonVal
ELSE
	SETCOLOR 0x969696
	PRINT [＋]
ENDIF
RESETCOLOR
PRINTL
PRINT
CALL BASE_BAR(ARG, "기력", 28, "파랑")
IF BASE:ARG:기력 > 1000
	SETCOLOR 0x70C070
	PRINTBUTTON "[－]", 2 + baseButtonVal
ELSE
	SETCOLOR 0x969696
	PRINT [－]
ENDIF
IF BASE:ARG:기력 < 2500
	SETCOLOR 0x70C070
	PRINTBUTTON "[＋]", 3 + baseButtonVal
ELSE
	SETCOLOR 0x969696
	PRINT [＋]
ENDIF
RESETCOLOR
PRINTL
PRINTL

;-----------------------------------------------------------
;베이스 변경
;ARG:0 캐릭터 등록번호
;ARG:1 0=체력감소, 1=체력증가, 2=기력감소, 3=기력증가
;-----------------------------------------------------------
@CUSTOM_BASE(ARG, ARG:1)
SELECTCASE ARG:1
	CASE 0
		MAXBASE:ARG:체력 -= 100
	CASE 1
		MAXBASE:ARG:체력 += 100
	CASE 2
		MAXBASE:ARG:기력 -= 100
	CASE 3
		MAXBASE:ARG:기력 += 100
	CASE 4
ENDSELECT
MAXBASE:ARG:체력 = LIMIT(MAXBASE:ARG:체력, 1000, 2500)
BASE:ARG:체력 = MAXBASE:ARG:체력
MAXBASE:ARG:기력 = LIMIT(MAXBASE:ARG:기력, 1000, 2500)
BASE:ARG:기력 = MAXBASE:ARG:기력

;-----------------------------------------------------------
;메뉴 호출
;-----------------------------------------------------------
@CUSTOM_MENU(ARGS, ARG)
PRINTL
PRINTL
CALLFORM CUSTOM_%ARGS%_MENU(ARG)
RESETCOLOR
PRINTL
PRINTL
PRINTL   [9999] 돌아간다
PRINTL
INPUT
SIF RESULT == 9999
	RETURN
CALLFORM CUSTOM_%ARGS%(RESULT, ARG)
RESTART

;-----------------------------------------------------------
;능력 변경
;-----------------------------------------------------------
@CUSTOM_ABL_MENU(ARG)
LOCAL:1 = 0
FOR LOCAL,0,50
	SIF CUSTOM_선택할수없는능력(LOCAL, ARG)
		CONTINUE
	PRINTFORM %ABLNAME:LOCAL,12%:{ABL:ARG:LOCAL,5,LEFT}
	IF ABL:ARG:LOCAL != 0
		PRINTBUTTON "[－]", LOCAL * 2
	ELSE
		SETCOLOR 0x969696
		PRINT [－]
		RESETCOLOR
	ENDIF
	IF ABL:ARG:LOCAL != 2
		PRINTBUTTON "[＋]", LOCAL * 2 + 1
	ELSE
		SETCOLOR 0x969696
		PRINT [＋]
		RESETCOLOR
	ENDIF
	LOCAL:1 ++
	SIF LOCAL:1 % 3 == 0
		PRINTL
NEXT

;-----------------------------------------------------------
;-----------------------------------------------------------
@CUSTOM_ABL(ARG, ARG:1)
	LOCAL = ARG / 2
;예외 처리
SIF CUSTOM_선택할수없는능력(LOCAL, ARG:1)
	RETURN 0
;증감 및 정상화
;양수(+)
IF (ARG) % 2
	ABL:(ARG:1):LOCAL ++
;음수(-)
ELSE
	ABL:(ARG:1):LOCAL --
ENDIF
ABL:(ARG:1):LOCAL = LIMIT(ABL:(ARG:1):LOCAL, 0, 2)
RETURN 1

;-----------------------------------------------------------
;-----------------------------------------------------------
@CUSTOM_선택할수없는능력(argAbl, ARG)
#DIM argAbl
#FUNCTION
;개별 처리
SELECTCASE ABLNAME:argAbl
	;미사용
	CASE ""
		RETURNF 1
	;시간정지
	CASE "TSLv"
		RETURNF 1
	;동성애 관계
	CASE "레즈끼", "레즈중독"
		SIF !(TALENT:ARG:2 & 1)
			RETURNF 1
	CASE "호모끼", "게이중독"
		SIF TALENT:ARG:2 & 1
			RETURNF 1
ENDSELECT
;범용 처리
SELECTCASE argAbl
	;중독 관계
	CASE 30 TO 39
		RETURNF 1
	;생활계
	CASE 40 TO 49
		RETURNF 1
	;성기술
	CASE 50 TO 59
		RETURNF 1
ENDSELECT
RETURNF 0

;-----------------------------------------------------------
;소질 변경
;-----------------------------------------------------------
@CUSTOM_TALENT_MENU(ARG)
VARSET LOCAL
FOR LOCAL, 0, 157
	IF CUSTOM_선택할수없는소질(LOCAL, ARG) == 1
		CONTINUE
	ELSEIF CUSTOM_선택할수없는소질(LOCAL, ARG) == 2
		;표시는 시킨다
		SETCOLOR 50, 50, 50
		LOCALS = [{LOCAL,3}]%TALENTNAME:LOCAL%
		GOTO SKIP
	ENDIF
	SETCOLOR 150, 150, 150
	SELECTCASE TALENTNAME:LOCAL
	;TALENT.CSV에 등록되지 않았다
	CASE ""
		CONTINUE
	;온 오프형의 소질(TALENTNAME와 소질표시가 일치)
	CASE GET_TALENTNAME(LOCAL,1)
		SIF TALENT:ARG:LOCAL
			SETCOLOR C_AQUA
		LOCALS = [{LOCAL,3}]%TALENTNAME:LOCAL%
	CASE "비동정"
		SIF !TALENT:ARG:LOCAL
			SETCOLOR C_AQUA
		LOCALS = [{LOCAL,3}]동정
	CASE "키스미경험"
		SIF !TALENT:ARG:LOCAL
			SETCOLOR C_AQUA
		LOCALS = [{LOCAL,3}]%TALENTNAME:LOCAL%
	;양적 소질
	CASEELSE
		LOCALS =  [{LOCAL,3}]%TALENTNAME:LOCAL%
		IF STRLENS(GET_TALENTNAME(LOCAL, TALENT:ARG:LOCAL))
			LOCALS:1 = 【%GET_TALENTNAME(LOCAL, TALENT:ARG:LOCAL)%】
			SETCOLOR C_AQUA
		ELSEIF TALENTNAME:LOCAL == "성별"
			LOCALS:1 = 【여자】
			SETCOLOR C_AQUA
		ELSE
			LOCALS:1 = 【－】
		ENDIF
		LOCALS += LOCALS:1
	ENDSELECT
	$SKIP
	IF LOCAL:1 % 3 == 0
		PRINTL
		PRINT
	ENDIF
	IF CUSTOM_선택할수없는소질(LOCAL, ARG) == 2
		PRINTPLAINFORM %LOCALS, 30, LEFT%
	ELSE
		PRINTFORM %LOCALS, 30, LEFT%
	ENDIF
	LOCAL:1 ++
NEXT

;-----------------------------------------------------------
@CUSTOM_TALENT(inputed, chara)
#DIM inputed
#DIM chara
SIF inputed < 0|| inputed > 500
	RETURN 0
SIF TALENTNAME:inputed == ""
	RETURN 0
SIF CUSTOM_선택할수없는소질(inputed, chara)
	RETURN 0
SELECTCASE TALENTNAME:inputed
	;선 예외처리
	CASE "성별"
		IF TALENT:chara:성별 == 3
			TALENT:chara:성별 = 1
		ELSE
			TALENT:chara:성별 ++
		ENDIF
	CASE "성별기호"
		IF TALENT:chara:inputed == 3
			TALENT:chara:inputed = -1
		ELSE
			TALENT:chara:inputed ++
		ENDIF
	CASE "체형" ;KR판 임의수정, 일판은 "성별기호"임. 아마도 오타
		;체형이 「난쟁이(-5)」나 「거인(3)」인 경우를 독립처리
		IF TALENT:chara:inputed == -5
			TALENT:chara:inputed = -2
		ELSEIF TALENT:chara:inputed == 3 ;KR판 임의수정, 일판은 거인 5였던 걸 그대로 사용중
			TALENT:chara:inputed = -5
		ELSEIF TALENT:chara:inputed >= 4 ;KR판 임의수정, 일판은 거인 5였던 걸 그대로 사용중
			TALENT:chara:inputed = -5
		ELSE
			TALENT:chara:inputed ++
		ENDIF
	CASE "비동정", "키스미경험"
		TALENT:chara:inputed = !TALENT:chara:inputed
	CASE "모유체질"
		TALENT:chara:모유체질 = !TALENT:chara:모유체질
		IF TALENT:chara:모유체질
			MAXBASE:chara:모유 = 2000
		ELSE
			MAXBASE:chara:모유 = 0
		ENDIF
	;양적 소질
	CASEELSE
		;진위형 소질은 반전
		IF TALENTNAME:inputed == GET_TALENTNAME(inputed,1)
			TALENT:chara:inputed = !TALENT:chara:inputed
		ELSE
		;;구석까지 가면―1을 건다
			IF STRLENS(GET_TALENTNAME(inputed,TALENT:chara:inputed + 1)) || TALENT:chara:inputed == -1
				TALENT:chara:inputed ++
			ELSE
				TALENT:chara:inputed *= -1
			ENDIF
		ENDIF
ENDSELECT

;-----------------------------------------------------------
@CUSTOM_선택할수없는소질(ARG, CHARA)
#FUNCTION
#DIM CHARA
;RETURNF 2는 표시는 시키는 것
SELECTCASE ARG
	;정욕감지~, 보너스 소질 및 특수 함락, 종족, 잉태계
	CASE IS >=157
		RETURNF 1
	;당신은 선택할 수 없는 1
	CASE GETNUM(TALENT, "습득속도") TO GETNUM(TALENT, "바늘질"), GETNUM(TALENT, "약독내성"), GETNUM(TALENT, "즉각함락"), GETNUM(TALENT, "盲信"), GETNUM(TALENT, "소악마")
		SIF CHARA == NO:MASTER
			RETURNF 1
	;당신은 선택할 수 없는 2
	CASE GETNUM(TALENT, "매력") TO GETNUM(TALENT, "수수께끼의매력"), GETNUM(TALENT, "회복속도") TO GETNUM(TALENT, "이상한뿌리"), GETNUM(TALENT, "광기"), GETNUM(TALENT, "인기")
		SIF CHARA == NO:MASTER
			RETURNF 1
	;당신은 선택하지 못하고, 여성기가 없으면 선택할 수 없다
	CASE GETNUM(TALENT, "모유체질"), GETNUM(TALENT, "임신소망")
		SIF CHARA == NO:MASTER
			RETURNF 1
		SIF !GETBIT(TALENT:CHARA:성별, 0)
			RETURNF 2
	;여성기가 없으면 선택할 수 없다
	CASE GETNUM(TALENT, "처녀"), GETNUM(TALENT, "걸레"), GETNUM(TALENT, "V감도")
		SIF !GETBIT(TALENT:CHARA:성별, 0)
			RETURNF 2
	;남성기가 없으면 선택할 수 없다
	CASE GETNUM(TALENT, "비동정")
		SIF !GETBIT(TALENT:CHARA:성별, 1)
			RETURNF 2
	;남성기가 있으면 선택할 수 없다
	CASE GETNUM(TALENT, "구현")
		SIF GETBIT(TALENT:CHARA:성별, 1)
			RETURNF 2
	;당신 이외는 선택할 수 없다
	CASE GETNUM(TALENT, "연령")
		SIF CHARA != NO:MASTER
			RETURNF 1
	;전원 고를 수 없지만 표시는 한다
	CASE GETNUM(TALENT, "키스미경험")
		RETURNF 2
	;전원 선택할 수 없는 1
	CASE GETNUM(TALENT, "연모") TO GETNUM(TALENT, "사모"), GETNUM(TALENT, "기분"), GETNUM(TALENT, "용모"), GETNUM(TALENT, "약점"), GETNUM(TALENT, "조합지식"), GETNUM(TALENT, "조제Lv"), GETNUM(TALENT, "채집Lv"), GETNUM(TALENT, "낚시Lv"), GETNUM(TALENT, "벌채Lv")
		RETURNF 1
	;전원 선택할 수 없는 2
	CASE GETNUM(TALENT, "자위중독") TO GETNUM(TALENT, "포르치오성감"), GETNUM(TALENT, "망신"), GETNUM(TALENT, "질투"), GETNUM(TALENT, "농후정액"), GETNUM(TALENT, "정애미각"), GETNUM(TALENT, "금단의지식"), GETNUM(TALENT, "절륜") TO GETNUM(TALENT, "모성")
		RETURNF 1
	;여성기가 있고 유아나 유치가 없으면 선택할 수 없다
	CASE GETNUM(TALENT, "초경")
		SIF !GETBIT(TALENT:CHARA:성별, 0)
			RETURNF 2
		SIF !TALENT:CHARA:애같음 && !TALENT:CHARA:유치
			RETURNF 2
ENDSELECT
RETURNF 0

;-----------------------------------------------------------
;경험 변경
;-----------------------------------------------------------
@CUSTOM_EXP_MENU(ARG)
VARSET LOCAL
FOR LOCAL,0,100
	SIF CUSTOM_선택할수없는경험(LOCAL, ARG)
		CONTINUE
	PRINTFORM   [{LOCAL,2}] - %EXPNAME:LOCAL,16%:{EXP:ARG:LOCAL,5,LEFT}
	LOCAL:1 ++
	SIF LOCAL:1 % 3 == 0
		PRINTL
NEXT

;-----------------------------------------------------------
@CUSTOM_EXP(argExp, argChara)
#DIM argExp
#DIM argChara
SIF CUSTOM_선택할수없는경험(argExp, argChara)
	RETURN 0
PRINTFORM %조사처리(EXPNAME:argExp,"를")% 입력해주세요.    (0-30)
	PRINTBUTTON "[캔슬]",-1
	PRINTL   [ 0]  [ 1]  [ 5]  [10]  [20]  [30]
	PRINTL
INPUT
SIF RESULT < 0
	RETURN 0
EXP:argChara:argExp = RESULT
EXP:argChara:argExp = LIMIT(EXP:argChara:argExp, 0, 30)
RETURN 1

;-----------------------------------------------------------
@CUSTOM_선택할수없는경험(argExp, argChara)
#FUNCTION
#DIM argExp
#DIM argChara
SELECTCASE EXPNAME:argExp
	CASE "", "항내사정경험", "질내사정경험"
		RETURNF 1
	;여성가기 앖다면 불가
	CASE "레즈경험", "V경험", "V절정경험", "V성교경험", "V확장경험", "자궁구개발경험", "분유경험", "파이즈리경험"
		SIF !(TALENT:argChara:성별 & 1)
			RETURNF 1
	;여성기가 있다면 불가
	CASE "게이경험"
		SIF TALENT:argChara:성별 & 1
			RETURNF 1
	;남성기가 없다면 불가
	CASE "삽입경험", "사정경험"
		SIF !HAS_PENIS(argChara)
			RETURNF 1
	;시간정지에서 오는 건 불가
	CASE "시간경험", "무자각C경험", "무자각V경험", "무자각A경험", "무자각B경험", "무자각M경험", "무자각절정경험"
		RETURNF 1
ENDSELECT
SELECTCASE argExp
	;생활계
	CASE 70 TO 89
		RETURNF 1
	;행위계는 조정이 귀찮다
	CASE 100 TO 109
		RETURNF 1
ENDSELECT
RETURNF 0


code:
;-----------------------------------------------------------
;캐릭터메이킹
;전 캐릭터 추가 후에 실시
;-----------------------------------------------------------
@NEWGAME_MAKE
;공통 초기화
CALL NEWGAME_MAKE_INIT
;모드 선택
CALL NEWGAME_MAKE_SELECT_MODE
;스테이터스 설정

;-----------------------------------------------------------
;초기화
;-----------------------------------------------------------
@NEWGAME_MAKE_INIT
;NO는 적당하게 설정
NO:MASTER = 0
;MASTER는 초기 성별=남자
;성별(1=여성 2= 남성 3=후타나리)
TALENT:MASTER:성별 = 2
;기력, 체력
MAXBASE:MASTER:체력 = 2000
BASE:MASTER:체력 = MAXBASE:MASTER:0
MAXBASE:MASTER:기력 = 2000
BASE:MASTER:기력 = MAXBASE:MASTER:1
;TSP
MAXBASE:MASTER:TSP = 100
BASE:MASTER:TSP = 100

;-----------------------------------------------------------
;모드 선택
;-----------------------------------------------------------
@NEWGAME_MAKE_SELECT_MODE
CLEARLINE 10000
PRINTL ★★모드를 선택해 주세요★★
CALL ASK_CHOICES10("START","역극 모드(일부 구상이 표시되지 않습니다)")
SELECTCASE RESULT
	CASE 0
		FLAG:게임모드 = 0
		CALL NEWGAME_MAKE_ANATA
	CASE 1
		FLAG:게임모드 = 1
		CALL NEWGAME_MAKE_NARIKIRI
		SIF !RESULT
			RESTART
ENDSELECT

;-----------------------------------------------------------
;통상
;-----------------------------------------------------------
@NEWGAME_MAKE_ANATA
PRINTW 게임 개시 전에 당신을 커스터마이즈할 수 있습니다.
CALL CUSTOM_TERMINAL(MASTER)

;-----------------------------------------------------------
;역극
;-----------------------------------------------------------
@NEWGAME_MAKE_NARIKIRI
#DIM nNo
PRINTL
PRINTL 누가 되겠습니까?
CALL ASK_CALLNAME
IF RESULT == 999
	RETURN 0
ELSEIF !IS_NAMED(RESULT)
	RESTART
ENDIF
nNo = RESULT
PRINTFORMW %조사처리(CALLNAME:nNo,"으로")%서 게임을 개시합니다

;역극 복사
NAME:MASTER = %NAME:nNo%
CALLNAME:MASTER = %CALLNAME:nNo%
FOR LOCAL,0,200
	TALENT:MASTER:LOCAL = TALENT:nNo:LOCAL
NEXT
FOR LOCAL,0,55
	ABL:MASTER:LOCAL = ABL:nNo:LOCAL
NEXT
FOR LOCAL,0,14
	MAXBASE:MASTER:LOCAL = MAXBASE:nNo:LOCAL
	BASE:MASTER:LOCAL = MAXBASE:nNo:LOCAL
NEXT
FOR LOCAL,0,100
	EXP:MASTER:LOCAL = EXP:nNo:LOCAL
NEXT
;체력기력 최저치 올림
IF MAXBASE:MASTER:체력 < 2000
	PRINTFORML 이 캐릭터는 체력이 낮습니다. 2000까지 올릴까요?
	CALL ASK_YN("올린다","이대로")
	SIF RESULT == 0
		MAXBASE:MASTER:체력 = 2000
ENDIF
IF MAXBASE:MASTER:기력 < 2000
	PRINTFORML 이 캐릭터는 기력이 낮습니다. 2000까지 올릴까요?
	CALL ASK_YN("올린다","이대로")
	SIF RESULT == 0
		MAXBASE:MASTER:기력 = 2000
ENDIF
;TSP
MAXBASE:MASTER:TSP = 100
BASE:MASTER:TSP = 100
;처녀
IF !TALENT:MASTER:처녀
	PRINTL 처녀가 되겠습니까?
	CALL ASK_YN("네","아니오")
	IF RESULT == 0
		CALL SET_VIRGIN(MASTER)
	ENDIF
ENDIF

;CFLAG:MASTER:초기위치 = CFLAG:nNo:초기위치
FLAG:역극 = nNo
CFLAG:nNo:출금 = 1
CALL CUSTOM_INIT(MASTER)
RETURN 1

;FileName_SHOP_CUSTOM.ERB -------------------------- Rev1. 00
;복장의 설정
;CALL		USER
;ARG		MASTER 캐릭터 NO
;RETURN		VOID
;COMMENT
;-----------------------------------------------------------
@MASTER_CLOTHES_INIT
IF FLAG:역극
	CFLAG:MASTER:기본복장세트 = FLAG:역극 + 100
ELSEIF TALENT:MASTER:성별 & 1
	CFLAG:MASTER:기본복장세트 = 2
ELSE
	CFLAG:MASTER:기본복장세트 = 1
ENDIF

@MASTER_CLOTHES
#DIMS choices, 100
;리스트 작성
VARSET choices
FOR LOCAL, 0, 10
	IF LOCAL >= 7
		choices:LOCAL '= MASTER_CLOTHES_NAME(LOCAL+1)
	ELSE
		choices:LOCAL '= MASTER_CLOTHES_NAME(LOCAL)
	ENDIF
NEXT
choices:99 '= MASTER_CLOTHES_NAME(99)
;표시
PRINTL
PRINTL
PRINTFORML 평상복을 선택해주세요.
DRAWLINE
CALL ASK_CHOICES(choices, 100)
SELECTCASE RESULT
	CASE 100
		RETURN 0
	CASE 0 TO 99
		CALL MASTER_CLOTHES_SET(RESULT)
		SIF RESULT
			RETURN 1
	CASE 99
		CALL MASTER_CLOTHES_SET(99)
			RETURN 1
ENDSELECT
RESTART

@MASTER_CLOTHES_SET(ARG)
SELECTCASE ARG
	CASE 0
		PRINTFORMW 너무 과격하잖아!
		RETURN 0
	CASE 1 TO 6
		CFLAG:MASTER:기본복장세트 = RESULT
	CASE 7 TO 9
		CFLAG:MASTER:기본복장세트 = RESULT + 1
	CASE 99
		CALL MASTER_CLOTHES_INIT
	CASEELSE
		THROW 유효하지 않은 지정입니다。
ENDSELECT
PRINTFORMW 복장을 %조사처리(MASTER_CLOTHES_NAME(CFLAG:MASTER:기본복장세트),"으로")% 변경했습니다.
RETURN 1

@MASTER_CLOTHES_NAME(ARG)
#FUNCTIONS
SELECTCASE ARG
	CASE 0
		RETURNF "전라"
	CASE 1
		RETURNF "남장 세트"
	CASE 2
		RETURNF "여장 세트"
	CASE 3
		RETURNF "집사 세트"
	CASE 4
		RETURNF "가정부 세트"
	CASE 5
		RETURNF "신관 세트"
	CASE 6
		RETURNF "작업복 세트"
	CASE 7
		THROW
	CASE 8
		RETURNF "도복 세트"
	CASE 9
		RETURNF "서생 세트"
	CASE 10
		RETURNF "여학생 세트"
	CASEELSE
		RETURNF CALLNAME:MASTER + "의 기본 의상"
ENDSELECT
THROW


code:
;-----------------------------------------------------------
;캐릭터 선택용 함수
;-----------------------------------------------------------
;-----------------------------------------------------------
;CALLNAME에 의한선택지
;당신과 몹 이외의 모두를 리스트업
;-----------------------------------------------------------
@ASK_CALLNAME
;생성
FOR LOCAL, 0, CHARANUM
	IF !IS_NAMED(LOCAL)
		CONTINUE
	ENDIF
	PRINTFORMLC [{LOCAL, 3}] %CALLNAME:LOCAL%
NEXT
PRINTL
DRAWLINE
PRINTL [999] 그만둔다
;입력 접수
DO
	INPUT
	SIF RESULT == 999 || IS_NAMED(RESULT)
		RETURN RESULT
	CLEARLINE 1
LOOP 1
;-----------------------------------------------------------
;몹과 당신과 출금 이외라면 1을 반환
;-----------------------------------------------------------
@IS_NAMED(ARG)
#FUNCTION
	IF ARG == MASTER || TALENT:ARG:스침 || CFLAG:ARG:출금
		RETURNF 0
	ENDIF
RETURNF 1
;-----------------------------------------------------------
;10번까지의 선택지
;-----------------------------------------------------------
@ASK_CHOICES10(argChoices:0="", argChoices:1="", argChoices:2="", argChoices:3="", argChoices:4="", argChoices:5="", argChoices:6="", argChoices:7="", argChoices:8="", argChoices:9="")
#DIMS argChoices, 10
CALL ASK_CHOICES(argChoices)
RETURN RESULT

;-----------------------------------------------------------
;참조도에서 수 무제한의 선택지
;공란은 개행하지만 연속해서 개행하진 않음, 모두 공란이면 THROW
;-----------------------------------------------------------
@ASK_CHOICES(refChoices, argCanselNo=-1,argCanselText="캔슬")
#DIMS REF refChoices, 0
#DIM DYNAMIC argCanselNo
#DIMS DYNAMIC argCanselText
#DIMS html
#DIM skip
;생성
VARSET skip
VARSET html
FOR LOCAL, 0, VARSIZE("refChoices")
	;공란
	IF refChoices:LOCAL == ""
		;공란 개행은 연속되지 않는다
		IF !skip
			html += "
"
		ENDIF
		skip ++
	;내용 있음
	ELSE
		html += HTML_SPACE(2) +HTML_BUTTON(refChoices:LOCAL, LOCAL, 3) + "
"
		skip = 0
	ENDIF
NEXT
SIF !skip
	html += "
"
SIF argCanselNo >= 0
	html += HTML_SPACE(2) + HTML_BUTTON(argCanselText, argCanselNo, 3) + "
"
SIF html == "
"
	THROW 선택지가 모두 비었습니다.
;표시
HTML_PRINT "
<nobr>"+ "
" + html + "
" + "</nobr>
"
;입력 접수
DO
	INPUT
	SIF argCanselNo || (RESULT < VARSIZE("refChoices") && refChoices:RESULT != "")
		RETURN RESULT
	CLEARLINE 1
LOOP 1
;-----------------------------------------------------------
;참조도에서 선택지를 버튼으로 나열한다
;공란은 무시, 모두 공란이면 THROW
;-----------------------------------------------------------
@ASK_BUTTONS(refChoices)
#DIMS REF refChoices, 0
#DIMS DYNAMIC html
;생성
FOR LOCAL, 0, VARSIZE("refChoices")
	IF refChoices:LOCAL != ""
		html += HTML_SPACE(2) + HTML_BUTTON(refChoices:LOCAL, LOCAL)
	ENDIF
NEXT
SIF html == ""
	THROW 선택지가 모두 비었습니다.
;표시
HTML_PRINT "
" + html + "
" + "
"
;입력 접수
DO
	INPUT
	SIF RESULT < VARSIZE("refChoices") && refChoices:RESULT != ""
		RETURN RESULT
	CLEARLINE 1
LOOP 1