code:
;채집한다
@COM445
#DIM 채집물
#DIM 채집파워
#DIM 채집파워M
#DIM 채집파워T
#DIM 토지의은혜
#DIM CHARA
#DIM 채집위치
;あからさまな人の敷地での無断採集はやめる、弾幕勝負で勝ってれば腕づくで
SELECTCASE CFLAG:MASTER:현재위치
	CASE 태양의밭, 438
		IF ABL:[[유카]]:친밀 < 5 && CFLAG:[[유카]]:탄막승부승리 == 0
			DRAWLINE
			PRINTFORML 여기서 무단으로 채집을 하는 것은 매우 위험할 것 같다…
			RETURN -1
		ENDIF
	;천계, 도원
	CASE 천계, 833
		IF ABL:[[텐시]]:친밀 < 5 && CFLAG:[[텐시]]:탄막승부승리 == 0
			DRAWLINE
			PRINTFORML 여기서 무단으로 채집을 하는 것은 위험할 것 같다…
			RETURN -1
		ENDIF
	;虹龍洞
	CASE 虹龍洞, 855
		IF ABL:[[모모요]]:친밀 < 5 && CFLAG:[[모모요]]:탄막승부승리 == 0
			DRAWLINE
			PRINTFORML 여기서 무단으로 채집을 하는 것은 위험할 것 같다…
			RETURN -1
		ENDIF
ENDSELECT

채집물 = 0
채집파워M = 0
채집파워T = 0
LOCAL:4 = 0

;참가자 판정
IF FLAG:데이트상대 && !FLAG:70
	CHARA = FLAG:데이트상대
ELSEIF TARGET && ABL:TARGET:친밀 >= 5 && SHIRAHU(TARGET) && CFLAG:TARGET:동행 != 5
	CHARA = TARGET
ELSE
	CHARA = 0
ENDIF

;토지의 은혜. 일일로-25～+25의 사이를 랜덤으로 부동. 낚시를 참고에.
토지의은혜 = CFLAG:MASTER:오늘의운세 / 20 - 25

SIF ITEM:세방울의천수
	토지의은혜 += 5

;채집 파워 설정
채집파워M = 10 + TALENT:MASTER:채집Lv * 10 + ABL:MASTER:교양 * 5 + TFLAG:행운보정 * 10
SIF ITEM:108
	채집파워M += 10

SIF CHARA && !FLAG:70
	채집파워T = 10 + TALENT:CHARA:채집Lv * 10 + ABL:CHARA:교양 * 5
;참가자로 가장 파워가 높은 것을 기준에,1/2한 이제(이미/벌써/더는/정말) 1명의 파워를 더한다
IF 채집파워M >= 채집파워T
	채집파워 = 채집파워M + (채집파워T / 2)
ELSE
	채집파워 = 채집파워T + (채집파워M / 2)
ENDIF
채집위치 = GATHERING_SPOT(CFLAG:MASTER:현재위치)
REPEAT 5
	REUSELASTLINE  \@ CHARA ? %조사처리(CALLNAME:CHARA,"와")% 함께 #  \@채집중.%"." * COUNT%
	TWAIT 150, 1
REND
;디버그용
;PRINTFORML 채집위치{채집위치}
;PRINTFORML 채집파워{채집파워}

$TREASURSARCH

CALL Gathering_Drawing(채집위치, 채집파워, 토지의은혜)

채집물 = RESULT:0
TFLAG:194 = RESULT:1
VARSET RESULT
;시행 회수를 1회늘린다
LOCAL:4 ++
;채집물이 마음에 들지 않는 경우는 당겨 수선
IF 채집물 != 0
	IF !FLAG:채집재추첨
		CLEARLINE 3
	ELSE
		SETCOLOR 0x00FF00
		PRINTFORM %ITEMNAME:(채집물)%
		RESETCOLOR
		PRINTFORML (소지수: {ITEM:(채집물)})%조사만처리(ITEMNAME:(채집물),"가")% 발견되었다. 채집합니까?
		CALL ASK_YN("채집한다","다시 찾는다")
		IF !RESULT
			CLEARLINE 4
		ELSE
			CLEARLINE 4
			채집물 = 0
			TFLAG:194 = 0
			REPEAT 5
				REUSELASTLINE  \@ CHARA ? %조사처리(CALLNAME:CHARA,"와")% 함께 #  \@채집중.%"." * COUNT%
				TWAIT 150, 1
			REND
		ENDIF
	ENDIF
ENDIF

;시행 회수 3회 이하로 채집물이 확보되어 있지 않은 경우는 루프
SIF LOCAL:4 <= 3 && 채집물 == 0
	GOTO TREASURSARCH

; 아이템 입수 처리 99개 이상이 되지 않도록 한다
IF 채집물 != 0
	LOCALS = %ITEMNAME:채집물%
	CALL GET_ITEM(LOCALS, TFLAG:194 , 2)
ENDIF

;기본경험
EXP:MASTER:채집경험 ++
SIF !채집물
	EXP:MASTER:채집경험 += 2
SIF CHARA
	EXP:CHARA:채집경험 ++

SIF ITEM:108 && !RAND:2
	EXP:MASTER:채집경험 ++

SIF ABL:MASTER:교양 <= 2
	EXP:MASTER:학습경험 ++

;능력차이로 가르쳐 받는·가르쳐 준다
IF 채집파워M >= 채집파워T && CHARA
	EXP:CHARA:채집경험 ++
ELSEIF CHARA
	EXP:MASTER:채집경험 ++
ENDIF

;데이트 경험
IF CHK_DATENOW(CFLAG:CHARA:데이트중) && CHARA > 0
	EXP:MASTER:데이트경험 ++
	EXP:CHARA:데이트경험 ++
ENDIF

;시간 정지시는 TSP감
IF FLAG:70
	;虹龍洞は採掘困難
	IF 채집위치 == 68
		BASE:MASTER:TSP -= 290
	ELSE
		BASE:MASTER:TSP -= 120
	ENDIF
ELSE
	;시간 경과
	TIME += 60
	;虹龍洞は空気が薄い（無い）ので体力を余計に消耗する　ITEM:空色の勾玉の実装が待たれる
	IF 채집위치 == 68
		DOWNBASE:MASTER:체력 = 320 - (ABL:MASTER:전투능력 * 10)
		DOWNBASE:MASTER:기력 = 280
		PRINTFORML 갱 내부는 공기가 옅어、몹시 지친다…
	ELSE
		;체력 감소는 전투 능력에 의해 감소 억제
		DOWNBASE:MASTER:체력 = 180 - (ABL:MASTER:전투능력 * 15)
		DOWNBASE:MASTER:기력 = 150
	ENDIF
ENDIF

;참가자의 소스, 동일 커맨드 제한을 받지 않기 때문에 소극적으로, 발견되지 않으면 반감
IF CHARA > 0
	;고정으로 획득하는 소스
	SOURCE:CHARA:환락 = 300
	SOURCE:CHARA:사랑 = 50

	;ABL:순종을 본다
	IF ABL:순종 <= 1
		SOURCE:CHARA:환락 += (ABL:순종 * 40)
		SOURCE:CHARA:사랑 += (ABL:친밀 * 20)
	ELSEIF ABL:순종 <= 3
		SOURCE:CHARA:환락 += 200 + (ABL:순종 * 40)
		SOURCE:CHARA:사랑 += 50 + (ABL:친밀 * 30)
	ELSEIF ABL:순종 <= 5
		SOURCE:CHARA:환락 += 500 + (ABL:순종 * 40)
		SOURCE:CHARA:사랑 += 200 + (ABL:친밀 * 30)
	ELSEIF ABL:순종 <= 8
		SOURCE:CHARA:환락 += 750 + (ABL:순종 * 60)
		SOURCE:CHARA:사랑 += 300 + (ABL:친밀 * 40)
	ELSEIF ABL:순종 <= 11
		SOURCE:CHARA:환락 += 1000 + (ABL:순종 * 60)
		SOURCE:CHARA:사랑 += 600 + (ABL:친밀 * 40)
	ELSE
		SOURCE:CHARA:환락 += 1600 + (ABL:순종 * 30)
		SOURCE:CHARA:사랑 += 1000 + (ABL:친밀 * 20)
	ENDIF
	SIF CHARA != FLAG:데이트상대
		SOURCE:CHARA:사랑 = 0

	;호감도는 보지 않는다

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

	;채집 성과를 보는, 아이템 가격에 응해 우선 설정
	IF 채집물
		SELECTCASE ITEMPRICE:(채집물)
			CASE 1 TO 499
				TIMES SOURCE:CHARA:환락 , 1.00
				TIMES SOURCE:CHARA:수동 , 1.00
				TIMES SOURCE:CHARA:정복 , 1.00
				SOURCE:CHARA:달성 = 80
			CASE 500 TO 999
				TIMES SOURCE:CHARA:환락 , 1.10
				TIMES SOURCE:CHARA:수동 , 1.10
				TIMES SOURCE:CHARA:정복 , 1.10
				SOURCE:CHARA:달성 = 115
			CASE 1000 TO 2999
				TIMES SOURCE:CHARA:환락 , 1.25
				TIMES SOURCE:CHARA:수동 , 1.25
				TIMES SOURCE:CHARA:정복 , 1.15
				SOURCE:CHARA:달성 = 125
			CASE 3000 TO 5999
				TIMES SOURCE:CHARA:환락 , 1.50
				TIMES SOURCE:CHARA:수동 , 1.50
				TIMES SOURCE:CHARA:정복 , 1.25
				SOURCE:CHARA:달성 = 150
			CASE 6000 TO 9999
				TIMES SOURCE:CHARA:환락 , 1.75
				TIMES SOURCE:CHARA:수동 , 1.75
				TIMES SOURCE:CHARA:정복 , 1.50
				SOURCE:CHARA:달성 = 200
			CASE 10000 TO 14999
				TIMES SOURCE:CHARA:환락 , 2.00
				TIMES SOURCE:CHARA:수동 , 2.00
				TIMES SOURCE:CHARA:정복 , 1.75
				SOURCE:CHARA:달성 = 300
			CASEELSE
				TIMES SOURCE:CHARA:환락 , 2.25
				TIMES SOURCE:CHARA:수동 , 2.25
				TIMES SOURCE:CHARA:정복 , 2.00
				SOURCE:CHARA:달성 = 350
		ENDSELECT
	;발견되지 않는다
	ELSE
		TIMES SOURCE:CHARA:환락 , 0.50
		TIMES SOURCE:CHARA:수동 , 0.50
		TIMES SOURCE:CHARA:정복 , 0.50
	ENDIF
	;채집물의 캐릭터에게 응한 고유 반응（덧쓰기）
	SELECTCASE 채집물
		;개구리
		CASE 706
		;치르노
			IF CHARA == [[치르노]]
				TIMES SOURCE:CHARA:환락 , 2.00
				TIMES SOURCE:CHARA:수동 , 2.00
				TIMES SOURCE:CHARA:정복 , 2.00
			;스와코
			ELSEIF CHARA == [[스와코]]
				TIMES SOURCE:CHARA:환락 , 0.50
				TIMES SOURCE:CHARA:수동 , 0.50
				TIMES SOURCE:CHARA:정복 , 0.50
			ELSE
				TIMES SOURCE:CHARA:환락 , 1.25
				TIMES SOURCE:CHARA:수동 , 1.00
				TIMES SOURCE:CHARA:정복 , 1.00
			ENDIF
			SOURCE:CHARA:달성 = 110
	ENDSELECT
ENDIF

;플래그 인도
TFLAG:SELECTCOM분기 = 채집물

RETURN 1

;-------------------------------------------------
;실행 가능 판정
;-------------------------------------------------
;채집한다
@COM_ABLE445
SIF !TFLAG:100
	RETURN 0
;일괄관리
SIF GLOBAL_COMABLE(445)
	RETURN RESULT
;채집할 수 있는 장소이다
SIF !GATHERING_SPOT(CFLAG:MASTER:현재위치)
	RETURN 0
;데이트중은 데이트 상대와 만
SIF FLAG:데이트상대 && TARGET != FLAG:데이트상대
	RETURN 0
;수면중
SIF CFLAG:MASTER:수면
	RETURN 0
SIF CFLAG:우후후
	RETURN 0
;체력·기력 부족
SIF BASE:MASTER:기력 < 650 || BASE:MASTER:체력 < 680
	RETURN 0
;시간 정지중도 가능（가짜）
;SIF FLAG:70
;	RETURN 0
RETURN 1

;-----------------------------------------------------------
;현재 위치로부터 채집 스팟을 산출하는 함수
;ARG		현재 위치
;ARG:1		@ShowGatheringSpots부터의 참조용
;RETURN		0 해당 없음	1～30숲, 초원	31～60 수계		61～ 특수
;COMMENT	장소를 추가했을 경우, CASE를 변경의 일
;-----------------------------------------------------------
@GATHERING_SPOT(ARG, ARG:1)
#FUNCTION
IF !IN_HOME(ARG) && !ARG:1
;서브 맵 따위에서의 판정
	SELECTCASE ARG
		CASE 요정의큰나무
			RETURNF 1
		CASE 사각의죽림
			RETURNF 2
		CASE 무명의언덕
			RETURNF 3
		CASE 태양의밭
			RETURNF 4
		CASE 재고의길
			RETURNF 5
		CASE 고목의큰나무
			RETURNF 6
		CASE 마요이가
			RETURNF 7
		CASE 피안
			RETURNF 8
		CASE 산록의수해
			RETURNF 11
		CASE 절경의언덕
			RETURNF 12
		CASE 천계
			RETURNF 13
		CASE 복숭아숲～모래사장
			RETURNF 14
		CASE 안개의호수
			RETURNF 31
		CASE 삼도천
			RETURNF 32
		CASE 현무의늪
			RETURNF 33
		CASE 큰두꺼비의연못
			RETURNF 34
		CASE 구천의폭포
			RETURNF 35
		CASE 산의호수
			RETURNF 36
		CASE 지옥의깊은길
			RETURNF 37
		CASE 묘지
			RETURNF 61
		CASE 무연총
			RETURNF 62
		CASE 간헐천지하센터
			RETURNF 64
		CASE 작열지옥터
			RETURNF 65
		CASE 괴안통로
			RETURNF 66
		CASE 고요의바다
			RETURNF 67
		CASE 홍룡동
			RETURNF 68
	ENDSELECT
ELSE
	;メインマップでの判定
	SELECTCASE ARG
		;하쿠레이신사
		CASE P25수호신의숲
			RETURNF 1
		;명련사
		CASE P121묘지
			RETURNF 61
		;홍마관
		CASE P343호숫가
			RETURNF 31
		;영원정
		CASE P433사각의죽림
			RETURNF 2
		CASE P436무명의언덕
			RETURNF 3
		CASE P438태양의밭
			RETURNF 4
		;마법의숲
		CASE P506무연총
			RETURNF 62
		CASE P507キノコ群生地
			RETURNF 63
		CASE P509재고의길
			RETURNF 5
		CASE P540고목의큰나무
			RETURNF 6
		;명계
		CASE P604피안
			RETURNF 8
		CASE P630야쿠모가현관
			RETURNF 7
		;요괴의산 산록
		CASE P702산길・늪으로가는길
			RETURNF 9
		CASE P703현무의늪
			RETURNF 33
		CASE P705산길・산비탈
			RETURNF 10
		CASE P708큰두꺼비의연못
			RETURNF 34
		CASE P712간헐천지하센터
			RETURNF 64
		;요괴의산 산정
		CASE P805정상
			RETURNF 12
		CASE P806폭포뒤
			RETURNF 35
		CASE P814호숫가
			RETURNF 36
		CASE P833도원
			RETURNF 13
		CASE P855홍룡동
			RETURNF 68
		;지저
		CASE P928작열지옥터
			RETURNF 65
		CASE P945강가
			RETURNF 37
		CASE P948수혈의바닥
			RETURNF 66
		;달
		CASE P1014복숭아숲, P1015모래사장
			RETURNF 14
		CASE P1016후미
			RETURNF 67
	ENDSELECT
ENDIF
RETURNF 0

;-------------------------------------------------
;그 채집 스팟에서의 채집물의 출현 판정을 하는 함수
; 아이템 번호 ARG:0
;GATHERING_SPOT(ARG)의 돌아가 값ARG:1（채집 스팟）  의
;출현 가부를 숫자로 돌려주는 출현==1비출현==0
; 아이템을 추가했을 경우는, GROUPMATCH내에 각각 덧붙여 씀
;-------------------------------------------------
@GATHERING_PRODUCT(ARG:0, ARG:1)
#FUNCTION

;(酒造パッチ)머루665・곰팡이핀포도666を追加
SELECTCASE ARG:1
	;고장을 지키는 신 숲, 요정의 큰 나무
	CASE 1
		SIF GROUPMATCH(ARG:0, 600, 601, 602, 607, 608, 611, 612, 616, 619, 621, 622, 626, 627, 628, 636, 665, 666)
			RETURNF 1
	;경사각의 대나무숲
	CASE 2
		SIF GROUPMATCH(ARG:0, 607, 608, 611, 612, 613, 618, 619, 629, 635, 640)
			RETURNF 1
	;무명의 언덕
	CASE 3
		SIF GROUPMATCH(ARG:0, 600, 601, 602, 603, 612, 616, 620, 626, 627, 631, 636, 638, 665, 666)
			RETURNF 1
	;태양의 밭
	CASE 4
		SIF GROUPMATCH(ARG:0, 612, 613, 614, 615, 617, 618, 619, 620, 623, 624, 626, 627, 665, 666)
			RETURNF 1
	;재고의 길
	CASE 5
		SIF GROUPMATCH(ARG:0, 612, 614, 619, 624, 631, 632, 638)
			RETURNF 1
	;고목의 큰 나무
	CASE 6
		SIF GROUPMATCH(ARG:0, 600, 601, 602, 603, 604, 605, 607, 608, 611, 612, 616, 618, 621, 622, 623, 625, 626, 627, 628, 665, 666)
			RETURNF 1
	;마요이가
	CASE 7
		SIF GROUPMATCH(ARG:0, 600, 601, 602, 603, 607, 608, 611, 612, 616, 617, 619, 621, 622, 626, 627, 628, 665, 666)
			RETURNF 1
	;피안
	CASE 8
		SIF GROUPMATCH(ARG:0, 600, 601, 607, 608, 612, 614, 620, 624, 638)
			RETURNF 1
	;산길·늪에 계속되는 길
	CASE 9
		SIF GROUPMATCH(ARG:0, 600, 601, 602, 607, 608, 611, 612, 616, 617, 621, 622, 626, 627, 628, 636, 665, 666)
			RETURNF 1
	;산길·중턱
	CASE 10
		SIF GROUPMATCH(ARG:0, 611, 613, 616, 619, 621, 622, 623, 633)
			RETURNF 1
	;산기슭의 수해
	CASE 11
		SIF GROUPMATCH(ARG:0, 600, 601, 602, 607, 608, 611, 612, 613, 616, 617, 619, 621, 622, 623, 626, 627, 628, 633, 665, 666)
			RETURNF 1
	;절경의 언덕, 정상
	CASE 12
		SIF GROUPMATCH(ARG:0, 602, 603, 607, 608, 611, 612, 615, 616, 619, 621, 622, 625, 626, 627, 628, 665, 666)
			RETURNF 1
	;천계, 도원
	CASE 13
		SIF GROUPMATCH(ARG:0, 617, 623, 630)
			RETURNF 1
	;도림～모래 사장
	CASE 14
		SIF GROUPMATCH(ARG:0, 607, 608, 613, 617, 618, 624, 625, 630)
			RETURNF 1
	;안개호, 호숫가(홍마관)
	CASE 31
		SIF GROUPMATCH(ARG:0, 606, 607, 608, 609, 611, 612, 617, 624, 633, 706)
			RETURNF 1
	;삼도천
	CASE 32
		SIF GROUPMATCH(ARG:0, 607, 608, 612, 614, 631, 638, 706)
			RETURNF 1
	;현무의 늪
	CASE 33
		SIF GROUPMATCH(ARG:0, 606, 607, 609, 611, 612, 618, 635, 706)
			RETURNF 1
	;대두꺼비의 연못
	CASE 34
		SIF GROUPMATCH(ARG:0, 604, 612, 620, 631, 636, 706)
			RETURNF 1
	;구천의 폭포, 폭포의 뒤
	CASE 35
		SIF GROUPMATCH(ARG:0, 600, 601, 602, 606, 609, 611, 613, 631, 634, 706)
			RETURNF 1
	;산의 호수, 호숫가（요괴의산 산정）
	CASE 36
		SIF GROUPMATCH(ARG:0, 606, 607, 609, 611, 612, 618, 632, 706)
			RETURNF 1
	;지옥의 후카미치, 강가
	CASE 37
		SIF GROUPMATCH(ARG:0, 600, 601, 602, 604, 606, 609, 620, 631, 633, 636, 706)
			RETURNF 1
	;묘지
	CASE 61
		SIF GROUPMATCH(ARG:0, 601, 602, 604, 614, 620, 631, 636, 638)
			RETURNF 1
	;무연총
	CASE 62
		SIF GROUPMATCH(ARG:0, 604, 606, 609, 631, 634, 635, 636, 638)
			RETURNF 1
	;버섯 군생지
	CASE 63
		SIF GROUPMATCH(ARG:0, 600, 601, 602, 603, 604, 605, 605, 629)
			RETURNF 1
	;간헐천 지하 센터
	CASE 64
		SIF GROUPMATCH(ARG:0, 632, 634, 637)
			RETURNF 1
	;작열 지옥자취
	CASE 65
		SIF GROUPMATCH(ARG:0, 631, 634, 635, 637, 638)
			RETURNF 1
	;환상 바람구멍, 세로구멍의 바닥
	CASE 66
		SIF GROUPMATCH(ARG:0, 602, 604, 631, 632)
			RETURNF 1
	;정인가의 바다
	CASE 67
		SIF GROUPMATCH(ARG:0, 639)
			RETURNF 1
	;홍룡동
	CASE 68
		SIF GROUPMATCH(ARG:0, 647)
			RETURNF 1
ENDSELECT
RETURNF 0

;-------------------------------------------------
;채집물의 계절마다의 출현 판정
; 아이템 번호 ARG:0의 계절마다의
;출현 가부를 숫자로 돌려주는 함수 출현==1비출현==0
; 아이템을 추가했을 경우는, CASE에 덧붙여 씀
;ARG:1 に채집지점을 넣으면 아래 목록용 식으로 변환 생략가능
;-------------------------------------------------
@GATHERING_SEASON(ARG:0, ARG:1 = 0)
#FUNCTION

LOCAL = DAY:2
SIF GatheringSeason
	LOCAL = GatheringSeason

