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_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

license: mit


code:
;곤충채집
@COM449
#DIM CHARA
#DIM 행운M
#DIM 행운T
#DIM 파워M
#DIM 파워T
#DIM 쌍방채집
쌍방채집 = 0

;참가자 판정
IF FLAG:데이트상대
	CHARA = FLAG:데이트상대
;일하는 중에는 금지
ELSEIF TARGET && ABL:TARGET:친밀 >= 5 - TALENT:TARGET:채집Lv && SHIRAHU(TARGET) && CFLAG:행동 != 5
	CHARA = TARGET
ELSE
	CHARA = 0
ENDIF

;행운=10～1000
행운M = LIMIT((CFLAG:MASTER:오늘의운세 + 1 + (TFLAG:행운보정 * 100)), 10, 1000)
SIF CHARA
	행운T = MAX(CFLAG:CHARA:오늘의운세 + 1, 10)
;최저 1,최대 10
파워M = LIMIT(행운M / 200 + TALENT:MASTER:채집Lv, 1, 10)
SIF CHARA
	파워T = LIMIT(행운T / 200 + TALENT:CHARA:채집Lv, 1, 10)

FOR LOCAL, 0, 5
	REUSELASTLINE  \@ CHARA ? %CALLNAME:CHARA%와 함께 #  \@ 곤충 채집중.%"." * LOCAL%
	TWAIT 150, 1
NEXT

;포획 판정
IF RAND:파워M < 2
	MUSHI_CAGE = 0
	IF CHARA
		IF RAND:파워T < 2
			MUSHI_CAGE = 0
		ELSE
			CALL MUSHITORI(파워T, 행운T)
			MUSHI_CAGE = RESULT
			쌍방채집 = 1
		ENDIF
	ENDIF
ELSE
	CALL MUSHITORI(파워M, 행운M)
	MUSHI_CAGE = RESULT
ENDIF

;기본 경험치
EXP:MASTER:채집경험 ++
SIF CHARA
	EXP:CHARA:채집경험 ++
;잡은 사람 추가 경험치
IF MUSHI_CAGE
	IF 쌍방채집
		EXP:CHARA:채집경험 ++
	ELSE
		EXP:MASTER:채집경험 ++
	ENDIF
ENDIF
;데이트경험
IF CHK_DATENOW(CFLAG:CHARA:데이트중) && CHARA
	EXP:MASTER:데이트경험 ++
	EXP:CHARA:데이트경험 ++
ENDIF

;성과에 상관 없이 기력 체력 감소
DOWNBASE:MASTER:체력 = 150
DOWNBASE:MASTER:기력 = 200
IF CHARA
	DOWNBASE:CHARA:체력 = 150
	DOWNBASE:CHARA:기력 = 200
ENDIF

IF MUSHI_CAGE
	;처리 관계로 여기서 포획 메시지를 보낸다,
	IF 쌍방채집
		CALL SHOW_MUSHI_DATA(MUSHI_CAGE)
		DRAWLINE
		PRINTFORML %조사처리(CALLNAME:CHARA,"가")% %조사처리(MUSHI_NAME,"을")% 잡았다
		;＠口上を挟むかも
		PRINTL [ 1] 제법인데?
		CALL COLORMESSAGE(@"[ 2] 죽여서라도 빼앗는다", C_RED, 1)
		PRINTL [ 3] 양보해줘 부탁이야！！
		INPUT
		;결과는 문자 쪽으로
		IF RESULT == 3
			IF ABL:CHARA:순종 < 6 || ABL:CHARA:친밀 < 6 || MARK:CHARA:반발각인 || TALENT:CHARA:기분 < 0
				TFLAG:193 = -1
			ELSEIF ABL:CHARA:순종 < 8 || ABL:CHARA:친밀 < 8
				TFLAG:193 = 3
			ELSE
				TFLAG:193 = 4
			ENDIF
		ELSEIF RESULT == 2
			TFLAG:193 = -2
		ELSE
			TFLAG:193 = 2
		ENDIF
	ELSE
		CALL SHOW_MUSHI_DATA(MUSHI_CAGE)
		PRINTFORML %MUSHI_NAME%를 잡았다！
		TFLAG:193 = 1
	ENDIF
ELSE
	TFLAG:193 = 0
ENDIF

;참가자의 소스, 동일한 명령어 제한을 받지 않으므로 조심스럽게, 다만 잡지 못하면 매번 반감
IF CHARA
	;고정으로 획득하는 소스
	SOURCE:CHARA:환락 = 400
	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:새드끼

	;귀찮아서[낚시를 한다]를 추적하여 2배(시간효율로 등배)）
	TIMES SOURCE:CHARA:환락 , 2.00
	TIMES SOURCE:CHARA:수동 , 2.00
	TIMES SOURCE:CHARA:정복 , 2.00
	TIMES SOURCE:CHARA:사랑 , 2.00

	;결과에 의한 보정
	SELECTCASE TFLAG:193
	;죽여서라도 빼앗다
	CASE -2
		TIMES SOURCE:CHARA:환락 , 0.50
		TIMES SOURCE:CHARA:수동 , 0.50
		TIMES SOURCE:CHARA:정복 , 0.50
		SOURCE:CHARA:반감 = 500
		DOWNBASE:MASTER:체력 += 150
		DOWNBASE:MASTER:기력 += 200
		IF CHARA
			DOWNBASE:CHARA:체력 += 150
			DOWNBASE:CHARA:기력 += 200
		ENDIF
	;양보해줘 → 거부당했다
	CASE -1
		SOURCE:CHARA:반감 = 50
	;포획 실패
	CASE 0
		TIMES SOURCE:CHARA:환락 , 0.50
		TIMES SOURCE:CHARA:수동 , 0.50
		TIMES SOURCE:CHARA:정복 , 0.50
	;MASTERが捕まえた,補正なし
	CASE 1
	;제법인데?
	CASE 2
		TIMES SOURCE:CHARA:환락 , 1.50
		TIMES SOURCE:CHARA:수동 , 1.50
		TIMES SOURCE:CHARA:정복 , 1.50
	;양보해줘 → 마지못해 오케이
	CASE 3
		TIMES SOURCE:CHARA:수동 , 1.50
	;양보해줘 → 올 오케이
	CASE 4
		TIMES SOURCE:CHARA:환락 , 1.50
		TIMES SOURCE:CHARA:수동 , 1.50
		TIMES SOURCE:CHARA:사랑 , 1.50
	ENDSELECT

	;기타보정
	;벌레의 요괴는 기뻐한다
	IF GET_TRIBENAME(CHARA, GETNUM(TALENT, "요괴")) == "요충"
		TIMES SOURCE:CHARA:환락 , 2.00
		TIMES SOURCE:CHARA:수동 , 2.00
		TIMES SOURCE:CHARA:정복 , 2.00
		TIMES SOURCE:CHARA:사랑 , 2.00
	;나비는 해피
	ELSEIF STRCOUNT(MUSHI_TRIBE, "나비/")
		IF CHARA == [[라바]]
			TIMES SOURCE:CHARA:환락 , 2.00
			TIMES SOURCE:CHARA:수동 , 2.00
			TIMES SOURCE:CHARA:정복 , 2.00
		ELSE
			TIMES SOURCE:CHARA:환락 , 1.50
			TIMES SOURCE:CHARA:수동 , 1.50
			TIMES SOURCE:CHARA:정복 , 1.50
		ENDIF
	;장수풍뎅이・사슴벌레도 해피
	ELSEIF STRCOUNT(MUSHI_TRIBE, "(장수풍뎅이|사슴벌레)")
		TIMES SOURCE:CHARA:환락 , 1.50
		TIMES SOURCE:CHARA:수동 , 1.50
		TIMES SOURCE:CHARA:정복 , 1.50
	ELSEIF MUSHI_RARE <= 3
	;레어도 4~7
	ELSEIF MUSHI_RARE <= 7
		TIMES SOURCE:CHARA:환락 , 1.50
		TIMES SOURCE:CHARA:수동 , 1.50
		TIMES SOURCE:CHARA:정복 , 1.50
	;레어도8～9
	ELSE
		TIMES SOURCE:CHARA:환락 , 2.00
		TIMES SOURCE:CHARA:수동 , 2.00
		TIMES SOURCE:CHARA:정복 , 2.00
	ENDIF
	;로터
	SIF MUSHI_NAME == "로터"
		SOURCE:CHARA:욕정 = 500
ENDIF

;시간경과
TIME += 40

;플래그 인도
TFLAG:194 = CHARA

RETURN 1

;-------------------------------------------------
;실행가능판정
;-------------------------------------------------
;곤충채집
@COM_ABLE449
SIF !TFLAG:100
	RETURN 0
;일괄 관리
SIF GLOBAL_COMABLE(449)
	RETURN RESULT
;곤충 채집 세트가 없다
SIF !ITEM:곤충채집세트
	RETURN 0
;곤충을 채집할 수 있는 장소이다.
SIF !MUSHITORI_SPOT(CFLAG:MASTER:현재위치)
	RETURN 0
;冬の間はおやすみ
SIF GET_MONTH() == "겨울의 달"
	RETURN 0
;데이트 중에는 데이트 상대하고만
SIF FLAG:데이트상대 && TARGET != FLAG:데이트상대
	RETURN 0
;동침중
SIF CFLAG:MASTER:동침중
	RETURN 0
;우후후중
SIF CFLAG:MASTER:우후후
	RETURN 0
;수면중
SIF CFLAG:MASTER:수면
	RETURN 0
;시간정지중
SIF FLAG:시간정지
	RETURN 0
;체력・기력부족
SIF BASE:MASTER:기력 < 800 || BASE:MASTER:체력 < 800
	RETURN 0
RETURN 1

;-------------------------------------------------
;벌레를 잡는 함수
;-------------------------------------------------
@MUSHITORI(파워, 행운)
#DIM 파워
#DIM 행운
#DIM 레어리티지정
#DIM 랭크
#DIM Ｇ型
#DIM Ｘ型
#DIM MUSHI_ID
레어리티지정 = RAND:파워
Ｇ型 = 0
Ｘ型 = 0
MUSHI_ID = 0
;곤충을 추첨하여 발견되지 않으면 레어리티 하나를 내린다
RESULT = 0
WHILE 레어리티지정 >= 0
	CALL DRAW_MUSHI("곤충채집", CFLAG:MASTER:현재위치, 레어리티지정)
	IF RESULT
		MUSHI_CAPTURE ++
		;랭크判定
		랭크 = MIN(RAND:(행운 / 10), 99)
		SIF RAND:100 < (파워 / 2)
			Ｇ型 = 1
		SIF RAND:100 < (파워 / 2)
			Ｘ型 = 1
		;ID설정
		MUSHI_ID = MUSHI_CAPTURE * 1000000000000 + DAY * 1000000000000 + CFLAG:MASTER:현재위치 * 100000000 + 랭크 * 10000 + MUSHI_RARE * 1000 + RESULT
		SIF Ｇ型
			MUSHI_ID += 1000000
		SIF Ｘ型
			MUSHI_ID += 10000000
		BREAK
	ELSE
		레어리티지정 --
	ENDIF
