code:
;********************************************************************************************
;2019/8/14 作成 ロウ@TW夢子口上の人
;
;Licence  :ライセンスフリー(CC0)。
;
;グラフィック表示簡易化ライブラリ
;なんかややこしいグラフィック表示関連を簡単に表示できるようにまとめたもの。
;HTMLもどきだし、可読性悪いし、冗長なので「もう画像指定したら縦幅とか勝手に揃えろよ」っていうことで作りました。
;********************************************************************************************

;********************************************************************************************
;画像表示用関数
;これを呼べば画像の縦横計算とかややこしいことしないで画像を一枚表示できる
;横位置は左揃えの場合は左端から、右揃えの場合は右端から指定したピクセル数分間隔を空ける
;画像反転フラグは 1:横反転 2：縦反転 3:縦横反転
;********************************************************************************************
@画像表示(画像名, 表示位置, 縦位置, 横位置, 拡大比率 = 100, 自動改行 = 0, ボタン生成 = 0, VALUE = "", TITLE = "", マウスオーバー画像名 = "", 画像反転フラグ = 0)
#DIMS 画像名				;リソース名
#DIMS マウスオーバー画像名	;マウスオーバー時に表示する画像名 省略可
#DIMS 表示位置				;表示位置指定文字列
#DIM  縦位置				;ピクセル指定 内部でフォントサイズ基準のパーセンテージに変換する
#DIM  横位置				;上に同じ
#DIM  自動改行				;自動改行有無フラグ デフォルトはしない
#DIM  拡大比率				;パーセンテージ指定 指定しなければ100
#DIM  ボタン生成			;ボタンとして使用するか デフォルトはしない
#DIMS  VALUE				;ボタンのバリュー
#DIMS  TITLE				;マウスオーバー時に表示する文字列
#DIM  画像反転フラグ		;画像反転を行うかのフラグ
#DIMS  表示HTML
IF SPRITECREATED(画像名)
	SIF 描画開始行数 == 0
		描画開始行数 = LINECOUNT

	表示HTML =
	表示HTML += @"%画像表示位置HTML(表示位置)%"

	SIF GROUPMATCH(表示位置, "LEFT", "left", "左")
		表示HTML += @"%横位置HTML(横位置)%"
	SIF ボタン生成
		表示HTML += @"%ボタン生成HTML(VALUE, TITLE)%"

	表示HTML += @"%画像表示単独HTML(画像名, 縦位置, 拡大比率, マウスオーバー画像名, 画像反転フラグ)%"

	SIF ボタン生成
		表示HTML += @"</button>"
	SIF GROUPMATCH(表示位置, "RIGHT", "right", "右")
		表示HTML += @"%横位置HTML(横位置)%"

	DEBUGPRINTFORML %表示HTML%
	HTML_PRINT 表示HTML

	SIF 自動改行
		CALL ピクセル自動改行(縦位置 + デフォルトキャラ画像横幅 * 拡大比率 / 100)
ELSE
	RETURN 0
ENDIF
RETURN 1

;********************************************************************************************
;画像セット関数
;並べて表示したい場合に、画像一斉表示関数と合わせて使用する
;横位置は指定したピクセル数分画像間の間隔を空ける
;********************************************************************************************
@画像セット(画像名, 縦位置, 画像間隔, 拡大比率 = 100, レイヤー階数 = 0, ボタン生成 = 0, VALUE = "", TITLE = "", マウスオーバー画像名 = "", 画像反転フラグ = 0)
#DIMS 画像名				;リソース名
#DIMS マウスオーバー画像名	;マウスオーバー時に表示する画像名 省略可
#DIMS 表示位置				;表示位置指定文字列
#DIM  縦位置				;ピクセル指定 内部でフォントサイズ基準のパーセンテージに変換する
#DIM  画像間隔				;ピクセル指定 内部でフォントサイズ基準のパーセンテージに変換する
#DIM  拡大比率				;パーセンテージ指定 指定しなければ100
#DIM  レイヤー階数			;重ね表示時の階数
#DIM  ボタン生成			;ボタンとして使用するか デフォルトはしない
#DIMS VALUE					;ボタンのバリュー
#DIMS TITLE					;マウスオーバー時に表示する文字列
#DIM  画像反転フラグ		;画像反転を行うかのフラグ 1:横反転 2：縦反転 3:縦横反転
;PRINTFORML %画像名%をチェック
SIF 描画開始行数 == 0
	描画開始行数 = LINECOUNT

IF SPRITECREATED(画像名)
	SIF TEMP_HTML:レイヤー階数 != "" && 画像間隔 > 0
		TEMP_HTML:レイヤー階数 += @"%横位置HTML(画像間隔)%"

	SIF ボタン生成
		TEMP_HTML:レイヤー階数 += @"%ボタン生成HTML(VALUE, TITLE)%"

	TEMP_HTML:レイヤー階数 += @"%画像表示単独HTML(画像名, 縦位置, 拡大比率, マウスオーバー画像名, 画像反転フラグ, レイヤー階数)%"

	SIF ボタン生成
		TEMP_HTML:レイヤー階数 += @"</button>"

	LOCAL = 縦位置 + デフォルトキャラ画像横幅 * 拡大比率 / 100
	SIF LOCAL > TEMP_HTML_MAX_HEIGHT
		TEMP_HTML_MAX_HEIGHT = LOCAL

	SIF MAX_LAYER_NUM < レイヤー階数
		MAX_LAYER_NUM = レイヤー階数
ELSE
	;PRINTFORML ないよ
	RETURN 0
ENDIF
RETURN 1

;********************************************************************************************
;ダミーセット関数
;並べて表示したい場合に、画像一斉表示関数と合わせて使用する
;横位置は指定したピクセル数分画像間の間隔を空ける
;********************************************************************************************
@ダミーセット(縦位置, 画像間隔, 拡大比率 = 100, レイヤー階数 = 0)
#DIM  縦位置				;ピクセル指定 内部でフォントサイズ基準のパーセンテージに変換する
#DIM  画像間隔				;ピクセル指定 内部でフォントサイズ基準のパーセンテージに変換する
#DIM  拡大比率				;パーセンテージ指定 指定しなければ100
#DIM  レイヤー階数			;重ね表示時の階数
#DIM  画像横幅				;フォントサイズ基準のパーセンテージ

;uEmuera環境でエフェクトがずれる際には以下の二行をアンコメント
;CALL 画像セット("ダミー", 縦位置, 画像間隔, 拡大比率, レイヤー階数)
;RETURN 1

SIF TEMP_HTML:レイヤー階数 != "" && 画像間隔 > 0
	TEMP_HTML:レイヤー階数 += @"%横位置HTML(画像間隔)%"

画像横幅 = (デフォルトキャラ画像横幅 * 拡大比率) / GETCONFIG("フォントサイズ")
TEMP_HTML:レイヤー階数 += @"<shape type='space' param='{画像横幅}'>"

LOCAL = 縦位置 + デフォルトキャラ画像横幅 * 拡大比率 / 100
SIF LOCAL > TEMP_HTML_MAX_HEIGHT
	TEMP_HTML_MAX_HEIGHT = LOCAL

SIF MAX_LAYER_NUM < レイヤー階数
	MAX_LAYER_NUM = レイヤー階数

RETURN 1

;********************************************************************************************
;画像一斉表示関数
;並べて表示したい場合に、画像セット関数と合わせて使用する
;レイヤー階数-1で全てのレイヤーを一斉表示する
;********************************************************************************************
@画像一斉表示(表示位置, 横位置, 自動改行 = 0, レイヤー階数 = -1)
#DIMS 表示位置				;表示位置指定文字列
#DIM  横位置				;上に同じ
#DIM DYNAMIC 自動改行		;自動改行有無フラグ デフォルトはしない
#DIM DYNAMIC レイヤー階数	;重ね表示時の階数

IF レイヤー階数 == -1
	FOR レイヤー階数, 0, MAX_LAYER_NUM + 1
		CALL 画像一斉表示(表示位置, 横位置, 0, レイヤー階数)
	NEXT

	SIF 自動改行
		CALL ピクセル自動改行(TEMP_HTML_MAX_HEIGHT)
	CALL 画像描画終了

	RETURN 1
ENDIF

IF TEMP_HTML:レイヤー階数 != ""
	TEMP_HTML:レイヤー階数 = %画像表示位置HTML(表示位置)%%TEMP_HTML:レイヤー階数%

	SIF GROUPMATCH(表示位置, "LEFT", "left", "左")
		TEMP_HTML:レイヤー階数 = %横位置HTML(横位置)%%TEMP_HTML:レイヤー階数%
	SIF GROUPMATCH(表示位置, "RIGHT", "right", "右")
		TEMP_HTML:レイヤー階数 += @"%横位置HTML(横位置)%"

	HTML_PRINT TEMP_HTML:レイヤー階数

	SIF 自動改行
		CALL ピクセル自動改行(TEMP_HTML_MAX_HEIGHT)

	TEMP_HTML:レイヤー階数 =
ELSE
	RETURN 0
ENDIF
RETURN 1

;********************************************************************************************
;画像表示単独のHTML取得関数
;諸々の計算は内部でするので指定するのは画像だけにしたい
;拡大縮小したい場合を考えて一応拡大比率指定出来るように
;********************************************************************************************
@画像表示単独HTML(画像名, 縦位置, 拡大比率 = 100, マウスオーバー画像名 = "", 画像反転フラグ = 0, レイヤー階数 = 0)
#FUNCTIONS
#DIMS 画像名				;リソース名
#DIMS マウスオーバー画像名	;マウスオーバー時に表示する画像名 省略可
#DIM  拡大比率				;パーセンテージ指定 指定しなければ100
#DIM  画像縦幅				;ややこしいがフォントサイズ基準のパーセンテージ
#DIM  画像横幅				;上に同じ
#DIM  縦位置				;ピクセル指定 内部でフォントサイズ基準のパーセンテージに変換する
#DIM  画像反転フラグ		;画像反転を行うかのフラグ 1:横反転 2：縦反転 3:縦横反転
#DIM  レイヤー階数			;重ね表示時の階数