;(酒造パッチ)머루665・곰팡이핀포도666を追加
SELECTCASE LOCAL
	;봄:
	CASE 1
		SELECTCASE ARG:0
			CASE 600 TO 602, 604 TO 608, 610 TO 613, 616, 618 TO 627, 629, 631 TO 640, 647, 706
				RETURNF 1
		ENDSELECT
	;여름
	CASE 2
		SELECTCASE ARG:0
			CASE 600 TO 601, 603, 606 TO 608, 612 TO 613, 618 TO 627, 630 TO 640, 647, 665, 706
				RETURNF 1
		ENDSELECT
	;가을
	CASE 3
		SELECTCASE ARG:0
			CASE 600 TO 608, 611 TO 614, 616 TO 623, 625 TO 628, 631 TO 640, 647, 665, 706
				RETURNF 1
		ENDSELECT
		;(酒造パッチ)(天候パッチ)かびたブドウ666は寒気の強さが5の時のみ
		SIF ARG:0 == 666 && POWER_COLD_AIR == 5
			RETURNF 1
	;겨울
	CASE 4
		;天界、地底、月とキノコ群生地、虹龍洞は夏とみなして採集可能
		IF ARG:1
			LOCAL:1 = ARG:1
		ELSE
			LOCAL:1 = GATHERING_SPOT(CFLAG:MASTER:현재위치)
		ENDIF

		IF GROUPMATCH(LOCAL:1, 13, 14, 37, 63, 64, 65, 66, 67, 68)
			SELECTCASE ARG:0
				CASE 600 TO 601, 603, 606 TO 609, 612 TO 613, 618 TO 627, 630 TO 640, 647, 706
					RETURNF 1
			ENDSELECT
		ELSE
			SELECTCASE ARG:0
				CASE 606, 609, 615, 620, 631 TO 635, 637 TO 640
					RETURNF 1
			ENDSELECT
		ENDIF
ENDSELECT
RETURNF 0

@SHOW_GATHERING_LIST
#DIM PLACE
PRINTFORML 채집 장소 일람
CALL COLORMESSAGE(@"중급소재　",C_YELLOW)
CALL COLORMESSAGE(@"고급소재　",C_P_GREEN)
CALL COLORMESSAGE(@"최고급소재",C_AQUA)
PRINTFORML
DRAWLINE
FOR LOCAL,1, 90
	IF ForagePlaceName(LOCAL) != ""
		PRINTFORMLC [{LOCAL}] %ForagePlaceName(LOCAL)%
	ENDIF
NEXT
PRINTFORML
DRAWLINE
; 개인 임의수정, 소재 검색기능 추가
;---- EDIT START ---------------------------------
PRINTFORML [98] 소재 검색
;---- EDIT END -----------------------------------
PRINTFORML [99] 그만둔다
INPUT
PLACE = RESULT
IF ForagePlaceName(PLACE) != ""
	CALL SHOW_GATHERING_ITEM(PLACE)
	PRINTFORMW
	CLEARLINE 1
	RESTART
;---- EDIT START ---------------------------------
ELSEIF PLACE == 98
	CALL SEARCH_GATHERING_ITEM
;---- EDIT END -----------------------------------
ELSE
	RETURN -1
ENDIF

@SHOW_GATHERING_LIST_SELECT(PLACE)
#DIM PLACE
DRAWLINE
PRINTFORML 채집 가능물 일람
CALL COLORMESSAGE(@"중급소재　",C_YELLOW)
CALL COLORMESSAGE(@"고급소재　",C_P_GREEN)
CALL COLORMESSAGE(@"최고급소재",C_AQUA)
PRINTFORML
DRAWLINE

SELECTCASE PLACE
	CASE 99
		RETURN -1
	CASEELSE
		CALL SHOW_GATHERING_ITEM(PLACE)
		PRINTFORML
		DRAWLINE
		PRINTFORMW
ENDSELECT

@SHOW_GATHERING_ITEM(PLACE)
#DIM PLACE

FOR LOCAL,600,710
	IF GATHERING_PRODUCT(LOCAL, PLACE)
		LOCALS = %ITEMNAME:LOCAL%
		IF ITEMPRICE:LOCAL >= 1000
			SETCOLOR C_YELLOW
			SIF ABL:MASTER:교양 < 1
				LOCALS = ？？？
		ENDIF
		IF ITEMPRICE:LOCAL >= 3000
			SETCOLOR C_P_GREEN
			SIF ABL:MASTER:교양 < 2
				LOCALS = ？？？
		ENDIF
		IF ITEMPRICE:LOCAL >= 10000
			SETCOLOR C_AQUA
			SIF ABL:MASTER:교양 < 3
				LOCALS = ？？？
		ENDIF
		;季節条件を満たしていない場合は灰色表記に
		SIF !GATHERING_SEASON(LOCAL, PLACE)
			SETCOLOR 0x606060

		PRINTFORM %LOCALS%
	ENDIF
	RESETCOLOR
NEXT

;-----------------------------
;引数で指定した価格範囲内の素材の中からランダムに入手
;-----------------------------
@GetRandMaterial(QYT, PriceRange:0, PriceRange:1)
#DIM PriceRange, 2
#DIM cArray, 100
#DIM cNumber
#DIM Chosen
#DIM QYT
cNumber = 0
FOR LOCAL, 600, 700
	SIF ITEMNAME:LOCAL == ""
		CONTINUE
	;アイテム価格上限
	SIF ITEMPRICE:LOCAL > PriceRange:0
		CONTINUE
	;下限は省略可
	SIF ITEMPRICE:LOCAL < PriceRange:1
		CONTINUE
	SIF ITEM:LOCAL >= 99
		CONTINUE
	cArray:cNumber = LOCAL
	cNumber ++
NEXT
SIF !cNumber
	RETURN

FOR LOCAL,0,QYT
	Chosen = RAND:cNumber
	ITEM:(cArray:Chosen) ++
	CALL COLORMESSAGE(@"%조사처리(ITEMNAME:(cArray:Chosen),"를")% 손에 넣었다",C_YELLOW,1)
NEXT

@ForagePlaceName(ARG)
#FUNCTIONS
SELECTCASE ARG
CASE 1
	IF MAIN_MAP == 0
		LOCALS = 수호신의 숲
	ELSE
		LOCALS = 요정의 큰나무
	ENDIF
CASE 2
	LOCALS = 사각의 죽림
CASE 3
	LOCALS = 무명의 언덕
CASE 4
	LOCALS = 태양의 밭
CASE 5
	LOCALS = 재고의 길
CASE 6
	LOCALS = 고목의 큰나무
CASE 7
	IF MAIN_MAP == 6
	LOCALS = 야쿠모 가 현관
	ELSE
	LOCALS = 마요이가
	ENDIF
CASE 8
	LOCALS = 피안
CASE 9
	LOCALS = 산길·늪으로 가는 길
CASE 10
	LOCALS = 산길·산비탈
CASE 11
	LOCALS = 산록의 수해
CASE 12
	IF MAIN_MAP == 8
		LOCALS = 정상
	ELSE
		LOCALS = 절경의 언덕
	ENDIF
CASE 13
	IF MAIN_MAP == 8
		LOCALS = 도원
	ELSE
		LOCALS = 천계
	ENDIF
CASE 14
	LOCALS = 복숭아숲~모래사장
CASE 31
	IF MAIN_MAP == 3
		LOCALS = 호숫가(홍마관)
	ELSE
		LOCALS = 안개의 호수
	ENDIF
CASE 32
	LOCALS = 삼도천
CASE 33
	LOCALS = 현무의 늪
CASE 34
	LOCALS = 큰두꺼비의 연못
CASE 35
	IF MAIN_MAP == 8
		LOCALS = 폭포 뒤
	ELSE
		LOCALS = 구천의 폭포
	ENDIF
CASE 36
	IF MAIN_MAP == 8
		LOCALS = 호숫가（요괴의 산 산정）
	ELSE
		LOCALS = 산의 호수
	ENDIF
CASE 37
	IF MAIN_MAP == 9
		LOCALS = 강가（지저）
	ELSE
		LOCALS = 지옥의 깊은길
	ENDIF
CASE 61
	LOCALS = 묘지
CASE 62
	LOCALS = 무연총
CASE 63
	LOCALS = 버섯 군생지
CASE 64
	LOCALS = 간헐천 지하 센터
CASE 65
	LOCALS = 작열지옥터
CASE 66
	IF MAIN_MAP == 9
		LOCALS = 수혈의 바닥
	ELSE
		LOCALS = 환상풍혈
	ENDIF
CASE 67
	LOCALS = 고요의 바다
CASE 68
	LOCALS = 홍룡동
CASEELSE
	LOCALS =
ENDSELECT

RETURNF LOCALS

@Gathering_Drawing(채집위치, 채집파워, Modification)
;RESULT:0	채집아이템
;RESULT:1	채집량
#DIM 채집위치
#DIM 채집파워
#DIM Chosen
#DIM QTY
#DIM Modification
#DIM start			;抽選開始値
#DIM end			;抽選終了値
#DIM difference		;加算or減算
#DIMS 低気圧位置
#DIMS 積乱雲位置
低気圧位置 = %GET_LOCATION_LOW()%
積乱雲位置 = %GET_LOCATION_CUMULUS()%
Chosen = 0
QTY = 0
;채집물의 선출
;랜덤으로 검색 스타트 위치를 비켜 놓거나 검색의 방향을 바꾸거나 한다
SELECTCASE RAND:5
	CASE 0
		start = 600 + RAND:40
		end = 707
		difference = 1
	CASE 1
		start = 706
		end = 599
		difference = -1
	CASE 2
		start = 640 - RAND:40
		end = 599
		difference = -1
	CASEELSE
		start = 600 + (5 * (RAND:9))
		end = 707
		difference = 1
ENDSELECT

FOR LOCAL:0, start, end, difference
	;アイテムが無名でなく、出現条件を満たし、所有数上限でない
	SIF ITEMNAME:(LOCAL:0) == ""
		CONTINUE
	IF ITEM:(LOCAL:0) == 99
		DEBUGPRINTFORML 소지 상한 때문에 %ITEMNAME:(LOCAL:0)%를 스킵
		CONTINUE
	ENDIF
	IF !GATHERING_SEASON(LOCAL:0)
		DEBUGPRINTFORML 철이 지났기에 %ITEMNAME:(LOCAL:0)%를 스킵
		CONTINUE
	ENDIF
	IF  GATHERING_PRODUCT(LOCAL:0, 채집위치) < 1
		DEBUGPRINTFORML 위치가 부적절하기 때문에 %ITEMNAME:(LOCAL:0)%를 스킵
		CONTINUE
	ENDIF
	LOCAL:5 = ITEMPRICE:(LOCAL:0) + 1000
	;채집 파워＋보정치가 √ 아이템 비용+1000을 웃돌면 입수
	;(天候パッチ)猛烈な台風通過後・二つ玉低気圧通過後・スーパーセル通過後は、龍の爪・竜血・竜骨・龍珠の入手成功率が上昇
	IF GROUPMATCH(LOCAL:0, 606, 625, 634, 647) && ((低気圧位置 == "台風一過" && IS_TYPHOON:1 >= 5) || 低気圧位置 == "二つ玉低気圧通過" || (積乱雲位置 == "積乱雲通過" && CAN_CUMULUS:0 == 5))
		DEBUGPRINTFORML %ITEMNAME:(LOCAL:0)% 입수 성공률 상승 중
		IF 채집파워 + Modification < SQRT((LOCAL:5)/2)
			DEBUGPRINTFORML 채집파워 부족 때문에 %ITEMNAME:(LOCAL:0)%를 스킵
			CONTINUE
		ENDIF
	;(天候パッチ)寒冷渦通過後・二つ玉低気圧通過後は、氷の鱗の入手成功率が上昇
	ELSEIF LOCAL:0 == 609 && (低気圧位置 == "寒冷渦通過" || 低気圧位置 == "二つ玉低気圧通過")
		DEBUGPRINTFORML %ITEMNAME:(LOCAL:0)% 입수 성공률 상승 중
		IF 채집파워 + Modification < SQRT((LOCAL:5)/2)
			DEBUGPRINTFORML 채집파워 부족 때문에 %ITEMNAME:(LOCAL:0)%를 스킵
			CONTINUE
		ENDIF
	ELSEIF 채집파워 + Modification < SQRT(LOCAL:5)
		DEBUGPRINTFORML 채집파워 부족 때문에 %ITEMNAME:(LOCAL:0)%를 스킵
		CONTINUE
	ENDIF
	DEBUGPRINTFORML %ITEMNAME:(LOCAL:0)%로 결정
	Chosen = LOCAL:0
	;가격 10000을 넘는 희소 아이템은 1개 밖에 손에 들어 오지 않는, 그것 이하의 가격대는 채집 파워에 응해 복수 입수가 가능하게
	SELECTCASE LOCAL:5
		CASE 0 TO 2000
			QTY = MAX((RAND:(SQRT(채집파워)) - 1), 1)
		CASE 2001 TO 4000
			QTY = MAX((RAND:(SQRT(채집파워)) - 2), 1)
		CASE 4001 TO 7000
			QTY = MAX((RAND:(SQRT(채집파워)) - 3), 1)
		CASE 7001 TO 9999
			QTY = MAX((RAND:(SQRT(채집파워)) - 4), 1)
		CASEELSE
			QTY = 1
	ENDSELECT
	BREAK
NEXT
RETURN Chosen, QTY

; 개인 임의수정, 소재 검색기능 추가
;---- EDIT START ---------------------------------
@SEARCH_GATHERING_ITEM
#DIM ITEM_NUM
#DIMS ITME_NAME

PRINTFORML 채집 소재 검색
CALL COLORMESSAGE(@"중급소재　",C_YELLOW)
CALL COLORMESSAGE(@"고급소재　",C_P_GREEN)
CALL COLORMESSAGE(@"최고급소재",C_AQUA)
PRINTFORML
DRAWLINE

FOR ITEM_NUM,600,641

	SIF ITEMNAME:ITEM_NUM == ""
		CONTINUE
	; 나무만 예외처리
	SIF ITEM_NUM == 610
		CONTINUE

	ITME_NAME = %ITEMNAME:ITEM_NUM%
	IF ITEMPRICE:ITEM_NUM >= 1000
		SETCOLOR C_YELLOW
		SIF ABL:MASTER:교양 < 1
			ITME_NAME = ？？？
	ENDIF
	IF ITEMPRICE:ITEM_NUM >= 3000
		SETCOLOR C_P_GREEN
		SIF ABL:MASTER:교양 < 2
			ITME_NAME = ？？？
	ENDIF
	IF ITEMPRICE:ITEM_NUM >= 10000
		SETCOLOR C_AQUA
		SIF ABL:MASTER:교양 < 3
			ITME_NAME = ？？？
	ENDIF

	PRINTFORMLC [{ITEM_NUM, 3}] %ITME_NAME%
	RESETCOLOR
NEXT

PRINTFORML
DRAWLINE
PRINTFORML [99] 그만둔다
INPUT

ITEM_NUM = RESULT
IF ITEM_NUM == 99
	RETURN -1
ELSE
	CALL SEARCH_GATHERING_ITEM_PLACE(ITEM_NUM)
	CLEARLINE 1
	RESTART
ENDIF

@SEARCH_GATHERING_ITEM_PLACE(ITEM_NUM)
#DIM ITEM_NUM
#DIM PLACE
#DIMS PLACE_NAME

IF (ITEMPRICE:ITEM_NUM >= 1000 && ABL:MASTER:교양 < 1) || (ITEMPRICE:ITEM_NUM >= 3000 && ABL:MASTER:교양 < 2) || (ITEMPRICE:ITEM_NUM >= 10000 && ABL:MASTER:교양 < 3)
	PRINTFORMW 해당 소재의 채집 위치를 알기에는 교양이 부족하다…
	RETURN
ENDIF

FOR PLACE,1, 90
	IF ForagePlaceName(PLACE) == ""
		CONTINUE
	ELSE
		IF GATHERING_PRODUCT(ITEM_NUM, PLACE)
			PLACE_NAME '= ForagePlaceName(PLACE)

			SIF !GATHERING_SEASON(ITEM_NUM, PLACE)
				SETCOLOR 0x606060

			PRINTFORMLC [{PLACE, 2}] %PLACE_NAME%
			RESETCOLOR
		ENDIF
	ENDIF
NEXT

PRINTFORMW
;---- EDIT END -----------------------------------

path: ERB/커맨드관련/COMF/일상계/COMF445 채집한다_t.ERB


code:
;조제한다
@COM446
#DIM 조합물
#DIM 조제후보
#DIM 선택레시피
#DIM 조제건수
#DIM 조제파워
#DIM 조제파워M
#DIM 조제파워T
#DIM CHARA
#DIM R_ID
#DIM PRODUCTION
#DIM 체력소비
#DIM 기력소비

조합물 = 0
조제후보 = 0
선택레시피 = 0
조제건수 = 0
조제파워M = 0
조제파워T = 0

;참가자 판정
IF TARGET && ABL:TARGET:친밀 >= 5 && SHIRAHU(TARGET) && CFLAG:TARGET:동행 != 5
	CHARA = TARGET
ELSE
	CHARA = 0
ENDIF

;조제 파워 설정 조합지식과 교양, 약학 교본을 가지고 있으면 가산
조제파워M = TALENT:MASTER:조제Lv * 15 + ABL:MASTER:교양 * 5 + TFLAG:행운보정 * 5 + TALENT:MASTER:조합지식 * 30
SIF ITEM:약학교본
	조제파워M += 10
SIF CHARA
	조제파워T = TALENT:CHARA:조제Lv * 15 + ABL:CHARA:교양 * 5 + TALENT:CHARA:조합지식 * 30
;참가자로 가장 파워가 높은 것을 기준에,1/2한 이제(이미/벌써/더는/정말) 1명의 파워를 더한다
IF 조제파워M >= 조제파워T
	조제파워 = 조제파워M + (조제파워T / 2)
ELSE
	조제파워 = 조제파워T + (조제파워M / 2)
ENDIF

;①조합물 선택 리스트 화면 묘화, 조제 후보를 선택
CALL PHARMACY_LIST

$INPUT_LOOP01
INPUT
SIF RESULT == 1000
	RETURN -1
조제후보 = RESULT

;②조합물 선택 리스트내의 능력에 의한 레시피 해방·조제 가능한가를 판정
SELECTCASE PHARMACY_RANK(조제후보)
	CASE 0
		CLEARLINE 1
		GOTO INPUT_LOOP01
	CASE 1
		;무조건 해방
	CASE 2, 3
		IF TALENT:MASTER:조제Lv < (PHARMACY_RANK(조제후보) - 1) && ITEM:109 == 0
			CLEARLINE 1
			GOTO INPUT_LOOP01
		ENDIF
	CASE 4, 5
		IF TALENT:MASTER:조제Lv < (PHARMACY_RANK(조제후보) - 1)
			CLEARLINE 1
			GOTO INPUT_LOOP01
		ENDIF
ENDSELECT
;체질 변화약은【금단의지식】소유시만 가능
IF PHARMA_VOLATILE(조제후보) && !TALENT:MASTER:금단의지식
	CLEARLINE 1
	GOTO INPUT_LOOP01
ENDIF

;③조제 레시피리스트를 출력
DRAWLINE
;★여기에 아이템 리스트를 내?

; 아이템 해설. ERB로부터 설명문을 표기
SETCOLOR 0x00FF00
PRINTFORML ●%ITEMNAME:조제후보%　（소지 수：{ITEM:조제후보}）
PRINTFORML 　%ITEM_EXPLANATION(조제후보)%
RESETCOLOR
PRINTL
PRINTL 어느 레시피로 조제합니까?
DRAWLINE
CALL PHARMACY_RECIPELIST(조제후보)

;④레시피 번호를 입력, 실행 가부를 판정
$INPUT_LOOP02
INPUT
SIF RESULT == 0
	RESTART
선택레시피 = RESULT
R_ID = 조제후보 * 10 + 선택레시피
IF !CAN_PHARMA(R_ID)
	CLEARLINE 1
	GOTO INPUT_LOOP02
ENDIF

;⑤조제 회수를 입력, 가부를 판정（70 접수대의 체질 변화약의 종류는 1개 한정, 다른 것은 최대 10회까지）
IF PHARMA_VOLATILE(조제후보)
	PRINTFORML %조사처리(ITEMNAME:조제후보,"는")% 1개씩 밖에 조제할 수 없습니다
ELSE
	PRINTFORML 이 레시피로 %조사처리(ITEMNAME:조제후보,"를")% 몇 개 조제합니까? (1～의 개수를 입력, 0으로 돌아온다)
ENDIF
;그 레시피로 소비하는 소재의 현재의 소지수를 표기
PRINT   소비하는 소재의 소지수:

CALL PHARMACY_CONSUME(R_ID, 0, 1)

PRINTBUTTON "[0] 그만둔다", 0
PRINT
PRINTBUTTON "[1] 1회", 1
PRINT
IF !PHARMA_VOLATILE(조제후보)
	IF CAN_PHARMA(R_ID, 5)
		PRINTBUTTON "[5] 5回", 5
		PRINT
	ENDIF
	IF CAN_PHARMA(R_ID, 10)
		PRINTBUTTON "[10] 10回", 10
		PRINT
	ENDIF
ENDIF

$INPUT_LOOP03
INPUT
조제건수 = RESULT
SIF RESULT == 0
	RESTART
PRODUCTION = CAN_PHARMA(R_ID, 조제건수)
IF PRODUCTION && 조제건수 <= 10
	CLEARLINE 1
	;체질 변화薬は入力回数に関わらず強制的に１回に絞る
	SIF PHARMA_VOLATILE(조제후보)
		조제건수 = 1
	PRINTFORML %조사처리(ITEMNAME:조제후보,"를")% {조제건수}번 레시피로 {PRODUCTION}개 조제하기로 했다
	;조제시 전후에서의 소비 아이템의 수를 표기
	PRINT   소비하는 소재:
	CALL PHARMACY_CONSUME(R_ID, 조제건수, 1)
	;조제 성공시 아이템 개수가 99를 넘는 경우는 경고를 낸다
	IF ITEM:(조제후보) + PRODUCTION > 99 ;KR판 임의수정, {PRODUCTION - 99} >> {PRODUCTION - (99 - ITEM:조제후보)} 수정
		PRINTFORML   이 상태로는 %조사처리(ITEMNAME:조제후보,"를")% 전부 보관 할 수 없고, {PRODUCTION - (99 - ITEM:조제후보)}개가 사라져 버린다
	ELSE
		PRINTFORML   조제 성공시 %ITEMNAME:조제후보%의 개수: ({ITEM:조제후보}→{ITEM:조제후보 + PRODUCTION})
	ENDIF
	IF PHARMACY_RANK(조제후보) == 1
		PRINTL 일단 실패 하지는 않을 것 같다…
	ELSEIF PHARMACY_RANK(조제후보) >= 2
		SELECTCASE (조제파워 - (PHARMACY_RANK(조제후보) * 20))
			CASE IS <= -100
				PRINTL 계획은 세웠지만, 미지의 요소투성이다…일단 실패할 것 같다
			CASE -99 TO -50
				PRINTL 이 조제에 성공하는건 지극히 어려운 편이다…
			CASE -49 TO -30
				PRINTL 이 조제는 실패할 확률이 높은 것 같다…
			CASE -29 TO -10
				PRINTL 이 조제에는 실패의 리스크가 있다…
			CASE -9 TO -1
				PRINTL 이 조제는 거의 성공할 것 같다…
			CASEELSE
				PRINTL 일단 실패 하지는 않을 것 같다…
		ENDSELECT
	ENDIF
	PRINT 조제합니까?
	IF PHARMA_VOLATILE(조제후보)
		SETCOLOR 0x666666
		PRINTFORML （이 아이템은 대상을 선택할 수 없으면 파기되기 때문에 소재가 낭비될 위험이 있습니다）
		RESETCOLOR
	ELSE
		PRINTL
	ENDIF
	CALL ASK_YN
	IF !RESULT
	;앞으로 나아간다
	ELSE
		조제건수 = 0
		CLEARLINE 8
		RETURN -1
	ENDIF