WEND
RETURN MUSHI_ID

;-------------------------------------------------
;벌레를 추첨하는 함수
; SPOT = 0이면 분포 무시(출현 지형·출현 지역)
;-------------------------------------------------
@DRAW_MUSHI(ARGS, SPOT, 레어리티지정)
#DIM SPOT
#DIM 레어리티지정
#DIM MUSHI_RESULT
MUSHI_RESULT = 0
;셔플하여 차례로 판정해 나가다
CALL FISHER_YATES_SHAFFLE(MAXMUSHI)
FOR LOCAL, 1, MAXMUSHI
	CALL MUSHI_DATA(SHAFFLE_ARRAY:LOCAL, SPOT)
	SIF !RESULT
		CONTINUE
	SIF INRANGE(레어리티지정, 0, 9) && 레어리티지정 != MUSHI_RARE
		CONTINUE
	IF ARGS == "곤충채집"
		;출현 조건을 충족하지 못하다
		SIF !RESULT:1
			CONTINUE
	ELSEIF ARGS == "벌레트랩특정기호" ;虫トラップ特定好物
		; 좋아하는 것이 없음 (벌레 트랩으로 포획 불가)
		SIF RESULTS == "" || RESULTS == "없음"
			CONTINUE
		;ITEMNAME과 일치 여부 판정
		SIF !STRCOUNT(RESULTS, ITEMNAME:GET_MUSHIDATA(MUSHI_TRAP, "エサ番号"))
			CONTINUE
	ELSEIF ARGS == "벌레트랩" ;虫トラップ
		SIF RESULTS == "" || RESULTS == "없음"
			CONTINUE
		;좋아하는 것이 모든 경우는 건너뛰기
		IF RESULTS != "전부"
			;먹이 유형과 일치하는지 판정(CALLF로 RESULTS:10을 끌어오기, RESULTS는 유지)
			CALLF MUSHI_ESA_DATA(GET_MUSHIDATA(MUSHI_TRAP, "エサ番号"))
			SIF !STR_MULTI_COUNT(RESULTS, RESULTS:10)
				CONTINUE
		ENDIF
	ENDIF
	;벌레 결정
	MUSHI_RESULT = SHAFFLE_ARRAY:LOCAL
	BREAK
NEXT
RETURN MUSHI_RESULT

;-------------------------------------------------
;지정 조건의 벌레를 추첨하는 ID를 생성하는 함수
;-------------------------------------------------
@DRAW_MUSHI_DESIGN(CHARA, RARE_MIN, RARE_MAX, RANK_MIN, RANK_MAX, D_MUTA, D_FIELD, D_AREA, D_TRIBE, D_TYPE)
#DIM CHARA
#DIM RARE_MIN
#DIM RARE_MAX
#DIM RANK_MIN
#DIM RANK_MAX
#DIM D_MUTA
#DIM D_FIELD
#DIM D_AREA
#DIMS D_TRIBE
#DIMS D_TYPE
#DIM MUSHI_RESULT
#DIM MUSHI_ID
MUSHI_RESULT = 0
VARSET RESULT
SIF RARE_MAX < RARE_MIN || !INRANGE(RARE_MAX, 0, 9)
	THROW
SIF RANK_MAX < RANK_MIN || !INRANGE(RANK_MAX, 0, 100)
	THROW
;셔플하여 차례로 판정해 나가다
CALL FISHER_YATES_SHAFFLE(MAXMUSHI)
FOR LOCAL, 1, MAXMUSHI
	CALL MUSHI_DATA(SHAFFLE_ARRAY:LOCAL)
	SIF !RESULT
		CONTINUE
	;레어리티지정
	SIF RARE_MAX && !INRANGE(MUSHI_RARE, RARE_MIN, RARE_MAX)
		CONTINUE
	;지형지정
	SIF D_FIELD && !(MUSHI_FIELD & D_FIELD)
		CONTINUE
	;地域指定
	SIF D_AREA && !(RESULT:2 & D_AREA)
		CONTINUE
	;種族指定
	SIF D_TRIBE != "" && !STRCOUNT(MUSHI_TRIBE, D_TRIBE)
		CONTINUE
	;属性指定
	SIF D_TYPE != "" && !STRCOUNT(MUSHI_TYPE, D_TYPE)
		CONTINUE

	;특수한 설정
	;벌레잡이로 잡히지 않는 벌레는 안돼 (저것이라던가)
	SIF GROUPMATCH(MUSHI_NAME, "바선생", "그리마", "파리", "모기", "벼룩")
		CONTINUE
	;월인은 기계만(카구야와 에이린 제외)
	IF GET_TRIBENAME(CHARA, GETNUM(TALENT, "인간")) == "월인"
		IF !GROUPMATCH(CHARA, [[카구야]], [[에이린]])
			SIF !STRCOUNT(MUSHI_TRIBE, "기계")
				CONTINUE
		ENDIF
	;월인이나 캇파가 아니면 기계는 쓸 수 없다
	ELSEIF GET_TRIBENAME(CHARA, GETNUM(TALENT, "요괴")) != "캇파"
		SIF STRCOUNT(MUSHI_TRIBE, "기계")
			CONTINUE
	ENDIF

	;ムシ決定
	MUSHI_RESULT = SHAFFLE_ARRAY:LOCAL
	BREAK
NEXT
;조건이 너무 까다로우면 출력이 불가능하므로 에러
IF !MUSHI_RESULT
	PRINTL 조건에 맞는 벌레가 없습니다！
	THROW
ENDIF
;랭크指定,LIMITにすると数値が偏るのでループ処理
MUSHI_RANK = -1
IF RANK_MAX
	WHILE MUSHI_RANK < RANK_MIN
		MUSHI_RANK = RAND:RANK_MAX
	WEND
ELSE
	MUSHI_RANK = RAND:100
ENDIF
;変異指定
VARSET RESULT
IF D_MUTA
	SIF RAND:100 < D_MUTA
		RESULT:1 = 1
	SIF RAND:100 < D_MUTA
		RESULT:2 = 1
ELSE
	SIF RAND:100 < 3
		RESULT:1 = 1
	SIF RAND:100 < 3
		RESULT:2 = 1
ENDIF
;ID設定
MUSHI_ID = MUSHI_RANK * 10000 + MUSHI_RARE * 1000 + MUSHI_RESULT
SIF RESULT:1
	MUSHI_ID += 1000000
SIF RESULT:2
	MUSHI_ID += 10000000
;被らないように適当に数字を入れる
MUSHI_ID += RAND:1000000  * 100000000
RETURN MUSHI_ID

;-------------------------------------------------
;벌레를 잡은 뒷처리 함수
;-------------------------------------------------
@MUSHI_CAPTURE(MUSHI_ID)
#DIM MUSHI_ID
#DIM 保管
#DIM 結果保存
保管 = 0
;捕まえた時点で図鑑登録,相方が捕まえただけではダメ
MUSHI_COLLECT:GET_MUSHIDATA(MUSHI_ID, "벌레번호") = 1
;空きに登録する
FOR LOCAL, 1, MUSHI_MAXCAGE + 1
	IF !MUSHI_CAGE:LOCAL
		MUSHI_CAGE:LOCAL = MUSHI_ID
		保管 = LOCAL
		BREAK
	ENDIF
NEXT
IF 保管
	;WAITは外に任せる
	PRINTFORML %조사처리(MUSHI_NAME,"을")% 벌레 바구니【%TOFULL(TOSTR(保管))%】에 넣었다!
;空きがない場合
ELSE
	PRINTFORMW 벌레 바구니가 꽉 찼다!
	FOR LOCAL, 1, MUSHI_MAXCAGE + 1
		PRINTFORM [{LOCAL + 10}]놓아준다　[{LOCAL + 20}]소재로 한다　│【%TOFULL(TOSTR(LOCAL))%】
		CALL SHOW_MUSHI_DATA(MUSHI_CAGE:LOCAL, "一行")
		PRINTL
		MUSHI_NAME:LOCAL = %MUSHI_NAME%
		MUSHI_RARE:LOCAL = MUSHI_RARE
		MUSHI_TRIBE:LOCAL = %MUSHI_TRIBE%
	NEXT
	DRAWLINE
	;今捕まえたムシ,LOCALはMAXCAGE+1になってる
	PRINTFORM [{LOCAL + 10}]놓아준다　[{LOCAL + 20}]소재로 한다  │【　】
	CALL SHOW_MUSHI_DATA(MUSHI_ID, "一行")
	PRINTL
	MUSHI_NAME:LOCAL = %MUSHI_NAME%
	MUSHI_RARE:LOCAL = MUSHI_RARE
	MUSHI_TRIBE:LOCAL = %MUSHI_TRIBE%
	INPUT
	結果保存 = RESULT
	;素材にする
	IF INRANGE(結果保存, 21, 21 + MUSHI_MAXCAGE)
		PRINTFORM %MUSHI_NAME:(結果保存 % 10)%는
		;レア度6以上はレアな虫
		IF MUSHI_RARE:(結果保存 % 10) > 5
			PRINTFORMW 희귀한벌레로 다시 태어났다.…
			CALL GET_ITEM("희귀한벌레", 1, 1)
		;レア度5以下
		ELSE
			PRINTFORMW 소재가 됐다…
			;カエルはカエルに
			IF STRCOUNT(MUSHI_TRIBE:(結果保存 % 10), "개구리")
				CALL GET_ITEM("개구리", 1, 1)
			ELSE
				CALL GET_ITEM("벌레", 1, 1)
			ENDIF
		ENDIF
	;逃がす
	ELSEIF INRANGE(結果保存, 11, 11 + MUSHI_MAXCAGE)
		PRINTFORMW %조사처리(MUSHI_NAME:(結果保存 % 10),"을")% 들판에 풀어주었다…
	;適当な数値を入力したら逃がす
	ELSE
		結果保存 = 11 + MUSHI_MAXCAGE
		PRINTFORMW %조사처리(MUSHI_NAME:(結果保存 % 10),"을")% 들판에 풀어주었다…
	ENDIF
	;入れ替えた
	IF INRANGE(結果保存 % 10, 1, MUSHI_MAXCAGE)
		MUSHI_CAGE:(結果保存 % 10) = MUSHI_ID
		PRINTFORML %조사처리(MUSHI_NAME,"을")%를 벌레 바구니【%TOFULL(TOSTR(結果保存 % 10))%】에 넣었다!
	ENDIF