IF SPRITECREATED(画像名)
	画像縦幅 = (デフォルトキャラ画像横幅 * 拡大比率) / GETCONFIG("フォントサイズ") * (GETBIT(画像反転フラグ, 1) ? -1 # 1 )
	画像横幅 = (デフォルトキャラ画像横幅 * 拡大比率) / GETCONFIG("フォントサイズ") * (GETBIT(画像反転フラグ, 0) ? -1 # 1 )

	;切捨て保護のため先に掛け算
	縦位置   = (100 * 縦位置 / GETCONFIG("フォントサイズ")) - (100 * (LINECOUNT-描画開始行数+レイヤー階数) * (GETCONFIG("一行の高さ") / GETCONFIG("フォントサイズ")))

	LOCALS =
	RETURNF LOCALS
ELSE
	PRINTFORML 画像リソースが見つかりません
	RETURNF @""
ENDIF

;********************************************************************************************
;位置揃え指定関数
;PタグがただのALIGNMENT指定用タグと化してるので分離
;戻り値としてＰタグの文字列を返す
;ARGS = 画像表示位置指定文字列
;********************************************************************************************
@画像表示位置HTML(表示位置)
#FUNCTIONS
#DIMS 表示位置
SELECTCASE 表示位置
	CASE "LEFT", "left", "左"
		LOCALS =

		RETURNF LOCALS
	CASE "CENTER", "center", "中央"
		LOCALS =

		RETURNF LOCALS
	CASE "RIGHT", "right", "右"
		LOCALS =

		RETURNF LOCALS
	CASEELSE
		;認識できなかったら左揃え
		LOCALS =

		RETURNF LOCALS
ENDSELECT

;********************************************************************************************
;ボタン生成関数
;戻り値としてbuttonタグの文字列を返す
;POSはややこしいので使用しない
;********************************************************************************************
@ボタン生成HTML(VALUE, TITLE)
#FUNCTIONS
#DIMS  VALUE		;ボタンのバリュー
#DIMS  TITLE		;マウスオーバー時に表示する文字列
LOCALS = <button
SIF VALUE != ""
	LOCALS += @" value='%VALUE%'"
SIF TITLE != ""
	LOCALS += @" title='%TITLE%'"
LOCALS += @" >"
RETURNF LOCALS

;********************************************************************************************
;横位置指定関数
;いちいち場合分けするのが嫌なので全てshapeで調節する
;戻り値としてshapeタグの文字列を返す
;横位置はピクセル単位での指定
;********************************************************************************************
@横位置HTML(横位置)
#FUNCTIONS
#DIM 横位置		;ピクセル指定 内部でフォントサイズ基準のパーセンテージに変換する

;切捨て保護のため先に掛け算
横位置 = 100 * 横位置 / GETCONFIG("フォントサイズ")

LOCALS = <shape type='space' param='{横位置}'>
RETURNF LOCALS

;********************************************************************************************
;画像合わせ改行関数
;画像に合わせて改行したい場合に使用する
;縦幅をピクセル単位で指定すると、それをぎりぎり内包する行数だけ改行する
;********************************************************************************************
@ピクセル自動改行(縦幅)
#DIM 縦幅
#DIM 行数

;端数切り上げ。演算内容は 縦幅 / GETCONFIG("一行の高さ")
行数 = (縦幅 + GETCONFIG("一行の高さ") - 1) / GETCONFIG("一行の高さ")

FOR LOCAL, 0, 行数 - (LINECOUNT - 描画開始行数)
	PRINTFORML
NEXT
描画開始行数 = 0
RETURN 1

;********************************************************************************************
;画像セット等で変更される変数のリセット
;行ずれの無視、レイヤーの消去に使用
;********************************************************************************************
@画像描画終了
VARSET TEMP_HTML
描画開始行数 = 0
MAX_LAYER_NUM = 0
TEMP_HTML_MAX_HEIGHT = 0


code:
#DIMS TEMP_HTML, 100					;一時HTML保存用変数
#DIM TEMP_HTML_MAX_HEIGHT 				;一時最大縦幅取得用変数
#DIM MAX_LAYER_NUM						;一時最大レイヤー数保管用変数
#DIM 描画開始行数						;連続描画で何故か行ずれが起きるので、その対策
#DIM カラーマトリクスベース, 22, 5, 5	;カラーマトリクス保管用変数
#DIM カラーマトリクス初期化フラグ		;カラーマトリクス初期化フラグ
#DIM NEXT_GID = 1						;グラフィックID走査用変数

license: mit


code:
;********************************************************************************************
;2019/8/14 作成 ロウ@TW夢子口上の人
;
;Licence  :ライセンスフリー(CC0)。
;
;グラフィック表示簡易化ライブラリ
;なんかややこしいグラフィック表示関連を簡単に表示できるようにまとめたもの。
;HTMLもどきだし、可読性悪いし、冗長なので「もう画像指定したら縦幅とか勝手に揃えろよ」っていうことで作りました。
;********************************************************************************************

;********************************************************************************************
;画像合成関数
;指定したグラフィックIDにリソース画像を重ねて合成する関数
;グラフィックIDが0の変数を渡すと勝手に使用可能なグラフィックIDを走査してその変数に渡す
;その場合は初めに合成されたリソースのサイズに合わせてグラフィックを作成する
;横幅か縦幅に0が入っている場合には自動でリソース画像のサイズを取得してサイズを合わせる
;ブレンド名はリソースを合成する際に適用するカラーブレンドの名称を入れる　例="赤"
;********************************************************************************************
@画像合成(グラフィックID, リソース名, POS_X = 0, POS_Y = 0, 横幅 = 0, 縦幅 = 0, カラーブレンド名 = "")
#DIM REF グラフィックID		;合成先のグラフィックID 参照渡し
#DIMS リソース名			;合成元のリソースID
#DIM POS_X					;リソースを配置するX座標
#DIM POS_Y					;リソースを配置するY座標
#DIM 横幅					;合成するリソースの横幅
#DIM 縦幅					;合成するリソースの縦幅
#DIMS カラーブレンド名		;カラーブレンドの名称
#DIM カラーマトリクス, 5, 5	;カラーブレンドに使用するマトリクス
VARSET カラーマトリクス
SIF !SPRITECREATED(リソース名)
	;リソースが存在しない場合0を返す
	RETURN 0
IF 横幅 == 0 || 縦幅 == 0
	横幅 = SPRITEWIDTH(リソース名)
	縦幅 = SPRITEHEIGHT(リソース名)
ENDIF
IF グラフィックID == 0
	;前回呼び出されていれば続きから始める
	グラフィックID = NEXT_GID
	WHILE GCREATED(グラフィックID)
		;空いているグラフィックIDを走査する
		グラフィックID ++
	WEND
	;次回は続きから走査するように設定
	NEXT_GID = グラフィックID + 1

	GCREATE グラフィックID, 横幅, 縦幅
ENDIF
IF カラーブレンド名 == ""
	GDRAWSPRITE グラフィックID, リソース名, POS_X, POS_Y,  横幅, 縦幅
	DEBUGPRINTFORML 画像合成：%リソース名%:{グラフィックID},{POS_X},{POS_Y},{横幅},{縦幅}
ELSE
	;カラーブレンドが設定されている場合、適用して合成
	CALL カラーブレンド取得(カラーマトリクス, カラーブレンド名)
	GDRAWSPRITE グラフィックID, リソース名, POS_X, POS_Y,  横幅, 縦幅, カラーマトリクス:0:0
	DEBUGPRINTFORML 画像合成：%リソース名%:{グラフィックID},{POS_X},{POS_Y},{横幅},{縦幅},%カラーブレンド名%
ENDIF
SIF RESULT == 0
	RETURN 0
RETURN 1

;********************************************************************************************
;リソース新規作成関数
;引数に渡した名称のスプライトリソースを、第二引数に渡したグラフィックIDで作成する
;********************************************************************************************
@リソース登録(リソース名, グラフィックID)
#DIMS リソース名
#DIM グラフィックID
SIF SPRITECREATED(リソース名)
	;すでにその名前のリソースが存在すると失敗する。
	RETURN 0
SIF !GCREATED(グラフィックID)
	;元となるグラフィックIDが未作成、または廃棄済みであった場合失敗する。
	RETURN 0
SPRITECREATE リソース名, グラフィックID
RETURN 1

;********************************************************************************************
;カラーブレンド取得関数
;カラーブレンド名を取得する関数
;カラーマトリクスの初期化関数はこの下にあります
;********************************************************************************************
@カラーブレンド取得(カラーマトリクス, カラーブレンド名)
#DIM REF カラーマトリクス, 0, 0	;使用するカラーマトリクスを格納する変数 参照渡し
#DIMS カラーブレンド名			;カラーブレンドの名称
SIF !カラーマトリクス初期化フラグ
	;今回起動時にカラーマトリクスが初期化されていない場合は初期化を行う
	CALL カラーマトリクス初期化
;カラーマトリクス参照変数にベースから取得したマトリクスを代入する
SELECTCASE カラーブレンド名
	CASE "青"
		CALL カラーマトリクス取得(カラーマトリクス, 0)
	CASE "紫"
		CALL カラーマトリクス取得(カラーマトリクス, 1)
	CASE "赤"
		CALL カラーマトリクス取得(カラーマトリクス, 2)
	CASE "黄"
		CALL カラーマトリクス取得(カラーマトリクス, 3)
	CASE "緑"
		CALL カラーマトリクス取得(カラーマトリクス, 4)
	CASE "水"
		CALL カラーマトリクス取得(カラーマトリクス, 5)
	CASE "白"
		CALL カラーマトリクス取得(カラーマトリクス, 6)
	CASE "灰"
		CALL カラーマトリクス取得(カラーマトリクス, 7)
	CASE "黒"
		CALL カラーマトリクス取得(カラーマトリクス, 8)
	CASE "栗"
		CALL カラーマトリクス取得(カラーマトリクス, 9)
	CASE "桃"
		CALL カラーマトリクス取得(カラーマトリクス, 10)
	CASE "橙"
		CALL カラーマトリクス取得(カラーマトリクス, 11)
	CASE "普通"
		CALL カラーマトリクス取得(カラーマトリクス, 12)
	CASE "褐色"
		CALL カラーマトリクス取得(カラーマトリクス, 13)
	CASE "黄色"
		CALL カラーマトリクス取得(カラーマトリクス, 14)
	CASE "日焼け"
		CALL カラーマトリクス取得(カラーマトリクス, 15)
	CASE "不健康"
		CALL カラーマトリクス取得(カラーマトリクス, 16)
	CASE "悪魔"
		CALL カラーマトリクス取得(カラーマトリクス, 17)
	CASE "朱色"
		CALL カラーマトリクス取得(カラーマトリクス, 18)
	CASE "銀"
		CALL カラーマトリクス取得(カラーマトリクス, 19)
	CASE "金"
		CALL カラーマトリクス取得(カラーマトリクス, 20)
	CASE "土気色"
		CALL カラーマトリクス取得(カラーマトリクス, 21)
	CASEELSE
		CALL カラーマトリクス取得(カラーマトリクス, 12)
ENDSELECT
RETURN 1

;********************************************************************************************
;カラーマトリクス取得関数
;ディクショナリーライブラリから引用
;********************************************************************************************
@カラーマトリクス取得(カラーマトリクス, MID)
#DIM REF カラーマトリクス, 0, 0
#DIM MID ;マトリクスID
FOR LOCAL, 0, 5
	FOR LOCAL:1, 0, 5
		カラーマトリクス:LOCAL:(LOCAL:1) = カラーマトリクスベース:MID:LOCAL:(LOCAL:1)
	NEXT
NEXT
RETURN 1

;********************************************************************************************
;カラーマトリクス初期化関数
;ディクショナリーライブラリから引用
;基本青色素材用なので、色々試してカラーマトリクス作ってみたよ！って人はフィードバックくれると
;嬉しいです。
;********************************************************************************************
@カラーマトリクス初期化
#DIM _CNT
;"[青:0][紫:1][赤:2][黄:3][緑:4][水:5][白:6][黒:7][灰:8][栗:9][桃:10][橙:11]"
;"[普通:12][褐色:13][黄色:14][日焼:15][不健康:16][悪魔:17]"
_CNT = 0;"青"
	カラーマトリクスベース:_CNT:0:0 = 256,  0,  0,  0,  0;R
	カラーマトリクスベース:_CNT:1:0 =   0,256,  0,  0,  0;G
	カラーマトリクスベース:_CNT:2:0 =   0,  0,256,  0,  0;B
	カラーマトリクスベース:_CNT:3:0 =   0,  0,  0,256,  0;A
	カラーマトリクスベース:_CNT:4:0 =   0,  0,  0,  0,256;平行
_CNT = 1;"紫"
	カラーマトリクスベース:_CNT:0:0 = 196,196,  0,  0,  0;R
	カラーマトリクスベース:_CNT:1:0 =   0,196,196,  0,  0;G
	カラーマトリクスベース:_CNT:2:0 = 196,  0,196,  0,  0;B
	カラーマトリクスベース:_CNT:3:0 =   0,  0,  0,256,  0;A
	カラーマトリクスベース:_CNT:4:0 =   0,  0,  0,  0,256;平行
_CNT = 2;"赤"
	カラーマトリクスベース:_CNT:0:0 =   0,256,  0,  0,  0
	カラーマトリクスベース:_CNT:1:0 =   0,  0,256,  0,  0
	カラーマトリクスベース:_CNT:2:0 = 256,  0,  0,  0,  0
	カラーマトリクスベース:_CNT:3:0 =   0,  0,  0,256,  0
	カラーマトリクスベース:_CNT:4:0 =   0,  0,  0,  0,256
_CNT = 3;"黄"
	カラーマトリクスベース:_CNT:0:0 =   0,196,196,  0,  0;
	カラーマトリクスベース:_CNT:1:0 = 196,  0,196,  0,  0;
	カラーマトリクスベース:_CNT:2:0 = 196,196,  0,  0,  0;
	カラーマトリクスベース:_CNT:3:0 =   0,  0,  0,256,  0;
	カラーマトリクスベース:_CNT:4:0 =   0,  0,  0,  0,256;
_CNT = 4;"緑"
	カラーマトリクスベース:_CNT:0:0 =   0,  0,256,  0,  0
	カラーマトリクスベース:_CNT:1:0 = 256,  0,  0,  0,  0
	カラーマトリクスベース:_CNT:2:0 =   0,256,  0,  0,  0
	カラーマトリクスベース:_CNT:3:0 =   0,  0,  0,256,  0
	カラーマトリクスベース:_CNT:4:0 =   0,  0,  0,  0,256
_CNT = 5;"水"
	カラーマトリクスベース:_CNT:0:0 = 196,  0,196,  0,  0;
	カラーマトリクスベース:_CNT:1:0 = 196,196,  0,  0,  0;
	カラーマトリクスベース:_CNT:2:0 =   0,196,196,  0,  0;
	カラーマトリクスベース:_CNT:3:0 =   0,  0,  0,256,  0;
	カラーマトリクスベース:_CNT:4:0 =   0,  0,  0,  0,256;
_CNT = 6;"白"//元絵が青一色だから
	カラーマトリクスベース:_CNT:0:0 = 128,128,128,  0,  0;
	カラーマトリクスベース:_CNT:1:0 = 128,128,128,  0,  0;
	カラーマトリクスベース:_CNT:2:0 = 128,128,128,  0,  0;
	カラーマトリクスベース:_CNT:3:0 =   0,  0,  0,256,  0;
	カラーマトリクスベース:_CNT:4:0 =   0,  0,  0,  0,256;
_CNT = 7;"灰"
	カラーマトリクスベース:_CNT:0:0 = 128,128,128,  0,  0;
	カラーマトリクスベース:_CNT:1:0 = 128,128,128,  0,  0;
	カラーマトリクスベース:_CNT:2:0 = 128,128,128,  0,  0;
	カラーマトリクスベース:_CNT:3:0 =   0,  0,  0,256,  0;
	カラーマトリクスベース:_CNT:4:0 = -64,-64,-64,  0,256;
_CNT = 8;"黒"
	カラーマトリクスベース:_CNT:0:0 = 128,128,128,  0,  0;
	カラーマトリクスベース:_CNT:1:0 = 128,128,128,  0,  0;
	カラーマトリクスベース:_CNT:2:0 = 128,128,128,  0,  0;
	カラーマトリクスベース:_CNT:3:0 =   0,  0,  0,256,  0;
	カラーマトリクスベース:_CNT:4:0 = -128,-128,-128,  0,256;
_CNT = 9;"栗"
	カラーマトリクスベース:_CNT:0:0 =  56, 30,  6,  0,  0;
	カラーマトリクスベース:_CNT:1:0 =  56, 30,  6,  0,  0;
	カラーマトリクスベース:_CNT:2:0 =  56, 30,  6,  0,  0;
	カラーマトリクスベース:_CNT:3:0 =   0,  0,  0,256,  0;
	カラーマトリクスベース:_CNT:4:0 =   0,  0,  0,  0,256;
_CNT = 10;"桃"
	カラーマトリクスベース:_CNT:0:0 = 126, 58, 76,  0,  0;
	カラーマトリクスベース:_CNT:1:0 = 126, 58, 76,  0,  0;
	カラーマトリクスベース:_CNT:2:0 = 126, 58, 76,  0,  0;
	カラーマトリクスベース:_CNT:3:0 =   0,  0,  0,256,  0;
	カラーマトリクスベース:_CNT:4:0 =   3,  3,  3,  0,256;
_CNT = 11;"橙"
	カラーマトリクスベース:_CNT:0:0 = 128, 71,  0,  0,  0;
	カラーマトリクスベース:_CNT:1:0 = 128, 71,  0,  0,  0;
	カラーマトリクスベース:_CNT:2:0 = 128, 71,  0,  0,  0;
	カラーマトリクスベース:_CNT:3:0 =   0,  0,  0,256,  0;
	カラーマトリクスベース:_CNT:4:0 =   0,  0,  0,  0,256;
_CNT = 12;"普通"
	カラーマトリクスベース:_CNT:0:0 = 256,  0,  0,  0,  0;R
	カラーマトリクスベース:_CNT:1:0 =   0,256,  0,  0,  0;G
	カラーマトリクスベース:_CNT:2:0 =   0,  0,256,  0,  0;B
	カラーマトリクスベース:_CNT:3:0 =   0,  0,  0,256,  0;A
	カラーマトリクスベース:_CNT:4:0 =   0,  0,  0,  0,256;平行
_CNT = 13;"褐色" (0.9, 0.7, 0.7)
	カラーマトリクスベース:_CNT:0:0 = 231,  0,  0,  0,  0;R
	カラーマトリクスベース:_CNT:1:0 =   0,180,  0,  0,  0;G
	カラーマトリクスベース:_CNT:2:0 =   0,  0,180,  0,  0;B
	カラーマトリクスベース:_CNT:3:0 =   0,  0,  0,256,  0;A
	カラーマトリクスベース:_CNT:4:0 =   0,  0,  0,  0,256;平行
_CNT = 14;"黄色" (1.05, 1.05, 1)
	カラーマトリクスベース:_CNT:0:0 = 269,  0,  0,  0,  0;R
	カラーマトリクスベース:_CNT:1:0 =   0,269,  0,  0,  0;G
	カラーマトリクスベース:_CNT:2:0 =   0,  0,256,  0,  0;B
	カラーマトリクスベース:_CNT:3:0 =   0,  0,  0,256,  0;A
	カラーマトリクスベース:_CNT:4:0 =   0,  0,  0,  0,256;平行
_CNT = 15;"日焼" (1.2, 0.95, 0.95)
	カラーマトリクスベース:_CNT:0:0 = 308,  0,  0,  0,  0;R
	カラーマトリクスベース:_CNT:1:0 =   0,244,  0,  0,  0;G
	カラーマトリクスベース:_CNT:2:0 =   0,  0,244,  0,  0;B
	カラーマトリクスベース:_CNT:3:0 =   0,  0,  0,256,  0;A
	カラーマトリクスベース:_CNT:4:0 =   0,  0,  0,  0,256;平行
_CNT = 16;"不健康" (1.2, 1.05, 1.2)
	カラーマトリクスベース:_CNT:0:0 = 308,  0,  0,  0,  0;R
	カラーマトリクスベース:_CNT:1:0 =   0,269,  0,  0,  0;G
	カラーマトリクスベース:_CNT:2:0 =   0,  0,308,  0,  0;B
	カラーマトリクスベース:_CNT:3:0 =   0,  0,  0,256,  0;A
	カラーマトリクスベース:_CNT:4:0 =   0,  0,  0,  0,256;平行
_CNT = 17;"悪魔" (0.75, 0.75, 1.5)
	カラーマトリクスベース:_CNT:0:0 = 192,  0,  0,  0,  0;R
	カラーマトリクスベース:_CNT:1:0 =   0,192,  0,  0,  0;G
	カラーマトリクスベース:_CNT:2:0 =   0,  0,384,  0,  0;B
	カラーマトリクスベース:_CNT:3:0 =   0,  0,  0,256,  0;A
	カラーマトリクスベース:_CNT:4:0 =   0,  0,  0,  0,256;平行
_CNT = 18;"朱色"
	カラーマトリクスベース:_CNT:0:0 = 384,  0,  0,  0,  0;R
	カラーマトリクスベース:_CNT:1:0 =   0,244,  0,  0,  0;G
	カラーマトリクスベース:_CNT:2:0 =   0,  0,192,  0,  0;B
	カラーマトリクスベース:_CNT:3:0 =   0,  0,  0,256,  0;A
	カラーマトリクスベース:_CNT:4:0 = -16,-16,-16,  0,256;
_CNT = 19;"銀"
	カラーマトリクスベース:_CNT:0:0 = 162, 64,162,  0,  0;
	カラーマトリクスベース:_CNT:1:0 = 162,162, 64,  0,  0;
	カラーマトリクスベース:_CNT:2:0 =  64,162,162,  0,  0;
	カラーマトリクスベース:_CNT:3:0 =   0,  0,  0,256,  0;
	カラーマトリクスベース:_CNT:4:0 =  -8, -8, -8,  0,256;
_CNT = 20;"金"
	カラーマトリクスベース:_CNT:0:0 =   0,196,179,  0,  0;
	カラーマトリクスベース:_CNT:1:0 = 179,  0,196,  0,  0;
	カラーマトリクスベース:_CNT:2:0 = 196,179,  0,  0,  0;
	カラーマトリクスベース:_CNT:3:0 =   0,  0,  0,256,  0;
	カラーマトリクスベース:_CNT:4:0 =   0,  0,  0,  0,256;
_CNT = 21;"土気色" (0.90, 0.90, 0.85)
	カラーマトリクスベース:_CNT:0:0 = 230,  0,  0,  0,  0;R
	カラーマトリクスベース:_CNT:1:0 =   0,230,  0,  0,  0;G
	カラーマトリクスベース:_CNT:2:0 =   0,  0,218,  0,  0;B
	カラーマトリクスベース:_CNT:3:0 =   0,  0,  0,256,  0;A
	カラーマトリクスベース:_CNT:4:0 =   0,  0,  0,  0,256;平行
カラーマトリクス初期化フラグ = 1
RETURN 1


code:
;==============================================================
;Filename : JP_COMP_FUNCTIONS
;DATE : 2020.07.01
;COMMENT : 파편화되어있는 일판 호환용 함수를 정리한 파일
;원래 해당 함수의 파일 위치를 꼭 적어주시기 바랍니다.
;호환용 함수 발견시 이쪽으로 옮겨주시면 감사하겠습니다.
;이 파일의 내용물은 함부로 번역하지 말아주세요.
;==============================================================
;스테이터스표시관련\LOOK_t.ERB
@充填率(캐릭터등록번호, 몸부위)
#FUNCTION
#DIM 캐릭터등록번호
#DIM 몸부위
RETURNF 충전율(캐릭터등록번호, 몸부위)

;COMMON.ERB
@陥落状態(ARG)
#FUNCTION
RETURNF 함락상태(ARG)

;커맨드관련/COMF/일상계/COMF413 요리만든다_t.ERB
@食事(ARG)
CALL 식사(ARG)

@満腹度上昇(ARG, ARGS)
CALL 만복도상승(ARG, ARGS)

;스테이터스표시관련/모브코표시.ERB
@モブ子生成(캐릭터번호, 스탠딩종류)
#DIM 캐릭터번호
#DIM 스탠딩종류
CALL 모브코생성(캐릭터번호, 스탠딩종류)

;이벤트관련/임신관련/HININSHITE_t.ERB
@妊娠可否(ARG)
#FUNCTION
RETURNF 임신가부(ARG)


code:
@BASE자연변동(ARG)
#DIM 체력회복량
#DIM 기력회복량
#DIM 욕구불만
#DIM 우산대미지
#DIM Lapse
#DIM 지저
#DIMS 低気圧位置
低気圧位置 = %GET_LOCATION_LOW()%
Lapse = TIME_PROGRESS(TIME:1)

;MASTER와 같은 장소에 없을 때
IF CFLAG:ARG:현재위치 != CFLAG:MASTER:현재위치
	BASE:ARG:무드 = BASE:ARG:무드 - Lapse * 4 * (BASE:ARG:무드 + 500) / 500
	BASE:ARG:무드 = MAX(0, BASE:ARG:무드)
	BASE:ARG:이성 = BASE:ARG:이성 + Lapse * (MAXBASE:ARG:이성 + 500) / (BASE:ARG:이성 + 500)
ELSE
	;선향옥토による補正　무드↑이성↓분노↓
	IF IsInsenceValid(ARG)
		BASE:ARG:무드 += Lapse * (SQRT(TFLAG:선향옥토) / 2)
		BASE:ARG:무드 = MIN(BASE:ARG:무드 , MAXBASE:ARG:무드)
		BASE:ARG:이성 -= Lapse * (SQRT(TFLAG:선향옥토) / 2)
		BASE:ARG:분노 -= Lapse * SQRT(TFLAG:선향옥토) / (CFLAG:ARG:빡침 + 1)
	ENDIF
	;포이즌바디の媚毒付与による補正　이성↓ 발정付与・無差別だがそれなり注ぐ必要あり
	;計算式が複雑すぎる
	IF TCVAR:ARG:포이즌게이지
		BASE:ARG:이성 -= Lapse * (MAX(SQRT(TCVAR:ARG:포이즌게이지) / 2, 1))
		IF BASE:ARG:이성 <= 0 && PALAM:ARG:욕정 >= PALAMLV:7 && TCVAR:ARG:발정 == 0 && !TALENT:ARG:임신
			;1000ほどゲージを稼ぐと3割程度で발정付与　欲求不満度が上がるほど確率向上
			IF RAND:(TCVAR:ARG:포이즌게이지 + SQRT(TCVAR:ARG:포이즌게이지 * CFLAG:ARG:욕구불만도 / 2)) > SQRT(TCVAR:ARG:포이즌게이지) * 20
				TCVAR:ARG:발정 = 1
				IF Lapse && !CFLAG:ARG:수면
					SETCOLOR C_PINK
					PRINTFORML 신체에 \@ TCVAR:ARG:포이즌게이지 > 1000 ? 충분히 #  \@ 스며든 미독이 %CALLNAME:ARG%의 이성을 녹여 간다…
					PRINTFORMW %ARG는% 발정해버렸다
					RESETCOLOR
				ENDIF
			ENDIF
		ENDIF
	ENDIF
ENDIF
;ガシングガーデン　이성↓욕구불만도↑ 발정付与 약독내성・비생물には効かない
IF IsGardenValid(ARG)
	BASE:ARG:이성 -= Lapse * MAX(RAND:(ABL:ARG:욕망 + 1), 4)
	욕구불만 = 욕구불만소질보정(ARG, (2 * Lapse))
	;自宅マップでないと上昇量が半減
	SIF !IN_HOME(TFLAG:GG설치위치)
		욕구불만 /= 2
	CFLAG:ARG:욕구불만도 = LIMIT(CFLAG:ARG:욕구불만도 + 욕구불만, 0, 1000)
	SIF BASE:ARG:이성 <= 0 && CFLAG:ARG:욕구불만도 >= 1000 && PALAM:ARG:욕정 >= PALAMLV:5 && !TALENT:ARG:임신
		TCVAR:ARG:발정 = 1
ENDIF
BASE:ARG:이성 = LIMIT(BASE:ARG:이성, 0, MAXBASE:ARG:이성)

;업무중의 경우, 일량이 감소한다
IF CFLAG:ARG:행동 == 5
	BASE:ARG:일량 = MAX(BASE:ARG:일량 - Lapse * 10, 0)
	;연회에서 감추고 있는 경우 술기운이 상승
	SIF CFLAG:ARG:직종 == 49 && !(TALENT:ARG:술내성 == -2 || CFLAG:ARG:임신자각상태 == 1)
		BASE:ARG:술기운 += Lapse * (RAND:3 * (4 - TALENT:ARG:술내성))
ENDIF
;분노는 항상 감소한다
BASE:ARG:분노 = BASE:ARG:분노 - Lapse * 5 / (CFLAG:ARG:빡침 + 1)
;연회의 자리라면 한층 더 감소한다
SIF CFLAG:ARG:직종 == 49 && CFLAG:ARG:빡침 > 0
	BASE:ARG:분노 -= Lapse * 5 / (CFLAG:ARG:빡침 + 1)
SIF BASE:ARG:분노 <= 0
	CFLAG:ARG:빡침 = 0
BASE:ARG:분노 = MAX(0, BASE:ARG:분노)
;술기운은 항상 감소한다
BASE:ARG:술기운 = BASE:ARG:술기운 - Lapse
;만취시는 감소량이 증가한다
SIF TCVAR:ARG:만취
	BASE:ARG:술기운 -= Lapse * (RAND:4)
BASE:ARG:술기운 = MAX(0, BASE:ARG:술기운)
;수면심도의 변동
IF CFLAG:ARG:수면
	;자고 있는 경우
	TCVAR:ARG:수면심도 += Lapse * 10 * MAX(TCVAR:ARG:수면제강도, 1)
	TCVAR:ARG:수면심도 += (BASE:ARG:술기운 / 5 + TCVAR:ARG:피로도 / 3)
	TCVAR:ARG:피로도    = TCVAR:ARG:피로도 * 2 / 3
	SIF TCVAR:ARG:피로도 < 100
		TCVAR:ARG:피로도 = 0
ELSE
	;자지 않았다
	IF TCVAR:ARG:수면심도 > 0
		TCVAR:ARG:수면심도 -= Lapse * 10
	ELSE
		TCVAR:ARG:수면심도 = 0
	ENDIF
ENDIF

;언짢음
SIF CFLAG:ARG:언짢음
	BASE:ARG:분노 = MAXBASE:ARG:분노

;발기도의 자연 증감
IF CFLAG:ARG:우후후
	IF BASE:ARG:발기 <= 900 && (BASE:ARG:정력 >= 500 || TCVAR:ARG:국사무쌍약)
		BASE:ARG:발기 += Lapse * 2
		SIF BASE:ARG:정력 >= 1000 || TCVAR:ARG:국사무쌍약
			BASE:ARG:발기 += Lapse * 5
	ENDIF
ELSE
	SIF CFLAG:ARG:발기도2 <= CFLAG:ARG:발기도 && !TCVAR:ARG:이기초
		BASE:ARG:발기 = MAX(0,BASE:ARG:발기 - Lapse * 20)
ENDIF
IF ARG == MASTER
	IF BASE:ARG:발기 <= 900 && BASE:ARG:정력 >= 500
		FOR LOCAL, 1, GET_TARGETNUM() + 1
			SIF !CFLAG:(TARGET:LOCAL):우후후
				CONTINUE
			;리얼리티는 차치하고 우선
			BASE:MASTER:발기 += GET_TARGETNUM() * 5
			BREAK
		NEXT
		SIF TARGET
			BASE:MASTER:발기 += MIN(10, 1 + ABL:TARGET:욕망 / 5) * Lapse
	ENDIF
	;사양이 올바른 것인지 모르지만 수면간보너스
	SIF CFLAG:MASTER:장난 == 2 || FLAG:70
		BASE:MASTER:발기 += 5
ENDIF
BASE:ARG:발기 = MIN(BASE:ARG:발기, MAXBASE:ARG:발기)

;미약플래그
TCVAR:ARG:미약 = MAX(TCVAR:ARG:미약 - Lapse,0)
;이뇨제
TCVAR:ARG:이뇨제 = MAX(TCVAR:ARG:이뇨제 - Lapse,0)
;춘약 플래그
TCVAR:ARG:춘약 = MAX(TCVAR:ARG:춘약 - Lapse,0)
;선향옥토
IF ARG == MASTER
	TFLAG:선향옥토 = MAX(TFLAG:선향옥토 - Lapse,0)
	TFLAG:포이즌바디 = MAX(TFLAG:포이즌바디 - Lapse, 0)
ENDIF
;포이즌게이지
TCVAR:ARG:포이즌게이지 = MAX(TCVAR:ARG:포이즌게이지 - (Lapse * MAX(TCVAR:ARG:포이즌게이지 / 100, 1)), 0)

욕구불만 = 0
IF (TCVAR:ARG:춘약 || TCVAR:ARG:발정 || IsInsenceValid(ARG)) && ARG != MASTER
	욕구불만 = 욕구불만소질보정(ARG,Lapse)
	CFLAG:ARG:욕구불만도 = LIMIT(CFLAG:ARG:욕구불만도 + 욕구불만, 0, 1000)
ENDIF
;데일리 감산 처리
CFLAG:ARG:데일리 = MAX(CFLAG:ARG:데일리 - Lapse,0)
;더러움을 붙인다
TCVAR:ARG:더럽히는양 = 0
IF AT_HOME(ARG) || CFLAG:ARG:현재위치 == OMANEKIBEYA()
	TCVAR:ARG:더럽히는양 = CFLAG:ARG:수면 ? 0 # 3 - ABL:ARG:청소기능 / (1 + TALENT:ARG:게으름)
	SIF TALENT:ARG:유치
		TCVAR:ARG:더럽히는양 += 2
	SIF CFLAG:ARG:초기위치 == CFLAG:ARG:현재위치 && TALENT:ARG:게으름
		TCVAR:ARG:더럽히는양 += 3
	SIF CFLAG:ARG:대청소 > 0
		TCVAR:ARG:더럽히는양 = CFLAG:ARG:수면 ? 0 # 1 + TALENT:ARG:유치 - 3 * (ABL:ARG:청소기능 + 1)
	;청소를 하고 있는 경우, 더러움이 감소
	IF CFLAG:ARG:직종 == 40 && CFLAG:ARG:행동 == 5
		TCVAR:ARG:더럽히는양 = -2 * (ABL:ARG:청소기능 * 20 + 100)
	;청소부는 12~18시의 사이 청소하는, 당신의 기능이 높으면 청소시켜 주지 않다
	ELSEIF TALENT:ARG:청소부 && CFLAG:ARG:신사거주 && BETWEENTIME(720,1080)
		TCVAR:ARG:더럽히는양 = -1 * MAX(ABL:ARG:청소기능 + 2 - ABL:MASTER:청소기능, 1)
	ENDIF
	YOGORE:(CFLAG:ARG:현재위치) += TCVAR:ARG:더럽히는양 * Lapse / 5
	YOGORE:(CFLAG:ARG:현재위치) = LIMIT(YOGORE:(CFLAG:ARG:현재위치), 0, 6000)
ENDIF
IF !CFLAG:ARG:우후후 && CFLAG:ARG:행동 != 5 && Lapse >= 10 && ARG
	체력회복량 = (10 + TALENT:ARG:회복속도) * Lapse / 20
	기력회복량 = (10 + TALENT:ARG:회복속도) * Lapse / 20
	;회복량이 100 미만인 경우 숨김
	CALL RECOVER(ARG, 체력회복량,"체력", 체력회복량 < 100 ? "" # "시간경과에 의한 자연 회복" )
	CALL RECOVER(ARG, 기력회복량,"기력", 기력회복량 < 100 ? "" # "시간경과에 의한 자연 회복" )
ENDIF
;쇠약의 처리
IF CFLAG:ARG:쇠약
	체력회복량 = (3 + TALENT:ARG:회복속도) * MAXBASE:ARG:체력/2000
	기력회복량 = (3 + TALENT:ARG:회복속도) * MAXBASE:ARG:기력/2000
	;동침 상태라면 상대의 회복량이 상승
	IF CFLAG:ARG:동침중
		체력회복량 *= 2
		기력회복량 *= 2
	ENDIF
	CALL RECOVER(ARG,Lapse * 체력회복량,"체력")
	CALL RECOVER(ARG,Lapse * 기력회복량,"기력")
	CFLAG:ARG:쇠약 = MAX(CFLAG:ARG:쇠약 - Lapse, 0)
	IF BASE:ARG:체력 > MAXBASE:ARG:체력 / 2
		CFLAG:ARG:쇠약 = 0
		TCVAR:ARG:휴식중 = 0
	ENDIF
ENDIF
;비, 눈이 내리고 있는 경우, 지붕이 없으면 체력이 조금씩 줄어든다
;신사 밖으로 있는 캐릭터는 줄어들지 않지만 당신과 데이트중의 상대는 줄어든다
;비로 쇠약 상태는 되지 않는다
IF OUTROOF(CFLAG:ARG:현재위치) && (AT_HOME(ARG) || ARG == MASTER || FLAG:데이트상대 == ARG)
	;당신이 접 이식 우산을 가지고 있지 않은 경우
	IF ARG == MASTER && !ITEM:접는우산
		SELECTCASE TIME:5
			;비·안개비
			CASE 4, 6
				;불필요한 타이밍에 메시지가 나오지 않게
				SIF Lapse && !TFLAG:195 && !CFLAG:ARG:우후후 && !CFLAG:ARG:수면
					PRINTW 비에 젖어서 쌀쌀하다
			;큰 비
			CASE 5
				SIF Lapse && !TFLAG:195 && !CFLAG:ARG:우후후 && !CFLAG:ARG:수면
					PRINTW 차가운 빗줄기가 피부를 찌르고 있다
			;눈·가루눈·안개눈·진눈깨비
			CASE 8, 10, 12
				SIF Lapse && !TFLAG:195 && !CFLAG:ARG:우후후 && !CFLAG:ARG:수면
					PRINTW 눈을 뒤집어써서 쌀쌀하다
			;폭설
			CASE 9
				SIF Lapse && !TFLAG:195 && !CFLAG:ARG:우후후 && !CFLAG:ARG:수면
					PRINTW 폭설에 몸이 얼어붙을 것 같다
			;(天候パッチ)豪雨・ひょうを追加、あられを変更
			;あられ
			CASE 13
				IF GET_HEAT_THUNDERSTORM() == 1
					SIF Lapse && !TFLAG:195 && !CFLAG:ARG:우후후 && !CFLAG:ARG:수면
						PRINTW 싸라기눈에 힘차게 맞아서 아프다
				ELSE
					SIF Lapse && !TFLAG:195 && !CFLAG:ARG:우후후 && !CFLAG:ARG:수면
						PRINTW 눈을 뒤집어써서 쌀쌀하다
				ENDIF
			;豪雨
			CASE 14
				SIF Lapse && !TFLAG:195 && !CFLAG:ARG:우후후 && !CFLAG:ARG:수면
					PRINTW 폭포수 같은 비가 몸에 부딪친다
			;ひょう
			CASE 15
				SIF Lapse && !TFLAG:195 && !CFLAG:ARG:우후후 && !CFLAG:ARG:수면
					PRINTW 굵은 우박이 몸을 아프게 한다
		ENDSELECT
	;당신이 접 이식 우산 을 가지고 있는과 체력 대신에 우산내구도가 줄어든다
	ELSEIF ARG == MASTER
		SELECTCASE TIME:5
			;안개비, 안개눈
			CASE 6, 12
				우산대미지 = 1
				;(天候パッチ)風速の影響
				IF WIND_VELOCITY == 1
					우산대미지 += 50
				ELSEIF WIND_VELOCITY == 2
					우산대미지 += 200
				ELSEIF WIND_VELOCITY >= 3
					우산대미지 += 500
				ENDIF
			;진눈깨비
			CASE 13
				우산대미지 = 5
				;(天候パッチ)風速の影響
				IF WIND_VELOCITY == 1
					우산대미지 += 50
				ELSEIF WIND_VELOCITY == 2
					우산대미지 += 200
				ELSEIF WIND_VELOCITY >= 3
					우산대미지 += 500
				ENDIF
			;비·눈·가루눈
			CASE 4, 6, 8, 10, 12
				우산대미지 = 2
				;(天候パッチ)風速の影響
				IF WIND_VELOCITY == 1
					우산대미지 += 50
				ELSEIF WIND_VELOCITY == 2
					우산대미지 += 200
				ELSEIF WIND_VELOCITY >= 3
					우산대미지 += 500
				ENDIF
			;폭우·폭설
			CASE 5, 9
				우산대미지 = 20
				;(天候パッチ)風速の影響
				IF WIND_VELOCITY == 1
					우산대미지 += 50
				ELSEIF WIND_VELOCITY == 2
					우산대미지 += 200
				ELSEIF WIND_VELOCITY >= 3
					우산대미지 += 500
				ENDIF
			;(天候パッチ)豪雨・ひょうを追加
			;豪雨
			CASE 14
				우산대미지 = 50
				;(天候パッチ)風速の影響
				IF WIND_VELOCITY == 1
					우산대미지 += 50
				ELSEIF WIND_VELOCITY == 2
					우산대미지 += 200
				ELSEIF WIND_VELOCITY >= 3
					우산대미지 += 500
				ENDIF
			;ひょう
			CASE 15
				우산대미지 = 100
				;(天候パッチ)風速の影響
				IF WIND_VELOCITY == 1
					우산대미지 += 50
				ELSEIF WIND_VELOCITY == 2
					우산대미지 += 200
				ELSEIF WIND_VELOCITY >= 3
					우산대미지 += 500
				ENDIF
			CASEELSE
				우산대미지 = 0
		ENDSELECT
			FLAG:우산내구도 += 우산대미지 * Lapse
			IF FLAG:우산내구도 > 10000
				ITEM:접는우산 = 0
				ITEMSALES:36 ++
				FLAG:우산내구도 = 0
				ITEM:망가진우산 = 1
				SIF EQUIP:TARGET:액세서리!= 6
					TEQUIP:TARGET:한우산을씀 = 0
				CALL COLORMESSAGE(@"우산이 망가졌다!",C_YELLOW,2)
			ELSEIF FLAG:우산내구도 > 8000 && 우산대미지
				SIF Lapse && !TFLAG:195 && !CFLAG:ARG:우후후 && !CFLAG:ARG:수면
					CALL COLORMESSAGE(@"우산이 망가질 것 같다…",C_YELLOW,1)
			ENDIF
	ENDIF
	SIF (CFLAG:ARG:우후후 == 2 && BASE:ARG:기력 > 500) || CFLAG:ARG:우후후 != 2
		BASE:ARG:체력 = MAX(BASE:ARG:체력 + 날씨에의한영향(ARG, CFLAG:ARG:현재위치) * Lapse, 500)
ENDIF

;(天候パッチ)雷・竜巻遭遇判定
지저 = 0
IF CFLAG:MASTER:데이트중 == 9
	지저 = 1
ELSEIF CFLAG:MASTER:현재위치 == OMANEKIBEYA() && GROUPMATCH(CFLAG:MASTER:초대, 36, 37, 38, 49, 60, 64, 83, 84)
	지저 = 1
ENDIF
IF OUTROOF(CFLAG:ARG:현재위치) && ARG == MASTER && Lapse && !CFLAG:ARG:우후후 && !CFLAG:ARG:수면 && CFLAG:MASTER:현재위치 != 천계 && !지저
	IF GET_FRONTAL_THUNDERSTORM() == 1 && GET_HEAT_THUNDERSTORM() == 1 && GET_WEATHER_THUNDERSTORM() == 1
		CALL COLORMESSAGE(@"천둥이 심하게 치고 있다",C_YELLOW,2)
	ELSEIF (GET_FRONTAL_THUNDERSTORM() == 1 || GET_HEAT_THUNDERSTORM() == 1) && GET_WEATHER_THUNDERSTORM() == 1
		CALL COLORMESSAGE(@"천둥소리가 들려온다",C_YELLOW,2)
	ENDIF
ENDIF

IF OUTROOF(CFLAG:ARG:현재위치) && ARG == MASTER && WIND_VELOCITY >= 2 && Lapse && !CFLAG:ARG:우후후 && !CFLAG:ARG:수면 && CFLAG:MASTER:현재위치 != 천계 && !지저
	IF CAN_CUMULUS:2 == 2 && RAND:10 == 0
		SETCOLOR C_RED
		PRINTW 회오리바람이다！！
		RESETCOLOR
		PRINTL
		PRINTW 회오리바람에 휘말려버려 날아가 버렸다……
		PRINTL
		CALL ASK_DIARY("회오리바람과 조우했다")
		BASE:MASTER:체력 -= (MAXBASE:MASTER:체력 * 3)
	ELSEIF GET_FRONTAL_THUNDERSTORM() == 1 && GET_HEAT_THUNDERSTORM() == 1 && ATMOSPHERIC_INSTABILITY <= -2 && TIME:5 >= 13 && RAND:30 == 0
		SETCOLOR C_RED
		PRINTW 회오리바람이다！！
		RESETCOLOR
		PRINTL
		PRINTW 회오리바람에 휘말려버려 날아가 버렸다……
		PRINTL
		CALL ASK_DIARY("회오리바람과 조우했다")
		BASE:MASTER:체력 -= (MAXBASE:MASTER:체력 * 3)
	ENDIF
ELSEIF OUTROOF(CFLAG:ARG:현재위치) && ARG == MASTER && Lapse && !CFLAG:ARG:우후후 && !CFLAG:ARG:수면 && CFLAG:MASTER:현재위치 != 천계 && !지저
	IF (低気圧位置 == "台風接近暴風域" || 低気圧位置 == "台風通過暴風域") && IS_TYPHOON:1 >= 5 && WIND_VELOCITY >= 3 && RAND:10 == 0
		PRINTFORML …길을 걷고 있는데 무언가가 이쪽으로 날아왔다
		SETCOLOR C_RED
		PRINTW 쓰러진 나무다！！
		RESETCOLOR
		PRINTL
		PRINTFORML 폭풍에 날려진 쓰러진 나무가 %CALLNAME:MASTER%에게 직격했다…
		PRINTL
		CALL ASK_DIARY("날아온 물건에 직격했다")
		BASE:MASTER:체력 -= (MAXBASE:MASTER:체력 * 3)
	ELSEIF WIND_VELOCITY >= 3 && RAND:20 == 0
		PRINTFORML …길을 걷고 있는데 무언가가 이쪽으로 날아왔다
		SETCOLOR C_RED
		PRINTW 짐수레다！！
		RESETCOLOR
		PRINTL
		PRINTFORML 폭풍에 날려진 짐수레가 %CALLNAME:MASTER%에게 직격했다…
		PRINTL
		CALL ASK_DIARY("날아온 물건에 직격했다")
		BASE:MASTER:체력 -= (MAXBASE:MASTER:체력 * 2)
	ELSEIF (低気圧位置 == "台風接近暴風域" || 低気圧位置 == "台風通過暴風域") && IS_TYPHOON:1 >= 5 && WIND_VELOCITY >= 2 && RAND:40 == 0
		PRINTFORML …길을 걷고 있는데 무언가가 이쪽으로 날아왔다
		SETCOLOR C_RED
		PRINTW 기왓장이다！！
		RESETCOLOR
		PRINTL
		PRINTFORML 폭풍에 날려진 기왓장이 %CALLNAME:MASTER%에게 직격했다…
		PRINTL
		CALL ASK_DIARY("날아온 물건에 직격했다")
		BASE:MASTER:체력 -= MAXBASE:MASTER:체력
	ELSEIF (低気圧位置 == "台風接近暴風域" || 低気圧位置 == "台風通過暴風域") && WIND_VELOCITY >= 2 && RAND:80 == 0
		PRINTFORML …길을 걷고 있는데 무언가가 이쪽으로 날아왔다
		SETCOLOR C_RED
		PRINTW 기왓장이다！！
		RESETCOLOR
		PRINTL
		PRINTFORML 폭풍에 날려진 기왓장이 %CALLNAME:MASTER%에게 직격했다…
		PRINTL
		CALL ASK_DIARY("날아온 물건에 직격했다")
		BASE:MASTER:체력 -= MAXBASE:MASTER:체력
	ENDIF
ENDIF

;------------------------------------------
;캐릭터(ARG)가 지점(ARG:1)에 있을 때에 받는 체력에의 증감치
;이동 경향에서도 사용하므로 함수 로 분리
;------------------------------------------
@날씨에의한영향(ARG, ARG:1)
#FUNCTION
VARSET LOCAL
;옥외, 우산 장비 이루어, 한우산을씀 하지 않는다
IF OUTROOF(ARG:1) && EQUIP:ARG:액세서리!= 6 && !TEQUIP:ARG:한우산을씀
	;당신은 우산을 가지고 있으면 제외
	SIF ARG == MASTER && ITEM:접는우산
		RETURNF 0
	SELECTCASE TIME:5
		;여름의 맑음
		CASE 0
			SIF DAY:2 == 2 && (TALENT:ARG:수서 || TALENT:ARG:빙정 == 2)
				LOCAL = -2
		;여름의 맑은 하늘
		CASE 1
			SIF DAY:2 == 2 && (TALENT:ARG:수서 || TALENT:ARG:빙정 == 2)
				LOCAL = -3
		;비·안개비
		CASE 4, 6
			IF TALENT:ARG:수서
				LOCAL = 3
			ELSE
				LOCAL = -2
			ENDIF
		;눈·가루눈·안개눈·진눈깨비
		CASE 8, 10, 11, 12
			IF TALENT:ARG:빙정
				LOCAL = 3
			ELSE
				LOCAL = -2
			ENDIF
		;큰 비
		CASE 5
			IF TALENT:ARG:수서
				LOCAL = 3
			ELSE
				LOCAL = -3
			ENDIF
		;吹雪(天候パッチ)あられ
		CASE 9, 13
			IF TALENT:ARG:빙정
				LOCAL = 3
			ELSE
				LOCAL = -3
			ENDIF
		;(天候パッチ)豪雨・ひょうを追加
		;豪雨
		CASE 14
			IF TALENT:ARG:수서
				LOCAL = 3
			ELSE
				LOCAL = -6
			ENDIF
		;ひょう
		CASE 15
			LOCAL = -10
	ENDSELECT
	;(天候パッチ)風速の影響
	IF WIND_VELOCITY == 1
		LOCAL -= 1
	ELSEIF WIND_VELOCITY == 2
		LOCAL -= 3
	ELSEIF WIND_VELOCITY >= 3
		LOCAL -= 6
	ENDIF
ENDIF

;흡혈귀와 빙정는 대미지 2배, 당신도 방위할 수 있으므로 영향을 크고
SIF LOCAL < 0 && (TALENT:ARG:흡혈귀 || TALENT:ARG:빙정 || ARG == MASTER)
	TIMES LOCAL, 2.0
RETURNF LOCAL

@IsGardenValid(ARG)
#FUNCTION
SIF CFLAG:ARG:현재위치 != TFLAG:GG설치위치
	RETURNF 0
SIF ARG == MASTER
	RETURNF 0
SIF TALENT:ARG:인형
	RETURNF 0
SIF TALENT:ARG:약독내성
	RETURNF 0

RETURNF 1

@IsInsenceValid(ARG)
#FUNCTION
SIF !TFLAG:선향옥토
	RETURNF 0
SIF ARG == MASTER
	RETURNF 0
SIF CFLAG:ARG:현재위치 != CFLAG:MASTER:현재위치
	RETURNF 0
SIF TALENT:ARG:인형
	RETURNF 0
SIF TALENT:ARG:약독내성
	RETURNF 0
RETURNF TFLAG:선향옥토

@IsHeat(ARG)
#FUNCTION
SIF TCVAR:ARG:미약 || TCVAR:ARG:발정 || IsGardenValid(ARG)
	RETURNF 1
RETURNF 0


code:
;-----------------------------------------------------------
;맵 묘화 처리
;2캐릭터 세트의 반각 숫자(01이라든지)는 자동으로 버튼화, 전각 숫자는 인식하지 않는다
;-----------------------------------------------------------
@DRAW_MAP(ARGS)
#DIMS AA, 50
#DIMS COLOR, 50
#DIM MODE
#DIM LOCATION

#DIM LINENUM
#DIM X_POINT

;AA를 취득, 없으면 그대로 돌아간다
VARSET AA
VARSET COLOR
;SETFONT "ＭＳ ゴシック" 한판 임의수정, 한판은 굴림체이므로 누락
;외출 맵인가 어떤가의 분기
IF ARGS == "ODEKAKE"
	TRYCCALLFORM ODEKAKEMAP_{CFLAG:MASTER:데이트중}(AA)
	CATCH
		;SETFONT 한판 임의수정, 한판은 굴림체이므로 누락
		RETURN 0
	ENDCATCH
ELSE
	TRYCCALLFORM MAP_VIEWING(MAIN_MAP)
		CALL DRAW_INFORMATIONLINE(@"%MAPNAME:(TFLAG:맵변환)%")
		PRINTFORML
		IF RECOLOREDMAPS
			TRYCCALLFORM COLOREDMAP_%RESULTS%_{TFLAG:맵변환}(AA, COLOR)
			CATCH
				RECOLOREDMAPS = 0
				CALL DRAW_MAP
				RECOLOREDMAPS = 1
				RETURN
			ENDCATCH
		ELSE
			TRYCALLFORM MAP_%RESULTS%_{TFLAG:맵변환}(AA)
		ENDIF
	CATCH
		;SETFONT 한판 임의수정, 한판은 굴림체이므로 누락
		RETURN 0
	ENDCATCH
ENDIF

;-----------------------------------------------------------
;묘화 처리
;-----------------------------------------------------------
FOR LINENUM, 0, VARSIZE("AA")
	SIF AA:LINENUM == ""
		CONTINUE
	;행 마다 초기화
	X_POINT = 0
	RESULTS = I
	;행의 종단까지 루프
	WHILE RESULTS != "" && STRLENSU(RESULTS) < 3
		;1문자 꺼낸다
		SUBSTRINGU AA:LINENUM, X_POINT, 1
		;숫자라면 버튼으로 한다
		IF ISNUMERIC(RESULTS)
			;분기 귀찮기 때문에 반드시 2자릿수 취한다
			SUBSTRINGU AA:LINENUM, X_POINT, 2
			CALL GETMAP(TOINT(RESULTS), ARGS)
			X_POINT += 2
		;기호에 의미를 갖게하는 예, 이것이라면#은 보통으로는 사용할 수 없게 되지만 뭐 좋은가
		ELSEIF RESULTS == "#"
			;반드시 2 문자 잡는다
			SUBSTRINGU AA:LINENUM, X_POINT, 2
				IF ARGS == "HIKKOSHI"
					TRYCALLFORM DRAW_MAP_BG_{MAIN_MAP}(RESULTS)
				ELSE
				TRYCALLFORM DRAW_MAP_BG_{CFLAG:MASTER:데이트중}(RESULTS)
				ENDIF
			X_POINT += 2
		;보통의 문자
		ELSE
			;CALL DRAW_MAP_BG(RESULTS)
			IF ARGS == "HIKKOSHI"
				TRYCALLFORM DRAW_MAP_BG_{MAIN_MAP}(RESULTS)
			ELSE
				TRYCALLFORM DRAW_MAP_BG_{CFLAG:MASTER:데이트중}(RESULTS)
			ENDIF
			X_POINT ++
		ENDIF
	WEND
	PRINTL
NEXT
;SETFONT 한판 임의수정, 한판은 굴림체이므로 누락
RESETCOLOR
;------------------------------------------
;맵 표시 설정
;ARG    표시 맵의 MAPID
;ARG:1  판정할 장소ID（임의）
;------------------------------------------
@MAP_VIEWING(ARG, ARG:1)
SIF !TFLAG:맵변환
	TFLAG:맵변환 = MAP_AREASELECT(ARG, ARG:1)
RESULTS = %MAP_VIEWING_NAME(ARG)%

;------------------------------------------
;맵에 표시할 숫자 버튼 묘화 설정
;ARG   두자리 버튼 수치（장소ID의 뒷자리 두자리）
;ARGS  "ODEKAKE"=외출맵
;------------------------------------------
@GETMAP(ARG, ARGS)
#DIM P_ID
#DIM Q_ID

;외출맵
IF ARGS == "ODEKAKE"
	P_ID = (ARG * 10) + (CFLAG:MASTER:데이트중 * 100)
;거점 맵
ELSE
	P_ID = ARG + MAIN_MAP * 100
ENDIF
;위치짐작
IF TALENT:MASTER:위치짐작 && (FLAG:짐작모드 == 1 || ARGS == "ODEKAKE")
	IF ARGS != "ODEKAKE"
		;모브는 우선도 최저
		SIF ROOMDATA:ARG & 장소_모브
			SETCOLOR C_D_PINK
	ENDIF

	KEHAI = 0
	FOR LOCAL, 1, CHARANUM
		;内部構造判定,第三引数は第二と同じにする
		IF ARGS != "ODEKAKE" && GETMAP_BUILDING(MAIN_MAP, P_ID, P_ID)
			;内部にあたる場所をすべてチェック
			FOR Q_ID, MINROOM(), MAXROOM
				IF GETMAP_BUILDING(MAIN_MAP, P_ID, Q_ID) && CFLAG:LOCAL:현재위치 == Q_ID
					KEHAI = CHECK_HEHAI(LOCAL)
					SIF KEHAI > 1
						BREAK
				ENDIF
			NEXT
		;通常の地点
		ELSEIF CFLAG:LOCAL:현재위치 == P_ID
			KEHAI = CHECK_HEHAI(LOCAL)
		ENDIF
		;特定の行動優先
		SIF KEHAI > 1
			BREAK
	NEXT
	CALL SET_KEHAI_COLOR(KEHAI)
;汚部屋察知,お出かけマップ時は使わない
ELSEIF TALENT:MASTER:오방짐작 && FLAG:짐작모드 == 2 && ARGS != "ODEKAKE"
	SELECTCASE YOGORE:P_ID
		CASE IS < 1000
			SETCOLOR C_CREAM
		CASE IS < 2000
			SETCOLOR C_YELLOW
		CASE IS < 5000
			SETCOLOR C_V_PINK
		CASEELSE
			SETCOLOR C_RED
	ENDSELECT
ENDIF

;MASTERは優先度最高
SIF CFLAG:MASTER:현재위치 == P_ID
	SETCOLOR C_GREEN
;マッププレビュー時（SHOP画面か初期状態）
IF CFLAG:MASTER:수면 || (DAY == 1 && TIME == 0)
	SIF P_ID == Default초기위치 || CMATCH(CFLAG:집주인후보, P_ID, 1, CHARANUM)
		SETCOLOR C_ORANGE
ENDIF

IF ARGS == "ODEKAKE" && ARG >= 10
	;特殊ワープ用
	SETCOLOR C_P_PURPLE
	PRINTBUTTON "◇", ARG
ELSE
	PRINTBUTTON (ARG > 9 ? TOSTR(ARG) # TOFULL(TOSTR(ARG))), ARG
ENDIF
RESETCOLOR

;------------------------------------------
;위치감지한 인물의 행동
;------------------------------------------
@CHECK_HEHAI(ARG)
#FUNCTION
;仕事中
IF CFLAG:ARG:행동 == 5
	RETURNF 2
;睡眠中
ELSEIF CFLAG:ARG:수면
	RETURNF 3
;自由行動中
ELSEIF Activity_Duration:ARG
	RETURNF 4
;何もしてない
ELSE
	RETURNF 1
ENDIF

;------------------------------------------
;위치감지의 착색
;------------------------------------------
@SET_KEHAI_COLOR(ARG)
;何もしてない＠ピンク
IF ARG == 1
	SETCOLOR C_H_PINK
;仕事中＠濃オレンジ
ELSEIF ARG == 2
	SETCOLOR C_D_ORANGE
;睡眠中＠紺色
ELSEIF ARG == 3
	SETCOLOR C_N_BLUE
;自由行動中＠黄色
ELSEIF ARG == 4
	SETCOLOR C_YELLOW
ENDIF

;--------------------------------------------------
;맵 공통의 묘화 처리
;ARG      SLICED
;#a～#d       텃밭의 묘화
;#e, #o, #p   거점 밖의 묘화（気配用）
;--------------------------------------------------
@MAP_PRINT(ARGS)
SELECTCASE ARGS
CASE "#a"
	IF HATAKE_NAME:0 != ""
		SETCOLOR C_P_GREEN
		PRINT VV
		RESETCOLOR
	ELSE
		PRINT
	ENDIF
CASE "#b"
	IF HATAKE_NAME:1 != ""
		SETCOLOR C_P_GREEN
		PRINT VV
		RESETCOLOR
	ELSE
		PRINT
	ENDIF
CASE "#c"
	IF HATAKE_NAME:2 != ""
		SETCOLOR C_P_GREEN
		PRINT VV
		RESETCOLOR
	ELSE
		PRINT
	ENDIF
CASE "#d"
	IF HATAKE_NAME:3 != ""
		SETCOLOR C_P_GREEN
		PRINT VV
		RESETCOLOR
	ELSE
		PRINT
	ENDIF
CASE "#e"
	SIF TALENT:MASTER:위치짐작 && COUNTCHARA:(MAXROOM) > 0 && FLAG:짐작모드 == 1
		SETCOLOR 255, 100, 200
	PRINT ↓
	RESETCOLOR
CASE "#o"
	SIF TALENT:MASTER:위치짐작 && COUNTCHARA:(MAXROOM) > 0 && FLAG:짐작모드 == 1
		SETCOLOR 255, 100, 200
	PRINT ←
	RESETCOLOR
CASE "#p"
	SIF TALENT:MASTER:위치짐작 && COUNTCHARA:(MAXROOM) > 0 && FLAG:짐작모드 == 1
		SETCOLOR 255, 100, 200
	PRINT →
	RESETCOLOR
;布団
;┌─┐　#f#j#g
;└─┘　#h#j#i
CASE "#f"
	SETCOLOR C_FUTON
	PRINT ┌
	RESETCOLOR
CASE "#g"
	SETCOLOR C_FUTON
	PRINT ┐
	RESETCOLOR
CASE "#h"
	SETCOLOR C_FUTON
	PRINT └
	RESETCOLOR
CASE "#i"
	SETCOLOR C_FUTON
	PRINT ┘
	RESETCOLOR
CASE "#j"
	SETCOLOR C_FUTON
	PRINT ─
	RESETCOLOR
;토리이
;┳━┳　#l#k#l
;╋━╋　#n#k#n
;┃　┃　#m　#m
CASE "#k"
	SETCOLOR C_TORII
	PRINT ━
	RESETCOLOR
CASE "#l"
	SETCOLOR C_TORII
	PRINT ┳
	RESETCOLOR
CASE "#m"
	SETCOLOR C_TORII
	PRINT ┃
	RESETCOLOR
CASE "#n"
	SETCOLOR C_TORII
	PRINT ╋
	RESETCOLOR
ENDSELECT

;===========================================================
;장소명 표시
;===========================================================
@PRINT_SPOT
#DIMS SPOTNAME, 100

VARSET SPOTNAME
CALLFORM MAP_SPOTNAME_{MAIN_MAP}(SPOTNAME)
FOR  LOCAL, 0, VARSIZE("SPOTNAME")
	IF SPOTNAME:LOCAL != ""
		IF MAIN_MAP * 100 + LOCAL != CFLAG:MASTER:현재위치
			PRINTBUTTON TOSTR(LOCAL, "00") + "." + SPOTNAME:LOCAL + "　", MAIN_MAP * 100 + LOCAL
		ELSE
			SETCOLOR 0x00FF00
			PRINTS TOSTR(LOCAL, "00") + "." + SPOTNAME:LOCAL + "　"
			RESETCOLOR
		ENDIF
	ENDIF
NEXT


code:
;FileName_JOB.ERB ----------------------------- Rev1. 00
;일 개시 처리
;CALL		USER
;ARG		캐릭터 NO
;RETURN		VOID
;COMMENT
;-----------------------------------------------------------
@CHARA_JOBSTR(ARG)
#DIM 이동전
#DIM 이동후
#DIMS HOLD_SAMEN

IF EX:ARG:질내정액 + EX:ARG:애널내정액 >= 500
	HOLD_SAMEN = 배에 충분히 정액을 모은
ELSEIF EX:ARG:질내정액 + EX:ARG:애널내정액 >= 100
	HOLD_SAMEN = 배에 정액을 모은
ELSE
	HOLD_SAMEN =
ENDIF

;FOR LOCAL, 0, CHARANUM
;	SIF CFLAG:LOCAL:직장 == 0 && CFLAG:LOCAL:행동 == 5
;		PRINTFORMW ### JOB 326ERROR %CALLNAME:LOCAL% ###
;NEXT
VARSET LOCAL
이동전 = 0
이동후 = 0
;울면서 일에게 성실하니까
IF CFLAG:ARG:우후후 && !GROUPMATCH(CFLAG:ARG:직종, 49, 51)
	PRINTFORMW %ARG는% \@ CFLAG:ARG:직장 == CFLAG:ARG:현재위치 ?  일을 시작하 # 일하러 가 \@지 않으면 안 되는 것 같다…
	CALL ENDUFUFU(ARG)
	CFLAG:MASTER:우후후 = 0
	TFLAG:106 = 0
	IF TFLAG:102 == 3 && TFLAG:껴안기모드
		TFLAG:껴안기모드 = 0
		TFLAG:102 = 1
	ENDIF
ENDIF

SIF CFLAG:ARG:행동 == 5
	CALL JOBMOVE(ARG)

IF CAN_SEE(ARG) && !TFLAG:원거리이동
	IF CFLAG:ARG:현재위치 == TFLAG:연회장 && TIME_PROGRESS(TIME:1) && (CFLAG:ARG:직종 == 49 || CFLAG:ARG:직종 == 51)
		CALL 연회묘사(ARG)
	ELSEIF CFLAG:ARG:현재위치 == CFLAG:ARG:직장 && TIME_PROGRESS(TIME:1)
		CALL 일정경묘사(ARG)
		IF BASE:ARG:일량
			;일이 아직 3분의 2이상 남아 있다
			IF BASE:ARG:일량 >= (MAXBASE:ARG:일량 / 3) * 2
				IF CFLAG:ARG:직종 == 48
					PRINTW 　연회 준비는 꽤 남아 있는 것 같다…
				ELSEIF CFLAG:ARG:직종 == 50
					PRINTW 　연회 정리는 꽤 남아 있는 것 같다…
				ELSEIF CFLAG:ARG:직종 == 46
					PRINTW 놀이에 몰두하고 있다…
				ELSE
					PRINTFORMW %조사처리(GET_JOBNAME(ARG),"는")% 꽤 남아 있는 것 같다…
				ENDIF
				LOCAL = 3
			;일이 아직 3분의 1이상 남아 있다
			ELSEIF BASE:ARG:일량 >= (MAXBASE:ARG:일량 / 3)
				IF CFLAG:ARG:직종 == 48
					PRINTW 　연회 준비가 끝나려면 아직 시간이 걸릴 것 같다…
				ELSEIF CFLAG:ARG:직종 == 50
					PRINTW 　연회 정리를 끝내려면 시간이 더 걸릴 것 같다…
				ELSEIF CFLAG:ARG:직종 == 46
					PRINTW 아직 더 놀고 싶은 것 같다…
				ELSE
					PRINTFORMW %조사처리(GET_JOBNAME(ARG),"가")% 끝나려면 아직 시간이 더 걸릴 것 같다…
				ENDIF
				LOCAL = 2
			ELSE
				IF CFLAG:ARG:직종 == 48
					PRINTW 　조금만 더 하면 연회 준비를 마칠 수 있을 것 같다…
				ELSEIF CFLAG:ARG:직종 == 50
					PRINTW 　조금만 더 하면 연회 정리를 끝낼 수 있을 것 같다…
				ELSEIF CFLAG:ARG:직종 == 46
					PRINTW 놀다 지친 것 같다…
				ELSE
					PRINTFORMW 조금 더 있으면 %조사처리(GET_JOBNAME(ARG),"가")% 끝날 것 같다…
				ENDIF
				LOCAL = 1
			ENDIF
			;통상의 일말 업무 중 한편 연회 플래그가 서지 않으면 표시한다
			SIF CFLAG:ARG:연회참가 == 0
				CALL KOJO_MESSAGE_SEND("EVENT", 13, ARG, 2, LOCAL)
		ENDIF
		;연회중의 경우만, 스무스하게 다음의 동작에 연결된다
		;술을 다 마셨을 때 에 1 턴 아무것도 하지 않고 멍하니 하는 것을 방지하는 처리
;		SIF CFLAG:ARG:연회참가 > 0 && BASE:ARG:일량 <= 0
;			CALL CHARA_JOBEND(ARG)
	ELSEIF CFLAG:ARG:직종 != 51
		IF !AT_HOME(ARG) && GET_MAPID(CFLAG:ARG:현재위치) != MAIN_MAP
			이동전 = 6000 + (CFLAG:ARG:현재위치 / 10)
		ELSE
			이동전 = CFLAG:ARG:현재위치
		ENDIF
		IF IN_HOME(CFLAG:ARG:직장) == 0 && GET_MAPID(CFLAG:ARG:직장) != MAIN_MAP
			이동후 = 6000 + (CFLAG:ARG:직장 / 10)
		ELSE
			이동후 = CFLAG:ARG:직장
		ENDIF
		;시간 경과하고 있지 않았으면 비표시
		IF !TIME_PROGRESS(TIME:1)
		;이동전과 이동 후의 위치가 같으면 비표시
		ELSEIF NAME_FROM_PLACE(이동전) == NAME_FROM_PLACE(이동후)
		ELSEIF CFLAG:ARG:현재위치 == OMANEKIBEYA()
			;방에 오르고 있으면 나온다, 미안합니다 귀찮은 것으로 지문 정리해 버립니다；
			CFLAG:MASTER:현재위치 = CFLAG:ARG:자택위치
			PRINTFORMW %ARG는% 용무가 있는 것 같아서 밖으로 나왔다
		ELSEIF CFLAG:ARG:직종 == 48
			PRINTFORM %HOLD_SAMEN% %ARG는% 연회를 준비하기 위해
			PRINTFORMS NAME_FROM_PLACE(이동전)
			PRINT 에서
			PRINTFORM %조사처리(NAME_FROM_PLACE(이동후),"로")%
			PRINTW 이동했습니다.
		ELSEIF CFLAG:ARG:직종 == 49
			PRINTFORM %HOLD_SAMEN% %ARG는%
			PRINTFORMS NAME_FROM_PLACE(이동전)
			PRINT 에서
			PRINTFORMS NAME_FROM_PLACE(이동후)
			PRINTW 의 연회에 참가하러 갔습니다.
		ELSEIF CFLAG:ARG:직종 == 46
			PRINTFORM %HOLD_SAMEN% %ARG는%
			PRINTFORMS NAME_FROM_PLACE(이동전)
			PRINT 에서
			PRINTFORMS NAME_FROM_PLACE(이동후)
			PRINTW 에 놀러 갔습니다.
		ELSE
			PRINTFORM %HOLD_SAMEN% %ARG는% %GET_JOBNAME(ARG)% 때문에
			PRINTFORMS NAME_FROM_PLACE(이동전)
			PRINT 에서
			PRINTFORM %조사처리(NAME_FROM_PLACE(이동후),"로")%
			PRINTW 이동했습니다.
		ENDIF

		;통상의 직장에 이동 말연회 플래그가 서지 않으면 표시한다
		SIF CFLAG:ARG:연회참가 == 0
			CALL KOJO_MESSAGE_SEND("EVENT", 13, ARG, 1, LOCAL)
	ENDIF
ENDIF
SIF CFLAG:ARG:동침중
	CALL SET_TOGETHER(0, ARG, 1)
SIF CFLAG:ARG:동행 && CFLAG:ARG:직종 != 51
	CFLAG:ARG:동행 = 0
IF FLAG:데이트상대 == ARG
	FLAG:데이트상대 = 0
	TFLAG:데이트전호감도 = 0
	CFLAG:ARG:데이트중 = MAIN_MAP
ENDIF
;직장에 이동
SIF CFLAG:ARG:직장 && SHIRAHU(ARG)
	CFLAG:ARG:현재위치 = CFLAG:ARG:직장
SIF CFLAG:ARG:직종 == 49 && !TCVAR:ARG:만취 && (BASE:ARG:술기운 > (MAXBASE:ARG:술기운 / 10) * 8)
	CALL ENKAI_DRUNK(ARG)
CFLAG:ARG:행동 = 5
IF TCVAR:ARG:갈아입음
	CALL OKIGAE(ARG, TCVAR:ARG:갈아입음)
ENDIF
;FileName_JOB.ERB ----------------------------- Rev1. 00
;일종료 처리
;CALL		USER
;ARG		캐릭터 NO
;RETURN		VOID
;COMMENT
;-----------------------------------------------------------
@CHARA_JOBEND(ARG)
;일 후 데일리 SET
SIF CFLAG:ARG:행동 == 5
	CALL SET_DERAY(3, ARG)

;일량을 0으로 한다
SIF CFLAG:ARG:행동 == 5
	BASE:ARG:일량 = 0
;이 타이밍에 피로 추가
CALL ADD_TIRED(ARG, MAXBASE:ARG:일량 / 2)

;업무중 플래그 OFF
CFLAG:ARG:행동 = 0
IF CFLAG:ARG:현재위치 == CFLAG:ARG:직장 && CFLAG:ARG:직종 != 51
	SELECTCASE CFLAG:ARG:직종
	CASE 46
		IF CFLAG:ARG:현재위치 == CFLAG:MASTER:현재위치
			PRINTFORMW %ARG는% 다 놀았습니다.
			;수고 하셨습니다 말
			SIF CFLAG:ARG:연회참가 == 0
				CALL KOJO_MESSAGE_SEND("EVENT", 13, ARG, 3,0)
		ENDIF
	CASE 48
		IF CFLAG:ARG:현재위치 == CFLAG:MASTER:현재위치
			PRINTFORMW %CALLNAME:ARG%의 연회 준비가 끝났습니다.
			SIF ARG == [[레이무]] ;원문 お疲れいむ
				PRINTL   수고하쿠레이
		ENDIF
		IF DAY == FLAG:개시일 && TIME >= FLAG:33
			CALL ENKAI_START(ARG)
		ELSEIF 연회개최중판정()
			CALL ENKAI_START(ARG)
		ENDIF
	CASE 49
		CALL ENKAI_DRUNK(ARG)
	CASE 50
		IF CFLAG:ARG:현재위치 == CFLAG:MASTER:현재위치
			PRINTFORMW %CALLNAME:ARG%의 연회 정리가 끝났습니다.
			SIF ARG == [[레이무]] ;원문 お疲れいむ
				PRINTL 　수고하쿠레이
		ENDIF
		CFLAG:ARG:직종 = 0
		CFLAG:ARG:연회참가 = 3
		CALL CHARA_JOBEND_GO_HOME(ARG)
	CASEELSE
		IF CFLAG:ARG:현재위치 == CFLAG:MASTER:현재위치
			PRINTFORMW %CALLNAME:ARG%의 %조사처리(GET_JOBNAME(ARG),"가")% 끝났습니다.
			;수고 하셨습니다 말
			CALL KOJO_MESSAGE_SEND("EVENT", 13, ARG, 3,0)
			IF MAXBASE:ARG:일량 < (TCVAR:ARG:도운양 * 3) && TCVAR:ARG:답례
				PRINTFORMW %CALLNAME:ARG%에서 %조사처리(ITEMNAME:(TCVAR:ARG:답례), "를")% 받았다
				ITEM:(TCVAR:ARG:답례) ++
			ENDIF
		ENDIF
		IF CFLAG:ARG:현재위치 / 100 != MAIN_MAP && !CFLAG:ARG:신사거주 && VISIT(ARG)
			IF !RAND:15
				IF FLAG:교류내방모드 == 1 && CFLAG:ARG:호감도 <= 50
				ELSEIF FLAG:교류내방모드 == 2 && !TALENT:ARG:사모 && !IS_LOVER(ARG) && !TALENT:ARG:연인 && !TALENT:ARG:섹프
				ELSEIF FLAG:교류내방모드 == 3
				ELSE
					CALL 주인공물건으로향한다(ARG)
				ENDIF
			ELSEIF CFLAG:ARG:현재위치 == CFLAG:MASTER:현재위치 && CAN_DATE(ARG) && !FLAG:데이트상대
				PRINTFORML %CALLNAME:ARG%에게 데이트 신청할까?
				CALL ASK_YN
				IF !RESULT
					CALL 외출처로부터권할수있을까(ARG)
					IF RESULT
						CFLAG:MASTER:동행 = 60
						CFLAG:ARG:동행 = 60
						CFLAG:ARG:데이트중 = CFLAG:MASTER:현재위치 / 100
						FLAG:데이트상대 = ARG
						TFLAG:데이트전호감도 = CFLAG:ARG:호감도
						TIME += 1
						PRINTFORMW 일을 마친 %ARG와% 데이트하기로 했다
						;필요한가 모르겠지만 일단
						RETURN
					ENDIF
				ENDIF
			ENDIF
		ENDIF
		CALL CHARA_JOBEND_GO_HOME(ARG)
	ENDSELECT
ENDIF

@CHARA_JOBEND_GO_HOME(ARG)
IF CFLAG:ARG:신사거주 && !AT_HOME(ARG)
	SIF CFLAG:ARG:현재위치 == CFLAG:MASTER:현재위치
		PRINTFORMW %ARG는% %GET_MAPNAME(MAIN_MAP)%로 돌아갔다
	CFLAG:ARG:현재위치 = MAXROOM
ENDIF


code:
;FileName_JOB.ERB ----------------------------- Rev1. 00
;휴일 판정 처리
;CALL		USER
;ARG		캐릭터 NO
;ARG:1(생략가능)	0:일이 끝나 있으면 휴일 1:일인 어느 날은 일일(일량·종료시각을 보지 않는다)
;RETURN		0:일일, 1:휴일
;COMMENT
;-----------------------------------------------------------
@CHARA_HOLIDAY(ARG, ARG:1=0)
#FUNCTION

;잔일량·일종료시간을 확인할까 분기
IF !ARG:1
	SIF BASE:ARG:일량 <= 0
		RETURNF 1
	SIF TCVAR:ARG:일종료 > 0 && TIME > TCVAR:ARG:일종료
		RETURNF 1
ENDIF
RETURNF TCVAR:ARG:일개시 == -1

;-----------------------------------------------------------
;@CHARA_HOLIDAY로부터 분리
;MOVEMENT가 불릴 때에 갱신된다
;ARG:1에 1을 설정하면(자) 연회나 업무중에 의한 스킵을 무시
;-----------------------------------------------------------
@일내용설정(ARG, ARG:1)
#DIM 청소하기
VARSET LOCAL

;CFLAG:350 직종(40, 청소　41, 회화　42, 전투　43, 교양　44, 요리　45, 음악 46, 놀이 47, 장사중(도울수없다) 48, 연회준비 49, 연회참가 50, 연회 정리 51, 연회 후의 취기 52, 여자 모임
;TCVAR:도울수없다 =1 도울수없다 =2 도와도 빨리는 끝나지 않는다
;연회계의 일은 여기에서는 설정하지 않습니다. 연회. ERB를 참조해 주세요.

;에이키 님은 일이 있습니다. 일꾼이군요.
;IF ARG == 30
	;기수일은 비번입니다
;	IF (DAY % 2 == 1)
;		BASE:ARG:일량 = 0
;	ENDIF

IF !ARG:1
	;현재 업무중이라면 돌아간다
	SIF CFLAG:ARG:행동 == 5
		RETURN

	;연회에 참가하는 놈은 그 날의 일을 쉰다
	IF FLAG:연회개최플래그 > 0 && CFLAG:ARG:연회참가 > 0
		IF !GROUPMATCH(CFLAG:ARG:직종, 48, 49, 50, 51)
			TCVAR:ARG:일개시 = -1
			TCVAR:ARG:일종료 = -1
		ENDIF
		RETURN
	ENDIF
ENDIF

IF CFLAG:ARG:출산휴가중
	TCVAR:ARG:일개시 = -1
	TCVAR:ARG:일종료 = -1
	RETURN
ENDIF

;일개시·일종료시각을―1으로 한다(개시시각이―1이라면 휴일이라고 판정)
TCVAR:ARG:일개시 = -1
TCVAR:ARG:일종료 = -1

;일의 처리
SELECTCASE ARG
CASE [[레이무]]
	청소하기 = 0
	IF YOGORE:P22참배길 > 1000
		청소하기 = P22참배길
	ELSE
		청소하기 = FINDELEMENT(YOGORE, MAXARRAY(YOGORE, 1, 6), 1, 6)
	ENDIF
	IF 청소하기 <= 0
	ELSEIF YOGORE:청소하기 <= 1000
	ELSEIF TIME < CLOCK_TO_TIME(8, 0)
		CFLAG:ARG:직장 = 청소하기
		;아침 2시간 정도 청소하기
		MAXBASE:ARG:일량 = 600 * 2
		CFLAG:ARG:직종 = 40
		;TCVAR:ARG:도울수없다 = 1
		TCVAR:ARG:급료 = 0
		TCVAR:ARG:일개시 = CLOCK_TO_TIME( 6, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME( 8, 0)
	ENDIF
CASE [[루코토]]
	IF IS_WEEKDAY(DAY)
		MAXBASE:ARG:일량 = 600 * 3
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(18, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(21, 0)
		CFLAG:ARG:직장 = P8부엌
		CFLAG:ARG:직종 = 44
		TCVAR:ARG:급료 = 2
	ENDIF
CASE [[미마]]
	IF YOUBI_MATCH(DAY, "월수")
	;월요일은 마리사, 수요일은 스이카의 상대
		MAXBASE:ARG:일량 = 600 * 3
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(16, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(19, 0)
		CFLAG:ARG:직장 = P11마당
		CFLAG:ARG:직종 = 42
		TCVAR:ARG:급료 = 5
		TCVAR:ARG:답례 = GETNUM(ITEM, "엿")
	ELSEIF YOUBI_MATCH(DAY, "일") && INRANGE(DAY:3, 8, 14)
		CALL JOB_여자회(ARG)
	ENDIF
CASE [[서니]]
	IF IS_WEEKEND(DAY)
		CALL JOB_요정의놀이(ARG)
	ENDIF
CASE [[루나]]
	IF IS_WEEKEND(DAY)
		CALL JOB_요정의놀이(ARG)
	ENDIF
CASE [[스타]]
	IF IS_WEEKEND(DAY)
		CALL JOB_요정의놀이(ARG)
	ENDIF
;치유리는 평일 일찍 일어나 연구실에
CASE [[치유리]]
	IF IS_WEEKDAY(DAY)
		MAXBASE:ARG:일량 = 600 * 6
		TCVAR:ARG:일개시 = CLOCK_TO_TIME( 6, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(12, 0)
		CFLAG:ARG:직장 = P49몽환유적・연구실
		CFLAG:ARG:직종 = 43
		TCVAR:ARG:급료 = 3
	ENDIF
;유메미도 연구 짓고
CASE [[유메미]]
	IF IS_WEEKDAY(DAY)
		MAXBASE:ARG:일량 = 600 * 6
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(11, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(17, 0)
		CFLAG:ARG:직장 = P49몽환유적・연구실
		CFLAG:ARG:직종 = 43
		TCVAR:ARG:급료 = 3
	ENDIF
CASE [[스이카]]
	;스이카 월요일은 술마시기, 수요일은 트레이닝
	;임신 자각시 술 취소
	IF YOUBI_MATCH(DAY, "월") && CFLAG:ARG:임신자각상태 == 0
		MAXBASE:ARG:일량 = 600 * 5
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(16, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(21, 0)
		CFLAG:ARG:직장 = P10툇마루
		CFLAG:ARG:직종 = 41
		TCVAR:ARG:급료 = 0
	ELSEIF YOUBI_MATCH(DAY, "수")
		MAXBASE:ARG:일량 = 600 * 3
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(16, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(19, 0)
		CFLAG:ARG:직장 = P11마당
		CFLAG:ARG:직종 = 42
		TCVAR:ARG:급료 = 1
	ENDIF
CASE [[마리사]]
	IF YOUBI_MATCH(DAY, "월")
		MAXBASE:ARG:일량 = 600 * 6
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(13, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(19, 0)
		CFLAG:ARG:직장 = P6헛간
		CFLAG:ARG:직종 = 40
		TCVAR:ARG:급료 = 1
	ENDIF
CASE [[루미아]]
	IF YOUBI_MATCH(DAY, "화") && CFLAG:ARG:임신경과일수 <= 36 && MAIN_MAP != 1 ;일본판 임신경과일수 71
		MAXBASE:ARG:일량 = 600 * 2
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(22,  0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(24, 00)
		CFLAG:ARG:직장 = P140지장길
		CFLAG:ARG:직종 = 42
		TCVAR:ARG:급료 = 0
		TCVAR:ARG:답례 = GETNUM(ITEM, "정체불명고기")
		RETURN
	ENDIF
CASE [[대요정]]
	IF IS_WEEKEND(DAY)
		CALL JOB_요정의놀이(ARG)
	ENDIF
CASE [[치르노]]
	IF IS_WEEKEND(DAY)
		CALL JOB_요정의놀이(ARG)
	;아침에 일어 나, 눈이 내리고 있으면(자) 논다
	ELSEIF TIME:5 == 8
		MAXBASE:ARG:일량 = 600 * 1
		TCVAR:ARG:일개시 = CLOCK_TO_TIME( 6, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME( 7, 0)
		CFLAG:ARG:직장 = P343호숫가
		CFLAG:ARG:직종 = 46
		TCVAR:ARG:급료 = 0
	;여름 개이고 맑은 하늘 아이스크림 가게
	ELSEIF (DAY:2 == 2 && TIME:5 < 2)
		MAXBASE:ARG:일량 = 600 * 5
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(10, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(15, 0)
		CFLAG:ARG:직장 = P202중앙광장
		CFLAG:ARG:직종 = 41
		TCVAR:ARG:급료 = 0
		TCVAR:ARG:답례 = GETNUM(ITEM, "아이스크림")
	ENDIF
CASE [[사쿠야]]
	IF YOUBI_MATCH(DAY, "월수금")
		IF TIME <= CLOCK_TO_TIME(12, 0)
		;~12:00
			MAXBASE:ARG:일량 = 600 * 4
			TCVAR:ARG:일개시 = CLOCK_TO_TIME( 8, 0)
			TCVAR:ARG:일종료 = CLOCK_TO_TIME(12, 0)
			CFLAG:ARG:직장 = P309객실
			CFLAG:ARG:직종 = 40
			TCVAR:ARG:급료 = 5
			TCVAR:ARG:답례 = GETNUM(ITEM, "홍차")
		ELSEIF !BASE:ARG:일량 && TIME <= CLOCK_TO_TIME(16, 59)
		;12:01~16:59
			BASE:ARG:일량 = 1200
		ELSE
		;17:00~
			MAXBASE:ARG:일량 = 600 * 2
			TCVAR:ARG:일개시 = CLOCK_TO_TIME(17, 0)
			TCVAR:ARG:일종료 = CLOCK_TO_TIME(19, 0)
			CFLAG:ARG:직장 = P313주방
			CFLAG:ARG:직종 = 44
			TCVAR:ARG:급료 = 5
			TCVAR:ARG:답례 = GETNUM(ITEM, "홍차")
		ENDIF
	ENDIF
CASE [[레밀리아]]
	IF YOUBI_MATCH(DAY, "일")
		MAXBASE:ARG:일량 = 300
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(18, 30)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(19,  0)
		CFLAG:ARG:직장 = P327작은발코니
		CFLAG:ARG:직종 = 43
		TCVAR:ARG:급료 = 5
	ENDIF
CASE [[앨리스]]
	IF DAY % 14 == 0
		MAXBASE:ARG:일량 = 600 * 3
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(10, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(13, 0)
		CFLAG:ARG:직장 = P202중앙광장
		CFLAG:ARG:직종 = 40
		TCVAR:ARG:급료 = 5
		TCVAR:ARG:답례 = GETNUM(ITEM, "엿")
		TCVAR:ARG:도울수없다 = 1
	ELSEIF GROUPMATCH(DAY:3, 7, 16, 17, 27)
		MAXBASE:ARG:일량 = 600 * 2
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(10, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(12, 0)
		;자신의 집의 부엌
		CFLAG:ARG:직장 = P525인형저택・거실
		;신사에 거주해 하고 있는 경우 신사의 부엌
		SIF FLAG:더부살이캐릭터 == ARG && MAIN_MAP == 0
			CFLAG:ARG:직장 = P8부엌
		CFLAG:ARG:직종 = 44
		TCVAR:ARG:급료 = 0
		TCVAR:ARG:답례 = GETNUM(ITEM, "엿")
	ENDIF
CASE [[유메코]]
	IF YOUBI_MATCH(DAY,"월목")
		;掃除が仕事だけど、基本앨리스의 인형がやってくれてるから月木のみ
		MAXBASE:ARG:일량 = 600 * 4;=2400=4時間
		CFLAG:ARG:직종 = 40;掃除
		CFLAG:ARG:직장 = P520인형저택앞;洋館前 스타트
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(7, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(11, 00)
		TCVAR:ARG:급료 = 3
		TCVAR:ARG:답례 = GETNUM(ITEM, "홍차")
	ENDIF
CASE [[루나사]], [[메를랑]], [[리리카]]
	IF  DAY % 28 == 21
		MAXBASE:ARG:일량 = 600 * 6
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(13, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(19, 0)
		CFLAG:ARG:직장 = P202중앙광장
		TCVAR:ARG:도울수없다 = 1
		CFLAG:ARG:직종 = 47
		TCVAR:ARG:급료 = 5
	ENDIF
CASE [[요우무]]
	IF YOUBI_MATCH(DAY, "수")
		MAXBASE:ARG:일량 = 600 * 3
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(13, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(16, 0)
		CFLAG:ARG:직장 = P216식료품가게
		CFLAG:ARG:직종 = 41
		TCVAR:ARG:급료 = 3
	ENDIF
CASE [[란]]
	IF GROUPMATCH(DAY:3, 5, 20)
		MAXBASE:ARG:일량 = 600 * 6
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(10, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(16, 0)
		CFLAG:ARG:직장 = 4
		CFLAG:ARG:직종 = 43
		TCVAR:ARG:급료 = 5
	ENDIF
CASE [[유카리]]
	IF (DAY:2 == 4 && DAY:3 == 30)
		MAXBASE:ARG:일량 = 600 * 14
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(13,  0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(24, 00)
		;원래는 180≒다음날 3시를 상정?
		;날 넘어 처리는 귀찮지만 하려고 생각하면 할 수 없지는 않는, 은 두
		CFLAG:ARG:직장 = P4본당
		CFLAG:ARG:직종 = 43
		TCVAR:ARG:급료 = 5
	ELSEIF YOUBI_MATCH(DAY, "일") && INRANGE(DAY:3, 8, 14)
		CALL JOB_여자회(ARG)
	ENDIF
CASE [[미스티아]]
	;-는 이따금 포장마차를 열고 있습니다. 미 술 정말 좋아합니다.
	;3일에 한 번 포장마차 열고 있습니다
	;이렇게 한다고 캘린더의 일자 준거가 되어 알기 쉽다고 생각하지만 제발
	;IF DAY:3 % 3 == 0
	IF DAY % 3 == 0
		MAXBASE:ARG:일량 = 600 * 8
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(16,  0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(24, 00)
		CFLAG:ARG:직종 = 44
		TCVAR:ARG:급료 = 2
		CFLAG:ARG:직장 = P444밤참새의포장마차
		TCVAR:ARG:답례 = GETNUM(ITEM, "야트메꼬치")
	ENDIF
CASE [[아야]]
	IF YOUBI_MATCH(DAY, "금")
		;시간에 비해 일량 빈데 해
		MAXBASE:ARG:일량 = 600 * 4
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(13, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(19, 0)
		CFLAG:ARG:직장 = P808아야댁
		CFLAG:ARG:직종 = 43
		TCVAR:ARG:급료 = 4
	ENDIF
CASE [[에이키]]
	IF DAY % 2 == 0
		;에이키님は偶数日にお仕事があります。働き者ですね。
		MAXBASE:ARG:일량 = 600 * 10
		TCVAR:ARG:일개시 = CLOCK_TO_TIME( 9, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(19, 0)
		CFLAG:ARG:직장 = P612법정
		CFLAG:ARG:직종 = 43
		TCVAR:ARG:급료 = 0
		TCVAR:ARG:도울수없다 = 1
	ENDIF
CASE [[사나에]]
	IF YOUBI_MATCH(DAY, "화금")
		MAXBASE:ARG:일량 = 600 * 4
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(12, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(16, 0)
		CFLAG:ARG:직장 = P202중앙광장
		CFLAG:ARG:직종 = 41
		TCVAR:ARG:급료 = 3
	ENDIF
CASE [[카나코]]
	IF DAY:2 == 2 && DAY:3 == 5
		MAXBASE:ARG:일량 = 600 * 3
		TCVAR:ARG:일개시 = CLOCK_TO_TIME( 9, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(12, 0)
		CFLAG:ARG:직장 = P222서당
		CFLAG:ARG:직종 = 41
		TCVAR:ARG:급료 = 0
		TCVAR:ARG:답례 = GETNUM(ITEM, "떡잎으로싼떡")
	ELSEIF YOUBI_MATCH(DAY, "일") && INRANGE(DAY:3, 8, 14)
		CALL JOB_여자회(ARG)
	ENDIF
CASE [[스와코]]
	IF MONEY < 500 && !MAIN_MAP
		MAXBASE:ARG:일량 = 600 * 2
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(11, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(13, 0)
		CFLAG:ARG:직장 = P8부엌
		CFLAG:ARG:직종 = 44
		TCVAR:ARG:급료 = 5
	ENDIF
CASE [[텐시]]
	IF YOUBI_MATCH(DAY, "토")
		MAXBASE:ARG:일량 = 100
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(10,  0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(10, 10)
		CFLAG:ARG:직장 = P3새전함
		CFLAG:ARG:직종 = 41
		TCVAR:ARG:급료 = 0
		TCVAR:ARG:도울수없다 = 1
	ENDIF
CASE [[이쿠]]
	IF YOUBI_MATCH(DAY, "화")
		MAXBASE:ARG:일량 = 600 * 1
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(20, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(21, 0)
		CFLAG:ARG:직장 = P830현운해
		CFLAG:ARG:직종 = 41
		TCVAR:ARG:급료 = 5
	ENDIF
CASE [[오린]]
	IF IS_WEEKDAY(DAY)
		;시간 준거라면600*5=3000
		MAXBASE:ARG:일량 = 5000
		TCVAR:ARG:일개시 = CLOCK_TO_TIME( 7, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(12, 0)
		CFLAG:ARG:직장 = P928작열지옥터
		CFLAG:ARG:직종 = 42
		TCVAR:ARG:급료 = 3
		TCVAR:ARG:도울수없다 = 2
	ENDIF
CASE [[오쿠]]
	IF IS_WEEKDAY(DAY)
		MAXBASE:ARG:일량 = 600 * 3
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(10, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(13, 0)
		CFLAG:ARG:직장 = P929지옥의인공태양
		CFLAG:ARG:직종 = 43
		TCVAR:ARG:급료 = 2
		TCVAR:ARG:도울수없다 = 2
	ENDIF
CASE [[코가사]]
	IF YOUBI_MATCH(DAY, "화금")
		MAXBASE:ARG:일량 = 600 * 4
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(20, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(24, 0)
		CFLAG:ARG:직종 = 41
		TCVAR:ARG:급료 = 1
		CFLAG:ARG:직장 = P222서당

		;명련사 강당
		SIF YOUBI_MATCH(DAY, "화")
			CFLAG:ARG:직장 = P104강당
	ENDIF
CASE [[누에]]
	;누에는 매월6일에 소악마와 요리
	IF DAY:3 == 6
		MAXBASE:ARG:일량 = 600 * 1
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(22, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(23, 0)
		CFLAG:ARG:직장 = P313주방
		CFLAG:ARG:직종 = 44
		TCVAR:ARG:급료 = 5
		TCVAR:ARG:도울수없다 = 2
	ENDIF
;2022/09/27加筆
;人里のカフェ（呑屋小道）を間借りして写真館・失せ物屋を開く
CASE [[하타테]]
	IF YOUBI_MATCH(DAY, "토")
		;妊娠中は仕事量をセーブ
		IF CFLAG:ARG:임신자각상태 == 1
			MAXBASE:ARG:일량 = 600 * 3
			TCVAR:ARG:일개시 = CLOCK_TO_TIME(17, 0)
			TCVAR:ARG:일종료 = CLOCK_TO_TIME(20, 0)
		ELSE
			MAXBASE:ARG:일량 = 600 * 5
			TCVAR:ARG:일개시 = CLOCK_TO_TIME(17, 0)
			TCVAR:ARG:일종료 = CLOCK_TO_TIME(22, 0)
		ENDIF
		CFLAG:ARG:직장 = P212카페
		CFLAG:ARG:직종 = 43
		TCVAR:ARG:급료 = 1
	ENDIF
CASE [[카센]]
	IF YOUBI_MATCH(DAY, "토")
		MAXBASE:ARG:일량 = 600 * 5
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(11, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(16, 0)
		CFLAG:ARG:직장 = P217과자가게
		CFLAG:ARG:직종 = 41
		TCVAR:ARG:급료 = 0
		TCVAR:ARG:도울수없다 = 2
	ELSE
		MAXBASE:ARG:일량 = 600 * 2
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(7, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(9, 0)
		CFLAG:ARG:직장 = P722선인저택・도장
		CFLAG:ARG:직종 = 42
		TCVAR:ARG:급료 = 0
		TCVAR:ARG:도울수없다 = 2
	ENDIF
CASE [[엘렌]]
	;매월 15, 30일에 마을에 마법가게 출장
	IF GROUPMATCH(DAY:3, 15, 30)
		CFLAG:ARG:직장 = P202중앙광장
		CFLAG:ARG:직종 = 41
		TCVAR:ARG:급료 = 3
		MAXBASE:ARG:일량 = 600 * 5
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(14, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(19, 0)
	;그 이외의해는 개이고인가 흐림이라면5%의 확률로 마법의숲의 채집, 다만 메인 맵이 마법의숲 때 한정
	ELSEIF TIME:5 <= 3 && FLAG:일일이벤트 < 50 && MAIN_MAP == 5
		IF !RAND:2
			CFLAG:ARG:직장 = P540고목의큰나무
		ELSE
			CFLAG:ARG:직장 = P507버섯군생지
		ENDIF
		CFLAG:ARG:직종 = 43
		TCVAR:ARG:급료 = 3
		MAXBASE:ARG:일량 = 600 * 5
		TCVAR:ARG:일개시 = CLOCK_TO_TIME( 7, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(12, 0)
		TCVAR:ARG:도울수없다 = 2
	ENDIF
CASE [[플랑]]
	IF DAY % 2
		MAXBASE:ARG:일량 = 600 * 1
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(19, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(20, 0)
		CFLAG:ARG:직장 = P329창고
		CFLAG:ARG:직종 = 46
		TCVAR:ARG:급료 = 0
	ENDIF
CASE [[우동게]]
	IF YOUBI_MATCH(DAY, "화")
		MAXBASE:ARG:일량 = 600 * 5
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(10, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(15, 0)
		CFLAG:ARG:직장 = P202중앙광장
		CFLAG:ARG:직종 = 41
		TCVAR:ARG:급료 = 3
		TCVAR:ARG:갈아입음 = OBJNAME_TO_ID(ARG, "GET", "의상세트", "우동게 약장수 세트")
	ELSEIF YOUBI_MATCH(DAY, "목")
		MAXBASE:ARG:일량 = 600 * 8
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(10, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(18, 0)
		CFLAG:ARG:직장 = P405조제실
		CFLAG:ARG:직종 = 53
		TCVAR:ARG:급료 = 2
		SIF TALENT:MASTER:조합지식
			TCVAR:ARG:급료 = 3
	ENDIF
CASE [[파츄리]]
	;쳇은 진짜 은둔 형 외톨이
	IF !TALENT:ARG:연모 || YOUBI_MATCH(DAY, "토")
		CFLAG:ARG:직장 = P310도서관
		TCVAR:ARG:일개시 = 480
		TCVAR:ARG:일개시 = CLOCK_TO_TIME( 8, 0)
		SELECTCASE CFLAG:ARG:2
		CASE IS <  100
			MAXBASE:ARG:일량 = 600 * 15
			TCVAR:ARG:일종료 = CLOCK_TO_TIME(23, 0)
		CASE IS <  500
			MAXBASE:ARG:일량 = 600 * 9
			TCVAR:ARG:일종료 = CLOCK_TO_TIME(20, 0)
		CASE IS < 1000
			MAXBASE:ARG:일량 = 600 * 6
			TCVAR:ARG:일종료 = CLOCK_TO_TIME(14, 0)
		CASE IS < 3000
			MAXBASE:ARG:일량 = 600 * 4
			TCVAR:ARG:일종료 = CLOCK_TO_TIME(12, 0)
		CASEELSE
			MAXBASE:ARG:일량 = 600 * 2
			TCVAR:ARG:일종료 = CLOCK_TO_TIME(10, 0)
		ENDSELECT
		CFLAG:ARG:직종 = 43
		TCVAR:ARG:급료 = 0
		TCVAR:ARG:도울수없다 = 1
	ENDIF
CASE [[뱌쿠렌]]
	;팔꿈치 링은 절의 선전으로 전직했습니다
	IF YOUBI_MATCH(DAY, "월목")
		MAXBASE:ARG:일량 = 600 * 4
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(12, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(16, 0)
		CFLAG:ARG:직장 = P202중앙광장
		CFLAG:ARG:직종 = 41
		TCVAR:ARG:급료 = 3
		TCVAR:ARG:답례 = GETNUM(ITEM, "엿")
	ELSEIF YOUBI_MATCH(DAY, "일") && INRANGE(DAY:3, 8, 14)
		CALL JOB_여자회(ARG)
	ENDIF
CASE [[미코]]
	IF YOUBI_MATCH(DAY, "월수금")
		MAXBASE:ARG:일량 = 600 * 3
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(13, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(16, 0)
		CFLAG:ARG:직장 = P126도장
		CFLAG:ARG:직종 = 42
		TCVAR:ARG:급료 = 1
	ENDIF
CASE [[코코로]]
	IF FESTIVAL() == "예대제"
		MAXBASE:ARG:일량 = 600 * 3
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(10, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(13, 0)
		CFLAG:ARG:직장 = P2경내
		TCVAR:ARG:도울수없다 = 1
		CFLAG:ARG:직종 = 43
		TCVAR:ARG:급료 = 0
	ELSEIF YOUBI_MATCH(DAY, "일")
		MAXBASE:ARG:일량 = 600 * 3
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(10, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(13, 0)
		CFLAG:ARG:직장 = P11마당
		TCVAR:ARG:도울수없다 = 1
		CFLAG:ARG:직종 = 43
		TCVAR:ARG:급료 = 0
	ENDIF
CASE [[메이링]]
	;메이링은 토일요일 이외 점심까지 문지기
	IF IS_WEEKDAY(DAY)
		MAXBASE:ARG:일량 = 600 * 6
		TCVAR:ARG:일개시 = CLOCK_TO_TIME( 6, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(12, 0)
		CFLAG:ARG:직장 = P301정문
		CFLAG:ARG:직종 = 42
		TCVAR:ARG:급료 = 2
		TCVAR:ARG:도울수없다 = 2
	ENDIF
CASE [[소악마]]
	;소악마는 매월6일에 요리
	IF DAY:3 == 6
		MAXBASE:ARG:일량 = 600
		CFLAG:ARG:직장 = P313주방
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(22, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(23, 0)
		CFLAG:ARG:직종 = 44
		TCVAR:ARG:급료 = 5
	ENDIF
CASE [[파르시]]
	IF IS_WEEKDAY(DAY)
		MAXBASE:ARG:일량 = 600
		CFLAG:ARG:직장 = P946다리
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(13, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(18, 0)
		CFLAG:ARG:직종 = 41
		TCVAR:ARG:급료 = 2
	ENDIF
CASE [[카구야]]
	IF (DAY:2 == 3 && DAY:3 == 14)
	;높은 급료로 답례는 고급품.
		MAXBASE:ARG:일량 = 600 * 6
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(13, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(19, 0)
		CFLAG:ARG:직장 = P401영원정입구
		CFLAG:ARG:직종 = 43
		TCVAR:ARG:급료 = 5
		TCVAR:ARG:도울수없다 = 2
		SELECTCASE RAND:4
			CASE 3
				TCVAR:ARG:답례 = GETNUM(ITEM, "선향옥토")
			CASE 2
				TCVAR:ARG:답례 = GETNUM(ITEM, "현자의돌")
			CASE 1
				TCVAR:ARG:답례 = GETNUM(ITEM, "엘릭서")
			CASE 0
				TCVAR:ARG:답례 = GETNUM(ITEM, "킹・크림슨")
		ENDSELECT
	ELSEIF !CFLAG:ARG:우후후
	;공주는 기본적으로 매일 분재를 돌본다. 우후후에서 게으름을 피운다.
		MAXBASE:ARG:일량 = 600
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(13, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(14, 0)
		CFLAG:ARG:직장 = P421마당
		CFLAG:ARG:직종 = 43
		TCVAR:ARG:급료 = 0
	ENDIF
CASE [[유기]]
	IF YOUBI_MATCH(DAY, "목")
		MAXBASE:ARG:일량 = 600 * 5
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(16, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(21, 0)
		CFLAG:ARG:직장 = P10툇마루
		CFLAG:ARG:직종 = 41
		TCVAR:ARG:급료 = 0
		TCVAR:ARG:도울수없다 = 1
	ENDIF
CASE [[모미지]]
	;수목일은 잘자, 6시간격 22시 취침
	;월 화는 아침에 일어 나 곧으로부터 오후, 7시부터 14시
	IF YOUBI_MATCH(DAY, "월화")
		MAXBASE:ARG:일량 = 600 * 7
		TCVAR:ARG:일개시 = CLOCK_TO_TIME( 7, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(14, 0)
		CFLAG:ARG:직장 = P802다리
		CFLAG:ARG:직종 = 42
		TCVAR:ARG:급료 = 2
		TCVAR:ARG:도울수없다 = 2
	;금토은 오후부터 잘 때까지, 14시부터 21시
	ELSEIF YOUBI_MATCH(DAY, "금토")
		MAXBASE:ARG:일량 = 600 * 7
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(14, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(21, 0)
		CFLAG:ARG:직장 = P805정상
		CFLAG:ARG:직종 = 42
		TCVAR:ARG:급료 = 2
		TCVAR:ARG:도울수없다 = 2
	ENDIF
CASE [[케이네]]
	;케이네은 토일요일 이외 14시까지 서당으로 수업중, 나머지의 30분은 뒷정리
	IF IS_WEEKDAY(DAY) && FESTIVAL() == ""
		MAXBASE:ARG:일량 = 600 * 6 + 300
		TCVAR:ARG:일개시 = CLOCK_TO_TIME( 8,  0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(14, 30)
		CFLAG:ARG:직장 = P222서당
		CFLAG:ARG:직종 = 43
		TCVAR:ARG:급료 = 3
	ENDIF
CASE [[유카]]
	;유카 4일에 한 번의 꽃의 손질
	;일자 의존의 판정 어째서 엄밀하게는 4일에 한 번에는 되지 않다
	IF DAY:2 < 4 && DAY:3 % 4 == 2
		MAXBASE:ARG:일량 = 600 * 4
		TCVAR:ARG:일개시 = CLOCK_TO_TIME( 6, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(10, 0)
		CFLAG:ARG:직장 = P438태양의밭
		CFLAG:ARG:직종 = 41
		TCVAR:ARG:급료 = 2
	ENDIF
CASE [[코스즈]]
	IF YOUBI_MATCH(DAY, "수목")
		MAXBASE:ARG:일량 = 600 * 8
		TCVAR:ARG:일개시 = CLOCK_TO_TIME( 9, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(17, 0)
		CFLAG:ARG:직장 = P213스즈나안
		CFLAG:ARG:직종 = 41
		TCVAR:ARG:도울수없다 = 2
		TCVAR:ARG:급료 = 2
	ELSEIF YOUBI_MATCH(DAY, "월화금")
		MAXBASE:ARG:일량 = 600 * 2
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(18, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(20, 0)
		CFLAG:ARG:직장 = P213스즈나안
		CFLAG:ARG:직종 = 40
		TCVAR:ARG:급료 = 3
	ENDIF
CASE [[에이린]]
	;에이린은 일요일 이외 저녁까지 꼭 진찰. 의사니까, 어쩔 수 없다
	IF !YOUBI_MATCH(DAY, "일") ;일판 수정되어 월화금만
		MAXBASE:ARG:일량 = 600 * 8
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(10, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(18, 0)
		CFLAG:ARG:직장 = P404진찰실
		CFLAG:ARG:직종 = 43
		TCVAR:ARG:급료 = 5
		TCVAR:ARG:도울수없다 = 2
		TCVAR:ARG:답례 = GETNUM(ITEM, "불끈불끈Z")
		;조합지식과 교양이 필요
		SIF !TALENT:MASTER:조합지식
			TCVAR:ARG:도울수없다 = 1
	ELSEIF YOUBI_MATCH(DAY, "일") && INRANGE(DAY:3, 8, 14)
		CALL JOB_여자회(ARG)
	ENDIF
CASE [[메디슨]]
	IF DAY % 7 == 3
		MAXBASE:ARG:일량 = 600 * 6
		TCVAR:ARG:일개시 = CLOCK_TO_TIME( 7, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(13, 0)
		CFLAG:ARG:직장 = P436무명의언덕
		CFLAG:ARG:직종 = 40
		TCVAR:ARG:급료 = 1
	ENDIF
CASE [[코마치]]
	;코마치는 월수금에 나룻배사공 하지만 2분의 1으로 게으름 피운다
	IF YOUBI_MATCH(DAY, "월수금")
		;추석은 바빠서 강제 출근
		SIF GET_MONTH() == "여름의 달" && INRANGE(DAY:3, 1, 15)
			TCVAR:ARG:일의유무 = 2
		SIF !TCVAR:ARG:일의유무
			TCVAR:ARG:일의유무 = RAND:2 + 1
		IF TCVAR:ARG:일의유무 == 2
			MAXBASE:ARG:일량 = 600 * 6
			TCVAR:ARG:일개시 = CLOCK_TO_TIME(10, 0)
			TCVAR:ARG:일종료 = CLOCK_TO_TIME(16, 0)
			CFLAG:ARG:직장 = P602삼도천모래밭
			CFLAG:ARG:직종 = 41
			TCVAR:ARG:급료 = 2
		ENDIF
	ENDIF
CASE [[히나]]
	청소하기 = 0
	FOR LOCAL, P701수해도입구, P740야마와로의아지트 + 1
		;判定場所以外を弾く
		SELECTCASE LOCAL
			CASE P701수해도입구, P702산길・늪으로가는길, P705산길・산비탈, P707산길・분기점
			CASE P710고양이마을, P711휴게소
			CASE P731댑싸리, P732산정으로가는길, P738깊은숲속, P739비천애
			CASEELSE
				CONTINUE
		ENDSELECT
		SIF YOGORE:LOCAL > 1000
			청소하기 = LOCAL
	NEXT
	IF !청소하기
		CFLAG:ARG:직장 = P701수해도입구
	ELSE
		CFLAG:ARG:직장 = 청소하기
	ENDIF
	IF FESTIVAL() == "히나마츠리"
		MAXBASE:ARG:일량 = 600 * 10
		TCVAR:ARG:일개시 = CLOCK_TO_TIME( 7, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(20, 0)
		CFLAG:ARG:직종 = 40
		TCVAR:ARG:급료 = 2
	ELSEIF YOUBI_MATCH(DAY, "토")
		MAXBASE:ARG:일량 = 600 * 5
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(12, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(17, 0)
		CFLAG:ARG:직종 = 40
		TCVAR:ARG:급료 = 1
	ENDIF
CASE [[아큐]]
	IF INRANGE(DAY:3, 15, 20)
		MAXBASE:ARG:일량 = 600 * 3
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(10, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(13, 0)
		CFLAG:ARG:직장 = P221히에다저택
		CFLAG:ARG:직종 = 43
		TCVAR:ARG:급료 = 5
	ENDIF
CASE [[렌코]], [[메리]]
	IF INRANGE(DAY:3, 25, 28)
		MAXBASE:ARG:일량 = 600 * 2
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(19, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(21, 0)
		CFLAG:ARG:직장 = P232렌코방
		CFLAG:ARG:직종 = 43
		TCVAR:ARG:급료 = 3
	ENDIF
CASE [[이치린]]
	;이치린 언니(누나)와  일을 교대했습니다
	IF YOUBI_MATCH(DAY, "화목")
		MAXBASE:ARG:일량 = 600 * 5
		TCVAR:ARG:일개시 = CLOCK_TO_TIME( 7, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(12, 0)
		CFLAG:ARG:직장 = P102경내
		CFLAG:ARG:직종 = 40
		TCVAR:ARG:급료 = 4
	ENDIF
CASE [[쇼]]
	IF YOUBI_MATCH(DAY, "금")
		MAXBASE:ARG:일량 = 600 * 1
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(13, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(14, 0)
		CFLAG:ARG:직장 = P103본당
		CFLAG:ARG:직종 = 41
		TCVAR:ARG:급료 = 0
		TCVAR:ARG:도울수없다 = 2
	ELSEIF IS_WEEKDAY(DAY)
		MAXBASE:ARG:일량 = 600 * 4
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(10, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(14, 0)
		CFLAG:ARG:직장 = P103본당
		CFLAG:ARG:직종 = 43
		TCVAR:ARG:급료 = 0
		TCVAR:ARG:도울수없다 = 0
	ENDIF
CASE [[요시카]]
	IF DAY:3 == 4
		MAXBASE:ARG:일량 = 600 * 16
		TCVAR:ARG:일개시 = CLOCK_TO_TIME( 8, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(23, 0)
		CFLAG:ARG:직장 = P121묘지
		CFLAG:ARG:직종 = 43
		TCVAR:ARG:급료 = 0
		TCVAR:ARG:도울수없다 = 0
	ENDIF
CASE [[청아]]
	IF DAY:3 == 4
		MAXBASE:ARG:일량 = 600 * 16
		TCVAR:ARG:일개시 = CLOCK_TO_TIME( 8, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(23, 0)
		CFLAG:ARG:직장 = P121묘지
		CFLAG:ARG:직종 = 43
		TCVAR:ARG:급료 = 5
		TCVAR:ARG:도울수없다 = 2
	ENDIF
CASE [[토지코]]
	IF YOUBI_MATCH(DAY, "화")
		MAXBASE:ARG:일량 = 600 * 1
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(20, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(21, 0)
		CFLAG:ARG:직장 = P830현운해
		CFLAG:ARG:직종 = 41
		TCVAR:ARG:급료 = 5
	ENDIF
CASE [[후토]]
	;후토신령묘의 권유 담당
	IF YOUBI_MATCH(DAY, "수토")
		MAXBASE:ARG:일량 = 600 * 4
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(12, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(16, 0)
		CFLAG:ARG:직장 = P202중앙광장
		CFLAG:ARG:직종 = 41
		TCVAR:ARG:급료 = 3
	ENDIF
CASE [[벤벤]], [[야츠하시]]
	IF  DAY % 28 == 7
		MAXBASE:ARG:일량 = 600 * 6
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(15, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(21, 0)
		CFLAG:ARG:직장 = P202중앙광장
		TCVAR:ARG:도울수없다 = 1
		CFLAG:ARG:직종 = 47
		TCVAR:ARG:급료 = 5
	ENDIF
CASE [[라이코]]
	IF  DAY % 28 == 7
		MAXBASE:ARG:일량 = 600 * 6
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(15, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(21, 0)
		CFLAG:ARG:직장 = P202중앙광장
		TCVAR:ARG:도울수없다 = 1
		CFLAG:ARG:직종 = 47
		TCVAR:ARG:급료 = 5
	ELSEIF YOUBI_MATCH(DAY, "화")
		MAXBASE:ARG:일량 = 600 * 1
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(20, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(21, 0)
		CFLAG:ARG:직장 = P830현운해
		CFLAG:ARG:직종 = 41
		TCVAR:ARG:급료 = 5
	ENDIF
CASE [[세이자]]
	IF YOUBI_MATCH(DAY, "월수")
		MAXBASE:ARG:일량 = 600 * 4
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(20, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(24, 0)
		CFLAG:ARG:직장 = P301정문
		SIF YOUBI_MATCH(DAY, "수")
			CFLAG:ARG:직장 = 540
		CFLAG:ARG:직종 = 41
		TCVAR:ARG:급료 = 1
	ENDIF
CASE [[유유코]]
	IF YOUBI_MATCH(DAY, "일") && INRANGE(DAY:3, 8, 14)
		CALL JOB_여자회(ARG)
	ENDIF
CASE [[오키나]]
	IF YOUBI_MATCH(DAY, "일") && INRANGE(DAY:3, 8, 14)
		CALL JOB_여자회(ARG)
	ENDIF
CASE [[신키]]
	IF YOUBI_MATCH(DAY, "일") && INRANGE(DAY:3, 8, 14)
		CALL JOB_여자회(ARG)
	ENDIF
CASE [[쿠타카]]
	IF IS_WEEKDAY(DAY)
		MAXBASE:ARG:일량 = 600 * 6
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(9, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(15, 0)
		CFLAG:ARG:직장 = P640이계의문
		CFLAG:ARG:직종 = 41
		TCVAR:ARG:급료 = 3
	ENDIF
CASE [[미요이]]
	IF YOUBI_MATCH(DAY, "수목금토일")
		MAXBASE:ARG:일량 = 600 * 6
		TCVAR:ARG:일개시 = CLOCK_TO_TIME(18, 0)
		TCVAR:ARG:일종료 = CLOCK_TO_TIME(24, 0)
		CFLAG:ARG:직장 = P238예탄정
		CFLAG:ARG:직종 = 44
		TCVAR:ARG:급료 = 2
		TCVAR:ARG:도울수없다 = 2
	ENDIF
;다른 사람들은 지금 바쁜 일에는 붙지 않았습니다. 일안 모집. 아마 요우무와 란 님은 부정기에 바쁘겠지……
ENDSELECT

;휴가 플래그 사용하지 않아도 TCVAR:ARG:일개시에 판별할 수 있었으므로
;일이 없는 경우의 리셋 처리를 정리했다
IF TCVAR:ARG:일개시 >= 0
	;GET_JOBPLACE는 주인의 REPLACEMENT유기 처리
	CFLAG:ARG:직장 = GET_JOBPLACE("일", ARG)
	RETURN
ELSE
	MAXBASE:ARG:일량 = 0
ENDIF

;FileName_JOB.ERB ----------------------------- Rev1. 00
;업무중의 이동 처리
;CALL		USER
;ARG		캐릭터 NO
;RETURN		VOID
;COMMENT
;-----------------------------------------------------------
@JOBMOVE(ARG)
#DIM 전의직장
#DIM 청소하기
SIF CFLAG:ARG:연회참가 > 0 || GROUPMATCH(CFLAG:ARG:직종, 48,49,50,51)
	RETURN
전의직장 = CFLAG:ARG:직장

SELECTCASE ARG
CASE [[레이무]]
	IF YOGORE:(CFLAG:ARG:직장) > 1000
	ELSEIF YOGORE:P22참배길 > 1000
		LOCAL = P22참배길
	ELSE
		LOCAL = FINDELEMENT(YOGORE, MAXARRAY(YOGORE, 1, 6), 1, 6)
	ENDIF
	IF LOCAL <= 0
	ELSEIF YOGORE:LOCAL <= 1000
	ELSE
		CFLAG:ARG:직장 = LOCAL
	ENDIF
CASE [[스이카]]
	IF YOUBI_MATCH(DAY, "수")
		TCVAR:ARG:도울수없다 = 0
	ELSE
		TCVAR:ARG:도울수없다 = 1
	ENDIF
CASE [[마리사]]
	IF TIME >= CLOCK_TO_TIME(16, 0)
		CFLAG:ARG:직장 = P11마당
		CFLAG:ARG:직종 = 42
	ELSE
		CFLAG:ARG:직장 = P6헛간
		CFLAG:ARG:직종 = 40
	ENDIF
CASE [[앨리스]]
	;공연이 끝나면 뒷정리를 도울 수 있다
	IF TIME >= CLOCK_TO_TIME(12, 0)
		TCVAR:ARG:도울수없다 = 0
	;공연일에 없으면 도울 수 있다
	ELSEIF DAY % 14 > 0
		TCVAR:ARG:도울수없다 = 0
	;공연중은 도울수없다
	ELSE
		TCVAR:ARG:도울수없다 = 1
	ENDIF
CASE [[유메코]]
	;저택 내 청소　더러워진 부분부터 4군데 순차 이동
	;지금 가장 지저분한 곳에서 4개를 찾는다　저택 앞～인형저택 전역
	;일률적으로 청소 시간은 1시간으로 한다
	;여기에서는 TCVAR:ARG:399를 사용하고 있습니다. 구상에서 중복하여 사용하면 버그를 일으킬 수 있으니 주의하세요.
	청소하기 = FINDELEMENT( YOGORE, MAXARRAY(YOGORE, P520인형저택앞, P531인형저택・빈방), P520인형저택앞, P531인형저택・빈방)
	SIF 청소하기 == P525인형저택・거실
		청소하기 = P528인형저택・창고
	IF CLOCK_TO_TIME(7, 0) <= TIME && TIME <= CLOCK_TO_TIME(8, 0) && TCVAR:ARG:399 < 1
		TCVAR:ARG:399 = 1
	ELSEIF CLOCK_TO_TIME(8, 0) <= TIME && TIME <= CLOCK_TO_TIME(9, 0) && TCVAR:ARG:399 < 2
		CFLAG:ARG:직장 = 청소하기
		TCVAR:ARG:399 = 2
	ELSEIF CLOCK_TO_TIME(9, 0) <= TIME && TIME <= CLOCK_TO_TIME(10, 0) && TCVAR:ARG:399 < 3
		CFLAG:ARG:직장 = 청소하기
		TCVAR:ARG:399 = 3
	ELSEIF CLOCK_TO_TIME(10, 0) <= TIME && TIME <= CLOCK_TO_TIME(11, 00) && TCVAR:ARG:399 < 4
		CFLAG:ARG:직장 = 청소하기
		TCVAR:ARG:399 = 4
	ENDIF
CASE [[미스티아]]
	;개점준비는 도울 수 있다
	IF BASE:ARG:일량 > 3000
		TCVAR:ARG:도울수없다 = 0
	;포장마차를 내면(자) 도와도 시간은 변함없다
	ELSE
		TCVAR:ARG:도울수없다 = 2
	ENDIF
CASE [[아야]]
	;교양과 신뢰가 필요
	IF CFLAG:ARG:신뢰도 < 500 || ABL:MASTER:교양 < 3
		TCVAR:ARG:도울수없다 = 1
	ELSE
		TCVAR:ARG:도울수없다 = 0
	ENDIF
CASE [[에이키]]
	;午前中の裁判、昼休みは도울수없다
	IF INRANGE(TIME, CLOCK_TO_TIME(9, 0), CLOCK_TO_TIME(12, 59))
		TCVAR:ARG:도울수없다 = 1
	;定時が終わってもサビ残…手伝えば早く終る
	ELSEIF TIME >= CLOCK_TO_TIME(17, 0) && CFLAG:ARG:신뢰도 >= 300
		CFLAG:ARG:직종 = 43
		TCVAR:ARG:도울수없다 = 0
		TCVAR:ARG:급료 = 0
	;高LV교양と신뢰도で午後の仕事手伝える。薄給。仕事はいくらでも湧く
	ELSEIF ABL:MASTER:교양 >= 4 && CFLAG:ARG:신뢰도 >= 300
		CFLAG:ARG:직종 = 43
		TCVAR:ARG:도울수없다 = 2
		TCVAR:ARG:급료 = 1
	ELSE
		TCVAR:ARG:도울수없다 = 1
	ENDIF
CASE [[카센]]
	IF YOUBI_MATCH(DAY, "토")
		IF TIME >= CLOCK_TO_TIME(14, 0)
			CFLAG:ARG:직장 = P212카페
			CFLAG:ARG:직종 = 41
		ELSE
			CFLAG:ARG:직장 = P218일품요릿집
			CFLAG:ARG:직종 = 41
		ENDIF
	ENDIF
CASE [[엘렌]]
	IF TIME:0 == TCVAR:ARG:357
	;전회의 처리로부터 시간이 경과하고 있지 않으면 패스
	ELSEIF GROUPMATCH(DAY:3, 15, 30)
	;출장
		;객수의 증감, 계상, 기본은-3~＋5
		LOCAL:1 = RAND:8 - 3

		;날씨
		SELECTCASE TIME:5
		;안개비, 안개는-1
		CASE 6, 7
			LOCAL:1 -= 1
		;비, 눈은-2
		CASE 4, 8
			LOCAL:1 -= 2
		;큰 비, 눈보라, 진눈깨비, 뻥튀기는-3
		CASE 5, 9, 12, 13
			LOCAL:1 -= 3
		ENDSELECT
		;무지개, 다이아몬드 더스트는＋2
		SIF TIME:7 >= 1
			LOCAL:1 += 2

		;객수가 적으면보다 늘린다
		SIF TCVAR:ARG:354 < 5
			LOCAL:1 += 1
		;객수가 많으면보다 줄인다
		SIF TCVAR:ARG:354 > 25
			LOCAL:1 -= 3

		;음수 방지
		TCVAR:ARG:354 = MAX(0, TCVAR:ARG:354 + LOCAL:1)
		SIF LOCAL:1 > 0
			TCVAR:ARG:355 += LOCAL:1
		;현재의 객수가 일정 이상이라면 엘렌의 응원자로 돈다
		IF TCVAR:ARG:354 > 25
			CFLAG:ARG:직종 = 43
		;그렇지 않으면 유객 행위에
		ELSE
			CFLAG:ARG:직종 = 41
		ENDIF
	;채집 엘렌의 채집량을 계상
	ELSE
		;채집량이 이상하게 안 되게
		SIF !INRANGE(TCVAR:ARG:357, 420, 720)
			TCVAR:ARG:357 = 420
		;계산식은(현재의 TIME-전회 계산한 TIME)*1~20의 난수
		TCVAR:ARG:354 += (TIME:0 - TCVAR:ARG:357) * (RAND:20 + 1)
		;채집량이 최대 일량을 웃돌면(자) 종료
		SIF TCVAR:ARG:354 > MAXBASE:ARG:일량
			BASE:ARG:일량 = 1
	ENDIF
CASE [[케이네]]
	;수업이 끝나면 뒷정리를 도울 수 있다
	IF TIME >= CLOCK_TO_TIME(14, 0)
		CFLAG:ARG:직종 = 40
		TCVAR:ARG:도울수없다 = 0
	;점심시간은 당연히 무리
	ELSEIF INRANGE(TIME, CLOCK_TO_TIME(12, 0), CLOCK_TO_TIME(12, 59))
		TCVAR:ARG:도울수없다 = 1
	;교양이 3이상 또한 신뢰도가 50이상이라면 수업을 도울 수 있다
	ELSEIF ABL:MASTER:교양 >= 3 && CFLAG:ARG:신뢰도 >= 50
		TCVAR:ARG:도울수없다 = 2
	;그 이외는 도울수없다
	ELSE
		TCVAR:ARG:도울수없다 = 1
	ENDIF
ENDSELECT

;직장 갱신
SIF 전의직장 != CFLAG:ARG:직장
	CFLAG:ARG:직장 = GET_JOBPLACE("일", ARG)

;FileName_JOB.ERB ------------------------------- Rev1. 00
;일나토리 이득
;CALL		USER
;ARG		VOID
;RETURN		VOID
;COMMENT
;-----------------------------------------------------------
@GET_JOBNAME(ARG)
#FUNCTIONS
SELECTCASE ARG
CASE [[레이무]]
	LOCALS = 청소
CASE [[루코토]]
	LOCALS = 가사
CASE [[미마]]
	IF YOUBI_MATCH(DAY, "월수")
		LOCALS = 트레이닝
	ELSEIF YOUBI_MATCH(DAY, "일") && INRANGE(DAY:3, 8, 14)
		LOCALS = 정례 여자 모임
	ENDIF
CASE [[치유리]], [[유메미]]
	LOCALS = 연구
CASE [[스이카]]
	IF YOUBI_MATCH(DAY, "수")
		LOCALS = 트레이닝
	ELSE
		LOCALS = 음주
	ENDIF
CASE [[마리사]]
	IF TIME >= CLOCK_TO_TIME(16, 0)
		LOCALS = 트레이닝
	ELSE
		LOCALS = 발굴 작업
	ENDIF
CASE [[루미아]]
	LOCALS = 식료 확보
CASE [[치르노]]
	SIF CFLAG:ARG:직종 == 41
		LOCALS = 아이스 가게
CASE [[레밀리아]]
	LOCALS = 일요일의 일과
CASE [[앨리스]]
;도울 수 없으면 인형극, 요리라면 가사
	IF TCVAR:ARG:도울수없다
		LOCALS = 인형극
	ELSEIF CFLAG:ARG:직종 == 44
		LOCALS = 가사
	ELSE
		LOCALS = 뒷정리
	ENDIF
;3 자매
CASE [[유메코]]
	LOCALS = 청소
CASE [[루나사]], [[메를랑]], [[리리카]]
	LOCALS = 콘서트
CASE [[요우무]]
	LOCALS = 시장
CASE [[란]]
	LOCALS = 결계 관리
CASE [[유카리]]
	IF (DAY:2 == 4 && DAY:3 == 30)
		LOCALS = 결계 관리
	ELSEIF YOUBI_MATCH(DAY, "일") && INRANGE(DAY:3, 8, 14)
		LOCALS = 정례 여자 모임
	ENDIF
CASE [[미스티아]]
	IF BASE:ARG:일량 > 3000
		LOCALS = 개점준비
	ELSE
		LOCALS = 포장마차 일
	ENDIF
CASE [[아야]]
	LOCALS = 기사 집필
CASE [[에이키]]
	IF INRANGE(TIME, CLOCK_TO_TIME(9, 0), CLOCK_TO_TIME(11, 59))
		LOCALS = 재판
	ELSEIF INRANGE(TIME, CLOCK_TO_TIME(12, 0), CLOCK_TO_TIME(12, 59))
		LOCALS = 점심시간
	ELSEIF INRANGE(TIME, CLOCK_TO_TIME(13, 0), CLOCK_TO_TIME(16, 59))
		LOCALS = 사무작업
	ELSE
		LOCALS = 서류정리
	ENDIF
CASE [[사나에]]
	LOCALS = 권유
CASE [[카나코]]
	SIF DAY:2 == 2 && DAY:3 == 5
		LOCALS = 신체측정
	SIF YOUBI_MATCH(DAY, "일") && INRANGE(DAY:3, 8, 14)
		LOCALS = 정례 여자 모임
CASE [[스와코]]
	LOCALS = 요리
CASE [[텐시]]
	LOCALS = 발원
CASE [[이쿠]]
	LOCALS = 회화
CASE [[오린]]
	LOCALS = 원령 관리
CASE [[오쿠]]
	LOCALS = 출력 관리
CASE [[코가사]]
	LOCALS = 보모
CASE [[누에]]
	LOCALS = 요리
CASE [[카센]]
	IF YOUBI_MATCH(DAY, "토")
		LOCALS = 식도락
	ELSE
		LOCALS = 수행
	ENDIF
CASE [[엘렌]]
	IF GROUPMATCH(DAY:3, 15, 30)
		LOCALS = 마법가게 출장
	ELSE
		LOCALS = 채집
	ENDIF
CASE [[우동게]]
	IF YOUBI_MATCH(DAY, "화")
		LOCALS = 약 행상인
	ELSE
		LOCALS = 조제
	ENDIF
CASE [[파츄리]]
	LOCALS = 독서
CASE [[뱌쿠렌]]
	IF YOUBI_MATCH(DAY, "월목")
		LOCALS = 포교
	ELSEIF YOUBI_MATCH(DAY, "일") && INRANGE(DAY:3, 8, 14)
		LOCALS = 정례 여자 모임
	ENDIF
CASE [[미코]]
	LOCALS = 수행
CASE [[코코로]]
	IF FESTIVAL() == "예대제"
		LOCALS = 노가쿠
	ELSE
		LOCALS = 노가쿠 연습
	ENDIF
CASE [[메이링]]
	LOCALS = 문지기
CASE [[소악마]]
	LOCALS = 요리
CASE [[파르시]]
	LOCALS = 다리 파수꾼
CASE [[카구야]]
	IF (DAY:2 == 3 && DAY:3 == 14)
		LOCALS = 월도만상전의 사회
	ELSE
		LOCALS = 분재 가꾸기
	ENDIF
CASE [[유기]]
	LOCALS = 음주
CASE [[모미지]]
	LOCALS = 경비
CASE [[케이네]]
	IF INRANGE(TIME, CLOCK_TO_TIME(12, 0), CLOCK_TO_TIME(12, 59))
		LOCALS = 점심 시간
	ELSEIF TIME >= CLOCK_TO_TIME(14, 0)
		LOCALS = 뒷정리
	ELSE
		LOCALS = 서당 수업
	ENDIF
CASE [[유카]]
	LOCALS = 꽃의 손질
CASE [[코스즈]]
	IF YOUBI_MATCH(DAY, "수목")
		LOCALS = 가게 보기
	ELSE
		LOCALS = 장서 정리
	ENDIF
CASE [[에이린]]
	SIF !YOUBI_MATCH(DAY, "일")
		LOCALS = 진찰
	SIF YOUBI_MATCH(DAY, "일") && INRANGE(DAY:3, 8, 14)
		LOCALS = 정례 여자 모임
CASE [[메디슨]]
	LOCALS = 독 채집
CASE [[코마치]]
	LOCALS = 사공
CASE [[히나]]
	LOCALS = 액 모으기
CASE [[아큐]]
	LOCALS = 집필 작업
CASE [[렌코]]
	LOCALS = 리포트
CASE [[메리]]
	LOCALS = 리포트
CASE [[이치린]]
	LOCALS = 청소
CASE [[쇼]]
	IF YOUBI_MATCH(DAY, "금")
		LOCALS = 설법
	ELSE
		LOCALS = 근행
	ENDIF
CASE [[요시카]]
	LOCALS = 정비(피)
CASE [[청아]]
	LOCALS = 정비
CASE [[후토]]
	LOCALS = 회화
CASE [[벤벤]], [[야츠하시]]
	LOCALS = 콘서트
CASE [[라이코]]
	IF DAY % 28 == 7
		LOCALS = 콘서트
	ELSE
		LOCALS = 회화
	ENDIF
CASE [[유유코]]
	IF YOUBI_MATCH(DAY, "일") && INRANGE(DAY:3, 8, 14)
		LOCALS = 정례 여자 모임
	ENDIF
CASE [[오키나]]
	IF YOUBI_MATCH(DAY, "일") && INRANGE(DAY:3, 8, 14)
		LOCALS = 정례 여자 모임
	ENDIF
CASE [[신키]]
	IF YOUBI_MATCH(DAY, "일") && INRANGE(DAY:3, 8, 14)
		LOCALS = 정례 여자 모임
	ENDIF
CASE [[쿠타카]]
	LOCALS = 관문지기
CASE [[미요이]]
	LOCALS = 급사
CASEELSE
	LOCALS = 일
ENDSELECT
RETURNF LOCALS

@SPECIALJOB(ARG)
SELECTCASE ARG
	CASE 1
		PRINTFORML 오늘 %ARG는% 요괴 퇴치 일이 있다고 한다
		INPUT
		PRINTL [0]돕는다
		PRINTL [1]열심히 해
		IF RESULT == 0
			IF ABL:MASTER:전투능력 < 2
				PRINTL 방해가 되니까 오지마~ 라는 소리를 들었다…
			ELSE
				PRINTFORML %ARG는% 주저하면서도 동행을 허락해 주었다
				PRINTFORML %STR:(CFLAG:ARG:직장 / 10 + 6000)%로 갑니다
			ENDIF
		ELSE
			PRINTFORML %마스터는% %CALLNAME:ARG%에게 응원을 보냈다
		ENDIF
ENDSELECT

;-----------------------------------------------------------
;共通の仕事
;-----------------------------------------------------------
;誰が何と言おうと女子会
@JOB_여자회(ARG)
MAXBASE:ARG:일량 = 600 * 3
TCVAR:ARG:일개시 = CLOCK_TO_TIME(18, 0)
TCVAR:ARG:일종료 = CLOCK_TO_TIME(21, 0)
CFLAG:ARG:직장 = P211술집
CFLAG:ARG:직종 = 52
TCVAR:ARG:도울수없다 = 1

@JOB_요정의놀이(ARG)
MAXBASE:ARG:일량 = 600 * 7
TCVAR:ARG:일개시 = CLOCK_TO_TIME(10, 0)
TCVAR:ARG:일종료 = CLOCK_TO_TIME(17, 0)
IF DAY % 4 == 0
	CFLAG:ARG:직장 = P32서니방
ELSEIF DAY % 4 == 1
	CFLAG:ARG:직장 = P25수호신의숲
ELSEIF DAY % 4 == 2
	CFLAG:ARG:직장 = P2경내
ELSE
	CFLAG:ARG:직장 = P27삼요정의집・객실
ENDIF
CFLAG:ARG:직종 = 46
TCVAR:ARG:급료 = 0


code:
;FileName_MOVEMENT.ERB ----------------------------- Rev1. 00
;시간경과 처리
;CALL		USER
;ARG		경과시간전
;RETURN		시간경과량
;COMMENT
;-----------------------------------------------------------
@TIME_PROGRESS(ARG)
#FUNCTION
SIF TIME + DAY * 1440 < ARG
	RETURNF 0
RETURNF TIME + DAY * 1440 - ARG

;FileName_MOVEMENT.ERB ----------------------------- Rev1. 01
;캐릭터 귀가 처리
;CALL		USER
;ARG		0:캐릭터 NO
;RETURN		VOID
;COMMENT
;-----------------------------------------------------------
@KITAKU(ARG)
#DIMS 귀가이유
;오전 3시 ~ 오전 7시
IF INRANGE(TIME, 180, 420)
	귀가이유 = 날도 밝아오니、
;오전 7시 ~ 오후 3시
ELSEIF INRANGE(TIME, 421, 899)
	귀가이유 = 딱 좋은 시간이 되었으니、
;오후 3시 ~ 오후 7시
ELSEIF INRANGE(TIME, 900, 1140)
	귀가이유 = 해도 졌으니、
;오후 7시 ~ 오전 3시
ELSE
	귀가이유 = 밤도 벌써 깊어졌으니、
ENDIF

IF CFLAG:ARG:현재위치 == CFLAG:MASTER:현재위치 && !CFLAG:MASTER:수면 && CFLAG:ARG:현재위치 != CFLAG:ARG:초기위치
	CALL OneNightStay(ARG)
	SIF CFLAG:ARG:신사거주
		RETURN
	IF 수면시간(ARG)
		PRINTFORMW %ARG는% 잠자리에 들었다.
	;데이트중
	ELSEIF CHK_DATENOW(CFLAG:(ARG):데이트중)
		;うふふ中は非表示
		SIF !CFLAG:ARG:우후후
			PRINTFORMW %귀가이유% %ARG와%의 데이트는 여기까지다.
		;자택에 있을 때, 초대방에 있을 때는 우후후 하고 있지 않을 때
		IF CFLAG:ARG:현재위치 == CFLAG:ARG:자택위치 || (CFLAG:ARG:현재위치 == OMANEKIBEYA() && !CFLAG:ARG:우후후)
			;帰宅口上,3,玄関先で見送り
			CALL KOJO_MESSAGE_SEND("EVENT", 20, ARG, 3)
		;통상의 데이트중
		ELSE
			;お誘い
			IF (TALENT:ARG:연모 || TALENT:ARG:섹프 == 2) && CFLAG:ARG:욕구불만도 >= (700 + TALENT:ARG:수치심 * 150) && !CFLAG:ARG:신사거주 && !TCVAR:ARG:연속숙박금지 && CFLAG:(ARG):현재위치 != OMANEKIBEYA()
				PRINTFORML %ARG로%부터 방에 오지 않겠냐고 권유받았다.
				;帰宅口上,4,部屋に来ないかと誘う
				CALL KOJO_MESSAGE_SEND("EVENT", 20, ARG, 4)
				CALL ASK_YN("간다","그만둔다")
				IF !RESULT
					IF CFLAG:ARG:자택위치
						PRINTFORML %CALLNAME:ARG%에게 권유받은 대로, %마스터는% %CALLNAME:ARG%의 방으로 향했다……
						PRINTFORMW +{TIME_REQUIRED(CFLAG:ARG:현재위치 / 100, CFLAG:ARG:자택위치 / 100)}분
						TIME += TIME_REQUIRED(CFLAG:ARG:현재위치 / 100, CFLAG:ARG:자택위치 / 100)
					ELSE
						PRINTFORML %CALLNAME:ARG%에게 권유받은 대로, %마스터는% 어딘지도 모르는 %CALLNAME:ARG%의 방으로 향했다……
						PRINTFORMW +30분
						TIME += 30
					ENDIF
					;帰宅口上,5,誘われるまま行く
					CALL KOJO_MESSAGE_SEND("EVENT", 20, ARG, 5, 0)
					CALL OMANEKI_ENTER(ARG)
					CALL TARGETSET_CHACK
				ELSE
					PRINTFORMW %ARG는% 섭섭해 보인다……
					;帰宅口上,6,誘いを断る
					CALL KOJO_MESSAGE_SEND("EVENT", 20, ARG, 6)
					SIF (CFLAG:MASTER:현재위치 % 100) % 10 && CHK_DATENOW(CFLAG:MASTER:데이트중) && FLAG:데이트상대 == ARG && CFLAG:MASTER:현재위치 != OMANEKIBEYA()
						CFLAG:MASTER:현재위치 = CFLAG:MASTER:데이트중 * 100
				ENDIF
			ELSE
				;帰宅口上,2,デート中帰宅
				CALL KOJO_MESSAGE_SEND("EVENT", 20, ARG, 2)
				SIF (CFLAG:MASTER:현재위치 % 100) % 10 && CHK_DATENOW(CFLAG:MASTER:데이트중) && FLAG:데이트상대 == ARG && CFLAG:MASTER:현재위치 != OMANEKIBEYA()
					CFLAG:MASTER:현재위치 = CFLAG:MASTER:데이트중 * 100
			ENDIF
		ENDIF
	;신사내에 있을까 자택에서도 초대방도 아닌 장소
	ELSEIF AT_HOME(ARG) || (CFLAG:(ARG):현재위치 != CFLAG:(ARG):자택위치 && CFLAG:(ARG):현재위치 != OMANEKIBEYA()) && CFLAG:ARG:행동 != 5
		;帰宅口上,1,通常帰宅
		CALL KOJO_MESSAGE_SEND("EVENT", 20, ARG, 1)
		PRINTFORMW %귀가이유% %ARG는% 돌아갔습니다.
		CALL SET_TOGETHER(0,ARG,1)
		SIF (CFLAG:MASTER:현재위치 % 100) % 10 && CHK_DATENOW(CFLAG:MASTER:데이트중) && FLAG:데이트상대 == ARG && CFLAG:MASTER:현재위치 != OMANEKIBEYA()
			CFLAG:MASTER:현재위치 = CFLAG:MASTER:데이트중 * 100
	ENDIF
	IF CFLAG:(ARG):우후후 > 0 || CHK_DATENOW(CFLAG:(ARG):데이트중)
		FOR LOCAL,1,CHARANUM
			;초대중은 계속
			SIF CFLAG:MASTER:초대 != LOCAL && CFLAG:LOCAL:우후후
				CALL ENDUFUFU(LOCAL)
			;데이트는 사라진다
			CFLAG:LOCAL:데이트중 = MAIN_MAP
			FLAG:데이트상대 = 0
			TFLAG:데이트전호감도 = 0
		NEXT
		;불러 우후후 안은 계속
		SIF !CFLAG:MASTER:초대
			CFLAG:MASTER:우후후 = 0
		CFLAG:MASTER:동행 = 0
	ENDIF
ENDIF
CFLAG:ARG:동행 = 0

IF !TCVAR:ARG:휴식중 && !CFLAG:ARG:초대
	;거점에서 돌아간다면 오늘은 더 이상 내방하지 않는다
	SIF IN_HOME(CFLAG:ARG:현재위치) && !CFLAG:MASTER:수면
		CFLAG:ARG:거점내방 = 0
	;활동시간외는 자택이 있으면 잘 때까지 자택에 있다
	IF CFLAG:ARG:자택위치 && !IN_HOME(CFLAG:ARG:자택위치) && !수면시간(ARG)
		CFLAG:ARG:현재위치 = CFLAG:ARG:자택위치
	;자택이 없는가 자면(자) 사라진다
	ELSE
		CFLAG:ARG:현재위치 = SUKIMA()
	ENDIF
ENDIF

@침실로부터내쫓아(ARG)
SIF !AT_HOME(MASTER)
	RETURN
SIF !ARG
	RETURN
SIF CFLAG:ARG:현재위치 != CFLAG:MASTER:현재위치
	RETURN
SIF !수면시간(ARG)
	RETURN
SIF CFLAG:ARG:현재위치 != CFLAG:ARG:초기위치
	RETURN
SIF !SHIRAHU(ARG)
	RETURN
	;잠입중
SIF CFLAG:ARG:은밀중
	RETURN
SIF 침실허가(ARG, 1)
	RETURN

;なんのためのCLEARLINE？
;CLEARLINE 1
PRINTFORMW 졸린 듯한 %CALLNAME:ARG%에게 쫓겨났다…
;おやすみ口上,7-1,部屋から追い出して寝た
CALL KOJO_MESSAGE_SEND("EVENT", 3, ARG, 7, 1)
;잠입해 OFF
CALL SET_SNEAK(0,ARG,2)
;장난 OFF
CALL SET_PRANK(0,ARG,2)
;우후후 리셋
CALL ENDUFUFU_ALL
;밤 침입 성공 플래그 클리어
CLEARBIT CFLAG:ARG:요바이, 8
;이동 가능한 장소에 이동
CALL GETOUT(MASTER)

@목욕탕으로부터내쫒아(ARG)
SETCOLOR 150,150,250
PRINTL 【목욕탕의 난입자】
RESETCOLOR
IF TALENT:ARG:수치심 < 0
	IF ABL:ARG:친밀 < 5
		PRINTFORML %ARG는% 태연하게, 막 들어왔으니 나가라고 말했다.
		CFLAG:ARG:호감도 -= (20 - ABL:ARG:친밀 * 2)
		CFLAG:ARG:신뢰도 -= (20 - ABL:ARG:친밀 * 2)
		SOURCE:ARG:반감 += 300
		CFLAG:MASTER:현재위치 = KICKOUT()
	;ELSE
	;	PRINTFORML %ARG는% 태연하게, 함께 들어가고 싶은 것인지라고 (들)물어 왔다
	ENDIF
ELSE
	PRINTFORML %ARG는% 자신이 처한 상황을 깨닫자 비명과 함께 목욕탕에서 뛰쳐나갔다
	CFLAG:ARG:호감도 -= (50 - ABL:ARG:친밀 * 2)
	CFLAG:ARG:신뢰도 -= (50 - ABL:ARG:친밀 * 2)
	SOURCE:ARG:반감 += 1000
	BASE:ARG:분노 += (1500 - ABL:ARG:친밀 * 100)
	CFLAG:ARG:현재위치 = KICKOUT()
	;캐릭터를 움직였으므로 TARGET재설정
ENDIF
CFLAG:ARG:호감도 = MAX(CFLAG:ARG:호감도, 0)
CFLAG:ARG:신뢰도 = MAX(CFLAG:ARG:신뢰도, 0)
CALL TARGETSET_CHACK
CFLAG:ARG:동실 = 0
RETURN 1

@초대방처리(ARG)
SIF FLAG:시간정지 || !CFLAG:ARG:초대
	RETURN

;초대방에서 나오면(자) 일상에 돌아간다
;묵기 전인가 후인가는 연속숙박금지 플래그를 참조하고 있습니다
IF CFLAG:MASTER:현재위치 != OMANEKIBEYA()
	CALL 초대방에서나온다(ARG)

;다음날 일하러 가는 경우
ELSEIF 업무중체크(ARG) && TCVAR:ARG:연속숙박금지 && CFLAG:ARG:우후후 != 1
	CFLAG:MASTER:현재위치 = CFLAG:ARG:자택위치
	IF CFLAG:ARG:우후후
		PRINTFORMW %ARG는% 지금부터 일이 있는 것 같다…
		CALL ENDUFUFU(LOCAL)
		PRINTFORMW %ARG는% 아쉬운 듯하면서도 밖으로 나갔다.
	ELSE
		PRINTFORMW %ARG는% 일이 있는지 밖으로 나갔다
	ENDIF
	CALL 초대방에서나온다(ARG)

;데이트중
ELSEIF CHK_DATENOW(CFLAG:ARG:데이트중)
	IF CFLAG:ARG:신사거주
		;더부살이캐릭터는 수면시간에 되면(자) 데이트 종료
		IF 수면시간(ARG)
			CFLAG:ARG:데이트중 = MAIN_MAP
			FLAG:데이트상대 = 0
		ENDIF
	ELSE
		;데이트중에 돌아가는 시간이 오면(자) 메시지＆데이트만 지운다
		IF !VISIT(ARG)
			CALL KITAKU(ARG)
		ENDIF
	ENDIF
ENDIF

@초대방에서나온다(ARG)
;만남 플래그를 자택위치로 설정(연동하고 있다고(면) 다른 캐릭터가 달려 들어 오는 것은 사양)
CFLAG:ARG:만난위치 = CFLAG:ARG:자택위치
;초기위치를 바탕으로 되돌린다(참배길저편이나 0도 있지만 99에서도 k)
IF CFLAG:ARG:신사거주
	CFLAG:ARG:초기위치 = CFLAG:ARG:신사거주
ELSE
	CFLAG:ARG:초기위치 = SUKIMA()
ENDIF
;활동시간이라면 그대로 데이트. 더부살이캐릭터는 일어나고 있으면 데이트
;의 예정이었지만 밸런스 브레이커생각이 드는＆아침 돌아오는 길은 한사람이 분위기 나오므로 더부살이캐릭터만
;활동전도 배치하게 되었으므로 기상시간이라면 밖으로 나오도록(듯이)
IF CFLAG:ARG:신사거주
	CFLAG:ARG:현재위치 = 97 + MAIN_MAP * 100
	CFLAG:ARG:데이트중 = MAIN_MAP
	FLAG:데이트상대 = 0
	TFLAG:데이트전호감도 = 0
ELSE
	IF !수면시간(ARG) && !CFLAG:ARG:수면
		;자택위치에 이동
		CFLAG:ARG:현재위치 = CFLAG:ARG:만난위치
		;묵기 전or더부살이캐릭터라면 데이트 계속, 워프 이동하고 있으면(자) 안 돼
		IF !TCVAR:ARG:연속숙박금지 && CHK_DATENOW(CFLAG:ARG:데이트중) && !AT_HOME(MASTER)
			CFLAG:ARG:데이트중 = (CFLAG:ARG:자택위치) / 100
			CFLAG:ARG:동행 = 60
		ENDIF
	;자고 있는 경우는 안보이는 곳에 이동
	;더부살이캐릭터는 식별하기 위해서 현재위치 97을 사용하고 있기 때문에 요주의(MOVEMENT2의 SLEEP에 계속된다)
	ELSE
		CFLAG:ARG:현재위치 = SUKIMA()
		CFLAG:ARG:데이트중 = MAIN_MAP
		FLAG:데이트상대 = 0
		TFLAG:데이트전호감도 = 0
	ENDIF
ENDIF

;초대 플래그를 지워 일상에 되돌린다
CFLAG:ARG:초대 = 0
CFLAG:MASTER:초대 = 0
LOCK:(OMANEKIBEYA()) = 0

@OneNightStay(ARG)
#DIM YANUSHI
#DIM REQUIRED_DESIRE
YANUSHI = PRIVATEROOM:(CFLAG:MASTER:초기위치 % 100)
SIF CFLAG:ARG:욕구불만도 < 800
	RETURN
SIF CFLAG:ARG:현재위치 != CFLAG:MASTER:현재위치
	RETURN
SIF FLAG:일시체재
	RETURN
SIF CFLAG:ARG:신사거주
	RETURN
SIF !AT_HOME(MASTER)
	RETURN
REQUIRED_DESIRE = 10
SIF TALENT:ARG:연모 || TALENT:ARG:섹프
	REQUIRED_DESIRE -= 5
SIF TALENT:ARG:사모
	REQUIRED_DESIRE -= 2
IF !CFLAG:ARG:기정사실 & 합의_우후후
	REQUIRED_DESIRE += TALENT:ARG:일선을넘지않음 * 2
	REQUIRED_DESIRE += TALENT:ARG:정조 * 2
ENDIF
SIF TALENT:ARG:걸레
	REQUIRED_DESIRE = 0
SIF ABL:ARG:욕망 < REQUIRED_DESIRE
	RETURN

PRINTFORML %ARG는% 오늘 밤은 돌아가기 싫다고 말을 꺼냈다…
;帰宅口上,7,今夜は帰りたくない
CALL KOJO_MESSAGE_SEND("EVENT", 20, ARG, 7)
CALL ASK_YN("묵게 한다","묵게 하지 않는다")
IF !RESULT
	IF YANUSHI
		PRINTFORMW 재워주고 싶은 마음은 굴뚝같지만 %조사처리(CALLNAME:YANUSHI,"가")% 무섭다…
		GOTO REFUSAL
	ENDIF
	FLAG:일시체재 = ARG
	CFLAG:ARG:본래의초기위치 = CFLAG:ARG:초기위치
	CFLAG:ARG:초기위치 = CFLAG:MASTER:초기위치
	CFLAG:ARG:신사거주 = CFLAG:ARG:초기위치
	PRINTFORMW %ARG는% %NAME_FROM_PLACE(CFLAG:MASTER:초기위치)%에서 자고 가게 되었다.
	;帰宅口上,8,泊まっていくことになる
	CALL KOJO_MESSAGE_SEND("EVENT", 20, ARG, 8)
ELSE
	$REFUSAL
	PRINTFORMW %마스터는% 정중히 거절했다.
	;帰宅口上,9,断った
	CALL KOJO_MESSAGE_SEND("EVENT", 20, ARG, 9)
ENDIF

@SET_OneNightStay()


code:
;----------------------------
;여기서 1을 돌려주는 캐릭터는 MOVEMENT 관계의 처리를 일절 실시하지 않는다
;----------------------------
@MOVEMENT스킵판정(ARG)
#FUNCTION
SIF TALENT:ARG:망상의산물
	RETURNF 1
SIF FLAG:모리야복권데이트상대 == ARG && GET_MAPID(CFLAG:MASTER:현재위치) != MAIN_MAP
	RETURNF 1
SIF CFLAG:ARG:출금
	RETURNF 1
RETURNF 0

;----------------------------
;MASTER 포함한 모든 캐릭터에게 적용
;시간경과에 의한 자연 변동, 회화 누적도, 목욕탕의 처리
;----------------------------
@MOVEMENT공통처리(ARG)
;BASE의 자연 변동
CALL BASE자연변동(ARG)

;회화 누적치(100이상 회화하면(자) 시간경과 100분 경과까지 회화불능)
SIF TCVAR:ARG:301 > 100
	TCVAR:ARG:302 = 1
TCVAR:ARG:301 = MAX(TCVAR:ARG:301 - TIME_PROGRESS(TIME:1) , 0)
;시각 경과로 누적치가 0이 되면 회화 가능
SIF TCVAR:ARG:301 == 0
	TCVAR:ARG:302 = 0

;몸의 청결도
LOCAL = CFLAG:ARG:목욕탕

;DEBUGPRINTFORML 【MOVEMENT】BATH_NO:{ARG} , {LOCAL} , \@ CFLAG:ARG:현재위치 == BATHROOM() ?  in_BATH # {CFLAG:ARG:현재위치} \@

;IF BATHCHECK(CFLAG:ARG:현재위치) && GET_MAPID(CFLAG:ARG:현재위치) == MAIN_MAP
IF BATHROOM(CFLAG:ARG:현재위치) && GET_MAPID(CFLAG:ARG:현재위치) == MAIN_MAP
	;악취내성이 낮을 정도(수록) 오래도록 목욕을 즐김(목욕탕 플래그가 내리기 어렵다), 하루 분의 더러움은 대체로 30분에 세정
	CFLAG:ARG:목욕탕 = MAX(CFLAG:ARG:목욕탕 - TIME_PROGRESS(TIME:1) * (50 + TALENT:ARG:악취내성 * 15), 0)
ELSE
	;이틀분약까지 축적
	CFLAG:ARG:목욕탕 = MIN(CFLAG:ARG:목욕탕 + TIME_PROGRESS(TIME:1), 2500)
ENDIF

;껴안기금지시간의 감소
IF TCVAR:ARG:껴안기금지시간 > 0
	TCVAR:ARG:껴안기금지시간 = MAX(TCVAR:ARG:껴안기금지시간 - TIME_PROGRESS(TIME:1), 0)
ENDIF

;----------------------------
;부적절한 위치에 있는 캐릭터를 다른 장소에 이동시킨다
;----------------------------
@강제이동(ARG)
;시간정지중은 처리하지 않는다
IF !FLAG:70
	;벌레 바구니에 들어가지 않는 캐릭터를 벌레 바구니로부터 내쫓는다
	IF CFLAG:ARG:현재위치 == 54 && TALENT:ARG:체형 > -5
		IF ARG == [[신묘마루]]
			TALENT:ARG:체형 = -5
		ELSE
			CFLAG:ARG:현재위치 = 9
		ENDIF
	ENDIF

	;거점의 밖으로 쇠약중의 캐릭터가 있는 경우 스키마에 보낸다
	IF CFLAG:ARG:쇠약
		SIF GET_MAPID(CFLAG:ARG:현재위치) != MAIN_MAP
			CFLAG:ARG:현재위치 = SUKIMA()
	ENDIF
ENDIF

;----------------------------
;동행중의 캐릭터를 당신에 맞추어 이동시킨다
;----------------------------
@동행처리(ARG)
;※만취중은 가능
SIF FLAG:시간정지 || CFLAG:ARG:쇠약 || CFLAG:ARG:초대 || CFLAG:ARG:수면
	RETURN

;업무중은 기본적으로 무리, 다만 연회에서 만취하고 있는 경우는 예외
SIF CFLAG:ARG:행동 == 5 && CFLAG:ARG:직종 != 51
	RETURN

;동행 플래그는 1시간 지속
SIF !CHK_DATENOW(CFLAG:ARG:데이트중) && CFLAG:ARG:동행
	CFLAG:ARG:동행 = MAX(CFLAG:ARG:동행 - TIME_PROGRESS(TIME:1), 0)
SIF CFLAG:ARG:동행 || CHK_DATENOW(CFLAG:ARG:데이트중)
	CFLAG:ARG:현재위치 = CFLAG:MASTER:현재위치

;@캐릭터 이동 사전 처리(ARG)
;;쇠약중
;IF CFLAG:ARG:쇠약 || TCVAR:ARG:만취 || CFLAG:ARG:초대
;	RETURN
;ENDIF
;
;;초대중(수면등을 독자 처리)
;IF
;	CALL MOVEMENT_OMANEKI(ARG)
;	RETURN
;ENDIF
;
;;낮잠을 제외한 수면시간중
;IF !CFLAG:ARG:수면 && 수면시간(ARG)
;	;더부살이캐릭터의 집에 묵었을 때 는 돌아가지 않게 97 + MAIN_MAP * 100에 피난
;	IF CFLAG:(ARG):현재위치 != 97 + MAIN_MAP * 100
;		;데이트중이라면 강제적으로 중지해 귀가
;		CALL 수면시데이트중단(ARG)
;	ENDIF
;ENDIF

;------------------------------------------
;시간에 맞추어 캐릭터를 일으키는/재운다
;------------------------------------------
@기상취침처리(ARG)
SIF FLAG:시간정지 || CFLAG:ARG:쇠약 || TCVAR:ARG:만취
	RETURN
SIF CFLAG:ARG:우후후 && CFLAG:ARG:욕구불만도 > 0
	RETURN
;수면시간대의 경우
IF 수면시간(ARG)
	;일어나고 있으면(자) 재운다
	IF !CFLAG:ARG:수면 && !CFLAG:ARG:우후후
		;데이트중이라면 낮잠은 무시한다
		IF !(CHK_DATENOW(CFLAG:ARG:데이트중) && !수면시간(ARG))
			;CHARA_SLEEP 개선에 따라 일단 동결
			; ;더부살이캐릭터의 집에 묵었을 때 는 돌아가지 않게 97 + MAIN_MAP * 100에 피난
			; IF CFLAG:ARG:현재위치 != 97 + MAIN_MAP * 100
			; 	;데이트중에 취침시간이 되면 강제적으로 중지해 귀가
			; 	CALL 수면시데이트중단(ARG)
			; ENDIF
			IF !CFLAG:ARG:초대 && !(CFLAG:ARG:신사거주 && CFLAG:ARG:현재위치 == CFLAG:ARG:초기위치)
				IF CFLAG:MASTER:현재위치 == CFLAG:ARG:현재위치 && !CFLAG:MASTER:수면
					IF CFLAG:ARG:우후후 || CHK_DATENOW(CFLAG:ARG:데이트중)
						PRINTFORMW %ARG는% 졸음을 참을 수 없게 돼서、\@ CFLAG:ARG:신사거주 ? 자기 방 # 자택 \@으로 돌아가기로 했습니다
					ELSEIF IN_HOME(CFLAG:ARG:현재위치)
						PRINTFORMW %ARG는% 작별 인사를 하며, 졸린 듯이 떠나 갔습니다
					ENDIF
				ENDIF
			ENDIF
		ENDIF
	ENDIF
	;주인공이 기상중이라면 메시지 표시
	CALL CHARA_SLEEP, ARG, !CFLAG:MASTER:수면
;수면시간대부터 빗나가고 있는 경우
ELSE
	;자고 있으면(자) 일으킨다
	IF CFLAG:ARG:수면
		CALL CHARA_AWAKE, ARG
		;더부살이캐릭터가 자신의 집에서 일어났을 경우, 참배길저편에 이동시킨다
		SIF CFLAG:ARG:신사거주 && CFLAG:ARG:현재위치 == 97 + MAIN_MAP * 100
			CFLAG:ARG:현재위치 = MAXROOM
	ENDIF
ENDIF

;------------------------------------------
;방문 플래그가 서 있는 캐릭터를 당신의 거점 물건에 이동시킨다
;캐릭터를 자신의 집에 돌려주는/재택안의 처리를 실시한다
;------------------------------------------
@방문귀가처리(ARG)
SIF FLAG:시간정지 || CFLAG:ARG:쇠약 || TCVAR:ARG:만취 || CFLAG:ARG:초대 || CFLAG:ARG:우후후
	RETURN

;더부살이캐릭터·연회에 참가하는 캐릭터는 내방·귀가의 처리를 실시하지 않는다
IF !CFLAG:ARG:신사거주 && !CFLAG:ARG:연회참가
	;활동시 마우치
	IF VISIT(ARG)
		IF CFLAG:ARG:거점내방
			;내방플래그가 있다면 주인공의 거점에 출현시킨다(업무중은 무리)
			IF !AT_HOME(ARG) && !업무중체크(ARG)
				CALL 주인공물건으로향한다(ARG)
			ENDIF
		ENDIF
	;활동시간외
	ELSE
		;귀가·재택 처리
		CALL KITAKU(ARG)
	ENDIF
ENDIF

;------------------------------------------
;일이 없는 캐릭터를 외출시킨다
;------------------------------------------
@휴일이동처리(ARG)
SIF FLAG:시간정지 || CFLAG:ARG:쇠약 || TCVAR:ARG:만취 || CFLAG:ARG:수면 || CFLAG:ARG:초대 || CFLAG:ARG:우후후
	RETURN

;신사에 갈 예정의 캐릭터, 당일 일이 있는 캐릭터, 신사에 살고 있는 캐릭터는 무시
SIF CFLAG:ARG:거점내방 || 업무일체크(ARG) || CFLAG:ARG:신사거주
	RETURN

;방문시간에 아직 이동하고 있지 않는 경우
IF VISIT(ARG) && CFLAG:ARG:현재위치 != CFLAG:ARG:만난위치
	LOCAL = 0
	IF CFLAG:ARG:현재위치 == CFLAG:MASTER:현재위치
		;묵으면(자) 일어나는 현상(연동 캐릭터를 고려하면(자) 귀찮은 일로)
		LOCAL = 1
	ENDIF
	;전원 공통의 처리
	CFLAG:ARG:현재위치 = CFLAG:ARG:만난위치 ?  CFLAG:ARG:만난위치 # SUKIMA()
	CFLAG:ARG:동행 = 0
	IF CFLAG:ARG:현재위치 != CFLAG:MASTER:현재위치 && LOCAL
		IF TALENT:ARG:연모 && !GROUPMATCH(NAME_FROM_PLACE(CFLAG:ARG:만난위치), "", "불명", "스키마 공간")
			PRINTFORMW %ARG는% %조사처리(NAME_FROM_PLACE(CFLAG:ARG:만난위치),"으로")% 간다고 말하고 나갔다
		ELSE
			PRINTFORMW %ARG는% 어딘가에 나간 것 같다
		ENDIF
	ENDIF
ENDIF

;------------------------------------------
;업무중이라면 1을 돌려준다
;@WORKING와는 거동이 다르므로 주의
;------------------------------------------
@업무중체크(ARG)
#FUNCTION
SIF TCVAR:ARG:일개시 >= 0 && BETWEENTIME(TCVAR:ARG:일개시, TCVAR:ARG:일종료) && BASE:ARG:일량 > 0
	RETURNF 1
RETURNF 0

;------------------------------------------
;당일에 일의 예정이 있다면 1을 돌려준다
;@WORKING와는 거동이 다르므로 주의
;------------------------------------------
@업무일체크(ARG)
#FUNCTION
SIF TCVAR:ARG:일개시 >= 0
	RETURNF 1
RETURNF 0

@주인공물건으로향한다(ARG)
;내방불능（구상용）
IF CFLAG:ARG:내방불능
	CFLAG:ARG:거점내방 = 0
	RETURN
ENDIF
;묵으면(자) 일어나는 현상
IF CFLAG:ARG:현재위치 == CFLAG:MASTER:현재위치 && !CHK_DATENOW(CFLAG:ARG:데이트중)
	IF CFLAG:ARG:태도 && !FLAG:데이트상대
		PRINTFORMW %ARG는% %GET_MAPNAME(MAIN_MAP)%에 가는 듯 하다
		PRINTL [1] - 데이트를 신청한다
		PRINTL [2] - 함께 간다
		PRINTL [0] - 전송한다
		INPUT
		IF RESULT == 1
			PRINTFORMW %CALLNAME:ARG%와 데이트하기로 했다
			CFLAG:MASTER:동행 = 60
			CFLAG:ARG:동행 = 60
			CFLAG:ARG:데이트중 = CFLAG:MASTER:현재위치 / 100
			FLAG:데이트상대 = ARG
			TFLAG:데이트전호감도 = CFLAG:ARG:호감도
		ELSEIF RESULT == 2
			PRINTFORMW %CALLNAME:ARG%를 데려 돌아가기로 했다
			CALL 귀가의시간경과
			CALL SET_DATE(99, ARG)
			CFLAG:ARG:현재위치 = ENTRANCE
			CFLAG:MASTER:현재위치 = ENTRANCE
			CFLAG:ARG:데이트중 = MAIN_MAP
			CFLAG:MASTER:데이트중 = MAIN_MAP
			CFLAG:ARG:동행 = 60
			CFLAG:MASTER:동행 = 60
			IF TARGET == 93 && !GETBIT (FLAG:풀장, 0)
				TIME += 30
				BASE:MASTER:체력 = MAX(BASE:MASTER:체력 - 500,500)
			ENDIF
		ELSE
			PRINTFORMW %ARG는% %GET_MAPNAME(MAIN_MAP)%에 나갔다
			IF CFLAG:ARG:(450 + MAIN_MAP)
				CFLAG:ARG:현재위치 = CFLAG:ARG:(450 + MAIN_MAP)
			ELSE
				CFLAG:ARG:현재위치 = MAXROOM
			ENDIF
		ENDIF
	ELSE
		PRINTFORMW %ARG는% %GET_MAPNAME(MAIN_MAP)%에 나간 것 같다
		IF CFLAG:ARG:(450 + MAIN_MAP)
			CFLAG:ARG:현재위치 = CFLAG:ARG:(450 + MAIN_MAP)
		ELSE
			CFLAG:ARG:현재위치 = MAXROOM
		ENDIF
	ENDIF
ELSE
	IF CFLAG:ARG:(450 + MAIN_MAP)
		CFLAG:ARG:현재위치 = CFLAG:ARG:(450 + MAIN_MAP)
	;뒷문조(後戸組) 특수처리
	ELSEIF GROUPMATCH(ARG, [[마이]], [[사토노]], [[오키나]]) && AT_HOME(MASTER) && MAP_CAN_MOVE(CFLAG:MASTER:현재위치, ARG) && !CFLAG:MASTER:우후후
		CFLAG:ARG:현재위치 = CFLAG:MASTER:현재위치
	ELSE
		CFLAG:ARG:현재위치 = MAXROOM
	ENDIF
	SIF GETBIT(TALENT:MASTER:위치짐작, 1) && AT_HOME(MASTER) == 1 && !CFLAG:MASTER:수면 && !CFLAG:MASTER:우후후
		PRINTFORMW 【%ARG가% 방문해 온 것 같다】
ENDIF
CALL EX_COSTUME(ARG, "집 데이트")

;------------------------------------------
;일이나 연회의 개시/경과/종료나 메시지의 표시를 실시한다
;------------------------------------------
@일연회처리(ARG)
SIF FLAG:시간정지 || CFLAG:ARG:쇠약 || CFLAG:ARG:초대 || CFLAG:ARG:수면
	RETURN

IF TCVAR:ARG:만취
	;연회에서 만취했을 경우는 메시지만 표시해 돌아간다
	IF CFLAG:ARG:직종 == 51 && CFLAG:ARG:현재위치 == TFLAG:연회장 && CFLAG:MASTER:현재위치 == CFLAG:ARG:현재위치
		CALL 연회묘사(ARG)
	ENDIF
	RETURN
ENDIF

IF !CFLAG:ARG:우후후 || WORKING(ARG) || (CFLAG:ARG:우후후 == 2 && CFLAG:ARG:연회참가 == 2)
	;연회 시간대 호출
	IF CFLAG:ARG:연회참가 == 1 || CFLAG:ARG:연회참가 == 2
		CALL ENKAI_WORK(ARG)

	;연회회장에 들르거나 가까워진 캐릭터는 일정 확률로 연회에 참가한다
	ELSEIF FLAG:참가인수 >= 2 && (CFLAG:ARG:현재위치 == TFLAG:연회장 || CAN_MOVE(CFLAG:ARG:현재위치, TFLAG:연회장) >= 2) && !CFLAG:ARG:우후후
		IF CFLAG:ARG:연회참가 == 0 && RAND:5 < 4 && 연회개최중판정() && TIME_PROGRESS(TIME:1) && 업무중체크(ARG) == 0
			IF CFLAG:MASTER:현재위치 == TFLAG:연회장
				IF FLAG:참가인수 >= 8
					PRINTFORMW 즐거운 모습에, %ARG가% 연회에 참가했다!
				ELSE
					PRINTFORMW 상태를 보고 있던%ARG는%, 그대로 연회에 참가했다!
				ENDIF
			ENDIF
			CFLAG:ARG:연회참가 = 1
			CALL ENKAI_START(ARG)
		ENDIF
	ENDIF

	;데이트상대가 연회나 그 준비에 참가했을 경우, 데이트는 강제적으로 중지
	IF GROUPMATCH(CFLAG:ARG:직종, 48, 49, 50, 51) && CHK_DATENOW(CFLAG:ARG:데이트중)
		PRINTFORMW %ARG와%의 데이트는 일단 연회의 끝으로 하기로 했다
		CFLAG:ARG:데이트중 = MAIN_MAP
		FLAG:데이트상대 = 0
		TFLAG:데이트전호감도 = 0
		CFLAG:ARG:동행 = 0
	ENDIF

	;연회의정리 예정이 들어가 있는 캐릭터는 시간이 나는 대로 정리 개시
	IF CFLAG:ARG:정리일량
		IF CFLAG:ARG:행동 == 0 && FLAG:참가인수 == 0
			CALL ENKAI_KATAZUKE(ARG)
			CFLAG:ARG:정리일량 = 0
			CFLAG:ARG:정리장소 = 0
		ENDIF
	ENDIF

	;일시간중, 연회참가중, 연회준비중이라면 CHARA_JOBSTR(ARG)
	IF WORKING(ARG) || (GROUPMATCH(CFLAG:ARG:직종, 48, 49, 50) && BASE:ARG:일량 > 0) || GROUPMATCH(CFLAG:ARG:직종, 51)
		CALL CHARA_JOBSTR(ARG)
	;일종료하고 있으면 종료 처리
	ELSEIF CFLAG:ARG:행동 == 5
		CALL CHARA_JOBEND(ARG)
	ENDIF
ENDIF

;CHARA_SLEEP 개량에 따라 일단 동결
; @수면시데이트중단(ARG)
; IF CHK_DATENOW(CFLAG:ARG:데이트중)
; 	IF CFLAG:ARG:쇠약
; 		PRINTFORMW %ARG는% 녹초가 되어 졸린 것 같다…
; 	ELSE
; 		PRINTFORMW %ARG는% 이제 돌아가 자는 시간입니다…
; 	ENDIF
; 	IF GET_MAPID(CFLAG:ARG:자택위치) == MAIN_MAP
; 		PRINTFORMW 함께 %GET_MAPNAME(MAIN_MAP)%로 돌아가기로 했습니다
; 		CALL SET_DATE(99, ARG)
; 	ELSE
; 		CALL ASK_YN("집까지 바래다준다","그 자리에서 헤어진다")
; 		IF RESULT == 0
; 			PRINTFORMW %ARG를% 집까지 데려다 주기로 했습니다
; 			CALL SET_DATE(99, ARG)
; 		ELSE
; 			PRINTFORMW %ARG와%의 데이트는 그 자리에서 연회의 끝이 되었습니다
; 			FLAG:데이트상대 = 0
; 			TFLAG:데이트전호감도 = 0
; 			CFLAG:ARG:데이트중 = MAIN_MAP
; 		ENDIF
; 		CFLAG:ARG:현재위치 = CFLAG:ARG:자택위치
; 	ENDIF
; 	IF CFLAG:ARG:우후후
; 		CALL ENDUFUFU(ARG)
; 	ENDIF
; 	CFLAG:ARG:동행 = 0
; ENDIF


code:
;FileName_MOVEMENT.ERB ----------------------------- Rev1. 01
;캐릭터이동처리
;CALL		USER
;RETURN		VOID
;COMMENT
;-----------------------------------------------------------
@CHARA_MOVEMENT()
LOCAL:99 = LINECOUNT
PRINTL 　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　(소녀이동중…)

;시간경과에 의한 BASE등의 자연 변동, 회화 누적도, 목욕탕의 처리
CALL MOVEMENT공통처리(MASTER)

;각 캐릭터마다의 그 날의 일정보를 갱신
FOR LOCAL, 1, CHARANUM
	;출금캐릭터를 스키마에 날린다
	IF CFLAG:LOCAL:출금
		CFLAG:LOCAL:현재위치 = SUKIMA()
	ELSE
		CALL 일내용설정(LOCAL)
	ENDIF
NEXT

;행동순서를 셔플
;CALL FISHER_YATES_SHAFFLE(CHARANUM)
;MASTER를 0번에 이동
;SWAP SHAFFLE_ARRAY:0 , SHAFFLE_ARRAY:(FINDELEMENT(SHAFFLE_ARRAY , 0))

FOR LOCAL, 1, CHARANUM
	;LOCAL = SHAFFLE_ARRAY:(LOCAL:100)

	SIF MOVEMENT스킵판정(LOCAL)
		CONTINUE

	CALL 침실로부터내쫓아(LOCAL)

	;시간경과에 의한 BASE등의 자연 변동, 회화 누적도, 목욕탕의 처리
	CALL MOVEMENT공통처리(LOCAL)

	;부적절한 위치에 있는 캐릭터를 다른 장소에 이동시킨다
	CALL 강제이동(LOCAL)
NEXT

CALL 연회참가인원수재계산

FOR LOCAL, 1, CHARANUM
	;LOCAL = SHAFFLE_ARRAY:(LOCAL:100)

	SIF MOVEMENT스킵판정(LOCAL)
		CONTINUE

	;시간에 맞추어 캐릭터를 일으키는/재운다
	CALL 기상취침처리(LOCAL)

	;방문 플래그가 서 있는 캐릭터를 당신의 거점 물건에 이동시킨다
	;캐릭터를 자신의 집에 돌려주는/재택안의 처리를 실시한다
	CALL 방문귀가처리(LOCAL)

	;일이 없는 캐릭터를 외출시킨다
	CALL 휴일이동처리(LOCAL)

	;초대방에 있는 캐릭터의 처리
	CALL 초대방처리(LOCAL)

	;동행중의 캐릭터를 당신의 이동에 맞추어 이동시킨다
	CALL 동행처리(LOCAL)

	;일이나 연회의 개시/경과/종료나 메시지의 표시를 실시한다
	CALL 일연회처리(LOCAL)

	;당신의 거점 물건에 있는 캐릭터를 이동시킨다
	CALL 캐릭터이동처리(LOCAL)

	;만취가 되는/만취로부터의 부활
	CALL CHARA_ACTION_DRUNK(LOCAL)

	;자유행동의 발생／経過／終了やメッセージの表示
	CALL 자유행동처리(LOCAL)

	SIF CFLAG:LOCAL:현재위치 == 0
		PRINTFORMW ### MOVEMENT LOCATION ERROR %CALLNAME:LOCAL%의 현재 위치가 이상합니다 ### CHARA_NO:{LOCAL}
NEXT

;CALL 연회참가인원수재계산
CALL ENKAI_SINKOU()

SIF LINECOUNT == LOCAL:99 + 1
	CLEARLINE 1