ELSE
	조제건수 = 0
	CLEARLINE 1
	GOTO INPUT_LOOP03
ENDIF

;여기까지로 조건을 모두 클리어 하고 있는 경우는 이하에 진행
REPEAT 5
	REUSELASTLINE  \@ CHARA ? %조사처리(CALLNAME:CHARA,"와")% 함께 #  \@조제중.%"." * COUNT%
	TWAIT 150, 1
REND
R_ID = 조합물 * 10 + 선택레시피
;⑥조제의 성공 판정
IF PHARMACY_RANK(조제후보) != 1
	IF 조제파워 >= RAND:(PHARMACY_RANK(조제후보) * 20)
		PRINTFORML 조제에 성공했다!
		조합물 = 조제후보
		;조제 후 입수 개수를 흘려 넣는다
		TFLAG:194 = PRODUCTION
	ELSE
		PRINTFORML 조제에 실패했다…
		조합물 = 0
	ENDIF
;조제 LV1 레시피는 100％성공
ELSE
	PRINTFORML 조제에 성공했다!
	조합물 = 조제후보
	;조제 후 입수 개수를 흘려 넣는다
	TFLAG:194 = PRODUCTION
ENDIF

;소재 아이템 소비 처리를 여기서
PRINT   이번 소비한 소재:
R_ID = (조제후보 * 10 + 선택레시피)
CALL PHARMACY_CONSUME(R_ID, 조제건수)

;⑦ 아이템 입수 처리 99개 이상이 되지 않도록 한다
;  체질 개변약은 입수 처리 대신에 사용 처리로 난다
IF PHARMA_VOLATILE(조합물)
	CALL PHARMACY_CONSTITUTIONAL(조합물)
ELSEIF 조합물 != 0
	IF ITEM:(조합물) + TFLAG:194 > 99
		ITEM:(조합물) = 99
	ELSE
		ITEM:(조합물) += TFLAG:194
	ENDIF
ENDIF

;⑧경험 가산 조제 성공시는 조제 난이도×조제 건수경험
EXP:MASTER:조제경험 += PHARMACY_EXP(조제후보, 조제건수, 조합물)
SIF CHARA
	EXP:CHARA:조제경험 += PHARMACY_EXP(조제후보, 조제건수, 조합물)
;약학 교본 가지고 있으면 추가
SIF ITEM:109
	EXP:MASTER:조제경험 += MAX(RAND:(조제건수), 1)

;능력차이로 가르쳐 받는·가르쳐 준다
IF 조제파워M >= 조제파워T && CHARA
	EXP:CHARA:조제경험 ++
ELSEIF CHARA
	EXP:MASTER:조제경험 ++
ENDIF

;⑨시간 경과 조제 난이도와 조제 건수에 의해 보정
TIME += PHARMACY_TIME(조제후보, 조제건수)

;⑩체력·기력 감소 처리
체력소비 = 30 * SQRT(조제건수)
기력소비 = MAX((((50 * PHARMACY_RANK(조제후보)) - (15 * TALENT:MASTER:조합지식 + 10 * TALENT:MASTER:조제Lv))), 30) * SQRT(조제건수)
;自室かつ机椅子があると体力기력소비低減
IF CFLAG:MASTER:현재위치 == CFLAG:MASTER:초기위치 && ITEM:느티책상의자
	SELECTCASE ITEM:느티책상의자
		CASE 1
			TIMES 체력소비, 0.9
			TIMES 기력소비, 0.9
		CASE 2
			TIMES 체력소비, 0.85
			TIMES 기력소비, 0.85
		CASE 3
			TIMES 체력소비, 0.8
			TIMES 기력소비, 0.8
	ENDSELECT
	PRINTFORML 책상 위는 항상 정리정돈이 잘 되어 있어 효율적으로 조제를 진행할 수 있었다
ENDIF
DOWNBASE:MASTER:체력 = 체력소비
DOWNBASE:MASTER:기력 = 기력소비

;참가자의 소스, 동일 커맨드 제한을 받지 않기 때문에 소극적으로, 조제 실패는 반감
IF CHARA > 0
	;고정으로 획득하는 소스
	SOURCE:CHARA:환락 = 200
	SOURCE:CHARA:사랑 = 50

	;ABL:순종을 본다
	IF ABL:순종 <= 1
		SOURCE:CHARA:환락 += (ABL:순종 * 40)
		SOURCE:CHARA:사랑 += (ABL:친밀 * 20)
	ELSEIF ABL:순종 <= 3
		SOURCE:CHARA:환락 += 200 + (ABL:순종 * 40)
		SOURCE:CHARA:사랑 += 50 + (ABL:친밀 * 30)
	ELSEIF ABL:순종 <= 5
		SOURCE:CHARA:환락 += 500 + (ABL:순종 * 40)
		SOURCE:CHARA:사랑 += 200 + (ABL:친밀 * 30)
	ELSEIF ABL:순종 <= 8
		SOURCE:CHARA:환락 += 750 + (ABL:순종 * 60)
		SOURCE:CHARA:사랑 += 300 + (ABL:친밀 * 40)
	ELSEIF ABL:순종 <= 11
		SOURCE:CHARA:환락 += 1000 + (ABL:순종 * 60)
		SOURCE:CHARA:사랑 += 600 + (ABL:친밀 * 40)
	ELSE
		SOURCE:CHARA:환락 += 1600 + (ABL:순종 * 30)
		SOURCE:CHARA:사랑 += 1000 + (ABL:친밀 * 20)
	ENDIF

	;호감도는 보지 않는다

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

	;조제 성과를 보는, 조제 난이도로 설정
	IF 조합물
		SELECTCASE PHARMACY_RANK(조합물)
			CASE 1
				TIMES SOURCE:CHARA:환락 , 1.00
				TIMES SOURCE:CHARA:수동 , 1.00
				TIMES SOURCE:CHARA:정복 , 1.00
				SOURCE:CHARA:달성 = 80
			CASE 2
				TIMES SOURCE:CHARA:환락 , 1.25
				TIMES SOURCE:CHARA:수동 , 1.25
				TIMES SOURCE:CHARA:정복 , 1.15
				SOURCE:CHARA:달성 = 125
			CASE 3
				TIMES SOURCE:CHARA:환락 , 1.50
				TIMES SOURCE:CHARA:수동 , 1.50
				TIMES SOURCE:CHARA:정복 , 1.25
				SOURCE:CHARA:달성 = 150
			CASE 4
				TIMES SOURCE:CHARA:환락 , 1.75
				TIMES SOURCE:CHARA:수동 , 1.75
				TIMES SOURCE:CHARA:정복 , 1.50
				SOURCE:CHARA:달성 = 200
			CASE 5
				TIMES SOURCE:CHARA:환락 , 2.00
				TIMES SOURCE:CHARA:수동 , 2.00
				TIMES SOURCE:CHARA:정복 , 1.75
				SOURCE:CHARA:달성 = 300
			CASEELSE
				TIMES SOURCE:CHARA:환락 , 2.25
				TIMES SOURCE:CHARA:수동 , 2.25
				TIMES SOURCE:CHARA:정복 , 2.00
				SOURCE:CHARA:달성 = 350
		ENDSELECT
	;조제 실패
	ELSE
		TIMES SOURCE:CHARA:환락 , 0.50
		TIMES SOURCE:CHARA:수동 , 0.50
		TIMES SOURCE:CHARA:정복 , 0.50
	ENDIF
ENDIF

;플래그 인도
TFLAG:SELECTCOM분기 = 조합물

RETURN 1

;-------------------------------------------------
;실행 가능 판정
;-------------------------------------------------
;조제한다
@COM_ABLE446
SIF !TFLAG:100
	RETURN 0
;일괄관리
SIF GLOBAL_COMABLE(446)
	RETURN RESULT
;조제할 수 있는 장소가 아니다
SIF !PHARMACY_SPOT(CFLAG:MASTER:현재위치)
	RETURN 0
;조제 용품 일식을 가지지 않고, 특수 조제 스팟이 아니다
SIF ITEM:(29) == 0 && PHARMACY_SPOT(CFLAG:MASTER:현재위치) == 1
	RETURN 0
;수면중
SIF CFLAG:MASTER:수면
	RETURN 0
SIF CFLAG:우후후
	RETURN 0
;기력 0
SIF BASE:MASTER:기력 <= 0
	RETURN 0
;시간 정지중
SIF FLAG:70
	RETURN 0
RETURN 1

;-----------------------------------------------------------
;조제 가능 스팟인가 어떤가를 판정하는 함수
;ARG		현재 위치
;RETURN		0 불가	1가능	2 조제 세트 없어도 가능（특수 조제 스팟）
;COMMENT	기본은 초기 위치, 그것 같은 장소가 있을 때는 그 쪽도.
;			장소를 추가했을 경우, CASE를 변경의 일
;-----------------------------------------------------------
@PHARMACY_SPOT(ARG)
#FUNCTION

SIF ARG == CFLAG:MASTER:초기위치
	RETURNF 1
;특수 조제 스팟, 메인 맵에서의 판정
SELECTCASE MAIN_MAP
	CASE 0
		;박영험이 있는 신사:무한 유적·연구실
		SIF GROUPMATCH(ARG, 49)
			RETURNF 2
	CASE 1
		;묘우렌절:조약실
		SIF GROUPMATCH(ARG, 132)
			RETURNF 2
	CASE 4
		;영원정:조제실
		SIF GROUPMATCH(ARG, 405)
			RETURNF 2
	CASE 5
		;마법의숲:마리사택·연구부가게, 인형의 관·연구실
		SIF GROUPMATCH(ARG, 513, 524)
			RETURNF 2
	CASE 6
		;명계:케이키의 방
		SIF GROUPMATCH(ARG, 644)
			RETURNF 2
	CASE 7
		;요괴의산 산록:갓빠의 아지트
		SIF GROUPMATCH(ARG, 704)
			RETURNF 2
ENDSELECT

RETURNF 0

@CAN_PHARMA(R_ID, AMT = 1)
#FUNCTION
#DIM R_ID
#DIM AMT
#DIM INGREDIENT

SIF RECIPE_DATA(R_ID) == -1
	RETURNF 0
;SIF RECIPE_DATA(R_ID, 7) && !TFLAG:물긷기
SIF RECIPE_DATA(R_ID, 7) && VAR_WATER == ""
	RETURNF 0

;特定キャラの친밀依存アイテムを弾く
SELECTCASE R_ID / 10
	CASE 513
		SIF ABL:[[아큐]]:친밀 < 5
			RETURNF 0
	CASE 514, 515
		SIF ABL:[[에이린]]:친밀 < 5
			RETURNF 0
	CASE 516, 517
		SIF ABL:[[메디슨]]:친밀 < 5
			RETURNF 0
	CASE 531
		SIF ABL:[[모코우]]:친밀 < 5
			RETURNF 0
	CASE 850
		SIF ABL:[[마리사]]:친밀 < 5
			RETURNF 0
	CASE 851
		SIF ABL:[[치르노]]:친밀 < 5
			RETURNF 0
	CASE 852
		SIF ABL:[[후토]]:친밀 < 5
			RETURNF 0
	CASE 853
		SIF ABL:[[유카리]]:친밀 < 5
			RETURNF 0
	CASE 854
		SIF ABL:[[파츄리]]:친밀 < 5
			RETURNF 0
	CASE 855
		SIF ABL:[[나루미]]:친밀 < 5
			RETURNF 0
ENDSELECT

FOR LOCAL,0,6
	INGREDIENT = RECIPE_DATA(R_ID, LOCAL)
	SIF !INGREDIENT
		BREAK
	SIF ITEM:INGREDIENT < AMT
		RETURNF 0
NEXT
SIF ITEM:RECIPE_DATA(R_ID) < AMT * RECIPE_DATA(R_ID, 8)
	RETURNF 0

RETURNF AMT * RECIPE_DATA(R_ID, 6)

;-----------------------------------------------------------
;조합물 선택 리스트를 묘화 한다
;  MASTER의 조합지식이나 교양의 레벨에 응해 리스트가 해방되는 구조
;  체질 변화약의 종류는【금단의지식】하지만 없으면 해방되지 않는다
;-----------------------------------------------------------
@PHARMACY_LIST
#DIMS 아이템명

PRINTL 무엇을 조제합니까?
PRINTL ■조제 Lv1===========================================================================================================
LOCAL:1 = 999
FOR LOCAL:0 ,0, 1000
	SELECTCASE PHARMACY_RANK(LOCAL:0)
		CASE 1
			CALL PHARMACY_LIST_BUTTON(LOCAL:0, LOCAL:1)
			LOCAL:1 = RESULT
	ENDSELECT
NEXT
PRINTL
PRINTL ■조제 Lv2===========================================================================================================
;교양 혹은 조합지식, 약학 교본으로 리스트 해방
IF TALENT:MASTER:조제Lv >= 1 || ITEM:약학교본
	LOCAL:1 = 999
	FOR LOCAL:0 ,0, 1000
		SELECTCASE PHARMACY_RANK(LOCAL:0)
			CASE 2
				CALL PHARMACY_LIST_BUTTON(LOCAL:0, LOCAL:1)
				LOCAL:1 = RESULT
		ENDSELECT
	NEXT
ELSE
	SETCOLOR 0x666666
	PRINTFORM 　　????
	RESETCOLOR
ENDIF
PRINTL
;후는 교양 레벨과 조합지식 레벨을 바꾸어 반복해, 잘 정리하고 싶다（약학 교본에서의 해금은 Lv3까지）
PRINTL ■조제 Lv3===========================================================================================================
IF TALENT:MASTER:조제Lv >= 2 || ITEM:약학교본
	LOCAL:1 = 999
	FOR LOCAL:0 ,0, 1000
		SELECTCASE PHARMACY_RANK(LOCAL:0)
			CASE 3
				CALL PHARMACY_LIST_BUTTON(LOCAL:0, LOCAL:1)
				LOCAL:1 = RESULT
		ENDSELECT
	NEXT
ELSE
	SETCOLOR 0x666666
	PRINTFORM 　　????
	RESETCOLOR
ENDIF
PRINTL
PRINTL ■조제 Lv4===========================================================================================================
IF TALENT:MASTER:조제Lv >= 3
	LOCAL:1 = 999
	FOR LOCAL:0 ,0, 1000
		SELECTCASE PHARMACY_RANK(LOCAL:0)
			CASE 4
				;체질 변화약은【금단의지식】하지만 없는 경우는 스킵
				SIF PHARMA_VOLATILE(LOCAL:0) && !TALENT:MASTER:금단의지식
					CONTINUE
				CALL PHARMACY_LIST_BUTTON(LOCAL:0, LOCAL:1)
				LOCAL:1 = RESULT
		ENDSELECT
	NEXT
ELSE
	SETCOLOR 0x666666
	PRINTFORM 　　????
	RESETCOLOR
ENDIF
PRINTL
PRINTL ■조제 Lv5===========================================================================================================
IF TALENT:MASTER:조제Lv >= 4
	LOCAL:1 = 999
	FOR LOCAL:0 ,0, 1000
		SELECTCASE PHARMACY_RANK(LOCAL:0)
			CASE 5
				SIF PHARMA_VOLATILE(LOCAL:0) && !TALENT:MASTER:금단의지식
					CONTINUE
				CALL PHARMACY_LIST_BUTTON(LOCAL:0, LOCAL:1)
				LOCAL:1 = RESULT
		ENDSELECT
	NEXT
ELSE
	SETCOLOR 0x666666
	PRINTFORM 　　????
	RESETCOLOR
ENDIF
PRINTL
DRAWLINE
PRINTL 　　[1000] 그만둔다

;-----------------------------------------------------------
;레시피리스트용 버튼 작성·개행
;ARGS:0 레시피명（캐릭터 라인）, ARG:1 레시피 번호, ARG:2 아이템 번호
;PHARMACY 함수로 판정해 소재가 부족한 경우, 버튼을 무효(회색)에
;-----------------------------------------------------------
@BUTTON_RECIPE(ARGS:0, ARG:1, ARG:2)
#DIM R_ID
R_ID = ARG:2 * 10 + ARG:1
IF !CAN_PHARMA(R_ID)
	SETCOLOR 0x606060
	PRINTPLAINFORM [{ARG:1}] %ARGS:0%
	RESETCOLOR
ELSE
	PRINTBUTTON @"[{ARG:1}] %ARGS:0%", ARG:1
ENDIF
PRINTL

;-----------------------------------------------------------
;レシピをテキスト化し表示する
;-----------------------------------------------------------
@TEXT_FOR_RECIPEBUTTON(R_ID)
#DIM R_ID
#DIM INGREDIENT
VARSET LOCALS
;単一素材複数使用レシピは×いくつ表記で省略する
IF RECIPE_DATA(R_ID, 8)
	LOCALS += ITEMNAME:RECIPE_DATA(R_ID, 0)
	LOCALS += "("
	LOCALS += TOSTR(ITEM:RECIPE_DATA(R_ID, 0))
	LOCALS += ")×"
	LOCALS += TOSTR(RECIPE_DATA(R_ID, 8))
	LOCALS += " "
ELSE
	FOR LOCAL,0,6
		INGREDIENT = RECIPE_DATA(R_ID, LOCAL)
		SIF !INGREDIENT
			BREAK
		LOCALS += ITEMNAME:INGREDIENT
		LOCALS += "("
		LOCALS += TOSTR(ITEM:INGREDIENT)
		LOCALS += ")"
		LOCALS += " "
	NEXT
ENDIF
SIF RECIPE_DATA(R_ID, 7)
	LOCALS += "水"
LOCALS += "→（"
LOCALS += TOSTR(RECIPE_DATA(R_ID, 6))
LOCALS += "）"
CALL BUTTON_RECIPE(@"%LOCALS%", R_ID % 10, R_ID / 10)

;-----------------------------------------------------------
;アイテム番号ARG:0の調合レシピをボタン形式でリスト化し描画する
;-----------------------------------------------------------
@PHARMACY_RECIPELIST(ARG:0)
#DIM R_ID

FOR LOCAL,1,6
	R_ID = ARG:0 * 10 + LOCAL
	SIF RECIPE_DATA(R_ID) == -1
		BREAK
	CALL TEXT_FOR_RECIPEBUTTON(R_ID)
NEXT
PRINTL [0] 그만둔다

;-----------------------------------------------------------
; 아이템 번호*10 + 레시피 번호 = ARG:0을 ARG:1회 작성했을 경우에
;기정량의 소재 아이템을 감소시켜, 소비수의 텍스트를 흘린다
;ARG:2가 1 때는 아이템의 감소는 하지 않는다（소비 예정의 텍스트만 흘린다）
;한층 더 ARG:1이 0 때는, 필요 소재의 현소지수만을 텍스트 표기
;ARG:2는 미입력이라면 0
;COMMENT	 아이템이나 레시피를 추가했을 경우는, CASE에 덧붙여 씀
;-----------------------------------------------------------
@PHARMACY_CONSUME(ARG:0, ARG:1, ARG:2 = 0)
#DIM CONSUMED_ITEM
#DIM ING, 6

FOR LOCAL,0,6
	ING:LOCAL = RECIPE_DATA(ARG:0, LOCAL)
NEXT
;単一素材複数利用型レシピの場合は表記を変える
IF RECIPE_DATA(ARG:0, 8)
	CALL PHARMACY_CONSUME_T_LOT(ING:0, ARG:1, RECIPE_DATA(ARG:0, 8))
ELSE
	CALL PHARMACY_CONSUME_T(ING:0, ARG:1, ING:1, ARG:1, ING:2, ARG:1, ING:3, ARG:1, ING:4, ARG:1, ING:5, ARG:1)
ENDIF
;단일소재 복수이용시 왠지 소재소모가 이상해지므로 수정
IF ARG:2 == 0
	IF RECIPE_DATA(ARG:0, 8)
		ITEM:(ING:0) -=  (ARG:1)*RECIPE_DATA(ARG:0, 8)
	ELSE
		FOR LOCAL,0,6
			CONSUMED_ITEM = ING:LOCAL
			SIF !CONSUMED_ITEM
				BREAK
			ITEM:CONSUMED_ITEM -= ARG:1
		NEXT
	ENDIF
ENDIF
;水汲みフラグを0にするのは、ARG:2が0の時（実際に調合が行われた時）のみ
SIF RECIPE_DATA(ARG:0, 7) && ARG:2 == 0
	;TFLAG:물긷기 = 0
	VAR_WATER =
;-----------------------------------------------------------
; 아이템을 조제했을 때의 소재 소비량을 문장으로 표기한다
;（소재는 물을 제외해 6종이 상한）
;ARG:0, 2, 4, 6, 8, 10에는 소재의 아이템 번호,
;ARG:1, 3, 5, 7, 9, 11에는 필요 소재 개수를 입력
;ARG;2이후는 입력하지 않으면 스킵 된다
;ARG:1이 0때는, 소재의 현소지량만이 표기된다
;-----------------------------------------------------------
@PHARMACY_CONSUME_T(ARG:0, ARG:1, ARG:2 = 0, ARG:3 = 0, ARG:4 = 0, ARG:5 = 0, ARG:6 = 0, ARG:7 = 0, ARG:8 = 0, ARG:9 = 0, ARG:10 = 0, ARG:11 = 0)

IF ARG:1 > 0
	PRINTFORM %ITEMNAME:(ARG:0)%({ITEM:(ARG:0)}→{ITEM:(ARG:0) - ARG:1})
	SIF ARG:2
		PRINTFORM 　%ITEMNAME:(ARG:2)%({ITEM:(ARG:2)}→{ITEM:(ARG:2) - ARG:3})
	SIF ARG:4
		PRINTFORM 　%ITEMNAME:(ARG:4)%({ITEM:(ARG:4)}→{ITEM:(ARG:4) - ARG:5})
	SIF ARG:6
		PRINTFORM 　%ITEMNAME:(ARG:6)%({ITEM:(ARG:6)}→{ITEM:(ARG:6) - ARG:7})
	SIF ARG:8
		PRINTFORM 　%ITEMNAME:(ARG:8)%({ITEM:(ARG:8)}→{ITEM:(ARG:8) - ARG:9})
	SIF ARG:10
		PRINTFORM 　%ITEMNAME:(ARG:10)%({ITEM:(ARG:10)}→{ITEM:(ARG:10) - ARG:11})
ELSE
	PRINTFORM %ITEMNAME:(ARG:0)%({ITEM:(ARG:0)})
	SIF ARG:2
		PRINTFORM 　%ITEMNAME:(ARG:2)%({ITEM:(ARG:2)})
	SIF ARG:4
		PRINTFORM 　%ITEMNAME:(ARG:4)%({ITEM:(ARG:4)})
	SIF ARG:6
		PRINTFORM 　%ITEMNAME:(ARG:6)%({ITEM:(ARG:6)})
	SIF ARG:8
		PRINTFORM 　%ITEMNAME:(ARG:8)%({ITEM:(ARG:8)})
	SIF ARG:10
		PRINTFORM 　%ITEMNAME:(ARG:10)%({ITEM:(ARG:10)})