ENDIF

;-------------------------------------------------
;벌레 데이터를 추출하는 함수
;-------------------------------------------------
@GET_MUSHIDATA(MUSHI_ID, ARGS)
#FUNCTION
#DIM MUSHI_ID
SELECTCASE ARGS
;回数
CASE "횟수", "回数"
	RETURNF MUSHI_ID / 1000000000000000000
;日付とエサ番号は同位置
CASE "日付", "エサ番号"
	RETURNF MUSHI_ID / 1000000000000 % 100000
CASE "場所"
	RETURNF MUSHI_ID / 100000000 % 10000
;CASE "랭크블록"
;	RETURNF MUSHI_ID / 10000 % 10000
CASE "Ｘ型"
	RETURNF MUSHI_ID / 10000000 % 10
CASE "Ｇ型"
	RETURNF MUSHI_ID / 1000000 % 10
CASE "랭크", "ランク"
	RETURNF MUSHI_ID / 10000 % 100
CASE "레어리티", "レアリティ"
	RETURNF MUSHI_ID / 1000 % 10
CASE "벌레번호", "ムシ番号"
	RETURNF MUSHI_ID % 1000
ENDSELECT

;-------------------------------------------------
;벌레 데이터를 표시하는 함수
;-------------------------------------------------
@SHOW_MUSHI_DATA(MUSHI_ID, 表示タイプ)
#DIM MUSHI_ID
#DIMS 表示タイプ
#DIM 日付
#DIM 場所
#DIM Ｘ型
#DIM Ｇ型
#DIM 랭크
#DIM 레어리티
#DIM 벌레번호
#DIMS DYNAMIC ELM_LIST, 100
#DIM  DYNAMIC ELM_CNT,  100
#DIM  DYNAMIC ELM_NUM
日付 = GET_MUSHIDATA(MUSHI_ID, "日付")
場所 = GET_MUSHIDATA(MUSHI_ID, "場所")
Ｘ型 = GET_MUSHIDATA(MUSHI_ID, "Ｘ型")
Ｇ型 = GET_MUSHIDATA(MUSHI_ID, "Ｇ型")
랭크 = GET_MUSHIDATA(MUSHI_ID, "랭크")
레어리티 = GET_MUSHIDATA(MUSHI_ID, "레어리티")
벌레번호 = GET_MUSHIDATA(MUSHI_ID, "벌레번호")
;能力値を設定する,ついでに解説文設定
CALL MUSHI_PALAM(MUSHI_ID)
IF 表示タイプ == "一行"
	IF 랭크 >= 90
		CALL COLORMESSAGE(@"★", C_ORANGE, 0, 1)
	ELSEIF 랭크 >= 80
		CALL COLORMESSAGE(@"★", C_YELLOW, 0, 1)
	ELSEIF 랭크 >= 60
		CALL COLORMESSAGE(@"★", C_WHITE, 0, 1)
	ELSE
		PRINT
	ENDIF
	CALL PRINT_MUSHINAME(MUSHI_NAME, MUSHI_ID, 40)
	CALL MUSHI_TYPE_PRIINT(MUSHI_TYPE)
	PRINTFORM ／
	CALL PRINT_ALPHABET(9 - 레어리티, 10, 1)
	;改行は外に任せる
ELSEIF 表示タイプ == "図鑑一覧"
	IF MUSHI_COLLECT:벌레번호
		PRINTFORM [{벌레번호, 3}] %MUSHI_NAME, 30, LEFT%
		CALL PRINT_ALPHABET(9 - 레어리티, 10, 1)
	ELSE
		PRINTPLAINFORM [{벌레번호, 3}] %"？" * (STRLENS(MUSHI_NAME) / 2), 30, LEFT%
		CALL PRINT_ALPHABET(9 - 레어리티, 10, 1)
	ENDIF
	PRINTL
ELSE
	PRINTFORML %"━" * 50%
	PRINTFORM 　 No.{벌레번호, 3, LEFT}
	IF 表示タイプ == "図鑑"
		PRINT
	ELSE
		IF 랭크 >= 90
			CALL COLORMESSAGE(@"★", C_ORANGE, 0, 1)
		ELSEIF 랭크 >= 80
			CALL COLORMESSAGE(@"★", C_YELLOW, 0, 1)
		ELSEIF 랭크 >= 60
			CALL COLORMESSAGE(@"★", C_WHITE, 0, 1)
		ELSE
			PRINT
		ENDIF
	ENDIF
	CALL PRINT_MUSHINAME(MUSHI_NAME, MUSHI_ID)
	PRINTL
	PRINTFORML %"━" * 50%
	PRINTFORM 　　레어도：
	CALL PRINT_ALPHABET(9 - 레어리티, 10, 1)
	PRINT ／
	CALL COLOR_STAMP(레어리티 + 1, 0, "★", RANKCOLOR(레어리티 + 1), 1)
	PRINTL
	PRINTFORM 　　　속성：
	CALL MUSHI_TYPE_PRIINT(MUSHI_TYPE)
	PRINTL
	PRINTFORML 　　　종족：%MUSHI_TRIBE%
	PRINTFORML 　　사이즈：{MUSHI_SIZE / 100}.{MUSHI_SIZE % 100}mm
	PRINTFORM 　특기지형：
	CALL PRINT_FIELDTYPE(MUSHI_FIELD)
	PRINTL
	PRINTFORML 　　　　HP：{MUSHI_HP, 6, LEFT}
	PRINTFORML 　　　 ATK：{MUSHI_ATK, 6, LEFT}
	PRINTFORML 　　　 SPD：{MUSHI_SPD, 6, LEFT}
	PRINTFORML 　　　스킬：%MUSHI_SKL%
	PRINTFORML %"--" * 50%
	FOR LOCAL, 1, 6
		PRINTFORML %RESULTS:LOCAL%
	NEXT
ENDIF
;WAITは外に任せる
;-------------------------------------------------
;虫カゴを確認する関数
;[아이템]から転送
;-------------------------------------------------
@SHOW_MUSHI_CAGE
#DIM 並び替えモード
#DIM 並び替え対象
IF 並び替えモード
	CALL COLORMESSAGE(@"정렬 대상을 골라주세요.", C_AQUA, 1)
ELSE
	PRINTFORML ◆%CALLNAME:MASTER%의 벌레 바구니◆
ENDIF
DRAWLINE
FOR LOCAL, 1, MUSHI_MAXCAGE + 1
	IF MUSHI_CAGE:LOCAL
		SIF 並び替え対象 == LOCAL
			SETCOLOR C_AQUA
		PRINTFORM [{LOCAL, 2}]
		CALL SHOW_MUSHI_DATA(MUSHI_CAGE:LOCAL, "一行")
		PRINTL
		MUSHI_NAME:LOCAL = %MUSHI_NAME%
	ELSE
		PRINTPLAINFORM [{LOCAL, 2}] 텅 비어 있음
		PRINTL
	ENDIF
NEXT
DRAWLINE
SIF 並び替えモード
	SETCOLOR C_AQUA
PRINTL [99] 정렬한다
RESETCOLOR
PRINTL [ 0] 돌아간다
INPUT
IF INRANGE(RESULT, 1, MUSHI_MAXCAGE)
	IF 並び替えモード
		IF !MUSHI_CAGE:RESULT
			並び替え対象 = 0
		ELSEIF !並び替え対象
			並び替え対象 = RESULT
		ELSEIF 並び替え対象 == RESULT
			並び替え対象 = 0
		ELSE
			SWAP MUSHI_CAGE:並び替え対象, MUSHI_CAGE:RESULT
			並び替え対象 = 0
		ENDIF
	ELSE
		CALL SHOW_MUSHI_CAGE_2(RESULT)
		RESTART
	ENDIF
ELSEIF RESULT == 99
	並び替えモード = !並び替えモード
	SIF !並び替えモード
		並び替え対象 = 0
ELSE
	並び替えモード = 0
	並び替え対象 = 0
	RETURN
ENDIF
CLEARLINE 12
RESTART

;-------------------------------------------------
;虫カゴを確認する関数２
;ARG = 虫カゴ番号
;-------------------------------------------------
@SHOW_MUSHI_CAGE_2(ARG)
#DIM LINE
LINE = 24
PRINTFORML 虫カゴ【%TOFULL(TOSTR(ARG))%】
CALL SHOW_MUSHI_DATA(MUSHI_CAGE:ARG)
DRAWLINE
PRINTL [ 1] 다음 바구니
PRINTL [ 2] 이전 바구니
PRINTL [ 0] 돌아간다
INPUT
IF RESULT == 1
	FOR LOCAL, ARG + 1, MUSHI_MAXCAGE + 1
		IF MUSHI_CAGE:LOCAL
			ARG = LOCAL
			CLEARLINE LINE
			RESTART
		ENDIF
	NEXT
	FOR LOCAL, 1, ARG + 1
		IF MUSHI_CAGE:LOCAL
			ARG = LOCAL
			CLEARLINE LINE
			RESTART
		ENDIF
	NEXT
ELSEIF RESULT == 2
	FOR LOCAL, 1, ARG
		LOCAL:1 = ARG - LOCAL
		IF MUSHI_CAGE:(LOCAL:1)
			ARG = LOCAL:1
			CLEARLINE LINE
			RESTART
		ENDIF
	NEXT
	FOR LOCAL, 1, MUSHI_MAXCAGE + 1
		LOCAL:1 = MUSHI_MAXCAGE + 1 - LOCAL
		IF MUSHI_CAGE:(LOCAL:1)
			ARG = (LOCAL:1)
			CLEARLINE LINE
			RESTART
		ENDIF
	NEXT
ELSE
	RETURN
ENDIF
RESTART

;-------------------------------------------------
;무시 능력치를 설정하는 함수
;-------------------------------------------------
@MUSHI_PALAM(MUSHI_ID, 特殊補正, 戦闘中HP, 状態変化)
#DIM MUSHI_ID
#DIM 特殊補正
#DIM 戦闘中HP
#DIMS 状態変化
#DIM 補正値
MUSHI_RANK = GET_MUSHIDATA(MUSHI_ID, "랭크")
;ムシデータを引き出す
CALL MUSHI_DATA(GET_MUSHIDATA(MUSHI_ID, "벌레번호"))
補正値 = 80 + ((MUSHI_RANK + 1) / 2) + 特殊補正
MUSHI_MAXHP = MUSHI_HP * 補正値 / 100
MUSHI_ATK = MUSHI_ATK * 補正値 / 100
MUSHI_SPD = MUSHI_SPD * 補正値 / 100
MUSHI_SIZE = MUSHI_SIZE * 補正値 / 100
;変異による補正
IF GET_MUSHIDATA(MUSHI_ID, "Ｇ型")
	TIMES MUSHI_MAXHP, 1.50
	TIMES MUSHI_ATK, 1.50
	TIMES MUSHI_SIZE, 2.00