ENDIF
PRINTL
;-----------------------------------------------------------
;アイテムを調合したときの素材消費量を文章で表記する
;同一素材複数必要利用型レシピの表記
;ARG:0に必要素材アイテム番号、ARG:1に必要素材個数を入力
;ARG:2にはRECIPE_DATA(ARG:0, 8)のLOT数を入力する
;現状のレシピでは１種の素材のみを複数個用意すればいいので、とりあえず簡略化
;ARG:1が0の時は、素材の現所持量のみが表記される
;-----------------------------------------------------------
@PHARMACY_CONSUME_T_LOT(ARG:0, ARG:1, ARG:2)

IF ARG:1 > 0
	PRINTFORM %ITEMNAME:(ARG:0)%({ITEM:(ARG:0)}→{ITEM:(ARG:0) - (ARG:1 * ARG:2)})
ELSE
	PRINTFORM %ITEMNAME:(ARG:0)%({ITEM:(ARG:0)})
ENDIF
PRINTL
;-----------------------------------------------------------
;ARG:0번의 아이템의 조제에 걸리는 시간을 산출하는 함수
;ARG:1에 조제 건수를 입력, 건수가 많으면 보정을 걸친다
;-----------------------------------------------------------
@PHARMACY_TIME(ARG:0, ARG:1)
#FUNCTION

SELECTCASE PHARMACY_RANK(ARG:0)
	CASE 1
		LOCAL:0 = 30
	CASE 2
		LOCAL:0 = 40
	CASE 3
		LOCAL:0 = 50
	CASE 4
		LOCAL:0 = 65
	CASE 5
		LOCAL:0 = 80
ENDSELECT
;自室かつ机椅子があると時間短縮
IF CFLAG:MASTER:현재위치 == CFLAG:MASTER:초기위치 && ITEM:느티책상의자
	SELECTCASE ITEM:느티책상의자
		CASE 1
			TIMES LOCAL:0, 0.90
		CASE 2
			TIMES LOCAL:0, 0.85
		CASE 3
			TIMES LOCAL:0, 0.80
	ENDSELECT
ENDIF
;√조제 건수를 걸친다
SELECTCASE ARG:1
	CASE 1
		TIMES LOCAL:0, 1
	CASE 2
		TIMES LOCAL:0, 1.4
	CASE 3
		TIMES LOCAL:0, 1.7
	CASE 4
		TIMES LOCAL:0, 2
	CASE 5
		TIMES LOCAL:0, 2.2
	CASE 6
		TIMES LOCAL:0, 2.4
	CASE 7
		TIMES LOCAL:0, 2.6
	CASE 8
		TIMES LOCAL:0, 2.8
	CASE 9
		TIMES LOCAL:0, 3
	CASE 10
		TIMES LOCAL:0, 3.1
ENDSELECT
RETURNF LOCAL:0

;-----------------------------------------------------------
;ARG:0번의 아이템의 조제로 얻을 수 있는 경험치를 산출하는 함수
;ARG:1에 조제 건수, ARG:2에 조제 결과를 입력
;-----------------------------------------------------------
@PHARMACY_EXP(ARG:0, ARG:1, ARG:2)
#FUNCTION
;성공시
IF ARG:2
	SELECTCASE PHARMACY_RANK(ARG:0)
		CASE 1
			LOCAL:0 = 1
		CASE 2
			LOCAL:0 = 1
		CASE 3
			LOCAL:0 = 2
		CASE 4
			LOCAL:0 = 2
		CASE 5
			LOCAL:0 = 3
	ENDSELECT
ELSE
;실패시
	SELECTCASE PHARMACY_RANK(ARG:0)
		CASE 1
			LOCAL:0 = 2
		CASE 2
			LOCAL:0 = 2
		CASE 3
			LOCAL:0 = 3
		CASE 4
			LOCAL:0 = 5
		CASE 5
			LOCAL:0 = 10
	ENDSELECT
ENDIF
;조제 건수를 걸친다
RETURNF (LOCAL:0 * ARG:1)

;-----------------------------------------------------------
;ARG:0번의 아이템이 체질 개변약이었던 경우의 처리
;-----------------------------------------------------------
@PHARMACY_CONSTITUTIONAL(ARG:0)

SELECTCASE ARG:0
	CASE 71
		PRINTFORML 【약의 재료(쌍)】를 누구에게 사용합니까?
		CALL SHOW_CHARA_LIST("여자")
		LOCAL:1 = RESULT
		SELECTCASE LOCAL:1
			CASE 999
				PRINTFORML 사용할 마음이 사라져 결국 파기하는 일이 되었다…
			CASEELSE
				PRINTFORML %조사처리(CALLNAME:(LOCAL:1),"는")% 후타나리가 되었습니다
				TALENT:(LOCAL:1):성별 |= 2
				MAXBASE:(LOCAL:1):2 = 10000
				MAXBASE:(LOCAL:1):정력 = 1000
				MAXBASE:(LOCAL:1):발기 = 1500
				SIF BASE:(LOCAL:1):정력 > 1000
					BASE:(LOCAL:1):정력 = 1000
			ENDSELECT
	CASE 72
		PRINTFORML 【약의 재료(소)】를 누구에게 사용합니까?
		CALL SHOW_CHARA_LIST("후타나리")
		LOCAL:1 = RESULT
		SELECTCASE LOCAL:1
			CASE 999
				PRINTFORML 사용할 마음이 사라져 결국 파기하는 일이 되었다…
			CASEELSE
				PRINTFORML %조사처리(CALLNAME:(LOCAL:1),"는")% 여자아이가 되었습니다
				TALENT:(LOCAL:1):성별 = 1
				MAXBASE:(LOCAL:1):2 = 0
				MAXBASE:(LOCAL:1):정력 = 0
				TALENT:(LOCAL:1):120 = 0
			ENDSELECT
	CASE 74
		PRINTFORML 【붉은 캔디】를 누구에게 사용합니까?
		CALL SHOW_CHARA_LIST("비처녀")
		LOCAL:1 = RESULT
		SELECTCASE LOCAL:1
			CASE 999
				PRINTFORML 사용할 마음이 사라져 결국 파기하는 일이 되었다…
			CASEELSE
				PRINTFORML %CALLNAME:(LOCAL:1)%의 처녀막이 재생했습니다
				TALENT:(LOCAL:1):처녀 = 2
			ENDSELECT
	CASE 77
		PRINTFORML 【갈색의 캔디】를 누구에게 사용합니까?
		CALL SHOW_CHARA_LIST("인간귀")
		LOCAL:1 = RESULT
		SELECTCASE LOCAL:1
			CASE 999
				PRINTFORML 사용할 마음이 사라져 결국 파기하는 일이 되었다…
			CASEELSE
				PRINTFORML [4]고양이 귀
				PRINTFORML [3]강아지 귀
				PRINTFORML [2]토끼 귀
				PRINTFORML [1]동물귀
				PRINTFORML
				PRINTFORML [0]역시 그만둔다
				DO
					INPUT
					SELECTCASE RESULT
					CASE 0
						PRINTFORML 사용할 마음이 사라져 결국 파기하는 일이 되었다…
					CASE 1, 2, 3, 4
						TALENT:(LOCAL:1):동물귀 = RESULT
						PRINTFORML %CALLNAME:(LOCAL:1)%에게 %GET_TALENTNAME(GETNUM(TALENT, "동물귀"), TALENT:(LOCAL:1):동물귀)%가 났습니다
						BREAK
					CASEELSE
					ENDSELECT
				LOOP 1
		ENDSELECT
	CASE 78
		PRINTFORML 【물색의 캔디】를 누구에게 사용합니까?
		CALL SHOW_CHARA_LIST("동물귀")
		LOCAL:1 = RESULT
		SELECTCASE LOCAL:1
			CASE 999
				PRINTFORML 사용할 마음이 사라져 결국 파기하는 일이 되었다…
			CASEELSE
				PRINTFORML %CALLNAME:(LOCAL:1)%의 %GET_TALENTNAME(GETNUM(TALENT, "동물귀"), TALENT:(LOCAL:1):동물귀)%가 사라졌습니다
				TALENT:(LOCAL:1):동물귀 = 0
		ENDSELECT
ENDSELECT

@PHARMACY_LIST_BUTTON(ARG,개행용)
#DIMS 아이템명
#DIM 개행용
#DIM R_ID
아이템명 = [{ARG}] %ITEMNAME:(ARG), 18, LEFT%
개행용 += STRLENS(아이템명)
SIF LOCAL:0 < 100
	개행용 ++
IF 개행용 > 116
	IF 개행용 >= 999
	;최초만 개행하지 않는다
	ELSE
		PRINTL
	ENDIF
	개행용 = STRLENS(아이템명)
	SIF LOCAL:0 < 100
		개행용 ++
	PRINT
ENDIF
;一旦灰色にセット
SETCOLOR 0x666666
FOR LOCAL,1,6
	R_ID = ARG * 10 + LOCAL
	;可能なレシピがあれば白に戻す
	SIF CAN_PHARMA(R_ID)
		RESETCOLOR
NEXT

PRINTFORM [{ARG}] %ITEMNAME:(ARG), 18, LEFT%
SIF ARG < 100
	PRINT
RESETCOLOR
PRINT
RETURN 개행용

repo_name: DNS/eraTWKR

path: ERB/커맨드관련/COMF/일상계/COMF446 조제한다_t.ERB

license: mit


code:
;露店を開く
@COM447
#DIM 候補個数
#DIM 商人パワーM
#DIM 商人パワーT
#DIM 商人パワー
#DIM 来客数
#DIM 売却値
#DIM 合計売却値
#DIM CHARA
#DIM GoodsID, 6
#DIM GoodsQty, 6
#DIM GoodsSold, 6
#DIM Lineup
#DIM LinesToErase

;売却アイテムの種類を増やすときは、★  を検索してください
;管理者がはっきりしている人の敷地での無断での商売はしない
IF STALL_PERMISSION(CFLAG:MASTER:현재위치)
	DRAWLINE
	PRINTFORML 여기서 무단으로 장사를 하는 것은 문제가 될 것 같다… 세력과 친해지는 편이 좋을 것이다
	RETURN -1
ENDIF

商人パワー = 0
商人パワーM = 0
商人パワーT = 0
売却値 = 0
合計売却値 = 0
Lineup = 0
VARSET LOCAL
VARSET GoodsID
VARSET GoodsQty
VARSET GoodsSold
DRAWLINE
PRINTL
;来客数を算出し、にぎわいを可視化
来客数 = STALL_SHOPPER(STALL_SPOT(CFLAG:MASTER:현재위치)) + IN_ROOM_NUMBER(CFLAG:MASTER:현재위치)
;PRINTFORML {来客数}人
IF AT_HOME()
	PRINTFORMS NAME_FROM_PLACE(CFLAG:MASTER:현재위치)
ELSE
	PRINTFORM %DATENAME_SPOT()%
ENDIF
SELECTCASE 来客数
	CASE 0
		PRINTFORML 에는 사람 한사람 없다…
	CASE 1 TO 5
		PRINTFORML (은)는 한산하다
	CASE 6 TO 10
		PRINTFORML 에는 적지만 왕래가 있다
	CASE 11 TO 20
		PRINTFORML (은)는 적당히 성황을 보이고 있다
	CASE 21 TO 30
		PRINTFORML (은)는 꽤 떠들썩하다
	CASEELSE
		PRINTFORML (은)는 입추의 여지도 없을 정도의 성황이다！
ENDSELECT
PRINTL
PRINTFORML 그런데, 무엇을 팔까…
DRAWLINE

;１個目のアイテムからスタート
Lineup = 1
$SELECT_LOOP
;LinesToErase は消去行数の計算に利用
LinesToErase = 1
;所持しているアイテムの売却可能物・個数をリスト化
LOCAL:10 = 999
FOR LOCAL, 351, 710
	SELECTCASE LOCAL
	;★팔리는 아이템을 아래의 CASE에 추가
		CASE 351 TO 398, 500 TO 512, 600, 611, 616, 626 TO 629, 700 TO 708
		;GoodsID에 팔려고 내놓는 아이템의 번호를 알려 주다
			IF ITEM:(LOCAL) > 0 || (STALL_SPOT(CFLAG:MASTER:현재위치) == 5 && INRANGE(LOCAL, 501, 516))
				LOCALS:0 = [{LOCAL}] %ITEMNAME:(LOCAL), 16, LEFT%×{ITEM:(LOCAL)}
				LOCAL:10 += STRLENS(LOCALS:0)
				SIF ITEM:(LOCAL) < 10
					LOCAL:10 ++
				IF LOCAL:10 > 90
					IF LOCAL:10 >= 999
					;最初のみ改行しない
					ELSE
						LinesToErase ++
						PRINTL
					ENDIF
					LOCAL:10 = 0
					PRINT
				ENDIF
				IF GROUPMATCH(LOCAL, GoodsID:1, GoodsID:2, GoodsID:3, GoodsID:4, GoodsID:5)
					SETCOLOR 0x666666
					PRINTPLAINFORM [{LOCAL}] %ITEMNAME:(LOCAL), 16, LEFT%×{ITEM:(LOCAL)}
					RESETCOLOR
				ELSE
					PRINTFORM [{LOCAL}] %ITEMNAME:(LOCAL), 16, LEFT%×{ITEM:(LOCAL)}
				ENDIF
				SIF ITEM:(LOCAL) < 10
					PRINT
				PRINT
			ENDIF
		CASEELSE
			CONTINUE
	ENDSELECT
NEXT
PRINTL
DRAWLINE
PRINTL 　　[999] 노점을 여는 것을 그만둔다
LinesToErase += 3
IF Lineup > 1
	PRINTL 　　[1000] 이 상품으로 노점을 연다
	DRAWLINE
	SIF Lineup > 1
		PRINTFORML 매물１：%ITEMNAME:(GoodsID:1)%×{GoodsQty:1}
	SIF Lineup > 2
		PRINTFORML 매물２：%ITEMNAME:(GoodsID:2)%×{GoodsQty:2}
	SIF Lineup > 3
		PRINTFORML 매물３：%ITEMNAME:(GoodsID:3)%×{GoodsQty:3}
	SIF Lineup > 4
		PRINTFORML 매물４：%ITEMNAME:(GoodsID:4)%×{GoodsQty:4}
	DRAWLINE
	LinesToErase += 3 + (Lineup - 1)
ENDIF
PRINTL
PRINTFORML {Lineup}매대의 매물을 선택해 주세요
LinesToErase += 2
$INPUT_LOOP01
INPUT
SELECTCASE RESULT
	CASE 999
		RETURN -1
	CASE 1000
		IF Lineup > 1
			CLEARLINE 2
			GOTO SET_SALE
		ELSE
			CLEARLINE 1
			GOTO INPUT_LOOP01
		ENDIF
	;★売れるアイテムを下のCASEに追加
	CASE 351 TO 398, 500 TO 512, 600, 611, 616, 626 TO 629, 700 TO 708
		;GoodsIDに売りに出すアイテムの番号を流し込む
		GoodsID:Lineup = RESULT
		;アイテム名が無名の場合、アイテムを所持してない場合、永遠亭での薬品販売はやり直し
		IF ITEMNAME:(GoodsID:Lineup) == "" || ITEM:(GoodsID:Lineup) <= 0  || (STALL_SPOT(CFLAG:MASTER:현재위치) == 5 && INRANGE(LOCAL, 501, 516))
			CLEARLINE 1
			GoodsID:Lineup = 0
			GOTO INPUT_LOOP01
		ENDIF
		;重複選択防止
		IF Lineup > 1
			FOR LOCAL, 1, Lineup
				IF GoodsID:Lineup == GoodsID:LOCAL
					CLEARLINE 1
					GoodsID:Lineup = 0
					GOTO INPUT_LOOP01
				ENDIF
			NEXT
		ENDIF
		候補個数 = ITEM:(GoodsID:Lineup)
		SETCOLOR 0x777777
		PRINTFORML 　%조사처리(ITEMNAME:(GoodsID:Lineup),"를")% 몇 개 팝니까？(1～{候補個数}의 개수를 입력, 0으로 돌아간다)
		RESETCOLOR
		PRINTL
		PRINTBUTTON "[0] 그만둔다", 0
		PRINT
		PRINTBUTTON @"[1] 1%세는법(GoodsID:Lineup, 1)%", 1
		PRINT
		IF 候補個数 > 5
			PRINTBUTTON @"[5] 5%세는법(GoodsID:Lineup, 5)%", 5
			PRINT
		ENDIF
		IF 候補個数 > 10
			PRINTBUTTON @"[10] 10%세는법(GoodsID:Lineup, 10)%", 10
			PRINT
		ENDIF
		IF 候補個数 > 20
			PRINTBUTTON @"[20] 20%세는법(GoodsID:Lineup, 20)%", 20
			PRINT
		ENDIF
		IF 候補個数 > 1
			PRINTBUTTON @" [{候補個数}] 소지 전부", 候補個数
		ENDIF
		LinesToErase += 3
		$INPUT_LOOP02
		INPUT
		SELECTCASE RESULT
			CASE 0
				CLEARLINE 3
				LinesToErase -= 3
				GoodsID:Lineup = 0
				RETURN -1
			CASE 1 TO 候補個数
				CLEARLINE (LinesToErase + 1)
				;GoodsQtyに売りに出す個数を流し込む
				GoodsQty:Lineup = RESULT
			CASEELSE
				CLEARLINE 1
				GOTO INPUT_LOOP02
		ENDSELECT
	CASEELSE
		CLEARLINE 1
		GOTO INPUT_LOOP01
ENDSELECT

IF Lineup < 5
	Lineup ++
	GOTO SELECT_LOOP
ELSE
	PRINTFORML 매물１：%ITEMNAME:(GoodsID:1)%×{GoodsQty:1}
	PRINTFORML 매물２：%ITEMNAME:(GoodsID:2)%×{GoodsQty:2}
	PRINTFORML 매물３：%ITEMNAME:(GoodsID:3)%×{GoodsQty:3}
	PRINTFORML 매물４：%ITEMNAME:(GoodsID:4)%×{GoodsQty:4}
	PRINTFORML 매물５：%ITEMNAME:(GoodsID:5)%×{GoodsQty:5}
	PRINTL
	PRINTFORML 이 상품으로 노점을 엽니까？
	CALL ASK_YN
	IF !RESULT
		CLEARLINE 1
	ELSE
		RETURN -1
	ENDIF
ENDIF

;商品選択を終え、能力算定へ移る
$SET_SALE

;参加者判定
IF FLAG:데이트상대
	CHARA = FLAG:데이트상대
ELSEIF TARGET && ABL:TARGET:친밀 >= 10 && SHIRAHU(TARGET) && CFLAG:TARGET:동행 != 5
	CHARA = TARGET
ELSE
	CHARA = 0
ENDIF

;商人パワー設定
商人パワーM = ABL:MASTER:화술기능 * 25 + ABL:MASTER:교양 * 10 + TFLAG:행운보정 * 5

SIF CHARA
	商人パワーT = ABL:CHARA:화술기능 * 25 + ABL:CHARA:교양 * 10
;参加者で最もパワーが高いものを基準に、1/2したもう１人のパワーを足す
IF 商人パワーM >= 商人パワーT
	商人パワー = 商人パワーM + (商人パワーT / 2)
ELSE
	商人パワー = 商人パワーT + (商人パワーM / 2)
ENDIF

DRAWLINE
PRINTFORML 개점！
PRINTL

FOR COUNT, 0, 来客数

	SELECTCASE RAND:6
		CASE 0
			REUSELASTLINE \@ CHARA ? %조사처리(CALLNAME:CHARA,"와")% 함께 #  \@ 장사중.....
		CASE 1
			REUSELASTLINE 어섭셔ー
		CASE 2
			REUSELASTLINE 오셔서 보고가셔ー
		CASE 3
			REUSELASTLINE 【가격표 없음　선제시 요망】
		CASE 4
			REUSELASTLINE 손님, 꽤 안목이 높으시네요
		CASEELSE
			REUSELASTLINE 거기 아가씨, 싸게 해드릴게ー
	ENDSELECT
	TWAIT 750, 1

	$SARCH_START

	IF GoodsID:5
		LOCAL = RAND:6
	ELSEIF GoodsID:4
		LOCAL = RAND:5
	ELSEIF GoodsID:3
		LOCAL = RAND:4
	ELSEIF GoodsID:2
		LOCAL = RAND:3
	ELSE
		LOCAL = RAND:2
	ENDIF

	IF LOCAL == 0
		SETCOLOR C_L_GRAY
		PRINTDATAL
			DATAFORM 　「좀 더 깎아줄 수 없어요？」　……그렇게 말씀하셔도 말이죠
			DATAFORM 　작은 아이가 침을 흘리며 상품을 보고 있었지만, 부모님에게 손을 잡아 당겨져 가 버렸다…
			DATAFORM 　손님은 힐끔힐끔 곁눈질로 상품을 보고 있었지만, 얘기하자 놀란 모습으로 도망쳐 가 버렸다…
			DATAFORM 　말이 많은 손님이, 잡담만 하다 돌아갔다…
			DATAFORM 　대충 상품을 음미해, 고민하는 기색은 보이면서도, 고객은 떠나 갔다…
			DATAFORM 　에누리 교섭이 결렬했다…
			DATAFORM 　그냥 지나쳐갔다…
			DATAFORM 　상품을 언뜻 보자, 손님은 떠나 버렸다…
		ENDDATA
		RESETCOLOR
		GOTO SARCH_END
	;在庫ゼロの場合は、再度選択
	ELSEIF GoodsQty:LOCAL ==  GoodsSold:LOCAL
		GOTO SARCH_START
	ENDIF

	;売る個数を設定
	候補個数 = MAX(RAND:(5 + ABL:MASTER:화술기능 + RAND:5), 1)
	;売る個数が商品の在庫より多い場合の処理
	SIF (候補個数 + GoodsSold:LOCAL) > GoodsQty:LOCAL
		候補個数 = GoodsQty:LOCAL - GoodsSold:LOCAL

	SETCOLOR C_YELLOW
	PRINTFORM %조사처리(ITEMNAME:(GoodsID:LOCAL),"가")% {候補個数}%세는법(GoodsID:LOCAL, 候補個数)%,
	;売却値を設定
	売却値 = STALL_PRICE_SET(商人パワー, GoodsID:LOCAL, 候補個数)
	PRINTFORML %금액표시(売却値)%으로 팔렸다！
	RESETCOLOR

;	利率判定に応じてテキスト
;	SELECTCASE STALL_PRICE_SET(商人パワー, GoodsID:LOCAL, 候補個数, 1)
;		CASE 0 TO 50
;			PRINTFORML 買い叩かれてしまった…
;		CASE 51 TO 100
;			PRINTFORML 市場価格で売れた…
;		CASE 101 TO 150
;			PRINTFORML ちょっと価格を上げて売った…
;		CASEELSE
;			PRINTFORML 上手く丸め込み、売値をだいぶ釣り上げた…
;	ENDSELECT

	;GoodsSoldに売れた個数を流し込む
	GoodsSold:LOCAL += 候補個数
	合計売却値 += 売却値

	$SARCH_END
	TWAIT 300, 1
	LOCAL:3 ++
	;すべての商品を売りつくしたら抜ける
	IF GoodsSold:1 == GoodsQty:1 && GoodsSold:2 == GoodsQty:2 && GoodsSold:3 == GoodsQty:3 && GoodsSold:4 == GoodsQty:4 && GoodsSold:5 == GoodsQty:5
		PRINTL
		PRINTFORML 완매 사례！
		BREAK
	ENDIF
NEXT

LOCAL:3 = MAX((25 - LOCAL:3), 5)

IF GoodsSold:1 != GoodsQty:1 || GoodsSold:2 != GoodsQty:2 || GoodsSold:3 != GoodsQty:2 || GoodsSold:4 != GoodsQty:4 || GoodsSold:5 != GoodsQty:5
	PRINTL
	REPEAT LOCAL:3
		REUSELASTLINE  .%"." * COUNT%
		TWAIT 150, 1
	REND
ENDIF
PRINTFORMW 이제 폐점 하자
DRAWLINE
PRINTFORMW 이번 거래의 성과…

SETCOLOR 0x00FF00
;売れた個数を列挙、同時にアイテムを減らす
FOR LOCAL, 1, 6
	IF GoodsQty:LOCAL
		PRINTFORM 　%조사처리(ITEMNAME:(GoodsID:LOCAL),"는")%
		IF GoodsSold:LOCAL
			PRINTFORM {GoodsSold:LOCAL}%세는법(GoodsID:LOCAL, GoodsSold:LOCAL)% 팔렸다
		ELSE
			PRINTFORMW 전혀 팔리지 않았다…
		ENDIF
		ITEM:(GoodsID:LOCAL) -= GoodsSold:LOCAL
	ENDIF
NEXT
RESETCOLOR
PRINTL
;合計売却値の表記、同時に売上分の金を増やす
IF 合計売却値
	PRINTFORM 합계로
	SETCOLOR 0x00FF00
	PRINTFORM %금액표시(合計売却値)%
	RESETCOLOR
	PRINTFORMW 의 벌이가 되었다！
	MONEY += 合計売却値
	TFLAG:193 = 1
	TFLAG:194 = 合計売却値
ELSE
	PRINTFORMW 완전히 벌이가 나오지 않았다…
	TFLAG:193 = 0
ENDIF

;基本の経験
EXP:MASTER:회화경험 += 来客数
SIF CHARA
	EXP:CHARA:회화경험 += 来客数

SIF ABL:MASTER:교양 <= 3
	EXP:MASTER:학습경험 ++

;能力差で教えてもらう・教えてあげる
IF ABL:MASTER:교양 >=  ABL:CHARA:교양 && CHARA
	EXP:CHARA:학습경험 ++
ELSEIF CHARA
	EXP:MASTER:학습경험 ++
ENDIF

;デート経験
IF CHK_DATENOW(CFLAG:CHARA:데이트중) && CHARA > 0
	EXP:MASTER:데이트경험 ++
	EXP:CHARA:데이트경험 ++
ENDIF

;時間経過
TIME += 120
;体力・気力減少は来客数によって増減
DOWNBASE:MASTER:체력 = MAX(15 * 来客数, 150)
DOWNBASE:MASTER:기력 = MAX(20 * 来客数, 200)

;参加者のソース,同一コマンド制限を受けないので控えめに,売れないと激減
IF CHARA > 0
	;固定で獲得するソース
	SOURCE:CHARA:환락 = 300
	SOURCE:CHARA:사랑 = 50

	;ABL:순종をみる
	IF ABL:순종 <= 1
		SOURCE:CHARA:환락 += (ABL:순종 * 30)
		SOURCE:CHARA:사랑 += (ABL:친밀 * 15)
	ELSEIF ABL:순종 <= 3
		SOURCE:CHARA:환락 += 200 + (ABL:순종 * 20)
		SOURCE:CHARA:사랑 += 50 + (ABL:친밀 * 15)
	ELSEIF ABL:순종 <= 5
		SOURCE:CHARA:환락 += 500 + (ABL:순종 * 20)
		SOURCE:CHARA:사랑 += 200 + (ABL:친밀 * 15)
	ELSEIF ABL:순종 <= 8
		SOURCE:CHARA:환락 += 750 + (ABL:순종 * 30)
		SOURCE:CHARA:사랑 += 300 + (ABL:친밀 * 20)
	ELSEIF ABL:순종 <= 11
		SOURCE:CHARA:환락 += 1000 + (ABL:순종 * 30)
		SOURCE:CHARA:사랑 += 600 + (ABL:친밀 * 20)
	ELSE
		SOURCE:CHARA:환락 += 1600 + (ABL:순종 * 15)
		SOURCE:CHARA:사랑 += 1000 + (ABL:친밀 * 10)
	ENDIF
	SIF CHARA != FLAG:데이트상대
		SOURCE:CHARA:사랑 = 0

	;好感度はみない

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

	;売却成果をみる、合計売却値に応じてとりあえず設定
	IF 合計売却値
		SELECTCASE 合計売却値
			CASE 1 TO 2000
				TIMES SOURCE:CHARA:환락 , 1.00
				TIMES SOURCE:CHARA:수동 , 1.00
				TIMES SOURCE:CHARA:정복 , 1.00
				SOURCE:CHARA:달성 = 80
			CASE 2001 TO 4000
				TIMES SOURCE:CHARA:환락 , 1.10
				TIMES SOURCE:CHARA:수동 , 1.10
				TIMES SOURCE:CHARA:정복 , 1.10
				SOURCE:CHARA:달성 = 115
			CASE 4001 TO 7000
				TIMES SOURCE:CHARA:환락 , 1.25
				TIMES SOURCE:CHARA:수동 , 1.25
				TIMES SOURCE:CHARA:정복 , 1.15
				SOURCE:CHARA:달성 = 125
			CASE 7001 TO 10000
				TIMES SOURCE:CHARA:환락 , 1.50
				TIMES SOURCE:CHARA:수동 , 1.50
				TIMES SOURCE:CHARA:정복 , 1.25
				SOURCE:CHARA:달성 = 150
			CASE 10001 TO 20000
				TIMES SOURCE:CHARA:환락 , 1.75
				TIMES SOURCE:CHARA:수동 , 1.75
				TIMES SOURCE:CHARA:정복 , 1.50
				SOURCE:CHARA:달성 = 200
			CASE 20001 TO 40000
				TIMES SOURCE:CHARA:환락 , 2.00
				TIMES SOURCE:CHARA:수동 , 2.00
				TIMES SOURCE:CHARA:정복 , 1.75
				SOURCE:CHARA:달성 = 300
			CASEELSE
				TIMES SOURCE:CHARA:환락 , 2.25
				TIMES SOURCE:CHARA:수동 , 2.25
				TIMES SOURCE:CHARA:정복 , 2.00
				SOURCE:CHARA:달성 = 350
		ENDSELECT
	;売れなかった
	ELSE
		TIMES SOURCE:CHARA:환락 , 0.20
		TIMES SOURCE:CHARA:수동 , 0.20
		TIMES SOURCE:CHARA:정복 , 0.20
	ENDIF
ENDIF

RETURN 1

;-------------------------------------------------
;実行可能判定
;-------------------------------------------------
;露店を開く
@COM_ABLE447
SIF !TFLAG:100
	RETURN 0
;一括管理
SIF GLOBAL_COMABLE(447)
	RETURN RESULT
;露店を開ける場所である
SIF !STALL_SPOT(CFLAG:MASTER:현재위치)
	RETURN 0
;デート中はデート相手とだけ
SIF FLAG:데이트상대 && TARGET != FLAG:데이트상대
	RETURN 0
;睡眠中
SIF CFLAG:MASTER:수면
	RETURN 0
SIF CFLAG:우후후
	RETURN 0
;体力・気力不足
SIF BASE:MASTER:기력 < 300 || BASE:MASTER:체력 < 400
	RETURN 0
;時間停止中
SIF FLAG:70
	RETURN 0
RETURN 1

;-----------------------------------------------------------
;現在位置が露店を開ける場所か判定する
;ARG		現在位置
;RETURN		0 該当なし	1～各露店地点を返す
;COMMENT	場所を追加した場合、CASEを変更の事
;-----------------------------------------------------------
@STALL_SPOT(ARG)
#FUNCTION
IF !IN_HOME(ARG)
;サブマップなどでの判定
	SELECTCASE ARG
		CASE 20				;神社境内（博麗神社）
			RETURNF 1
		CASE 130			;命蓮寺境内
			RETURNF 2
		CASE 210			;広場（人里）
			RETURNF 3
		CASE 310			;霧の湖
			RETURNF 4
		CASE 450			;永遠亭
			RETURNF 5
		CASE 510			;森の入り口
			RETURNF 6
		CASE 610			;中有の道
			RETURNF 7
		CASE 720			;玄武の沢
			RETURNF 8
		CASE 820			;絶景の丘
			RETURNF 9
		CASE 840			;守矢神社境内
			RETURNF 10
		CASE 890			;天界
			RETURNF 11
		CASE 930			;旧地獄街道
			RETURNF 12
		CASE 1050			;月の都
			RETURNF 13
	ENDSELECT
ELSE
	;メインマップでの判定
	SELECTCASE MAIN_MAP
		CASE 0
			;博麗神社：境内
			SIF ARG == 2
				RETURNF 1
		CASE 1
			;命蓮寺：境内
			SIF ARG == 102
				RETURNF 2
		CASE 2
			;人里：中央広場
			SIF ARG == 202
				RETURNF 3
		CASE 3
			;紅魔館：湖畔
			SIF ARG == 343
				RETURNF 4
		CASE 4
			;永遠亭：永遠亭入り口
			SIF ARG == 401
				RETURNF 5
		CASE 5
			;魔法の森：魔法の広場
			SIF ARG == 508
				RETURNF 6
		CASE 6
			;冥界：中有の道
			SIF ARG == 601
				RETURNF 7
		CASE 7
			;妖怪の山山麓：玄武の沢
			SIF ARG == 703
				RETURNF 8
		CASE 8
			;妖怪の山山頂：頂上、守矢神社・境内、有頂天街
			SELECTCASE ARG
				CASE 805
					RETURNF 9
				CASE 811
					RETURNF 10
				CASE 832
					RETURNF 11
			ENDSELECT
		CASE 9
			;地底：大通り
			SIF ARG == 931
				RETURNF 12
	ENDSELECT
ENDIF
RETURNF 0

;-----------------------------------------------------------
;現在位置で露店を開く際のざっくりした来客数を割り出す
;祝祭日、天気、時間でも補正をかける
;ARG		STALL_SPOTのRETURN値
;RETURN		来客数
;COMMENT	場所を追加した場合、CASEを変更の事
;-----------------------------------------------------------
@STALL_SHOPPER(ARG)
#FUNCTION

RANDOMIZE (DAY:0 + TIME:0)

SELECTCASE ARG
	CASE 1	;博麗神社  ケの来客は少なそう  祭日はドンと増える
		LOCAL:0 = RAND:5
		SIF FESTIVAL() == "예대제"
			LOCAL:0 += MAX(RAND:50, 35)
		SIF GROUPMATCH(FESTIVAL(), "설날", "히나마츠리", "칠석", "추석", "풍신 「입춘으로부터 210일째 되는 날」", "보름", "수확제", "절분", "그믐날")
			LOCAL:0 += MAX(RAND:40, 25)
	CASE 2	;命蓮寺  人里に近いので
		LOCAL:0 = MAX(RAND:12, 2)
		SIF GROUPMATCH(FESTIVAL(), "설날", "추석", "수확제", "그믐날")
			LOCAL:0 += MAX(RAND:35, 15)
	CASE 3	;人里  鉄板
		LOCAL:0 = MAX(RAND:35, 10)
		SIF IS_WEEKEND(DAY)
			LOCAL:0 += RAND:15
		SIF GROUPMATCH(FESTIVAL(), "설날", "화이트 데이", "수확제", "발렌타인 데이", "크리스마스 이브", "크리스마스")
			LOCAL:0 += RAND:15
	CASE 4	;霧の湖湖畔  あんまり人通りは…
		LOCAL:0 = RAND:5
		SIF GROUPMATCH(FESTIVAL(), "화이트 데이", "수확제", "할로윈", "발렌타인 데이", "크리스마스 이브", "크리스마스")
			LOCAL:0 += MAX(RAND:30, 15)
	CASE 5	;永遠亭入り口  医院なのでそれなりに
		LOCAL:0 = MAX(RAND:14, 3)
	CASE 6	;魔法の森  客は来るのか…？
		LOCAL:0 = RAND:5
		SIF GROUPMATCH(FESTIVAL(), "설날", "칠석", "추석", "보름", "수확제", "그믐날")
			LOCAL:0 += MAX(RAND:30, 20)
	CASE 7	;中有の道  他にも露店が出てる設定なので
		LOCAL:0 = MAX(RAND:30, 7)
		SIF GROUPMATCH(FESTIVAL(), "추석")
			LOCAL:0 += MAX(RAND:30, 20)
	CASE 8	;玄武の沢  商売人の캇파たちの経済圏
		LOCAL:0 = MAX(RAND:25, 15)
		SIF IS_WEEKEND(DAY)
			LOCAL:0 += RAND:15
		SIF GROUPMATCH(FESTIVAL(), "설날", "수확제")
			LOCAL:0 += RAND:15
	CASE 9	;妖怪の山頂上  天狗の縄張り
		LOCAL:0 = MAX(RAND:20, 5)
		SIF IS_WEEKEND(DAY)
			LOCAL:0 += RAND:15
		SIF GROUPMATCH(FESTIVAL(), "설날", "풍신 「입춘으로부터 210일째 되는 날」", "수확제")
			LOCAL:0 += RAND:15
	CASE 10	;守矢神社  索道のおかげで少しマシになった？
		LOCAL:0 = MAX(RAND:10, 4)
		SIF GROUPMATCH(FESTIVAL(), "설날", "예대제", "히나마츠리", "칠석", "추석", "풍신 「입춘으로부터 210일째 되는 날」", "보름", "수확제", "절분", "그믐날")
			LOCAL:0 += MAX(RAND:30, 20)
	CASE 11	;有頂天街  天人も買い物はするのか…
		LOCAL:0 = MAX(RAND:20, 2)
		SIF IS_WEEKEND(DAY)
			LOCAL:0 += RAND:15
		SIF GROUPMATCH(FESTIVAL(), "설날", "칠석", "보름", "수확제", "절분", "그믐날")
			LOCAL:0 += RAND:15
	CASE 12	;地底大通り  妖怪たちの吹き溜まり
		LOCAL:0 = MAX(RAND:35, 15)
		SIF GROUPMATCH(FESTIVAL(), "설날", "수확제")
			LOCAL:0 += RAND:15
	CASE 13	;月の都  月人の興味があるものって…
		LOCAL:0 = MAX(RAND:25, 2)
ENDSELECT
;時間補正　地底大通りと月の都は時間・天候補正をかけない
IF !GROUPMATCH(ARG, 12, 13)
	;時間補正
	SELECTCASE TIME:2
		CASE 1
			TIMES LOCAL:0, 0.3
		CASE 2
			TIMES LOCAL:0, 0.8
		CASE 3 TO 4
			;補正なし
		CASE 5
			TIMES LOCAL:0, 0.8
		CASE 6
			TIMES LOCAL:0, 0.5
		CASEELSE
			TIMES LOCAL:0, 0.2
	ENDSELECT
	;天候補正
	SELECTCASE TIME:5
		CASE 0 TO 3
			;補正なし
		CASE 4, 6, 7
			TIMES LOCAL:0, 0.4
		CASEELSE
			TIMES LOCAL:0, 0.1
	ENDSELECT
ENDIF

RETURNF LOCAL:0

;-----------------------------------------------------------
;現在位置で露店を開く際の親密許可判定をする
;ARG		現在位置
;RETURN		0 許可	1 不許可
;COMMENT	場所を追加した場合、CASEを変更の事
;-----------------------------------------------------------
@STALL_PERMISSION(ARG)
#FUNCTION
IF !AT_HOME(MASTER)
;サブマップなどでの判定
	SELECTCASE ARG
		CASE 20				;神社境内（博麗神社）
			SIF ABL:[[레이무]]:친밀 < 5
				RETURNF 1
		CASE 130			;命蓮寺境内
			SIF ABL:[[뱌쿠렌]]:친밀 < 5
				RETURNF 1
		CASE 450			;永遠亭
			SIF ABL:[[에이린]]:친밀 < 5 && ABL:[[카구야]]:친밀 < 5
				RETURNF 1
		CASE 720			;玄武の沢
			SIF ABL:[[니토리]]:친밀 < 5
				RETURNF 1
		CASE 820			;絶景の丘
			SIF ABL:[[아야]]:친밀 < 5 && ABL:[[하타테]]:친밀 < 5
				RETURNF 1
		CASE 840			;守矢神社境内
			SIF ABL:[[사나에]]:친밀 < 5 && ABL:[[카나코]]:친밀 < 5 && ABL:[[스와코]]:친밀 < 5
				RETURNF 1
		CASE 890			;天界
			SIF ABL:[[텐시]]:친밀 < 5
				RETURNF 1
	ENDSELECT
ELSE
	;メインマップでの判定
	SELECTCASE MAIN_MAP
		CASE 0
			;博霊神社：境内
			SIF ARG == 2 && ABL:[[레이무]]:친밀 < 5
				RETURNF 1
		CASE 1
			;命蓮寺：境内
			SIF ARG == 102 && ABL:[[뱌쿠렌]]:친밀 < 5
				RETURNF 1
		CASE 4
			;永遠亭：永遠亭入り口
			SIF ARG == 401 && (ABL:[[에이린]]:친밀 < 5 && ABL:[[카구야]]:친밀 < 5)
				RETURNF 1
		CASE 7
			;妖怪の山山麓：玄武の沢
			SIF ARG == 703 && ABL:[[니토리]]:친밀 < 5
				RETURNF 1
		CASE 8
			;妖怪の山山頂：頂上、守矢神社・境内、有頂天街
			SELECTCASE ARG
				CASE 805
					SIF ABL:[[아야]]:친밀 < 5 && ABL:[[하타테]]:친밀 < 5
						RETURNF 1
				CASE 811
					SIF ABL:[[사나에]]:친밀 < 5 && ABL:[[카나코]]:친밀 < 5 && ABL:[[스와코]]:친밀 < 5
						RETURNF 1
				CASE 832
					SIF ABL:[[텐시]]:친밀 < 5
						RETURNF 1
			ENDSELECT
	ENDSELECT
ENDIF
RETURNF 0

;-----------------------------------------------------------
;露店で１人の来客がいくらで買ったかを算出
;ARG:0		商人パワー
;ARG:1		売るアイテム番号
;ARG:2		売れた個数
;ARG:3		0 = 購入額を返す, 1=利率を返す　省略は0
;RETURN		購入額
;-----------------------------------------------------------
@STALL_PRICE_SET(ARG:0, ARG:1, ARG:2, ARG:3 = 0)
#FUNCTION
#DIM 利率
#DIM 購入額
#DIM 補正価格

IF ARG:0 <= 0
	ARG:0 = 1
ENDIF
;利率をアイテム価格の（商人パワーの半分～商人パワー）％に設定
利率 = MAX(RAND:(ARG:0), (ARG:0 / 2))
補正価格 = ITEMPRICE:(ARG:1) / 2

;補正価格の決定
SELECTCASE ARG:1
	;야채たちは旬から遠いと価値が上がる
	CASE 351 TO 361
		SIF DAY:2 == 3
			TIMES 補正価格, 1.5
	CASE 362 TO 374
		SIF DAY:2 == 4
			TIMES 補正価格, 1.5
	CASE 375 TO 386
		SIF DAY:2 == 1
			TIMES 補正価格, 1.5
	CASE 387 TO 398
		SIF DAY:2 == 2
			TIMES 補正価格, 1.5
	;価格調整
	CASE 500
		補正価格 += 150
	CASE 600
		補正価格 += 150
	CASE 611
		補正価格 += 145
	CASE 616
		補正価格 += 200
	CASE 626
		補正価格 += 125
	CASE 627
		補正価格 += 200
	CASE 628
		補正価格 += 50
	CASE 707
		補正価格 += 250
	CASE 708
		補正価格 += 350
ENDSELECT

SIF FESTIVAL() != ""
	TIMES 補正価格, 1.5

;露店の場所による補正
SELECTCASE STALL_SPOT(CFLAG:MASTER:현재위치)
	CASE 1	;博麗神社

	CASE 2	;命蓮寺

	CASE 3	;人里  山の幸系統に補正
		SIF GROUPMATCH(ARG:1, 600, 611, 616, 626, 627, 628, 629, 707, 708)
			TIMES 補正価格, 1.3
	CASE 4	;霧の湖湖畔

	CASE 5	;永遠亭入り口  にんじん
		SIF GROUPMATCH(ARG:1, 388)
			TIMES 補正価格, 2.0
	CASE 6	;魔法の森

	CASE 7	;中有の道

	CASE 8	;玄武の沢  きゅうり↑  おさかな↓
		SIF GROUPMATCH(ARG:1, 362)
			TIMES 補正価格, 2.5
		SIF GROUPMATCH(ARG:1, 707, 708)
			TIMES 補正価格, 0.5
	CASE 9	;妖怪の山頂上  おさかな
		SIF GROUPMATCH(ARG:1, 707, 708)
			TIMES 補正価格, 1.5
	CASE 10	;守矢神社

	CASE 11	;有頂天街  山の幸系統
		SIF GROUPMATCH(ARG:1, 600, 611, 616, 626, 627, 628, 629, 707, 708)
			TIMES 補正価格, 1.3
	CASE 12	;地底大通り  야채
		SIF INRANGE(ARG:1, 351, 398)
			TIMES 補正価格, 1.5
	CASE 13	;月の都  山の幸系統
		SIF GROUPMATCH(ARG:1, 600, 611, 616, 626, 627, 628, 629, 707, 708)
			TIMES 補正価格, 1.3
ENDSELECT

購入額 = 補正価格 * ARG:2 * 利率 / 100

IF ARG:3 == 0
	RETURNF 購入額
ELSE
	RETURNF 利率
ENDIF

path: ERB/커맨드관련/COMF/일상계/COMF447 노점을연다.ERB


code:
;덫을 놓는다 / 덫의 모양을 본다
;캐릭터의 기능이나 경험 의존이 아니라 플레이어의 안력으로 수렵물 외장 여부를 판정하는 느낌의 디자인.
;벌레 트랩과 겸용
@COM448
;둘 다 가능하다면 선택
IF HUNTING_SPOT(CFLAG:MASTER:현재위치) && MUSHITORI_SPOT(CFLAG:MASTER:현재위치) && ITEM:곤충채집세트 && (!MUSHI_TRAP || GROUPMATCH(CFLAG:MASTER:현재위치, GET_MUSHIDATA(MUSHI_TRAP, "場所")))
	IF GROUPMATCH(CFLAG:MASTER:현재위치, TRAP_POINT:1, TRAP_POINT:2, TRAP_POINT:3)
		PRINTL 　[ 1] 사냥덫을 본다
	ELSE
		PRINTL 　[ 1] 사냥덫을 설치한다
	ENDIF
	IF GROUPMATCH(CFLAG:MASTER:현재위치, GET_MUSHIDATA(MUSHI_TRAP, "場所"))
		PRINTL 　[ 2] 벌레 트랩의 상황을 본다
	ELSE
		PRINTL 　[ 2] 벌레 트랩을 설치한다
	ENDIF
	PRINTL 　[ 0] 취소
	INPUT
	IF RESULT == 1
		CALL TRAP_HUNTING
	ELSEIF RESULT == 2
		CALL MUSHI_TRAP
	ELSE
		RETURN -1
	ENDIF