ENDIF
IF GET_MUSHIDATA(MUSHI_ID, "Ｘ型")
	TIMES MUSHI_SPD, 1.50
	TIMES MUSHI_SIZE, 0.50
ENDIF
;状態変化による補正
IF STRCOUNT(状態変化, "<得意季節>")
	TIMES MUSHI_ATK, 1.20
	TIMES MUSHI_SPD, 1.20
ENDIF
IF STRCOUNT(状態変化, "<得意地形>")
	TIMES MUSHI_ATK, 1.20
	TIMES MUSHI_SPD, 1.20
ENDIF
IF STRCOUNT(状態変化, "<대장>")
	TIMES MUSHI_ATK, 1.20
	TIMES MUSHI_SPD, 1.20
ENDIF
IF STRCOUNT(状態変化, "<고양>")
	TIMES MUSHI_ATK, 1.50
	TIMES MUSHI_SPD, 1.50
ENDIF
IF STRCOUNT(状態変化, "<역습>")
	TIMES MUSHI_ATK, 1.50
	TIMES MUSHI_SPD, 1.50
ENDIF
SIF STRCOUNT(状態変化, "<악취>")
	TIMES MUSHI_ATK, 0.50
SIF STRCOUNT(状態変化, "<마비>")
	TIMES MUSHI_SPD, 0.50
SIF STRCOUNT(状態変化, "<슬로우>")
	TIMES MUSHI_SPD, 0.50
IF 戦闘中HP
	MUSHI_HP = 戦闘中HP
ELSE
	MUSHI_HP = MUSHI_MAXHP
ENDIF

;-------------------------------------------------
;벌레 배틀용 플래그를 설정하는 함수
;@MUSHI_PALAMを呼んだ直後に呼ぶ
;-------------------------------------------------
@MUSHI_FLAGSETTING(MUSHI_ID, ARG)
#DIM MUSHI_ID
MUSHI_CAGE:ARG = MUSHI_ID
MUSHI_NAME:ARG = %MUSHI_NAME%
MUSHI_RARE:ARG = MUSHI_RARE
MUSHI_RANK:ARG = MUSHI_RANK
MUSHI_TYPE:ARG = %MUSHI_TYPE%
MUSHI_TRIBE:ARG = %MUSHI_TRIBE%
MUSHI_FIELD:ARG = MUSHI_FIELD
MUSHI_MAXHP:ARG = MUSHI_MAXHP
MUSHI_HP:ARG = MUSHI_HP
MUSHI_ATK:ARG = MUSHI_ATK
MUSHI_SPD:ARG = MUSHI_SPD
MUSHI_SKL:ARG = %MUSHI_SKL%

;-------------------------------------------------
;虫捕りできる場所を判定する関数
;bitを入れて返す
;-------------------------------------------------
@MUSHITORI_SPOT(ARG)
#FUNCTION
IF !IN_HOME(ARG)
	;서브맵
	SELECTCASE ARG
	;벚꽃길 토리이
	CASE 10
		RETURNF FIELD_SETBIT("꽃나무땅")
	;신사 경내
	CASE 20
		RETURNF FIELD_SETBIT("땅바위집")
	;요정의 큰나무
	CASE 50
		RETURNF FIELD_SETBIT("풀꽃나무땅")
	CASE 수양버들아래
		RETURNF FIELD_SETBIT("풀땅나무")
	CASE 명련사경내
		RETURNF FIELD_SETBIT("땅바위집")
	CASE 묘지
		RETURNF FIELD_SETBIT("풀꽃땅바위")
	CASE 광장
		RETURNF FIELD_SETBIT("땅바위집")
	CASE 주택가
		RETURNF FIELD_SETBIT("집")
	CASE 안개의호수
		RETURNF FIELD_SETBIT("풀물")
	CASE 폐양관
		RETURNF FIELD_SETBIT("집")
	CASE 정문
		RETURNF FIELD_SETBIT("풀꽃나무땅")
	CASE 죽림입구
		RETURNF FIELD_SETBIT("풀땅나무")
	CASE 미혹의샛길
		RETURNF FIELD_SETBIT("풀땅나무")
	CASE 사각의죽림
		RETURNF FIELD_SETBIT("풀땅나무")
	CASE 토끼동굴
		RETURNF FIELD_SETBIT("땅바위")
	CASE 무명의언덕
		RETURNF FIELD_SETBIT("풀꽃땅")
	CASE 태양의밭
		RETURNF FIELD_SETBIT("풀꽃땅")
	CASE 숲의입구
		RETURNF FIELD_SETBIT("풀나무땅")
	CASE 고목의큰나무
		RETURNF FIELD_SETBIT("풀나무땅")
	CASE 재고의길
		RETURNF FIELD_SETBIT("풀꽃땅")
	CASE 무연총
		RETURNF FIELD_SETBIT("풀나무꽃땅바위")
	CASE 중유의길
		RETURNF FIELD_SETBIT("풀땅")
	CASE 삼도천
		RETURNF FIELD_SETBIT("풀물")
	CASE 피안
		RETURNF FIELD_SETBIT("꽃물")
	CASE 백옥루정원
		RETURNF FIELD_SETBIT("꽃나무땅집")
	CASE 지옥
		RETURNF FIELD_SETBIT("땅바위")
	CASE 산록의수해
		RETURNF FIELD_SETBIT("풀나무땅")
	CASE 현무의늪
		RETURNF FIELD_SETBIT("물바위")
	CASE 큰두꺼비의연못
		RETURNF FIELD_SETBIT("풀물")
	CASE 절경의언덕
		RETURNF FIELD_SETBIT("풀나무땅바위")
	CASE 산의호수
		RETURNF FIELD_SETBIT("풀물")
	CASE 모리야신사경내
		RETURNF FIELD_SETBIT("땅바위집")
	CASE 환상풍혈
		RETURNF FIELD_SETBIT("땅바위")
	CASE 지옥의깊은길
		RETURNF FIELD_SETBIT("땅바위물")
	CASE 옛지옥가도
		RETURNF FIELD_SETBIT("땅집")
	CASE 지령전
		RETURNF FIELD_SETBIT("집")
	CASE 고요의바다
		RETURNF FIELD_SETBIT("달")
	ENDSELECT
ELSE
	;메인맵
	SELECTCASE MAIN_MAP
	CASE 0
		SELECTCASE NAME_FROM_PLACE(ARG)
		CASE "경내"
			RETURNF FIELD_SETBIT("땅바위집")
		CASE "탈의실"
			RETURNF FIELD_SETBIT("풀꽃나무땅집")
		CASE "본전 뒷편"
			RETURNF FIELD_SETBIT("땅바위집")
		CASE "참배길"
			RETURNF FIELD_SETBIT("풀나무땅")
		CASE "수호신의 숲"
			RETURNF FIELD_SETBIT("풀꽃나무땅")
		ENDSELECT
	CASE 1
		SELECTCASE NAME_FROM_PLACE(ARG)
		CASE "경내"
			RETURNF FIELD_SETBIT("땅바위집")
		CASE "뒷마당"
			RETURNF FIELD_SETBIT("풀꽃나무땅집")
		CASE "묘지"
			RETURNF FIELD_SETBIT("풀꽃땅바위")
		CASE "영묘 광장"
			RETURNF FIELD_SETBIT("땅바위집")
		CASE "고산수"
			RETURNF FIELD_SETBIT("풀꽃바위")
		ENDSELECT
	CASE 2
		SELECTCASE NAME_FROM_PLACE(ARG)
		CASE "인간마을 문"
			RETURNF FIELD_SETBIT("땅바위집")
		CASE "중앙 광장"
			RETURNF FIELD_SETBIT("땅나무바위집")
		ENDSELECT
	CASE 3
		SELECTCASE NAME_FROM_PLACE(ARG)
		CASE "탈의실"
			RETURNF FIELD_SETBIT("풀꽃나무땅집")
		CASE "뒷마당"
			RETURNF FIELD_SETBIT("풀꽃나무땅집")
		CASE "호숫가"
			RETURNF FIELD_SETBIT("풀물")
		CASE "안개의 호수"
			RETURNF FIELD_SETBIT("풀물")
		ENDSELECT
	CASE 4
		SELECTCASE NAME_FROM_PLACE(ARG)
		CASE "탈의실"
			RETURNF FIELD_SETBIT("풀꽃나무땅집")
		CASE "뒷마당"
			RETURNF FIELD_SETBIT("풀꽃나무땅집")
		CASE "토끼 동굴"
			RETURNF FIELD_SETBIT("땅바위")
		CASE "사각의 죽림"
			RETURNF FIELD_SETBIT("풀땅나무")
		CASE "미혹의 샛길"
			RETURNF FIELD_SETBIT("풀땅나무")
		CASE "무명의 언덕"
			RETURNF FIELD_SETBIT("풀꽃땅")
		CASE "태양의 밭"
			RETURNF FIELD_SETBIT("풀꽃땅")
		ENDSELECT
	CASE 5
		SELECTCASE NAME_FROM_PLACE(ARG)
		CASE "마법의 숲 입구"
			RETURNF FIELD_SETBIT("풀나무땅")
		CASE "갈림길"
			RETURNF FIELD_SETBIT("풀나무땅")
		CASE "무연총"
			RETURNF FIELD_SETBIT("풀나무꽃땅바위")
		CASE "버섯 군생지"
			RETURNF FIELD_SETBIT("풀나무땅")
		CASE "마법의 광장"
			RETURNF FIELD_SETBIT("풀나무땅집")
		CASE "재고의 길"
			RETURNF FIELD_SETBIT("풀꽃땅")
		CASE "고목의 큰나무"
			RETURNF FIELD_SETBIT("풀나무땅")
		CASE "리글의 거처"
			RETURNF FIELD_SETBIT("풀땅")
		ENDSELECT
	CASE 6
		SELECTCASE NAME_FROM_PLACE(ARG)
		CASE "중유의 길"
			RETURNF FIELD_SETBIT("풀땅")
		CASE "삼도천 모래밭"
			RETURNF FIELD_SETBIT("풀물")
		CASE "피안"
			RETURNF FIELD_SETBIT("꽃물")
		CASE "탈의실"
			RETURNF FIELD_SETBIT("풀꽃나무바위집")
		CASE "사이교"
			RETURNF FIELD_SETBIT("꽃나무")
		CASE "야쿠모 가 정원"
			RETURNF FIELD_SETBIT("풀꽃나무땅집")
		ENDSELECT
	CASE 7
		SELECTCASE NAME_FROM_PLACE(ARG)
		CASE "수해도 입구"
			RETURNF FIELD_SETBIT("풀나무땅")
		CASE "산길·늪으로 가는 길"
			RETURNF FIELD_SETBIT("풀나무땅바위")
		CASE "현무의 늪"
			RETURNF FIELD_SETBIT("물바위")
		CASE "산길·산비탈"
			RETURNF FIELD_SETBIT("풀나무땅바위")
		CASE "산길·분기점"
			RETURNF FIELD_SETBIT("풀나무땅바위")
		CASE "큰두꺼비의 연못"
			RETURNF FIELD_SETBIT("풀물")
		CASE "아키 자매의 집·밭"
			RETURNF FIELD_SETBIT("풀꽃땅집")
		CASE "선인 저택·마당"
			RETURNF FIELD_SETBIT("풀꽃나무땅집")
		CASE "댑싸리"
			RETURNF FIELD_SETBIT("나무")
		CASE "산정으로 가는 길"
			RETURNF FIELD_SETBIT("풀나무땅바위")
		ENDSELECT
	CASE 8
		SELECTCASE NAME_FROM_PLACE(ARG)
		CASE "산정 입구"
			RETURNF FIELD_SETBIT("풀나무땅바위")
		CASE "정상"
			RETURNF FIELD_SETBIT("풀나무땅바위")
		CASE "폭포 뒤"
			RETURNF FIELD_SETBIT("물바위")
		CASE "경내"
			RETURNF FIELD_SETBIT("땅바위집")
		CASE "호숫가"
			RETURNF FIELD_SETBIT("풀물")
		CASE "탈의실"
			RETURNF FIELD_SETBIT("풀꽃나무땅집")