ELSEIF HUNTING_SPOT(CFLAG:MASTER:현재위치)
	CALL TRAP_HUNTING
ELSEIF MUSHITORI_SPOT(CFLAG:MASTER:현재위치)
	CALL MUSHI_TRAP
ELSE
	RETURN -1
ENDIF
RETURN RESULT

@TRAP_HUNTING
#DIM CHARA
#DIM Hunt_Power
#DIM Serch
#DIM 서식밀도
#DIM 탐색횟수
#DIM 삭제행수
#DIM 결과
#DIM 수렵물

수렵물 = 0
탐색횟수 = 0

;저녁~밤 사냥은 그만두다
IF TIME:2 >= 5 && !FLAG:70
	DRAWLINE
	PRINTFORML 이런 시간대에 사냥을 하다가는 완전히 어두컴컴해져 버리고 만다…
	RETURN -1
ENDIF
;大雨、吹雪のときはやめる(天候パッチ)強風時もやめる
IF GROUPMATCH(날씨, 5, 9) || GROUPMATCH(FLAG:이상기상, 9, 10) || WIND_VELOCITY >= 1
	DRAWLINE
	PRINTFORML 이 날씨에 덫사냥은 위험할 것이다
	RETURN -1
ENDIF
;명백히 주인이 있는 부지에서의 밀렵은 그만두다
SELECTCASE CFLAG:MASTER:현재위치
	CASE 25, 50
		IF ABL:[[레이무]]:친밀 < 5
			DRAWLINE
			PRINTFORML 여기서 밀렵을 하는 것은 좋지 않을 것 같다
			RETURN -1
		ENDIF
	CASE 사각의죽림, 433
		IF ABL:[[모코우]]:친밀 < 5 && ABL:[[테위]]:친밀 < 5 && ABL:[[카구야]]:친밀 < 5 && ABL:[[에이린]]:친밀 < 5
			DRAWLINE
			PRINTFORML 여기서 밀렵을 하는 것은 좋지 않을 것 같다
			RETURN -1
		ENDIF
	CASE 절경의언덕, 805
		IF ABL:[[아야]]:친밀 < 5 && ABL:[[하타테]]:친밀 < 5 && ABL:[[메구무]]:친밀 < 5
			DRAWLINE
			PRINTFORML 여기서 밀렵을 하는 것은 좋지 않을 것 같다
			RETURN -1
		ENDIF
ENDSELECT

;참가자 판정
IF FLAG:데이트상대 && !FLAG:70
	CHARA = FLAG:데이트상대
ELSEIF TARGET && ABL:TARGET:친밀 >= 5 && SHIRAHU(TARGET) && CFLAG:TARGET:동행 != 5
	CHARA = TARGET
ELSE
	CHARA = 0
ENDIF

TFLAG:무드상승억제 = 1

;◆덫을 놓은 경우는 상황을 본다
IF GROUPMATCH(CFLAG:MASTER:현재위치, TRAP_POINT:1, TRAP_POINT:2, TRAP_POINT:3)
	;①덫이 파손되었을 경우
	IF TRAP_DURABILITY:(TP_TO_PLACE()) == 0
		PRINTFORML 함정이 부서져버렸다…
		IF DAY:0 - TRAP_CAPTUREDATA:(TP_TO_PLACE()) >= 30
			PRINTFORMW 수렵물은 걸린 것 같은데 시간이 너무 흘러버린 것 같다…
		ELSEIF TRAP_CAPTUREDATA:(TP_TO_PLACE())
			PRINTFORMW 수렵물은 걸린 것 같은데 도망간 것 같다…
		ELSE
			PRINTFORMW 가망이 없을 것 같으면 회수해서 다시 세팅하는 편이 좋았을지도 모른다
		ENDIF
		;변수를 리셋
		CALL TRAP_V_RESET(TP_TO_PLACE())
		TFLAG:193 = -1

	;②수렵물 이 덫에 걸린 경우
	ELSEIF TRAP_CAPTURE:(TP_TO_PLACE())
		수렵물 = TRAP_CAPTURE:(TP_TO_PLACE())
		CAPTURE_RECORD:수렵물 ++
		;짐승의 각종 변수를 세트
		CALL CRITTER_DATA(수렵물)
		PRINTL
		PRINTFORMW ………！
		PRINTFORMW 수렵물이 잡혔다！
		PRINTL
		DRAWLINE
		PRINTFORML 　【포획된 수렵물】
		PRINTFORM
		CALL SPOIL_TEXT(SPOIL_ENHANCEMENT(수렵물), 0, 1)
		PRINTFORML 　　%CritterIntro%
		DRAWLINE
		PRINTW

		;일부 캐릭터라면 봐주자, 에
		IF SPOIL_RELEASE(CHARA, 수렵물) == 1 && !FLAG:70
			PRINTFORML %CALLNAME:CHARA%쪽에서 뭔가 말하고 싶은듯한 눈으로 이쪽을 바라봐온다…
			PRINTFORM 더는 버틸 수 없어서, %마스터는%

			$RELEASE
			CALL SPOIL_TEXT(SPOIL_ENHANCEMENT(수렵물), 2, 0)
			PRINTFORML 을(를) 놓아 주었다

			LOCALS = %ITEMNAME:(TRAP_TYPE:TP_TO_PLACE())%
			CALL GET_ITEM(LOCALS, 1, 2)
			수렵물 = 0
			;변수를 리셋
			CALL TRAP_V_RESET(TP_TO_PLACE())
		ELSE
			PRINTFORML 이 수렵물을 해체할까요？
			CALL ASK_YN("해체한다", "놓아준다")
			IF !RESULT
				CLEARLINE 4
			ELSE
				GOTO RELEASE
			ENDIF
			IF FLAG:70
				PRINTFORMW %마스터는% 시간을 멈추고 수렵물의 처치・해체에 힘썼다…
			ELSEIF CHARA
				PRINTFORMW %마스터는% %CALLNAME:CHARA%와 협력하여, 수렵물의 처치・해체를 진행했다…

			ELSE
				PRINTFORMW %마스터는%수렵물의 처치・해체를 진행했다…
			ENDIF
			LOCALS = %ITEMNAME:(TRAP_TYPE:TP_TO_PLACE())%
			CALL GET_ITEM(LOCALS, 1, 1)
		ENDIF
	;③아직 아무것도 안 걸렸어
	ELSE
		PRINTFORML 파 놓은 덫은 아직 아무것도 걸리지 않은 것 같다
		IF TRAP_DURABILITY:(TP_TO_PLACE()) < 21
			PRINTFORML 덫을 검사해 보자, 부품이 조금 느슨해져 있다…
		ELSEIF TRAP_DURABILITY:(TP_TO_PLACE()) < 11
			PRINTFORML 덫을 검사해 보자, 상당히 파손된 것 같다…
		ENDIF
		PRINTFORML 덫을 회수합니까？
		PRINTL
		$INPUT_LOOP02
		PRINTFORML 　[0] 그대로 둔다
		PRINTFORML 　[1] 덫을 회수한다
		INPUT
		SELECTCASE RESULT
			CASE 0
				RETURN -1
			CASE 1
				PRINTFORML 덫을 회수하기로 했다
				;덫을 아이템으로 되돌려 놓다
				LOCALS = %ITEMNAME:(TRAP_TYPE:TP_TO_PLACE())%
				CALL GET_ITEM(LOCALS, 1, 2)
				;변수를 리셋
				CALL TRAP_V_RESET(TP_TO_PLACE())
			CASEELSE
				CLEARLINE 3
				GOTO INPUT_LOOP02
		ENDSELECT
	ENDIF
;◆덫을 놓다
ELSE
	;덫이 없다면 리턴
	IF !ITEM:덫사냥용품【소형】 && !ITEM:덫사냥용품【중형】 && !ITEM:덫사냥용품【대형】
		DRAWLINE
		PRINTFORML 덫을 준비하지 않으면
		RETURN -1
	;3곳에 장치되어 있다.
	ELSEIF TRAP_POINT:1 && TRAP_POINT:2 && TRAP_POINT:3
		DRAWLINE
		PRINTFORML 함정을 세 군데에 걸쳐 파놓았으니, 더 이상은 안 되겠지
		RETURN -1
	ELSE
		;①먼저 각종 계수를 산출
		;기초 파워 1~110 정도
		Hunt_Power = MAX((ABL:MASTER:교양 * 2) + (ABL:MASTER:전투능력 * 2) + (TFLAG:행운보정 * 10) + (CFLAG:MASTER:오늘의운세 / 20), 1)

		;참가자가 있을 때는 사냥 파워 추가 2명이 단순히 눈이 2배이기 때문에 좋은 결과를 뽑기 쉬운
		SIF CHARA && !FLAG:70
		Hunt_Power += MAX((ABL:CHARA:교양 * 2) + (ABL:CHARA:전투능력 * 2) + (FLAG:일일이벤트 / 20), 1)

		$LOOP_SELECT

		탐색횟수 ++
		;오지를 파고드는 이미지로
		SIF 탐색횟수 != 1
			Hunt_Power += RAND:16

		;②탐색횟수가 10회를 넘었을 경우는 무한 루프를 피하기 위해 리턴한다.
		IF 탐색횟수 >= 10
			PRINTFORMW ……너무 열중하고 있으면 헤맬 것 같으니까, 이번은 이 정도로 해 두자
			GOTO AFTER
		ENDIF

		REPEAT 5
			REUSELASTLINE  \@ CHARA ? %CALLNAME:CHARA% 와 함께 #  \@ 짐승의 흔적을 수색 중.%"." * COUNT%
			TWAIT 150, 1
		REND

		;③사냥 파워에서 서치값을 고정하고 서식밀도를 세팅하여、필드 사인 텍스트(힌트)를 내보낸다.
		Serch = RAND:Hunt_Power
		IF Serch
			서식밀도 = Serch / 10
		ELSE
			서식밀도 = 0
		ENDIF
		PRINTL
		PRINTFORML ◇현재의 모습◇
		PRINT
		CALL FIELDSIGN(Serch)
		DRAWLINE
		;④어떤 덫을 놓을까 선택
		PRINTFORML 여기에 덫을 놓으시겠습니까？
		PRINTL
		$INPUT_LOOP01
		삭제행수 = 0
		FOR LOCAL, 132, 135
			삭제행수 ++
			IF ITEM:LOCAL == 0
				SETCOLOR C_GRAY
				PRINTPLAINFORM 　[{LOCAL}]%ITEMNAME:LOCAL%
			ELSE
				PRINTFORM 　[{LOCAL}]%ITEMNAME:LOCAL%
			ENDIF
			SELECTCASE LOCAL
				CASE 132
					PRINTFORML …입문자용 염가품, 내구도는 낮음. 소형~중형 짐승을 포획할 수 있다
				CASE 133
					PRINTFORML …입문자부터 베테랑까지, 내구도는 적당히. 소형~대형 짐승까지 폭넓게 포획할 수 있다
				CASE 134
					PRINTFORML …거물을 겨냥한 숙련된 사냥꾼용, 내구면에도 만전. 중대형~대형 짐승을 포획할 수 있다
				CASEELSE
					PRINTFORML
			ENDSELECT
			RESETCOLOR
		NEXT
		PRINTL
		PRINTFORML 　[998]탐색을 계속한다
		PRINTFORML 　[999]덫사냥을 그만둔다
		삭제행수 += 3

		INPUT

		결과 = RESULT
		SELECTCASE 결과
			CASE 132 TO 134
				IF ITEM:결과 == 0
					CLEARLINE 삭제행수 + 1
					GOTO INPUT_LOOP01
				;⑤덫을 씌우는 처리
				ELSE
					CALL TRAP_FLAVORTEXT(결과)
					PRINTFORML %ITEMNAME:결과%를 장치했다　잠시 후 상황을 보러 오자
					TFLAG:193 = 0
					ITEM:결과 -= 1
					FOR LOCAL, 1, 4
						;비어있는 가장 낮은 번호에 각종 변수 삽입
						IF TRAP_POINT:LOCAL == 0
							TRAP_POINT:LOCAL = CFLAG:MASTER:현재위치
							TRAP_SETUPDATA:LOCAL = DAY:0
							TRAP_TYPE:LOCAL = 결과
							TRAP_ALERTNESS:LOCAL = 75
							TRAP_DENSITY:LOCAL = 서식밀도
							;함정에 따라 내구도를 세트
							SELECTCASE 결과
								CASE 132
									TRAP_DURABILITY:LOCAL = 25
								CASE 133
									TRAP_DURABILITY:LOCAL = 40
								CASE 134
									TRAP_DURABILITY:LOCAL = 55
								CASEELSE
									TRAP_DURABILITY:LOCAL = 30
							ENDSELECT
							BREAK
						ENDIF
					NEXT
				ENDIF
			CASE 998
				CLEARLINE 삭제행수 + 8
				GOTO LOOP_SELECT
			CASE 999
				PRINTL
			CASEELSE
				CLEARLINE 삭제행수 + 1
				GOTO INPUT_LOOP01
		ENDSELECT
	ENDIF
ENDIF

$AFTER
;◆ 덫을 놓았다 or 수렵물을 해체했다 (성공취급) or 덫이 부서졌다 (실패취급)
;시간경과와 체력 소비、공복시각과 참가자의 피로도
IF FLAG:70
	;사냥 성공
	IF 수렵물
		BASE:MASTER:TSP -= CritterEffort * 3
	;수렵물을 놓쳤는지 함정을 회수했다
	ELSEIF 탐색횟수 == 0 && 수렵물 == 0
		BASE:MASTER:TSP -= 150
	ELSE
		;덫을 놓았다
		IF TP_TO_PLACE()
			BASE:MASTER:TSP -= (탐색횟수 * 6) + 180
		;탐색했을 뿐이야
		ELSE
			BASE:MASTER:TSP -= 탐색횟수 * 6
		ENDIF
	ENDIF
ELSE
	IF 수렵물
		DOWNBASE:MASTER:체력 = MAX((CritterEffort * 3) - (ABL:MASTER:전투능력 * 10), 40)
		DOWNBASE:MASTER:기력 = CritterEffort * 2
		TIME += CritterEffort
		TCVAR:MASTER:공복시각 -= 25
		IF CHARA
			TCVAR:CHARA:공복시각 -= 25
			CALL ADD_TIRED(CHARA, CritterEffort)
		ENDIF
	ELSEIF 탐색횟수 == 0 && 수렵물 == 0
		DOWNBASE:MASTER:체력 = 100
		DOWNBASE:MASTER:기력 = 50
		TIME += 45
		TCVAR:MASTER:공복시각 -= 10
		IF CHARA
			TCVAR:CHARA:공복시각 -= 10
			CALL ADD_TIRED(CHARA, 50)
		ENDIF
	ELSE
		IF TP_TO_PLACE()
			DOWNBASE:MASTER:체력 = 120 + 탐색횟수 * 5
			DOWNBASE:MASTER:기력 = 60 + 탐색횟수 * 3
			TIME += 30 + 탐색횟수 * 6
		ELSE
			DOWNBASE:MASTER:체력 = 탐색횟수 * 5
			DOWNBASE:MASTER:기력 = 탐색횟수 * 3
			TIME += 탐색횟수 * 6
		ENDIF
	ENDIF
ENDIF

;데이트경험
IF CHK_DATENOW(CFLAG:CHARA:데이트중) && CHARA > 0
	EXP:MASTER:데이트경험 ++
	EXP:CHARA:데이트경험 ++
ENDIF

;아이템 입수 처리
IF 수렵물
	TFLAG:193 = 1
	TFLAG:194 = 수렵물
	LOCALS = %ITEMNAME:(CritterMeat)%
	CALL GET_ITEM(LOCALS, (CritterMeat_Value + SPOIL_ENHANCEMENT(수렵물)), 2)
	;덫의 각종 변수 리셋
	CALL TRAP_V_RESET(TP_TO_PLACE())
ENDIF
PRINTL

;참가자소스, 함정이 부서져 있으면반감
IF CHARA > 0
	;고정으로 획득하는 소스
	SOURCE:CHARA:환락 = 400
	SOURCE:CHARA:사랑 = 100

	;ABL:순종을 보다
	IF ABL:순종 <= 1
		SOURCE:CHARA:환락 += (ABL:순종 * 40)
		SOURCE:CHARA:사랑 += (ABL:친밀 * 20)
	ELSEIF ABL:순종 <= 3
		SOURCE:CHARA:환락 += 200 + (ABL:순종 * 40)
		SOURCE:CHARA:사랑 += 50 + (ABL:친밀 * 30)
	ELSEIF ABL:순종 <= 5
		SOURCE:CHARA:환락 += 500 + (ABL:순종 * 40)
		SOURCE:CHARA:사랑 += 200 + (ABL:친밀 * 30)
	ELSEIF ABL:순종 <= 8
		SOURCE:CHARA:환락 += 750 + (ABL:순종 * 60)
		SOURCE:CHARA:사랑 += 300 + (ABL:친밀 * 40)
	ELSEIF ABL:순종 <= 11
		SOURCE:CHARA:환락 += 1000 + (ABL:순종 * 60)
		SOURCE:CHARA:사랑 += 600 + (ABL:친밀 * 40)
	ELSE
		SOURCE:CHARA:환락 += 1600 + (ABL:순종 * 30)
		SOURCE:CHARA:사랑 += 1000 + (ABL:친밀 * 20)
	ENDIF
	SIF CHARA != FLAG:데이트상대
		SOURCE:CHARA:사랑 = 0

	;호감도는 볼 수 없다

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

	;수렵물을 보다
	IF 수렵물
		;デスワーム。達成感はあるが、食べるのこれ？
		IF 수렵물 == 23
			TIMES SOURCE:CHARA:환락 , 0.70
			TIMES SOURCE:CHARA:수동 , 0.70
			TIMES SOURCE:CHARA:정복 , 0.70
			SOURCE:CHARA:달성 = 300
		ELSEIF STRCOUNT(CritterTribe, "희소/")
			TIMES SOURCE:CHARA:환락 , 2.25
			TIMES SOURCE:CHARA:수동 , 2.25
			TIMES SOURCE:CHARA:정복 , 2.00
			SOURCE:CHARA:달성 = 350
		;ツキノワグマ。ショウブあった！
		ELSEIF 수렵물 == 19
			TIMES SOURCE:CHARA:환락 , 2.00
			TIMES SOURCE:CHARA:수동 , 2.00
			TIMES SOURCE:CHARA:정복 , 1.75
			SOURCE:CHARA:달성 = 300
		ELSEIF STRCOUNT(CritterTribe, "수수께끼/")
			TIMES SOURCE:CHARA:환락 , 1.00
			TIMES SOURCE:CHARA:수동 , 1.00
			TIMES SOURCE:CHARA:정복 , 1.00
			SOURCE:CHARA:달성 = 80
		ELSEIF STRCOUNT(CritterTribe, "소형/")
			TIMES SOURCE:CHARA:환락 , 1.10
			TIMES SOURCE:CHARA:수동 , 1.10
			TIMES SOURCE:CHARA:정복 , 1.10
			SOURCE:CHARA:달성 = 115
		ELSEIF STRCOUNT(CritterTribe, "중형/")
			TIMES SOURCE:CHARA:환락 , 1.25
			TIMES SOURCE:CHARA:수동 , 1.25
			TIMES SOURCE:CHARA:정복 , 1.15
			SOURCE:CHARA:달성 = 125
		ELSEIF STRCOUNT(CritterTribe, "대형/")
			TIMES SOURCE:CHARA:환락 , 1.50
			TIMES SOURCE:CHARA:수동 , 1.50
			TIMES SOURCE:CHARA:정복 , 1.25
			SOURCE:CHARA:달성 = 150
		ENDIF
	;덫이 부서져 있었다
	ELSEIF TFLAG:193 == -1
		TIMES SOURCE:CHARA:환락 , 0.50
		TIMES SOURCE:CHARA:수동 , 0.50
		TIMES SOURCE:CHARA:정복 , 0.50
	;덫을 놓았다
	ELSEIF TP_TO_PLACE()
		SOURCE:CHARA:달성 = 70
	;解体せず逃がしたか、罠を回収した
	ELSEIF 탐색횟수 == 0 && 수렵물 == 0
		TIMES SOURCE:CHARA:환락 , 1.10
		TIMES SOURCE:CHARA:수동 , 1.10
		TIMES SOURCE:CHARA:정복 , 1.05
		SOURCE:CHARA:달성 = 110
	ENDIF
	;수렵물의 캐릭터에 따른 고유 반응（덮어쓰기）

	;獣関連の変数をリセット
	CALL CRITTER_V_RESET
ENDIF
RETURN 1

;-------------------------------------------------
;실행가능판정
;-------------------------------------------------
;덫을놓다
@COM_ABLE448
SIF !TFLAG:100
	RETURN 0
;일괄 관리
SIF GLOBAL_COMABLE(448)
	RETURN RESULT
SIF CFLAG:우후후
	RETURN 0
;덫 사냥 가능한 곳 or 곤충 채집이 가능한 곳에서만
SIF !HUNTING_SPOT(CFLAG:MASTER:현재위치) && !MUSHITORI_SPOT(CFLAG:MASTER:현재위치)
	RETURN 0
IF MUSHITORI_SPOT(CFLAG:MASTER:현재위치) && !HUNTING_SPOT(CFLAG:MASTER:현재위치)
	;벌레 트랩은 곤충 채집 세트가 있어야 돼
	SIF !ITEM:곤충채집세트
		RETURN 0
	;벌레 트랩을 설치했으면 설치했던 곳에서 밖에 안 돼
	SIF MUSHI_TRAP && CFLAG:MASTER:현재위치 != GET_MUSHIDATA(MUSHI_TRAP, "場所")
		RETURN 0
ENDIF
;데이트 중에는 데이트상대하고만
SIF FLAG:데이트상대 && TARGET != FLAG:데이트상대
	RETURN 0
;수면중
SIF CFLAG:MASTER:수면
	RETURN 0
;체력・기력부족
SIF BASE:MASTER:기력 < 800 || BASE:MASTER:체력 < 800
	RETURN 0
RETURN 1

;-----------------------------------------------------------
;현재위치에서 사냥 지점을 찾아내는 함수
;ARG 기본은 CFLAG:MASTER:현재위치
; 덫 발동 판정시 TRAP_POINT:X
;-----------------------------------------------------------
@HUNTING_SPOT(ARG)
#FUNCTION
IF !IN_HOME(ARG)
	SELECTCASE ARG
		CASE 50
			RETURNF 1
		CASE 사각의죽림
			RETURNF 2
		CASE 숲의입구
			RETURNF 3
		CASE 산록의수해
			RETURNF 4
		CASE 절경의언덕
			RETURNF 5
		CASE 환상풍혈
			RETURNF 6
	ENDSELECT
ELSE
	SELECTCASE ARG
		CASE P25수호신의숲
			RETURNF 1
		CASE P433사각의죽림
			RETURNF 2
		CASE P507버섯군생지
			RETURNF 3
		CASE P702산길・늪으로가는길
			RETURNF 4
		CASE P805정상
			RETURNF 5
		CASE P948수혈의바닥
			RETURNF 6
	ENDSELECT
ENDIF
RETURNF 0

;-----------------------------------------------------------
;토지 번호에 스포트 이름을 대입하는 함수
;ARG 기본은 TRAP_POINT:X
;-----------------------------------------------------------
@猟場名(ARG)
#FUNCTIONS
IF !IN_HOME(ARG)
	SELECTCASE ARG
		CASE 50
			LOCALS = 하쿠레이 신사의 【요정의 큰 나무】 주변
		CASE 사각의죽림
			LOCALS = 영원정의 【사각의 죽림】 주변
		CASE 숲의입구
			LOCALS = 마법의 숲의 【숲의 입구】 주변
		CASE 산록의수해
			LOCALS = 요괴의 산・산록의【산록의 수해】 주변
		CASE 절경의언덕
			LOCALS = 요괴의 산・산정의【절경의 언덕】 주변
		CASE 환상풍혈
			LOCALS = 지저의 【환상풍혈】 주변
		CASEELSE
			LOCALS = エラーサブ
	ENDSELECT
ELSE
	SELECTCASE ARG
		CASE P25수호신의숲
			LOCALS = 거점의 【수호신의 숲】 주변
		CASE P433사각의죽림
			LOCALS = 거점의 【사각의 죽림】 주변
		CASE P507버섯군생지
			LOCALS = 거점의 【버섯군생지】 주변
		CASE P702산길・늪으로가는길
			LOCALS = 거점의 【산길・늪으로 가는 길】 주변
		CASE P805정상
			LOCALS = 거점의 【산정】 주변
		CASE P948수혈의바닥
			LOCALS = 거점의 【수혈의 바닥】 주변
		CASEELSE
			LOCALS = エラーメイン
	ENDSELECT
ENDIF
RETURNF LOCALS
;-----------------------------------------------------------
;사냥하는 곳에 서식하는 짐승을 찾아내는 함수
;ARG:0 HUNTING_SPOT
;ARG:1 덫아이템번호 132소 133중 134대
;-----------------------------------------------------------
@CRITTER_SPECIES(HUNTING_SPOT, 덫번호)
#DIM C_ID
#DIM HUNTING_SPOT
#DIM 덫번호
#DIM 계절

;계절 이변에 관한 보정
계절 = DAY:2
SIF GatheringSeason
	계절 = GatheringSeason

$LOOP

C_ID = 1 + RAND:60
;변수를 불러오기
CALL CRITTER_V_RESET
CALL CRITTER_DATA(C_ID)
;無名（未登録）ならリターン
SIF CritterName == ""
	GOTO LOOP
;タグ上の無登録はリターン
SIF !STRCOUNT(CritterTribe, "짐승/") && !STRCOUNT(CritterTribe, "새/")
	GOTO LOOP
;[希少][猛禽]は１／２で再抽選に
SIF (STRCOUNT(CritterTribe, "희소/") || STRCOUNT(CritterTribe, "맹금/")) && RAND:2
	GOTO LOOP
;지저 이외에서 동면하고 있는 생물은 튕긴다.
SIF 계절 == 4 && STRCOUNT(CritterTribe, "동면/") && HUNTING_SPOT != 6
	GOTO LOOP
;夏鳥、冬鳥両持ちの対応
IF (DAY:2 == 2 && STRCOUNT(CritterTribe, "여름새/")) || (DAY:2 == 4 && STRCOUNT(CritterTribe, "겨울새/"))

;夏以外の夏鳥を弾く（渡ってきてるので１日限定の季節異変は避ける）
ELSEIF DAY:2 != 2 && STRCOUNT(CritterTribe, "여름새/")
	GOTO LOOP
;冬以外の冬鳥を弾く
ELSEIF DAY:2 != 4 && STRCOUNT(CritterTribe, "겨울새/")
	GOTO LOOP
ENDIF
;罠に応じて捕獲できる獲物のレンジを変える  小…基本の肉の量が2以下  中…肉の量が2～6  大…肉の量が4以上
SELECTCASE 덫번호
	CASE 132
		SIF CritterMeat_Value > 3
			GOTO LOOP
	CASE 133
		SIF CritterMeat_Value > 6 || CritterMeat_Value == 1
			GOTO LOOP
	CASE 134
		SIF CritterMeat_Value < 4
			GOTO LOOP
ENDSELECT
SELECTCASE HUNTING_SPOT
	CASE 1;수호신의숲,요정의큰나무. 보통 산짐승과 산새들. 유니크는 츠지노코,야베오오츠노지카,일본늑대
		SIF STRCOUNT(CritterTribe, "하쿠레이/")
			RETURN C_ID
	CASE 2;사각의죽림. 산토끼 축제 대형 짐승은 적다. 유니크는 츠지노코
		SIF RAND:3 == 0
			RETURN 13
		SIF STRCOUNT(CritterTribe, "죽림/")
			RETURN C_ID
	CASE 3;마법의숲. 다양. 색다른 것도 조금. 유니크는 마탕고
		SIF STRCOUNT(CritterTribe, "마법의숲/")
			RETURN C_ID
	CASE 4;산록의 수해. 다양. 유니크는 츠지노코
		SIF STRCOUNT(CritterTribe, "산기슭/")
			RETURN C_ID
	CASE 5;절경의 언덕. 소형 짐승이 조금 줄어든다. 유니크는 하나이즈미모리우시
		SIF STRCOUNT(CritterTribe, "산정/")
			RETURN C_ID
	CASE 6;환상풍혈,수혈의바닥. 특이한 것이 잡힌다. 유니크는 데스웜.
		SIF STRCOUNT(CritterTribe, "지저/")
			RETURN C_ID
	CASEELSE
		;오류로 인한 무한 루프 제거
		RETURN C_ID
ENDSELECT
;짐승관련변수리셋
CALL CRITTER_V_RESET
GOTO LOOP

;-----------------------------------------------------------
;필드 사인 텍스트 반환 함수
;계절, 함정 사냥 장소를 참조하여 교재를 바꾸다
;-----------------------------------------------------------
@FIELDSIGN(Serch)
#DIM Serch
#DIM 계절

;계절이변에 관한 보정
계절 = DAY:2
SIF GatheringSeason
	계절 = GatheringSeason

SELECTCASE Serch
	CASE 0 TO 19
		SETCOLOR 0x00D787
		;地底だけ特殊
		IF HUNTING_SPOT(CFLAG:MASTER:현재위치) == 6
			PRINTDATAL
				DATAFORM 특별히 단서가 되는 것은 눈에 띄지 않는다…
				DATAFORM 별 볼일 없는 발자국이 계속되고 있다…
				DATAFORM 바위 표면에서 스며 나온 물이 가느다란 흐름을 만들고 있다…
				DATAFORM 바짝 마른 똥이 여기저기 뒹굴고 있다…
				DATAFORM 얼마 안되는 흙 위에는 이끼가 끼어 있다
				DATAFORM 생물의 기척이 없는 암석의 벽을, 천천히 넘어간다…
				DATAFORM 빛이 적은 세상은, 정경과 별반 다르지 않다…
			ENDDATA
		ELSE
			PRINTDATAL
				DATAFORM 특별히 단서가 되는 것은 눈에 띄지 않는다…
				DATAFORM 별 볼일 없는 오솔길이 이어지고 있다…
				DATAFORM \@ 계절 == 4 ? 아름다운 설원이 이어지고 있다… # 걷기 좋은 초원이 이어지고 있다… \@
				DATAFORM \@ 계절 == 4 ? 잎을 늘어뜨린 가지 사이로 하늘이 보인다… # 가지와 잎에 가려 경치가 보이지 않는다… \@
				DATAFORM 작은 계곡이 흐르고 있다…
				DATAFORM \@ 계절 == 4 ? 눈에 뒤덮인 숲이 이어지고 있다… # 이끼 낀 숲이 이어져 있다… \@
				DATAFORM 바짝 마른 똥이 여기저기 뒹굴고 있다…
				DATAFORM 무너진 낙엽에 덮여 숨겨진 듯한 발자국이 있다…
				DATAFORM \@ 계절 == 4 ? 눈 위에 불분명한 발자국 같은 움푹 들어간 자국이 보인다… # 가지와 잎에 파묻힌 발자국 같은 것을 발견했다… \@
				DATAFORM \@ 계절 == 4 ? 매끄러운 설면에 부자연스러운 함몰이 발견되었다… # 지면을 파낸 자국이 있으나 이미 말라 있다… \@
				DATAFORM 나무에 문질러진 털 같은 것이 희미하게 눈에 띄었다…
				DATAFORM \@ 계절 == 3 ? 갉아먹힌 버섯이 사방에 흩어져 있다… # 가지와 잎이 꺾여 말라 비틀어진 관목이 있다… \@
				DATAFORM \@ 계절 == 4 ? 살을 에는 듯한 찬바람이 불고 있다… # 나무 사이를 스치는 바람이 나뭇가지 끝을 흔들며 달려간다… \@
				DATAFORM 안개가 끼기 시작했네… 길을 잃어버리겠다…
			ENDDATA
		ENDIF
	CASE 20 TO 39
		SETCOLOR 0x5EE555
		IF HUNTING_SPOT(CFLAG:MASTER:현재위치) == 6
			PRINTDATAL
				DATAFORM 똥이 떨어지고 있다… 많이 말라서 형태가 무너지고 있다
				DATAFORM 암석 위에 메마른 흙 발자국이 나 있다…
				DATAFORM 작은 물이 모여 웅덩이 같은 것이 생겨있다…
				DATAFORM 바위 위에 무엇인가가 눌러붙어 마른 자국 같은 것이 있다
				DATAFORM 약간 이끼 낀 흔적이 있다
				DATAFORM 바위에 문질러진 털 같은 것이 희미하게 눈에 띄었다…
				DATAFORM 갉아먹힌 버섯?이 사방에 흩어져 있다…
				DATAFORM 큰 암반이 앞을 가로막고 있다… 오르기가 만만치 않다
			ENDDATA
		ELSE
			PRINTDATAL
				DATAFORM 똥이 떨어지고 있다… 많이 말라서 형태가 무너지고 있다
				DATAFORM 주위와 비교해서, 초목이 얇은 발자국이 띄엄띄엄 이어져 있다…
				DATAFORM \@ 계절 == 4 ? 쫓는 자 쫓기는 자, 이중의 발자국이 눈 위에 남아 있다… # 부서진 낙엽이 담긴 발자국을 발견했다… \@
				DATAFORM \@ 계절 == 4 ? 가지의 껍질이 뜯어먹히고、벗겨진 자국들이 드문드문 보인다… # 덤불 속에 진흙 자국이 있다… 이미 말라 있는 것 같다 \@
				DATAFORM \@ 계절 == 4 ? 풍화되기 시작한 눈 위의 발자국을 발견했다… # 상당히 윤곽이 무너진 발자국을 찾아냈다… \@
				DATAFORM \@ 계절 == 4 ? 깊이 쌓인 눈에 빠졌는지 눈이 패인 곳이 있다… # 드문드문 땅을 파헤친 흔적이 있다…\@
				DATAFORM \@ 계절 == 3 ? 갉아먹힌 버섯이 있는데, 꽤 상한 것 같다… # 관목의 잎을 헤집어먹은 흔적이 있다. 씹은 자국은 마르기 시작했다… \@
				DATAFORM 돌에 붙은 이끼가 드문드문 벗겨져 시들어 가고 있다…
				DATAFORM 몇 안 되는 발판을 의지하여, 사람이 지나가기에는 어려운 경사면을 올라가고 있다…
				DATAFORM 나뭇가지가 부러져서 뭉쳐져 있다… 인위적인 걸까, 아니면?
				DATAFORM 잡초에 가려진 구덩이에 발이 묶여 하마터면 넘어질 뻔했다…
			ENDDATA
		ENDIF
	CASE 40 TO 59
		SETCOLOR 0xA3F030
		IF HUNTING_SPOT(CFLAG:MASTER:현재위치) == 6
			PRINTDATAL
				DATAFORM 똥이 떨어지고 있다… 조금 마르기 시작했지만, 형태는 유지하고 있다
				DATAFORM 암석 위에 흙 발자국이 덕지덕지 찍혀 있다… 왕래가 있는 것 같다
				DATAFORM 맑은 샘물이 있다… 이건 고마운데
				DATAFORM 바위 위에 뭔가 점성이 있는 것이 움직인 흔적이 있다
				DATAFORM 이끼가 벗겨진 흔적이 있다… 아직 시든지 얼마 안된 느낌이다
				DATAFORM 바위와 바위틈으로 움집 같은 공간이 펼쳐져 있다…
				DATAFORM 갉아먹힌 버섯이 있는데, 꽤 상한 것 같다…
				DATAFORM 아래에서 보면、깎아지른 듯이 솟은 바위들이 등반을 어렵게 하고 있다…
			ENDDATA
		ELSE
			PRINTDATAL
				DATAFORM 똥이 떨어지고 있다… 조금 마르기 시작했지만, 형태는 유지하고 있다
				DATAFORM 주위와 비교해서 낙엽이나 초목이 조금 찢어진 발자국이 이어지고 있다…
				DATAFORM \@ 계절 == 4 ? 눈 위의 희미한 발자국이 능선을 향해 이어지고 있다… # 물이 고인 발자국을 발견했다… \@
				DATAFORM \@ 계절 == 4 ? 조금 남은 가지와 잎을 갉아먹은 흔적이 보인다… # 진흙으로 탁해진 웅덩이가 남아있다… 진흙탕으로 쓰였던 것 같다 \@
				DATAFORM \@ 계절 == 4 ? 눈 위에 엎드린 듯한 자국이 남아 있다… # 초목을 짓밟아 구부린 자국이 남아 있다… \@
				DATAFORM \@ 계절 == 4 ? 두 마리의 짐승이 뛰논 듯한、눈이 거칠어진 부분이 있다 # 땅을 파헤친 자국을 많은 개미가 몹시 당황하여 이리저리 뛰어다니고 있다… \@
				DATAFORM 돌에 낀 이끼가 긁힌 자국이 있다… 벗겨진 것이 말라 가고 있다
				DATAFORM 짐승의 그림자를 인지한 암벽에 올라、눈 아래쪽 광경을 내려다본다… 무섭다
				DATAFORM 누군가의 멀리서 울부짖는 소리가 산야에 메아리쳤다…
			ENDDATA
		ENDIF
	CASE 60 TO 79
		SETCOLOR 0xE7FB0C
		IF HUNTING_SPOT(CFLAG:MASTER:현재위치) == 6
			PRINTDATAL
				DATAFORM 똥이 떨어지고 있다… 비교적 새것 같다
				DATAFORM 암석 위에 흙 발자국이 무수히 나 있다
				DATAFORM 암반에 희끗희끗한 것이 띠 모양으로 펼쳐져 있다… 암염 같다
				DATAFORM 바위 위에 뭔가 꿈틀거린 것 같은 점액이 남아 있다
				DATAFORM 펼쳐진 이끼가 부자연스럽게 뜯겨 있다… 아직 싱싱하다
				DATAFORM 어디선가 찰칵, 하고 돌이 튀어 부딪치는 소리가 났다…
				DATAFORM 벌레 먹은 모양으로 갉아먹힌 버섯이 원형을 그대로 둔 채 부러져 남아 있다…
				DATAFORM 상당히 지상에 가까운지 빛이 약간 비치고 있다…
				DATAFORM 끼긱, 하고 칠판을 할퀴는 것 같은 귀에 거슬리는 소리가 머리 위에서 울려 온다…
			ENDDATA
		ELSE
			PRINTDATAL
				DATAFORM 똥이 떨어지고 있다… 비교적 새것 같다
				DATAFORM 부스럭하고 나뭇가지가 스치는 소리가 들린 것 같다…
				DATAFORM \@ 계절 == 4 ? 눈 위의 발자국이 나무숲을 향해 이어지고 있다… 몇 번 왕복한 듯 하다 # 발자국이 덤불 속으로 이어져 가는 것이 뚜렷히 보인다… \@
				DATAFORM \@ 계절 == 4 ? 몰아치는 바람이 갑자기 가라앉았다… 지형상, 훌륭하게 바람막이가 되어 있는 것 같다 # 덤불 속에 진흙탕이 생겨 있다… 쓰이고 있는 것이겠지 \@
				DATAFORM \@ 계절 == 4 ? 또렷한 윤곽의 눈 위의 발자국을 발견했다… # 비교적 또렷한 발자국을 발견했다… \@
				DATAFORM \@ 계절 == 4 ? 눈을 밀어내고 지나간 듯한, 새 눈의 표면에 움푹 패인 곳이 발견되었다… # 막 땅을 파헤친 새로운 흔적이 곳곳에서 보인다… \@
				DATAFORM 돌에 붙은 이끼가 깎인 자국이 있다…… 아직 녹색을 띄고 있으므로, 비교적 새것 같다
				DATAFORM 뭔가 시선을 느낀 것 같아서 뒤돌아봐도、\@ 계절 == 4 ? 눈의 반사광이 따갑기만 했다… # 뒤덮힌 울창한 가지와 잎사귀만 보일 뿐이었다… \@
				DATAFORM 멀리서부터 들려오는 가늘고 날카로운 울음소리가 교대로 부르듯 서로 울리고 있다…
				DATAFORM 올려다봐도 뒤돌아봐도 산과 나무들… 인적미답으로 보이는 원시림을 걸어 간다
				DATAFORM 하늘을 찌를 듯한 큰 나무 옆으로 돌았다…… 줄기에 뚫린 이슬은 사람 한 사람을 족히 삼킬 정도로 크다
				DATAFORM 소리를 내지도 않고, 은밀한 한 줄기 폭포가 도랑에 삼켜져 있다…
			ENDDATA
		ENDIF
	CASEELSE
		SETCOLOR C_YELLOW
		IF HUNTING_SPOT(CFLAG:MASTER:현재위치) == 6
			PRINTDATAL
				DATAFORM 똥이 뭉쳐서 떨어지고 있다… 꽤 최근 것 같다
				DATAFORM 암석 위에、진흙 발자국이 선명하게 남아있다… 아직 새 것이다
				DATAFORM 얼마 안되는 흙 위에 뚜렷이 발자국이 남아 있다…
				DATAFORM 바위 위에 끈적끈적한 점액이 늘러붙어 있다… 이끼인가 뭔가를 갉아먹은 자국인 것 같다
				DATAFORM 벽을 타고 나무 뿌리라고 생각되는 것이 빽빽이 내려와 있는 공간으로 나왔다… 꽤 기분이 나쁘다
				DATAFORM 털썩, 하고 암석이 머리 위에서 떨어져내렸다… 위험해, 위험해
				DATAFORM 버섯이 헤집어먹힌 자국이 남아있다… 아직 새 것이다
				DATAFORM 암석의 갈라진 틈으로부터 지표의 빛이 비치는 이상한 공간으로 나왔다… 약간 녹음이 숨쉬고 있다
				DATAFORM 땅울림과 같은 낮고 긴 신음소리가 들린… 기분이 들었다
				DATAFORM 삐걱, 하고 무엇인가 스치는 듯한 소리가 바위틈의 여기저기에서 들린다
			ENDDATA
		ELSE
			PRINTDATAL
				DATAFORM 똥이 뭉쳐서 떨어지고 있다… 꽤 최근 것 같다
				DATAFORM 나무가 우거진 숲 한가운데、뚜렷히 짐승이 지나간 길이 보이고 있다
				DATAFORM 부스럭부스럭, 여기저기서 가지와 잎이 스치는 소리가 들려온다…
				DATAFORM 담쟁이덩굴과 풀이 깔려 눌린 듯한 흔적이 있다…
				DATAFORM 지면이 서클 모양으로 다듬어진 흔적이 있다…
				DATAFORM \@ 계절 == 4 ? 무리가 움직였는지 겹겹이 쌓인 눈 위의 발자국이 보인다… # 뚜렷한 윤곽의 발자국이 겹겹이 발견되었다… \@
				DATAFORM \@ 계절 == 4 ? 비교적 눈이 얇고 지나가기 쉬운 장소에 발자국이 집중되어 있다… # 덤불 속에 진흙탕이 있다… 방금 전까지도 쓰였던 것 같은 방식으로 진흙이 튀어 있다 \@
				DATAFORM \@ 계절 == 4 ? 나뭇가지 껍질을 벗긴 자국이 보인다… 아직 새 것이다 # 녹색의 가지와 잎이 뜯긴 자국이 있다… 아직도 새 것이다\@
				DATAFORM \@ 계절 == 4 ? 눈이 파헤쳐져, 땅이 노출되어 있다… # 땅을 파낸 자국이 있다… 아직도 축축하다. 갓 파낸 것 같다 \@
				DATAFORM 돌에 붙어 있던 이끼가, 벗겨져 떨어져 나가 있다… 아직도 녹색을 띄고 있어, 최근 벗겨진 것 같다
				DATAFORM \@ 계절 == 4 ? 움푹 패인 곳에서、눈이 흩날리지 않고 가만히 있다… 묘하게 온화하다 # 울창한 삼림 한가운데 묘하게 탁 트인 잔잔한 잔디가 펼쳐져 있다… \@
				DATAFORM 고요한 산중의 분위기 때문일까, 으슬으슬, 하고 소름이 끼쳤다…
				DATAFORM 누군가 수군거리는 것 같은 「목소리」가 들려… 이런 깊은 산에서？　설마…
				DATAFORM 구름 사이로、계곡 바닥에서、바람 소리와는 확연히 다른、신음 소리 같은「부르는 소리」가 들린다…
			ENDDATA
		ENDIF
ENDSELECT
RESETCOLOR
PRINTL

;-----------------------------------------------------------
;덫 소개의 플레이버 텍스트를 보내다
;소개는 6행으로 고정
;-----------------------------------------------------------
@TRAP_FLAVORTEXT(결과)
#DIM 결과