;		CASE "도원",天界に虫はいない？
;			RETURNF FIELD_SETBIT("")
		ENDSELECT
	CASE 9
		SELECTCASE NAME_FROM_PLACE(ARG)
		CASE "지령전 앞"
			RETURNF FIELD_SETBIT("집")
		CASE "뒷마당"
			RETURNF FIELD_SETBIT("풀꽃나무땅바위집")
		CASE "장미정원"
			RETURNF FIELD_SETBIT("풀꽃")
		CASE "안뜰"
			RETURNF FIELD_SETBIT("풀꽃바위집")
		CASE "뒷골목"
			RETURNF FIELD_SETBIT("땅집")
		CASE "강가"
			RETURNF FIELD_SETBIT("땅물바위")
		CASE "수혈의 바닥"
			RETURNF FIELD_SETBIT("땅바위")
		ENDSELECT
	CASE 10
		SELECTCASE NAME_FROM_PLACE(ARG)
		CASE "入り江"
			RETURNF FIELD_SETBIT("달")
		ENDSELECT
	ENDSELECT
ENDIF

;-------------------------------------------------
;필드 타입의 bit를 넣어 반환하는 함수
;@AREA_SETBITと同様
;"모두"を入れると全てを入れた数値(2^8 - 1)を返す、が、おそらく使わない(月があるので）
;"이외"を入れると反転する
;-------------------------------------------------
@FIELD_SETBIT(ARGS)
#FUNCTION
VARSET LOCAL
SIF STRCOUNT(ARGS, "모두")
	RETURNF 256 - 1

SIF STRCOUNT(ARGS, "풀")
	SETBIT LOCAL, 0
SIF STRCOUNT(ARGS, "꽃")
	SETBIT LOCAL, 1
SIF STRCOUNT(ARGS, "나무")
	SETBIT LOCAL, 2
SIF STRCOUNT(ARGS, "땅")
	SETBIT LOCAL, 3
SIF STRCOUNT(ARGS, "물")
	SETBIT LOCAL, 4
SIF STRCOUNT(ARGS, "바위")
	SETBIT LOCAL, 5
SIF STRCOUNT(ARGS, "집")
	SETBIT LOCAL, 6
SIF STRCOUNT(ARGS, "달")
	SETBIT LOCAL, 7

IF STRCOUNT(ARGS, "이외")
	FOR LOCAL:1, 0, 8
		INVERTBIT LOCAL:1, LOCAL
	NEXT
ENDIF
RETURNF LOCAL

;-------------------------------------------------
;ムシの名前をＧＸ付きで表示する関数
;ARG    空きスペース数
;ARG:1  RIGHT
;-------------------------------------------------
@PRINT_MUSHINAME(ARGS, MUSHI_ID, ARG, ARG:1)
#DIM MUSHI_ID
#DIM Ｇ型
#DIM Ｘ型
Ｇ型 = GET_MUSHIDATA(MUSHI_ID, "Ｇ型")
Ｘ型 = GET_MUSHIDATA(MUSHI_ID, "Ｘ型")
LOCAL = MAX(ARG - STRLENS(ARGS) - Ｇ型 * 2 - Ｘ型 * 2, 0)
SIF ARG:1
	PRINTFORM %" " * LOCAL%
PRINTFORM %ARGS%
IF  Ｇ型 && Ｘ型
	CALL COLORMESSAGE(@"ＧＸ", 0xffff78)
ELSEIF Ｇ型
	CALL COLORMESSAGE(@"Ｇ", 0xff5a5a)
ELSEIF Ｘ型
	CALL COLORMESSAGE(@"Ｘ", 0x64c8ff)
ENDIF
SIF !ARG:1
	PRINTFORM %" " * LOCAL%

;-------------------------------------------------
;랭크に応じたカラーだけ抽出する関数
;-------------------------------------------------
@RANKCOLOR(RANK)
#FUNCTION
#DIM RANK
#DIM RANK_NUM
SELECTCASE RANK
CASE 1
	RETURNF C_GRAY
CASE 2
	RETURNF C_AQUA
CASE 3
	RETURNF C_GREEN
CASE 4
	RETURNF C_YELLOW
CASE 5
	RETURNF C_ORANGE
CASE 6
	RETURNF C_RED
CASE 7
	RETURNF C_PINK
CASE 8
	RETURNF C_WHITE
CASE 9
	RETURNF C_WHITE
CASE 10
	RETURNF C_P_PURPLE
ENDSELECT

;-------------------------------------------------
;무시 속성을 컬러 스탬프하는 함수
;TYPE : 1 벌레 배틀 표시 전용 끝에 다음 벌레 속성수를 카운트하는 인수
;-------------------------------------------------
@MUSHI_TYPE_PRIINT(TYPE, TYPE:1)
#DIMS TYPE, 2
CALL COLOR_STAMP(STRCOUNT(TYPE, "無"), 5, "○", C_WHITE, 1)
CALL COLOR_STAMP(STRCOUNT(TYPE, "赤"), 5, "●", C_RED, 1)
CALL COLOR_STAMP(STRCOUNT(TYPE, "緑"), 5, "●", C_GREEN, 1)
CALL COLOR_STAMP(STRCOUNT(TYPE, "青"), 5, "●", C_BLUE, 1)
CALL COLOR_STAMP(STRCOUNT(TYPE, "白"), 5, "●", C_WHITE, 1)
CALL COLOR_STAMP(STRCOUNT(TYPE, "黒"), 5, "●", C_GRAY, 1)
IF TYPE:1 != ""
	RESULT:1 = STRCOUNT(TYPE:1, "無") + STRCOUNT(TYPE:1, "赤") + STRCOUNT(TYPE:1, "緑") + STRCOUNT(TYPE:1, "青") + STRCOUNT(TYPE:1, "白") + STRCOUNT(TYPE:1, "黒")
	TIMES RESULT:1, 2.0
ENDIF
RESULT = STRCOUNT(TYPE, "無") + STRCOUNT(TYPE, "赤") + STRCOUNT(TYPE, "緑") + STRCOUNT(TYPE, "青") + STRCOUNT(TYPE, "白") + STRCOUNT(TYPE, "黒")
TIMES RESULT, 2.0
RETURN RESULT

;-------------------------------------------------
;필드 타입에 색을 입혀 프린트하는 함수
;-------------------------------------------------
@PRINT_FIELDTYPE(ARG)
SIF GETBIT(ARG, 0)
	CALL COLORMESSAGE(@"[초원]", 0x78ff78)
SIF GETBIT(ARG, 1)
	CALL COLORMESSAGE(@"[꽃밭]", C_PINK)
SIF GETBIT(ARG, 2)
	CALL COLORMESSAGE(@"[삼림]", 0x00c832)
SIF GETBIT(ARG, 3)
	CALL COLORMESSAGE(@"[모래밭]", 0xffc864)
SIF GETBIT(ARG, 4)
	CALL COLORMESSAGE(@"[물가]", 0x64c8ff)
SIF GETBIT(ARG, 5)
	CALL COLORMESSAGE(@"[암벽]", 0xb49678)
SIF GETBIT(ARG, 6)
	CALL COLORMESSAGE(@"[가옥]", 0xff7878)
SIF GETBIT(ARG, 7)
	CALL COLORMESSAGE(@"[타일]", 0xc8dcff)

;-------------------------------------------------
;필드 타입을 문자열로 반환하는 함수
;-------------------------------------------------
@NAME_FIELD_TYPE(ARG)
#FUNCTIONS
LOCALS =
SIF GETBIT(ARG, 0)
	LOCALS += "[초원]"
SIF GETBIT(ARG, 1)
	LOCALS += "[꽃밭]"
SIF GETBIT(ARG, 2)
	LOCALS += "[삼림]"
SIF GETBIT(ARG, 3)
	LOCALS += "[모래밭]"
SIF GETBIT(ARG, 4)
	LOCALS += "[물가]"
SIF GETBIT(ARG, 5)
	LOCALS += "[암벽]"
SIF GETBIT(ARG, 6)
	LOCALS += "[가옥]"
SIF GETBIT(ARG, 7)
	LOCALS += "[타일]"
RETURNF LOCALS

;-------------------------------------------------
;SHOP에서 불리는 표시 함수
;-------------------------------------------------
@SHOW_COLLECTION_MUSHI
#DIM START,10
#DIM ページ
#DIM 最後のページ
#DIM MUSHI_ID
;각 페이지의 머릿번을 설정하다
IF !START
[IF_DEBUG]
	FOR LOCAL, 1, MAXMUSHI
		MUSHI_COLLECT:LOCAL = RAND:2
	NEXT
[ENDIF]
	VARSET LOCAL
	FOR LOCAL, 1, MAXMUSHI
		CALL MUSHI_DATA(LOCAL)
		SIF !RESULT
			CONTINUE
		LOCAL:1 ++
		IF LOCAL:1 == 21
			LOCAL:2 ++
			START:(LOCAL:2) = LOCAL
			LOCAL:1 = 1
		ENDIF
		LOCAL:3 = LOCAL
	NEXT
	START = 1
	ページ = 1
	;마지막 페이지와 마지막 페이지 머리 번호 설정
	最後のページ = LOCAL:2 + 1
	START:最後のページ = LOCAL:3 + 1
ENDIF
VARSET LOCAL
PRINTFORML ◆잡은 벌레 리스트 PAGE.{ページ}
DRAWLINE
FOR LOCAL, START, START:ページ
	CALL MUSHI_DATA(LOCAL)
	SIF !RESULT
		CONTINUE
	MUSHI_ID = MUSHI_RARE * 1000 + LOCAL
	CALL SHOW_MUSHI_DATA(MUSHI_ID, "図鑑一覧")
	LOCAL:1 ++
NEXT
WHILE LOCAL:1 < 20
	PRINTL
	LOCAL:1 ++
WEND
DRAWLINE
PRINTL [999] 다음페이지
PRINTL [998] 이전페이지
PRINTL [  0] 돌아간다
INPUT
;戻る
IF !RESULT
	VARSET START
	RETURN
;次のページ
ELSEIF RESULT == 999
	ページ ++
	IF ページ > 最後のページ
		ページ = 1
		START = 1
	ELSE
		START = START:(ページ - 1)
	ENDIF
;前のページ
ELSEIF RESULT == 998
	ページ --
	IF ページ < 1
		ページ = 最後のページ
		START = START:(最後のページ - 1)
	ELSEIF ページ == 1
		START = 1
	ELSE
		START = START:(ページ - 1)
	ENDIF
;閲覧
ELSEIF INRANGE(RESULT, 1, MAXMUSHI) && MUSHI_COLLECT:RESULT
	;虫のデータを引き出す,ランクは表記通りの設定で固定
	LOCAL = RESULT
	CALL MUSHI_DATA(RESULT)
	MUSHI_ID = 39 * 10000 + MUSHI_RARE * 1000 + LOCAL
	CALL SHOW_MUSHI_DATA(MUSHI_ID, "図鑑")
	DRAWLINE
	PRINTL [  0] 돌아간다
	INPUT
	CLEARLINE 21
ENDIF
CLEARLINE 27
RESTART

path: ERB/커맨드관련/COMF/일상계/COMF449 곤충채집.ERB


code:
;-------------------------------------------------
;술벌레의 상태를 본다
;일상계 커맨드, 레벨 1
;-------------------------------------------------

@COM450
#DIM 양조량
#DIM 술ID
VARSET LOCAL

술ID = ALC_ID()
양조량 = GET_INT(0, "술데이터", 술ID, "양조수")
LOCALS '= @"%조사처리(VAR_WATER,"와")% 바꿔넣는다"
LOCAL = 1
IF VAR_WATER == ""
	LOCALS '= "갈아넣을 물도 없이 퍼낼 수는 없다"
	LOCAL = 0
ENDIF

PRINTFORML %마스터는% 술벌레가 들어있는 병을 들여다보았다
PRINTFORML 병은 %조사처리(VAR_FERMENT,"으로")% 채워져 있다…
DRAWLINE
{
CALL ASK_M("아무것도 안 한다",1,@"%LOCALS%", LOCAL,"아이템을 더한다",1,
"시간조작 주조（TSP2400소비）",BASE:MASTER:8 >= 2400,"『킹・크림슨』！（TSP4000 & 킹・크림슨 소비）", BASE:MASTER:8 >= 4000 && ITEM:킹・크림슨)
}
SELECTCASE RESULT
	CASE 0
		RETURN -1
	CASE 1
		PRINTFORML %마스터는% %조사처리(VAR_FERMENT,"를")% 퍼내고 %VAR_WATER%와 바꿔넣었다
		IF 양조량 > 0
			CALL GET_ITEM(@"%VAR_FERMENT%", 양조량, 2)
		ENDIF
		VAR_FERMENT = %VAR_WATER%
		VAR_WATER =
		DAY:10 = 0
		;入れ替え時にエサをやれる
		IF ITEM:어박 || ITEM:육골분
			PRINTFORML 술벌레에게 먹이를 줄까…
			{
			CALL ASK_M("어박을 준다", ITEM:어박,
			"육골분을 준다", ITEM:육골분,
			"먹이는 주지 않는다",1)
			}
			SELECTCASE RESULT
				CASE 0
					CALL LOST_ITEM("어박", 1, 1)
					PRINTFORML 술벌레는 어박을 쪼아 먹어 조금 활동적이게 된 것 같다…
					DAY:10 += 1
				CASE 1
					CALL LOST_ITEM("육골분", 1, 1)
					PRINTFORML 술벌레는 육골분을 쪼아 먹어 조금 활동적이게 된 것 같다…
					DAY:10 += 2
				CASE 2
					PRINTFORML 먹이는 주지 않기로 했다
			ENDSELECT
		ENDIF
	CASE 2
		CALL COM450_1
	CASE 3
		IF GET_STR(0, "술데이터", 술ID, "변화처") == "0"
			PRINTFORMW %VAR_FERMENT%에는 해도 의미가 없다
			RETURN -1
		ENDIF
		PRINTFORML %마스터는% 시간정지 능력을 응용해 억지로 병 속의 시간을 진행시켰다
		BASE:MASTER:8 -= 2400
		CALL 주조
	CASE 4
		IF GET_STR(0, "술데이터", 술ID, "변화처") == "0"
			PRINTFORMW %VAR_FERMENT%에는 해도 의미가 없다
			RETURN -1
		ENDIF
		PRINTFORML %마스터는% 시간을 지워버리고『결과』만을 얻었다
		BASE:MASTER:8 -= 4000
		ITEM:킹・크림슨 --
		DAY:10 += 9
		CALL 주조
ENDSELECT
TIME += 5
RETURN 1

@COM450_1
IF LOCAL == 0
	{
	CALL ASK_M("고구마＊１０", ITEM:고구마 >= 10 && CAN_FERMENT(),
	"벌꿀＊１０", ITEM:벌꿀 >= 10 && CAN_FERMENT(),
	"나무딸기＊２０", ITEM:나무딸기 >= 20 && CAN_FERMENT(),
	"머루＊２０", ITEM:머루 >= 20 && CAN_FERMENT(),
	"곰팡이핀포도＊２０", ITEM:곰팡이핀포도 >= 20 && CAN_FERMENT(),
	"다음",1,
	"그만둔다",1)
	}
	SELECTCASE RESULT
		CASE 0
			CALL LOST_ITEM("고구마", 10, 1)
			VAR_FERMENT = 고구마넣은물
		CASE 1
			CALL LOST_ITEM("벌꿀", 10, 1)
			VAR_FERMENT = 벌꿀물
		CASE 2
			CALL LOST_ITEM("나무딸기", 20, 1)
			VAR_FERMENT = 나무딸기물
		CASE 3
			CALL LOST_ITEM("머루", 20, 1)
			CALL GET_ITEM("포머스", 1, 1)
			VAR_FERMENT = 포도즙
		CASE 4
			CALL LOST_ITEM("곰팡이핀포도", 20, 1)
			CALL GET_ITEM("포머스", 1, 1)
			VAR_FERMENT = 귀부포도즙
		CASE 5
			LOCAL = 1
			CLEARLINE 8
			RESTART
		CASE 6
	ENDSELECT
ENDIF
IF LOCAL == 1
	{
	CALL ASK_M("탁주＊５", ITEM:탁주 >= 5 && VAR_FERMENT == "그냥 물",
	"감미재＊１０", ITEM:감미재 >= 10 && CAN_FERMENT(),
	"숙성전럼", ITEM:숙성전럼 && CAN_FERMENT(),
	"숙성전프랑부아즈", ITEM:숙성전프랑부아즈 && CAN_FERMENT(),
	"증류주", ITEM:증류주 && VAR_FERMENT == "포도즙",
	"숙성전브랜디", ITEM:숙성전브랜디 && CAN_FERMENT(),
	"다음",1,
	"그만둔다",1)
	}
	SELECTCASE RESULT
		CASE 0
			PRINTFORML %마스터는% 병에 탁주를 부어 넣었다
			PRINTFORML 이로써 조금 일찍 완성될 것이다…
			DAY:10 += 3
			CALL LOST_ITEM("탁주", 5, 1)
		CASE 1
			CALL LOST_ITEM("감미재", 10, 1)
			VAR_FERMENT = 설탕물
		CASE 2
			CALL LOST_ITEM("숙성전럼", 1, 1)
			VAR_FERMENT = 숙성전럼
		CASE 3
			CALL LOST_ITEM("숙성전프랑부아즈", 1, 1)
			VAR_FERMENT = 숙성전프랑부아즈
		CASE 4
			CALL LOST_ITEM("증류주", 1, 1)
			VAR_FERMENT = 포도즙(ALC첨가)
		CASE 5
			CALL LOST_ITEM("숙성전브랜디", 1, 1)
			VAR_FERMENT = 숙성전브랜디
		CASE 6
			LOCAL = 2
			CLEARLINE 9
			RESTART
		CASE 7
	ENDSELECT
ENDIF

IF LOCAL == 2
	{
	CALL ASK_M("상급식재", ITEM:상급식재 && CAN_FERMENT(),
	"초목회", ITEM:초목회 && VAR_FERMENT == "탁주",
	"다음",1,
	"그만둔다",1)
	}
	SELECTCASE RESULT
		CASE 0
			CALL LOST_ITEM("상급식재", 1, 1)
			VAR_FERMENT = 쌀누룩
		CASE 1
			CALL LOST_ITEM("초목회", 1, 1)
			VAR_FERMENT = 아쿠모찌자케
		CASE 2
			LOCAL = 0
			CLEARLINE 5
			RESTART
		CASE 3
	ENDSELECT
ENDIF
RETURN

;술벌레의 상태를 본다
@COM_ABLE450
;정지 중에는 불가
SIF FLAG:70 == 1
	RETURN 0
;이동 실행 판정
SIF !TFLAG:100
	RETURN 0
;일괄관리
SIF GLOBAL_COMABLE(450)
	RETURN RESULT
;부엌
SIF CFLAG:MASTER:현재위치 != 거점_술벌레
	RETURN 0
SIF CFLAG:우후후
	RETURN 0
RETURN 1

@CAN_FERMENT(ARG)
#FUNCTION
SIF DAY:10 >= 3
	RETURNF 0
SIF GROUPMATCH(VAR_FERMENT, "그냥 물", "안개의 호수의 물", "지옥 온천의 물", "기적의 물")
	RETURNF 1
RETURNF 0

path: ERB/커맨드관련/COMF/일상계/COMF450 술벌레상태보기_t.ERB


code:
;-------------------------------------------------
;자위한다
;日常系コマンド、レベル1
;-------------------------------------------------
@COM451
#DIM C_ID
#DIM AMT
IF TARGET
	PRINTFORMW 자위할 땐 말이야、아무한테도 방해받지 않고, 자유롭게. 뭐라고 할까, 구원받지 않으면 안 돼. 혼자서 조용히 넉넉하게……
	RETURN -1
ENDIF
PRINTFORML 누구를 떠올립니까？
DRAWLINE
FOR LOCAL,1,CHARANUM
	IF !IS_NAMED(LOCAL) || !CFLAG:LOCAL:안면
		CONTINUE
	ENDIF
	PRINTFORMLC [{LOCAL, 3}] %CALLNAME:LOCAL%
NEXT
PRINTL
DRAWLINE
PRINTL [999] 아무도 떠오르지 않는다 [1000] 그만둔다
INPUT
C_ID = RESULT
SELECTCASE C_ID
	CASE 1 TO CHARANUM
		CALL PRINT_FACE, C_ID, "発情", "裸", "_1"
		PRINTFORML %마스터는% %조사처리(CALLNAME:C_ID,"를")% 생각하면서 성욕을 처리했다
	CASE 999
		PRINTFORML %마스터는% %TEXTR("천체의 운행을/산천초목을/생로병사를")% 생각하면서 성욕을 처리했다
	CASEELSE
		RETURN -1
ENDSELECT
AMT = 50 + RAND:50
IF TALENT:MASTER:농후정액
	AMT *= 2
	PRINTFORMW ……진한 것이 {AMT} 나왔다
ELSE
	PRINTFORMW ……{AMT} 나왔다
ENDIF
BASE:MASTER:정력 -= AMT
DOWNBASE:MASTER:기력 = 100

TIME += 20
RETURN 1

;기다린다
@COM_ABLE451
;ショップ画面では不可
SIF !TFLAG:100
	RETURN 0
;一括管理
SIF GLOBAL_COMABLE(451)
	RETURN RESULT
;気力0では不可
SIF BASE:MASTER:기력 <= 0
	RETURN 0
;精力0では不可
SIF BASE:MASTER:정력 <= 0
	RETURN 0
;ウフフ中は不可
SIF CFLAG:우후후
	RETURN 0
;停止中は不可
SIF FLAG:70 == 1
	RETURN 0
;私室以外では不可
SIF CFLAG:MASTER:현재위치 != CFLAG:MASTER:초기위치
	RETURN 0
RETURN 1

path: ERB/커맨드관련/COMF/일상계/COMF451 자위한다.ERB


code:
;-------------------------------------------------
;특수지역간이동
;일상계 커맨드, 레벨 1
;-------------------------------------------------
@COM464
#DIM FEE
#DIM 목적장소
#DIM 소요시간
VARSET LOCAL
FEE = 0
FOR LOCAL,1,CHARANUM
	IF CFLAG:(LOCAL):동행
		LOCAL:1 ++
		SIF CFLAG:LOCAL:쇠약 || BASE:LOCAL:기력 == 0
			LOCAL:2 ++
		SIF !CHARA_HOLIDAY(LOCAL) && BASE:LOCAL:일량
			LOCAL:3 ++
	ENDIF
NEXT
IF NEMUKE() >= 720
	PRINTL 졸음기가 있으니 외출하지 않는 편이 나을 것입니다
	RETURN -1
ELSEIF LOCAL:1 > 1
PRINTL 두 명 이상 데리고 나갈 수는 없습니다
	RETURN -1
ELSEIF LOCAL:2 || BASE:MASTER:기력 == 0
	PRINTFORML 몸 상태가 좋지 못하기에 외출할 수는 없습니다 \@ BASE:MASTER:기력 == 0 ? (기력 제로) # (동행자의 몸 상태 안 좋음)\@
	RETURN -1
ELSEIF LOCAL:3 && FESTIVAL() == ""
	PRINTL 동행자가 일하는 날이기에 외출할 수는 없습니다
	RETURN -1
;(天候パッチ)悪天候時も外出可能に
;ELSEIF TIME:5 == 9 || TIME:5 == 5
;	PRINTL 악천후이기에 외출할 수는 없습니다
;	RETURN -1
ELSEIF TALENT:MASTER:100 < -4
	PRINTL 이 몸으로 외출하는 건 위험하다
	RETURN -1
ENDIF
SELECTCASE CFLAG:MASTER:현재위치
	CASE 205, 210, 803, 820
		IF !INRANGE(TIME, 540, 1020)
			PRINTFORML 영업 시간이 아니다
			RETURN -1
		ENDIF
		;(天候パッチ)悪天候時は運行見合わせ
		IF GET_LOCATION_AREA_TYPHOON() == 1
			PRINTFORML 태풍의 접근으로 인해 운행을 보류하고 있는 것 같다
			RETURN -1
		ENDIF
		IF WIND_VELOCITY >= 1
			PRINTFORML 강풍으로 인해 운행을 보류하고 있는 것 같다
			RETURN -1
		ENDIF
		SELECTCASE TIME:5
			CASE 14, 15
				PRINTFORML 폭우로 인해 운행을 보류하고 있는 것 같다
				RETURN -1
			CASE 9
				PRINTFORML 폭설로 인해 운행을 보류하고 있는 것 같다
				RETURN -1
		ENDSELECT
		;守矢キャラたちと同行時は敷設者割引運賃
		IF CFLAG:31:동행 || CFLAG:32:동행 || CFLAG:33:동행
			FEE = 1
		ELSEIF CFLAG:MASTER:동행
			FEE = 10
		ELSE
			FEE = 5
		ENDIF
		;상대가 오니나 텐구라면 비위 맞추는 웃음
		IF GROUPMATCH(TARGET, 10, 29, 31, 32, 33, 42, 64, 65) && CFLAG:TARGET:동행
			;ガワを山の河童(16)or里の人間(12)に決める
			LOCAL = 12 + ((CFLAG:MASTER:현재위치 / 100 == 8) * 4)
			CALL SPTALK, 0, "笑顔", LOCAL, @"「이거이거 %CALLNAME:TARGET% 씨, 이용하시려고요?」",1
			PRINTFORM %CALLNAME:TARGET%의 모습을 확인한
			;人里側に캇파が常駐してるのもアレかなと
			IF CFLAG:MASTER:현재위치 / 100 == 2
				PRINTFORM 접수 담당은
			ELSE
				PRINTFORM 접수 담당의 캇파는
			ENDIF
			PRINTFORML 비위를 맞추는 웃음을 띠었다
		ELSE
			;人里側では一応丁寧対応に
			IF CFLAG:MASTER:현재위치 / 100 == 2
				CALL SPTALK, 0, "通常", 12, @"「케이블카를 타실건가요？　요금은 \\{FEE * 200}이에요. {FEE}카리스마도 됩니다.」",1
			ELSE
				CALL SPTALK, 0, "通常", 16, @"「……왜? 케이블카 타고 싶어? {FEE}카리스마. 아니면 \\{FEE * 200}이라도 되고」",1
			ENDIF
		ENDIF
		CALL PAY_YEN_OR_CM(FEE * 200, FEE)
		SELECTCASE RESULT
			CASE 0
				RETURN -1
			CASE 1
				IF CFLAG:31:동행 || CFLAG:32:동행 || CFLAG:33:동행
					PRINTFORML 「싸게 해드릴게요～」
				ELSE
					PRINTFORML 「감사함다.」
				ENDIF
			CASE 2
				IF CFLAG:MASTER:현재위치 / 100 == 2
					PRINTFORML 「카리스마로 지불하시는 건가요... 예, 그럼.」
				ELSE
					PRINTFORML 「헤―, 손님 인간인데 카리스마 가지고 있어? 대단하네.」
				ENDIF
		ENDSELECT
ENDSELECT
;住み込み先からの特殊移動 or 住み込み先でない場所への特殊移動はデート扱い
IF AT_HOME(MASTER) || MAIN_MAP != SPECIAL_AREAMOVE() / 100
	LOCAL:2 = 0
	LOCALS = %STR:(6000 + SPECIAL_AREAMOVE() / 10)%
	FOR LOCAL,1,CHARANUM
		IF CFLAG:(LOCAL):동행
			CFLAG:LOCAL:데이트중 = SPECIAL_AREAMOVE() / 100
			CFLAG:LOCAL:현재위치 = SPECIAL_AREAMOVE()
			LOCAL:2 = LOCAL
			FLAG:데이트상대 = LOCAL
		ENDIF
	NEXT
	CFLAG:MASTER:데이트중 = SPECIAL_AREAMOVE() / 100
	CFLAG:MASTER:현재위치 = SPECIAL_AREAMOVE()

	IF CFLAG:MASTER:데이트중 == 2
		CALL EX_COSTUME(FLAG:데이트상대, "마을 데이트")
		SIF RESULT
			PRINTFORMW %CALLNAME:(FLAG:데이트상대)%는 인간 마을에 적당한 옷으로 갈아입었습니다
	ENDIF
	PRINTFORML %조사처리(LOCALS,"으로")% 외출합니다
	TIME += SPECIAL_AREAMOVE_TIME()

;住み込み先でないところから住み込み先への移動はデート終了扱い
ELSEIF !AT_HOME(MASTER) && MAIN_MAP == SPECIAL_AREAMOVE() / 100
	IF CFLAG:패배자 && TALENT:스침 == 1
		PRINTFORML %타겟을% 기억했습니다.
	ELSE
		PRINTFORMW \@ CFLAG:MASTER:데이트중 != CFLAG:TARGET:데이트중 || TARGET == MASTER ? 외출 # 데이트 \@에서 돌아왔습니다.
	ENDIF
	;デート終了時は強制的にENTRANCEへ飛ばされるため一時保存
	목적장소 = SPECIAL_AREAMOVE()
	소요시간 = SPECIAL_AREAMOVE_TIME()
	CFLAG:MASTER:현재위치 = SPECIAL_AREAMOVE()

	CALL 모리야복권데이트상대의리셋()
	FOR LOCAL,1,CHARANUM
		IF CHK_DATENOW(CFLAG:LOCAL:데이트중)
			CALL DATE_EVENT(LOCAL)
			CFLAG:LOCAL:현재위치 = 목적장소
			CALL SET_DATE(99,LOCAL)
			;デート相手にも改めて現在位置渡す
			CFLAG:LOCAL:현재위치 = 목적장소
		ENDIF
	NEXT
	CALL SET_DATE(99,MASTER,0)
	;一時保存情報渡す
	CFLAG:MASTER:현재위치 = 목적장소
	TIME += 소요시간
ENDIF
;-------------------------------------------------
;실행 판정
;-------------------------------------------------
@COM_ABLE464
;정지 중에는 불가
SIF FLAG:70
	RETURN 0
SIF !TFLAG:100
	RETURN 0
SIF TFLAG:데이트도중
	RETURN 0
;일괄관리
SIF GLOBAL_COMABLE(464)
	RETURN RESULT
;수면중
SIF CFLAG:수면
	RETURN 0
;동침중
SIF CFLAG:동침중
	RETURN 0
SIF !SPECIAL_AREAMOVE()
	RETURN 0
SIF CFLAG:우후후
	RETURN 0
RETURN 1

;-------------------------------------------------
@SPECIAL_AREAMOVE()
#FUNCTION
SELECTCASE CFLAG:MASTER:현재위치
;하쿠레이 신사 모리야 분사
	CASE 21
	;모리야 캐릭터와 동행중
		SIF CFLAG:31:동행 || CFLAG:32:동행 || CFLAG:33:동행
			RETURNF 840
;마을 기타도리
	CASE 205
		RETURNF 820
;広場（ミニマップ）
	CASE 210
		IF MAIN_MAP != 2
			IF MAIN_MAP == 8
				RETURNF 803
			ELSE
				RETURNF 820
			ENDIF
		ENDIF
;무연총（魔法の森がメインマップ）
	CASE 506
		RETURNF 610
;無縁塚（外出先から）
	CASE 570
		;メインマップが三途の川～冥界のときは中有の道へ
		SIF MAIN_MAP == 6
			RETURNF 601
		;今後のことを考えて弾いておく 中有の道(外出)へ
		SIF MAIN_MAP != 5
			RETURNF 610
;간헐천지하센터
	CASE 712
		RETURNF 970
;間欠泉地下センター(外出先から)
	CASE 760
		;メインマップが地底のときは灼熱地獄跡へ
		SIF MAIN_MAP == 9
			RETURNF 928
		;今後のことを考えて弾いておく 灼熱地獄跡(外出)へ
		SIF MAIN_MAP != 7
			RETURNF 970
;산정에의 길
	CASE 732
		RETURNF 810
;삭도역
	CASE 803
		RETURNF 210
;絶景の丘
	CASE 820
		;メインマップが人里のときは人里北通りへ
		SIF MAIN_MAP == 2
			RETURNF 205
		;守矢神社・早苗私室(820)を弾き広場へ
		SIF MAIN_MAP != 8
			RETURNF 210
;작열지옥터
	CASE 928
		RETURNF 760
;灼熱地獄跡（外出先から）
	CASE 970
		;メインマップが妖怪の山（山麓）のときは間欠泉地下センターへ
		SIF MAIN_MAP == 7
			RETURNF 712
		;今後のことを考えて弾いておく 灼熱地獄跡(外出)へ
		SIF MAIN_MAP != 9
			RETURNF 760
ENDSELECT
RETURNF 0
;-------------------------------------------------
@SPECIAL_AREAMOVE_TIME()
#FUNCTION
SELECTCASE CFLAG:MASTER:현재위치
;하쿠레이 신사 모리야 분사
	CASE 21
		RETURNF 1
;마을 기타도리
	CASE 205
		RETURNF 15
;広場
	CASE 210
		RETURNF 15
;무연총
	CASE 506, 570
		SIF SHORTCUT(3)
			RETURNF 3
		RETURNF 5
;간헐천지하센터
	CASE 712, 760
		RETURNF 10
;산정에의 길
	CASE 732
		RETURNF 5
;삭도역
	CASE 803
		RETURNF 15
;絶景の丘
	CASE 820
		RETURNF 15
;작열지옥터
	CASE 928, 970
		RETURNF 5
ENDSELECT

path: ERB/커맨드관련/COMF/일상계/COMF464 특수지역간이동_t.ERB


code:
@COM370
#DIM 개조부위
PRINTFORML %CALLNAME:TARGET%의 무엇을 개조합니까?

FOR LOCAL, 1,23
	SIF EQUIP:TARGET:LOCAL
	PRINTFORML [{LOCAL}]- %CLOTHNAME(LOCAL, EQUIP:TARGET:LOCAL)%
NEXT
PRINTFORML [999]- 그만둔다
$LOOP
INPUT
SELECTCASE RESULT
	CASE 1 TO 22
		IF !EQUIP:TARGET:RESULT
			GOTO LOOP
		ELSE
			개조부위 = RESULT
		ENDIF
	CASE 999
		RETURN -1
	CASEELSE
		GOTO LOOP
ENDSELECT
PRINTFORML %조사처리(CLOTHNAME(개조부위, EQUIP:TARGET:개조부위),"를")% 어떻게 합니까?
CALL ASK_YN("바탕으로 되돌리는","고쳐 짓는다")
IF !RESULT
	CSTR:TARGET:(50 + 개조부위) =
	PRINTFORML 원래대로 되돌렸습니다.
ELSE
	PRINTFORML 어떻게 짓습니까? (앞에 붙이는 수식어를 입력)
	INPUTS
	IF RESULTS == ""
		GOTO LOOP
	ELSE
		CSTR:TARGET:(50 + 개조부위) = %RESULTS%%CLOTHNAME(개조부위, EQUIP:TARGET:개조부위)%
	ENDIF
	PRINTFORML %조사처리(CLOTHNAME(개조부위, EQUIP:TARGET:개조부위),"는")% %조사처리(CSTR:TARGET:(50 + 개조부위),"가")% 되었습니다.
ENDIF
TIME += 60
RETURN 1

;-------------------------------------------------
;실행 판정
;-------------------------------------------------
@COM_ABLE370
;실행 판정
SIF !TFLAG:100
	RETURN 0
;일괄관리
SIF GLOBAL_COMABLE(370)
	RETURN RESULT
;앨리스가 없으면 안 돼
SIF CFLAG:17:현재위치 != CFLAG:MASTER:현재위치
	RETURN 0
;업무중
SIF CFLAG:행동 == 5
	RETURN 0
;기력 0
SIF BASE:17:기력 <= 0
	RETURN 0
RETURN 1

path: ERB/커맨드관련/COMF/일상계/COMF465 의상개조_t.ERB


code:
;-------------------------------------------------
;밭일을한다
;일상계 커맨드, 레벨 1
;-------------------------------------------------
;COM계 함수, MESSAGE는 본래는 분리해 별파일

;양잠이겠지만 밭일이 되지만 뭐 좋아
@MESSAGE_COM470
#LOCALSIZE 1
#LOCALSSIZE 1
PRINTFORML 당신은 %STR_NOUMIN(FLAG:지주, "밭의 종류")%로 향했다
SELECTCASE TFLAG:193
CASE 1
	PRINTFORML 오늘의 밭일은 마치 안 돼였다
CASE 2
	PRINTFORML 오늘의 밭일은 그다지 진전되지 않았다
CASE 3
	PRINTFORML 밭일은 특별히 무슨 일도 없게 종료했다
CASE 4
	PRINTFORML 오늘의 밭일은 꽤 진전되었다
CASE 5
	PRINTFORML 오늘의 밭일은 일의 시작과 끝 자주(잘) 끝났다
CASEELSE
	PRINTFORML 오늘의 밭일은 나로서도 신현은 있었다
ENDSELECT

;시스템적으로 1 캐릭터 우대 하는 것은 어떨까라고 생각하는데
;아이덴티티인걸 좋은 것 같아
@COM470
IF ITEM:원예용품일식
	TFLAG:밭일성공도 = RAND(2, 7)
ELSE
	TFLAG:밭일성공도 = RAND(1, 4)
ENDIF

;신의 가호
SELECTCASE CFLAG:(FINDCHARA(CALLNAME, "미노리코", 1)):호감도
	CASE IS < 1000
	CASE IS < 5000
		TFLAG:밭일성공도 += 1
	CASE IS < 10000
		TFLAG:밭일성공도 += 2
	CASE IS < 30000
		TFLAG:밭일성공도 += 3
	CASEELSE
		TFLAG:밭일성공도 += 4
ENDSELECT
FLAG:밭일성과 += TFLAG:밭일성공도
TFLAG:193 = TFLAG:밭일성공도
IF FLAG:70
	BASE:MASTER:TSP -= 500
ELSE
	TIME += 180
	DOWNBASE:MASTER:체력 += 300
	DOWNBASE:MASTER:기력 += 300
ENDIF

RETURN 1
;-------------------------------------------------
;실행 가능 판정
;-------------------------------------------------
;밭일을한다
@COM_ABLE470
SIF !TFLAG:100
	RETURN 0
SIF TFLAG:망상중
	RETURN 0
;당신은 농민은 아니다
SIF !FLAG:지주
	RETURN 0
;현재위치가 밭의 장소는 아닌, LOCAL에 밭의 위치를 일차 취득해 사용
LOCAL = INT_NOUMIN(FLAG:지주, "장소 ID")
SIF GET_MAPID(LOCAL) != MAIN_MAP
	LOCAL = GET_MAP_REPLACEMENT(LOCAL)
SIF CFLAG:MASTER:현재위치 != LOCAL
	RETURN 0
;감추고 있다
SIF BASE:MASTER:술기운
	RETURN 0
SIF CFLAG:우후후
	RETURN 0
;체력·기력 부족
SIF BASE:MASTER:기력 < 300 || BASE:MASTER:체력 < 300
	RETURN 0
;날씨가 나쁘다
SIF !GROUPMATCH(TIME:5, 0, 1, 2, 3, 4, 6, 7)
	RETURN 0
;오늘은 이제(벌써) 일을 했다
SIF TFLAG:밭일성공도
	RETURN 0
;시간에 여유가 없으면 안 돼
IF FLAG:70
	;TSP 부족하다
	SIF BASE:MASTER:TSP < 300
		RETURN 0
ELSE
	;활동 한계를 720으로서 그 3시간전
	SIF NEMUKE() >= 540
		RETURN 0
ENDIF
RETURN 1

path: ERB/커맨드관련/COMF/일상계/COMF470 밭일한다_t.ERB