SELECTCASE 결과
	CASE 132
		PRINTDATAL
			DATALIST
				DATAFORM 　　┌─────────────────────── ─┐
				DATAFORM 　　│■상자덫　　　　　　　　　　　　　　　　　　　 　│
				DATAFORM 　　│　상자 속으로 수렵물을 유인하여, 들어가면　　　    │
				DATAFORM 　　│　침입구의 문이 닫혀 수렵물을 가둔다　　　       　 │
				DATAFORM 　　│　소형으로 휴대하기 쉽고, 설치하기 쉽다      　　    │
				DATAFORM 　　└────────────────────────┘
			ENDLIST
		ENDDATA
	CASE 133
		PRINTDATAL
			DATALIST
				DATAFORM 　　┌───────────────────────┐
				DATAFORM 　　│■올가미덫　　　　　　　　　　　　　　　　　　│
				DATAFORM 　　│　와이어의 한쪽 끝을 수목 등에 붙들어 맨다  　   │
				DATAFORM 　　│　다른 쪽 끝에는 고리가 둘러져 있어、　    　　　│
				DATAFORM 　　│　안에 수렵물의 발이 들어가면 죄어 구속된다  　 │
				DATAFORM 　　└───────────────────────┘
			ENDLIST
			DATALIST
				DATAFORM 　　┌───────────────────────┐
				DATAFORM 　　│■벼락틀                     　　　　　　　　　　　　│
				DATAFORM 　　│　틀 한 쪽을 땅에, 한쪽에 버팀목을 세워 놓고 │
				DATAFORM 　　│　틀 밑에 먹이를 뿌려 수렵물을 유인한다　 　│
				DATAFORM 　　│　먹이에 유혹된 수렵물을 틀을 떨궈 잡는다　│
				DATAFORM 　　└───────────────────────┘
			ENDLIST
		ENDDATA
	CASE 134
		PRINTDATAL
			DATALIST
				DATAFORM 　　┌───────────────────────┐
				DATAFORM 　　│■곰덫　　　　　　　　　　　　　　　　　         │
				DATAFORM 　　│　덫 중앙판에 다리를 올리면, 금속판이　　　│
				DATAFORM 　　│　튀어올라 다리를 강하게 끼워 넣는 함정    　　　　│
				DATAFORM 　　│　현대 일본에서는 사용이 금지되어 있다 　　　　│
				DATAFORM 　　└───────────────────────┘
			ENDLIST
			DATALIST
				DATAFORM 　　┌───────────────────────┐
				DATAFORM 　　│■아맛포　　　　　　　　　　　　　　　　　      │
				DATAFORM 　　│　장치한 석궁의 방아쇠에 실을 걸고, 가까이의　　│
				DATAFORM 　　│　수목등에 그 실을 붙여두다 지나가다           　　│
				DATAFORM 　　│　수렵물이 그 실에 닿으면, 자동으로 화살을 쏜다  │
				DATAFORM 　　└───────────────────────┘
			ENDLIST
		ENDDATA
ENDSELECT
CALL DQPRINT("…………", 1)
CALL DQPRINT("………", 1)
CALL DQPRINT("……", 1)

;-----------------------------------------------------------
;걸린 수렵물의 상태 보정을 하는 묘사 함수
;같은 하루에는 (행운보정 변하지 않는 한) 몇 번 확인해도 같은 수를 반환한다
;ARG TRAPTURE:X에서 빼기 수렵물의 ID
;RETURN 0 보정 없음 1 조금 살쪘다 2 통통하게 살쪘다 3 제철에 기름기가 많다
;-----------------------------------------------------------
@SPOIL_ENHANCEMENT(ARG)
#FUNCTION
#DIM 계절

;계절이변에 관한 보정
계절 = DAY:2
SIF GatheringSeason
	계절 = GatheringSeason

;제철을 먼저 판정
SELECTCASE ARG
	CASE 16, 17, 19, 27;사슴、영양、 반달가슴곰. 야베오오츠노지카는 가을
		SIF 계절 == 3
			RETURNF 3
	CASE 15;멧돼지는 겨울
		SIF 계절 == 4
			RETURNF 3
ENDSELECT

RANDOMIZE DAY:0
SELECTCASE MAX(RAND:100 + (TFLAG:행운보정 * 10), 0)
	CASE 0 TO 40
		RETURNF 0
	CASE 41 TO 80
		RETURNF 1
	CASEELSE
		RETURNF 2
ENDSELECT

;-----------------------------------------------------------
;걸린 수렵물이름을 보정 텍스트와 함께 묘사
;위의 함수를 이용
;STYLE =  0,L  = 1,W =  =2, 개행무시
;FONT = 0,なし = 1,太字
;-----------------------------------------------------------
@SPOIL_TEXT(수렵물, STYLE = 0, FONT = 0)
#DIM 수렵물
#DIM STYLE
#DIM FONT

SELECTCASE SPOIL_ENHANCEMENT(TRAP_CAPTURE:TP_TO_PLACE())
	CASE 0
		LOCALS = %CritterName%
	CASE 1
		LOCALS = 큰 %CritterName%
	CASE 2
		LOCALS = 통통하게 살이 오른 %CritterName%
	CASE 3
		LOCALS = 잘 살이 오른 %CritterName%
	CASEELSE
		LOCALS = %CritterName%
ENDSELECT

SIF FONT
	FONTSTYLE 1

SELECTCASE STYLE
	CASE 1
		SETCOLOR C_YELLOW
		PRINTFORMW %LOCALS%
	CASE 2
		PRINTFORM  %LOCALS%
	CASEELSE
		SETCOLOR C_YELLOW
		PRINTFORML %LOCALS%
ENDSELECT
FONTREGULAR
RESETCOLOR

;-----------------------------------------------------------
;걸린 수렵물과 동행 캐릭터를 통해 강제 릴리즈 판정을 내리는 함수
;RETURNF 1　에서 강제 릴리즈
;-----------------------------------------------------------
@SPOIL_RELEASE(CHARA, 수렵물)
#FUNCTION
#DIM CHARA
#DIM 수렵물

SELECTCASE CHARA
	CASE [[레밀리아]], [[플랑]]
		SIF 수렵물 == 21;オオコウモリ
			RETURNF 1
	CASE [[첸]], [[오린]], [[쇼]], [[미케]]
		SIF 수렵물 == 12;ノネコ
			RETURNF 1
	CASE [[란]], [[츠카사]]
		SIF 수렵물 == 10;キツネ
			RETURNF 1
	CASE [[리글]], [[야마메]], [[라바]], [[모모요]]
		SIF 수렵물 == 23;デスワーム
			RETURNF 1
	CASE [[미스티아]]
		SIF 수렵물 == 50 || 수렵물 == 51 || 수렵물 == 52 || 수렵물 == 53 || 수렵물 == 54;鳥類
			RETURNF 1
	CASE [[나즈린]]
		SIF 수렵물 == 1 || 수렵물 == 5 || 수렵물 == 14;ネズミ、リス、ヌートリア
			RETURNF 1
	CASE [[우동게]], [[테위]], [[레이센]], [[세이란]], [[링고]]
		SIF 수렵물 == 13;ノウサギ
			RETURNF 1
	CASE [[카게로]], [[모미지]]
		SIF 수렵물 == 11 || 수렵물 == 29;ノイヌ、ニホンオオカミ
			RETURNF 1
	CASE [[마미조]]
		SIF 수렵물 == 7;タヌキ
			RETURNF 1
	CASE [[우루미]]
		SIF 수렵물 == 28;ハナイズミモリウシ
			RETURNF 1
	CASE [[사키]]
		SIF 수렵물 == 29;ニホンオオカミ
			RETURNF 1
	CASE [[야치에]]
		SIF 수렵물 == 30;ニホンカワウソ
			RETURNF 1
ENDSELECT
RETURNF 0

;-----------------------------------------------------------
;현지점이 TRAP_POINT: X의 어딘가를 반환하는 함수
;-----------------------------------------------------------
@TP_TO_PLACE()
#FUNCTION

FOR LOCAL, 1, 4
	SIF CFLAG:MASTER:현재위치 == TRAP_POINT:LOCAL
		RETURNF LOCAL
NEXT
RETURNF 0

;-----------------------------------------------------------
;함정 관련 변수 전체 리셋
;-----------------------------------------------------------
@TRAP_V_ALLRESET

VARSET TRAP_SETUPDATA
VARSET TRAP_TYPE
VARSET TRAP_ALERTNESS
VARSET TRAP_DURABILITY
VARSET TRAP_DENSITY
VARSET TRAP_CAPTURE
VARSET TRAP_CAPTUREDATA
VARSET TRAP_POINT

;-----------------------------------------------------------
;지정한 덫 관련 변수 전체 리셋
;ARG TP_TO_PLACE()
;-----------------------------------------------------------
@TRAP_V_RESET(ARG)

TRAP_SETUPDATA:(ARG) = 0
TRAP_TYPE:(ARG) = 0
TRAP_ALERTNESS:(ARG) = 0
TRAP_DURABILITY:(ARG) = 0
TRAP_DENSITY:(ARG) = 0
TRAP_CAPTURE:(ARG) = 0
TRAP_CAPTUREDATA:(ARG) = 0
TRAP_POINT:(ARG) = 0

;-----------------------------------------------------------
;짐승과 관련된 변수 리셋
;-----------------------------------------------------------
@CRITTER_V_RESET

VARSET CritterName
VARSET CritterMeat
VARSET CritterMeat_Value
VARSET CritterEffort
VARSET CritterIntro
VARSET CritterHint
VARSET CritterTribe

;-----------------------------------------------------------
;이사 시의 덫 설치 지점을 교체하는 함수
;-----------------------------------------------------------
@TRAP_MOVING
#DIM 트랩번호

FOR 트랩번호, 1, 4
	;메인→서브맵으로의 변경
	SELECTCASE TRAP_POINT:트랩번호
		CASE 25
			SIF MAIN_MAP != 0
				TRAP_POINT:트랩번호 = 50
		CASE 433
			SIF MAIN_MAP != 4
				TRAP_POINT:트랩번호 = 430
		CASE 507
			SIF MAIN_MAP != 5
				TRAP_POINT:트랩번호 = 510
		CASE 702
			SIF MAIN_MAP != 7
				TRAP_POINT:트랩번호 = 710
		CASE 805
			SIF MAIN_MAP != 8
				TRAP_POINT:트랩번호 = 820
		CASE 948
			SIF MAIN_MAP != 9
				TRAP_POINT:트랩번호 = 910
	;서브->메인맵으로의 변경
		CASE 50
			SIF MAIN_MAP == 0
				TRAP_POINT:트랩번호 = 25
		CASE 430
			SIF MAIN_MAP == 4
				TRAP_POINT:트랩번호 = 433
		CASE 510
			SIF MAIN_MAP == 5
				TRAP_POINT:트랩번호 = 507
		CASE 710
			SIF MAIN_MAP == 7
				TRAP_POINT:트랩번호 = 702
		CASE 820
			SIF MAIN_MAP == 8
				TRAP_POINT:트랩번호 = 805
		CASE 910
			SIF MAIN_MAP == 9
				TRAP_POINT:트랩번호 = 948
	ENDSELECT
NEXT

;벌레 트랩
;설치한 장소로 이사했다
IF MAIN_MAP == GET_MUSHIDATA(MUSHI_TRAP, "場所") / 100
	SELECTCASE GET_MUSHIDATA(MUSHI_TRAP, "場所")
	;벚꽃길토리이,경내
	CASE 10, 20
		CALL MUSHI_TRAP_MOVING(2)
	;요정의큰나무
	CASE 50
		CALL MUSHI_TRAP_MOVING(25)
	CASE 수양버들아래, 명련사경내
		CALL MUSHI_TRAP_MOVING(102)
	CASE 묘지
		CALL MUSHI_TRAP_MOVING(121)
	CASE 광장
		CALL MUSHI_TRAP_MOVING(202)
	CASE 주택가
		CALL MUSHI_TRAP_MOVING(201)
	CASE 안개의호수
		CALL MUSHI_TRAP_MOVING(347)
	CASE 폐양관
		CALL MUSHI_TRAP_MOVING(343)
	CASE 정문
		CALL MUSHI_TRAP_MOVING(302)
	CASE 죽림입구
		CALL MUSHI_TRAP_MOVING(433)
	CASE 미혹의샛길
		CALL MUSHI_TRAP_MOVING(434)
	CASE 사각의죽림
		CALL MUSHI_TRAP_MOVING(434)
	CASE 토끼동굴
		CALL MUSHI_TRAP_MOVING(431)
	CASE 무명의언덕
		CALL MUSHI_TRAP_MOVING(436)
	CASE 태양의밭
		CALL MUSHI_TRAP_MOVING(438)
	CASE 숲의입구
		CALL MUSHI_TRAP_MOVING(501)
	CASE 고목의큰나무
		CALL MUSHI_TRAP_MOVING(540)
	CASE 재고의길
		CALL MUSHI_TRAP_MOVING(509)
	CASE 무연총
		CALL MUSHI_TRAP_MOVING(506)
	CASE 중유의길
		CALL MUSHI_TRAP_MOVING(601)
	CASE 삼도천
		CALL MUSHI_TRAP_MOVING(602)
	CASE 피안, 지옥
		CALL MUSHI_TRAP_MOVING(604)
	CASE 백옥루정원
		CALL MUSHI_TRAP_MOVING(621)
	CASE 산록의수해
		CALL MUSHI_TRAP_MOVING(701)
	CASE 현무의늪
		CALL MUSHI_TRAP_MOVING(703)
	CASE 큰두꺼비의연못
		CALL MUSHI_TRAP_MOVING(708)
	CASE 절경의언덕
		CALL MUSHI_TRAP_MOVING(805)
	CASE 산의호수
		CALL MUSHI_TRAP_MOVING(814)
	CASE 모리야신사경내
		CALL MUSHI_TRAP_MOVING(811)
	CASE 환상풍혈
		CALL MUSHI_TRAP_MOVING(948)
	CASE 지옥의깊은길
		CALL MUSHI_TRAP_MOVING(945)
	CASE 옛지옥가도
		CALL MUSHI_TRAP_MOVING(939)
	CASE 지령전
		CALL MUSHI_TRAP_MOVING(901)
	CASE 고요의바다
		CALL MUSHI_TRAP_MOVING(916)
	ENDSELECT
;設置した場所から引っ越した
ELSEIF !MUSHITORI_SPOT(GET_MUSHIDATA(MUSHI_TRAP, "場所"))
	CALL MUSHI_TRAP_MOVING(GET_MAP_REPLACEMENT(GET_MUSHIDATA(MUSHI_TRAP, "場所")))
ENDIF

;-----------------------------------------------------------
;덫의 일수 경과에 따른 변화에 대해 변수에 기입하다
;-----------------------------------------------------------
@TRAP_PROGRESS
#DIM 트랩번호
#DIM 기대치
#DIM 서식밀도

FOR 트랩번호, 1, 4
	IF TRAP_POINT:트랩번호
		;미포획의 경우
		IF TRAP_CAPTURE:트랩번호 == 0 && TRAP_DENSITY:트랩번호 >= 1
			;罠発動判定 서식밀도の回数繰り返し
			FOR LOCAL:1, 1, TRAP_DENSITY:트랩번호 + 1
				;기대치 1～…100 - 罠警戒度 + 행운보정*10(-50～+50) + 오늘의운세/20（0～50）+ RAND:(罠設置からの経過日数 * 10)
				기대치 = MAX(100 - TRAP_ALERTNESS:트랩번호 + (TFLAG:행운보정 * 10) + (CFLAG:MASTER:오늘의운세 / 20) + RAND:((1 + DAY:0 - TRAP_SETUPDATA:트랩번호) * 8), 1)
				DEBUGPRINTFORML 덫{트랩번호}　수렵물{LOCAL:1}　기대치…{기대치}
				IF RAND:기대치 > 50
					CALL CRITTER_SPECIES(HUNTING_SPOT(TRAP_POINT:트랩번호), TRAP_TYPE:트랩번호)
					TRAP_CAPTURE:트랩번호 = RESULT
					TRAP_CAPTUREDATA:트랩번호 = DAY:0
					BREAK
				ENDIF
			NEXT
		ENDIF
		;時間経過に伴う罠の警戒度の変動　一日あたり－２
		IF TRAP_ALERTNESS:트랩번호
			TRAP_ALERTNESS:트랩번호 = MAX(TRAP_ALERTNESS:트랩번호 - 2, 0)

			;天候によってさらに低下
			SIF !GROUPMATCH(TIME:5, 0, 1, 2, 3) && TRAP_ALERTNESS:트랩번호 > 0
				TRAP_ALERTNESS:트랩번호 --
		ENDIF
		;時間経過に伴う罠の耐久度の変動
		IF TRAP_DURABILITY:트랩번호 > 0
			TRAP_DURABILITY:트랩번호 --
			;悪天候でさらに低下
			SIF GROUPMATCH(TIME:5, 5, 9) && TRAP_DURABILITY:트랩번호 > 0
				TRAP_DURABILITY:트랩번호 --
			;수렵물がかかっているとさらに低下
			IF TRAP_CAPTURE:트랩번호 && TRAP_DURABILITY:트랩번호 > 0
				CALL CRITTER_DATA(TRAP_CAPTURE:트랩번호)
				TRAP_DURABILITY:트랩번호 --
				;大型の수렵물がかかっているとさらに低下
				SIF CritterMeat_Value >= 5 && TRAP_DURABILITY:트랩번호 > 0
					TRAP_DURABILITY:트랩번호 --
				CALL CRITTER_V_RESET
			ENDIF
		ENDIF
		;獣の서식밀도の変動
		TRAP_DENSITY:트랩번호 = MAX(TRAP_DENSITY:트랩번호 + RAND:4 - RAND:3, 0)

		DEBUGPRINTFORML 　덫{트랩번호}：{TRAP_CAPTURE:트랩번호}
		DEBUGPRINTFORML 　　 　경계도：{TRAP_ALERTNESS:트랩번호}
		DEBUGPRINTFORML 　　 　내구도：{TRAP_DURABILITY:트랩번호}
		DEBUGPRINTFORML 　　 서식밀도：{TRAP_DENSITY:트랩번호}
	ENDIF
NEXT

;-------------------------------------------------
;虫トラップ
;-------------------------------------------------
@MUSHI_TRAP
;虫トラップはMASTERの一人作業なのでデート経験やTARGETへのソースは無い
;벌레 트랩의 상황을 보다
IF GROUPMATCH(CFLAG:MASTER:현재위치, GET_MUSHIDATA(MUSHI_TRAP, "場所"))
	IF !GET_MUSHIDATA(MUSHI_TRAP, "벌레번호")
		PRINTFORML 장치한 먹이：%ITEMNAME:(GET_MUSHIDATA(MUSHI_TRAP, "エサ番号"))%
		PRINTFORML 　먹이의 질：%"☆" * MUSHI_ESA_DATA(GET_MUSHIDATA(MUSHI_TRAP, "エサ番号"))%
		PRINTFORML 먹이의 종류：%RESULTS:10%
		DRAWLINE
		PRINTFORML 아직 벌레는 잡히지 않은 것 같다
		PRINTFORML 　[ 0]그대로 둔다
		PRINTFORML 　[ 1]트랩을 파기한다
		INPUT
		IF RESULT
			MUSHI_TRAP = 0
			TFLAG:193 = 11
			IF FLAG:시간정지
				BASE:MASTER:TSP -= 20
			ELSE
				TIME += 5
			ENDIF
		ELSE
			RETURN -1
		ENDIF
	ELSE
		PRINTL
		PRINTFORMW ………！
		PRINTFORMW 벌레가 걸렸다！
		PRINTL
		MUSHI_TRAP += DAY * 1000000000000
		CALL SHOW_MUSHI_DATA(MUSHI_TRAP)
		DRAWLINE
		PRINTFORML 벌레 트랩에서 %조사처리(MUSHI_NAME,"를")%  잡았다
		CALL MUSHI_CAPTURE(MUSHI_TRAP)
		MUSHI_TRAP = 0
		TFLAG:193 = 12
		EXP:MASTER:채집경험 ++
		IF FLAG:시간정지
			BASE:MASTER:TSP -= 20
		ELSE
			TIME += 5
		ENDIF
	ENDIF
;벌레 트랩을 장치하다
ELSE
	PRINTL ◆벌레 트랩에 쓸 먹이를 선택하세요 (소비됩니다)
	DRAWLINE
	FOR LOCAL, 0, 800
		SIF ITEMNAME:LOCAL == ""
			CONTINUE
		SIF !ITEM:LOCAL
			CONTINUE
		SIF MUSHI_ESA_DATA(LOCAL)
			PRINTFORMC %ITEMNAME:LOCAL%({ITEM:LOCAL})[{LOCAL, 3}]
	NEXT
	PRINTL
	DRAWLINE
	PRINTC 역시 그만둔다[999]
	INPUT
	IF INRANGE(RESULT, 0, 800) && ITEM:RESULT
		ITEM:RESULT --
		MUSHI_TRAP = RESULT * 1000000000000 + CFLAG:MASTER:현재위치 * 100000000
		TFLAG:193 = 10
		IF FLAG:시간정지
			BASE:MASTER:TSP -= 50
		ELSE
			DOWNBASE:MASTER:체력 = 50
			DOWNBASE:MASTER:기력 = 50
			TIME += 20
		ENDIF
	ELSE
		RETURN -1
	ENDIF
ENDIF
RETURN 1

;-------------------------------------------------
;벌레 트랩으로 벌레를 잡는 함수
;@MUSHITORIを参考に
;-------------------------------------------------
@MUSHI_TRAP_PROGRESS
#DIM パワー
#DIM 初期レアリティ指定
#DIM レアリティ指定
#DIM 랭크
#DIM Ｇ型
#DIM Ｘ型
#DIM MUSHI_ID
#DIM 捕まえたムシ
IF MUSHI_TRAP && !GET_MUSHIDATA(MUSHI_TRAP, "벌레번호")
	パワー = LIMIT(5 + MUSHI_ESA_DATA(GET_MUSHIDATA(MUSHI_TRAP, "エサ番号")), 1, 10)
	;捕獲判定
	SIF RAND:パワー < 2
		RETURN
	;特定好物と好物で2回回す
	初期レアリティ指定 = 0
	FOR LOCAL, 1, 3
		SIF !初期レアリティ指定
			初期レアリティ指定 = RAND:パワー
		レアリティ指定 = 初期レアリティ指定
		Ｇ型 = 0
		Ｘ型 = 0
		MUSHI_ID = 0
		WHILE レアリティ指定 >= 0
			;1回目は特定好物で優先的に拾う
			IF LOCAL == 1
				CALL DRAW_MUSHI("벌레트랩특정기호", GET_MUSHIDATA(MUSHI_TRAP, "場所"), レアリティ指定)
			ELSE
				CALL DRAW_MUSHI("벌레트랩", GET_MUSHIDATA(MUSHI_TRAP, "場所"), レアリティ指定)
			ENDIF
			IF RESULT
				捕まえたムシ = RESULT
				MUSHI_CAPTURE ++
				;랭크判定
				랭크 = MIN(RAND:(20 * MUSHI_ESA_DATA(GET_MUSHIDATA(MUSHI_TRAP, "エサ番号"))), 99)
				SIF RAND:100 < (パワー / 2)
					Ｇ型 = 1
				SIF RAND:100 < (パワー / 2)
					Ｘ型 = 1
				;ID設定,日付は実際に捕まえた時
				MUSHI_ID = MUSHI_CAPTURE * 1000000000000 + GET_MUSHIDATA(MUSHI_TRAP, "場所") * 100000000 + 랭크 * 10000 + MUSHI_RARE * 1000 + 捕まえたムシ
				SIF Ｇ型
					MUSHI_ID += 1000000
				SIF Ｘ型
					MUSHI_ID += 10000000
				MUSHI_TRAP = MUSHI_ID
				RETURN
			ELSE
				レアリティ指定 --
			ENDIF
		WEND
	NEXT
ENDIF

;-------------------------------------------------
;벌레 트랩을 이사하는 함수
;ARG가 이사간 곳
;-------------------------------------------------
@MUSHI_TRAP_MOVING(ARG)
MUSHI_TRAP -= GET_MUSHIDATA(MUSHI_TRAP, "場所") * 100000000
MUSHI_TRAP += ARG * 100000000

path: ERB/커맨드관련/COMF/일상계/COMF448 덫을 놓는다.ERB