code:
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;分岐作りに有用そうな変数などのメモ
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;NOWEX:Ｃ絶頂 NOWEX:Ｖ絶頂 NOWEX:Ｂ絶頂 NOWEX:Ａ絶頂 NOWEX:Ｍ絶頂
;各部位の絶頂強度。まず0~3が割り当てられ、多重絶頂により最大16倍される。つまり単部位なら最大3、5重絶頂で最大48
;NOWEX:TotalEX
;多重絶頂補正を接受前の各部位絶頂強度の合計値。1~15。この貂プレにおける分岐の基準。

;TEQUIP:50
;Ｖに誰の竿が入ってるか。TEQUIP:50 = MASTERで你が挿入中となる。
;TEQUIP:51
;Ａに誰の竿が入ってるか。TEQUIP:51 = MASTERで你が挿入中となる。
;NOWEX:射精
;射精量、最大3。たとえばIF NOWEX:MASTER:射精 > 1だと、你が大量射精以上した場合となる。
;SYNCED_ORGASM(TARGET)
;相手と你が同時に絶頂した場合真となる。絶頂の部位は問わない。

;-------------------------------------------------
;絶頂時の口上
;-------------------------------------------------
@M_KOJO_MESSAGE_PALAMCNG_B_K75
#DIM TotalEX
CALL PALAM_MESSAGE_B
;-------------------------------------------------
;噴乳
;記入チェック（=0, 非表示、1, 表示）
LOCAL = 0
;-------------------------------------------------
IF LOCAL && NOWEX:噴乳
	PRINTFORMW
ENDIF
;-------------------------------------------------
;射精した
;記入チェック（=0, 非表示、1, 表示）
LOCAL = 0
;-------------------------------------------------
IF LOCAL && NOWEX:射精
	PRINTFORMW
ENDIF
;-------------------------------------------------
;放尿
;記入チェック（=0, 非表示、1, 表示）
LOCAL = 1
;-------------------------------------------------
IF LOCAL && NOWEX:放尿
	PRINTFORML 「尿尿…清爽多了啊」
	PRINTW
ENDIF
;-------------------------------------------------
;絶頂
;記入チェック（=0, 非表示、1, 表示）
LOCAL = 1
;-------------------------------------------------
IF LOCAL
	IF NOWEX:Ｖ絶頂
		PRINTFORML 梅蒂欣的膣内紧紧地反复收缩着
		PRINTFORML 「？　？」
		PRINTFORML 虽然梅蒂欣的表情没有任何变化、但似乎对身体的变化感到困惑
		PRINTW
	ENDIF

	IF NOWEX:Ａ絶頂
		PRINTFORML 梅蒂欣的膣内紧紧地反复收缩着
		PRINTFORML 「？　？」
		PRINTFORML 虽然梅蒂欣的表情没有任何变化、但似乎对身体的变化感到困惑
		PRINTW
	ENDIF

	IF NOWEX:Ｃ絶頂
		PRINTFORML 梅蒂欣的阴蒂包皮翻起来了、岁额很小但是也充血膨胀着
		PRINTFORML 「？　？」
		PRINTFORML 虽然梅蒂欣的表情没有任何变化、但是浑身都在微微颤动着
		PRINTW
	ENDIF

	IF NOWEX:Ｂ絶頂
		PRINTFORML 梅蒂欣小小的乳头硬硬得鼓起挺立、表示着已经到达了绝顶
		PRINTFORML 「？　？」
		PRINTFORML 虽然梅蒂欣的表情没有任何变化、但似乎对身体的变化感到困惑
		PRINTW
	ENDIF

	IF NOWEX:Ｍ絶頂
		PRINTFORML 梅蒂欣放荡地伸出舌头、整个人精神恍惚着
		PRINTFORML 「？　？」
		PRINTFORML 虽然梅蒂欣的表情没有任何变化、但似乎对身体的变化感到困惑
		PRINTW
	ENDIF
ENDIF

;-------------------------------------------------
;奴隷の睡眠絶頂時の口上
;-------------------------------------------------
@M_KOJO_MESSAGE_PALAMCNG_B2_K75
CALL PALAM_MESSAGE_B
;-------------------------------------------------
;睡眠噴乳
;記入チェック（=0, 非表示、1, 表示）
LOCAL = 0
;-------------------------------------------------
IF LOCAL && NOWEX:噴乳
	PRINTFORMW
ENDIF
;-------------------------------------------------
;睡眠射精した
;記入チェック（=0, 非表示、1, 表示）
LOCAL = 0
;-------------------------------------------------
IF LOCAL && NOWEX:射精
	PRINTFORMW
ENDIF
;-------------------------------------------------
;睡眠放尿
;記入チェック（=0, 非表示、1, 表示）
LOCAL = 0
;-------------------------------------------------
IF LOCAL && NOWEX:放尿
	PRINTFORMW
ENDIF
;-------------------------------------------------
;睡眠絶頂
;記入チェック（=0, 非表示、1, 表示）
LOCAL = 0
;-------------------------------------------------
;合計絶頂数で分岐
;これだけではどの部位が絶頂したかは区別されないため、書き分けたければ任意で分岐を加筆されたし。
IF LOCAL
	SELECTCASE NOWEX:TotalEX
		;強
		CASE 5 TO 15
			PRINTFORMW
		;中
		CASE 2 TO 4
			PRINTFORMW
		;弱
		CASE 1
			PRINTFORMW
	ENDSELECT
ENDIF

;-------------------------------------------------
;你が射精したときに関する口上の表示
;一時的にTARGETを口上主に設定している
;-------------------------------------------------

@M_KOJO_MESSAGE_PALAMCNG_A_K75_00(ARG)
CALL PALAM_MESSAGE_A
;-------------------------------------------------
;TARGETの手による射精で、射精対象が非TARGET
;記入チェック（=0, 非表示、1, 表示）
LOCAL = 1
;-------------------------------------------------
IF LOCAL
	;初めて射精を見るなら精液名づけ
	IF CFLAG:75:1007 == 0
		CALL SAMEN_MEETING_K75
		CFLAG:75:1007 = 1
	ELSE
		IF TALENT:MASTER:濃厚精液
			IF TALENT:恋慕 || TALENT:恋人
				IF TALENT:75:無知
					PRINTFORML 「哇啊、%CSTR:75:81%出来了好多」
					PRINTFORML 梅蒂欣瞪大眼睛吃惊地看着从马眼喷出来的精液的量
					PRINTW
				ELSE
					PRINTFORML 「%CALLNAME:MASTER%射出来的%CSTR:75:81%、非常的浓呢」
					PRINTFORML 「想要射给我所以一直在忍耐吧？　好孩子呢」
					PRINTFORML 「还想继续做吗？　好啊、那就让你射到身体都被掏空为止」
					PRINTW
				ENDIF
			ELSE
				IF TALENT:75:無知
					PRINTFORML 「哇、哇。这是什么。特别黏乎乎的」
					PRINTFORML 「这个、是不是应该更白一些？　今日的、总感觉有些发黄」
					PRINTW
				ELSE
					PRINTFORML 「呵呵。射出来的好浓啊。飞得很远哟」
					PRINTFORML 「其实很想在女性的%CSTR:75:82%里面射出来对吧？」
					PRINTFORML 「不过还是以在手里徒劳的射精告终了呢。真是遗憾」
					PRINTW
				ENDIF
			ENDIF
		ELSE
			IF TALENT:恋慕 || TALENT:恋人
				IF TALENT:75:無知
					;精力8分の1以下で反応変化
					IF BASE:MASTER:精力 <= MAXBASE:MASTER:精力 / 8
						PRINTFORML 「啊嘞、都没怎么飞太远呢」
						PRINTFORML 「真无ー聊。多射一些出来啊」
						PRINTFORML 梅蒂欣開始反复捋动因为刚高潮过而非常敏感的肉棒
						PRINTW
					ELSE
						PRINTFORML 「呵呵、射出来很多呢。了不起了不起」
						PRINTFORML 「不过、还能射出来更多吧？　能射的吧？」
						PRINTFORML 「只要你能好好拜托我、我就继续让你爽」
						PRINTW
					ENDIF
				ELSE
					;精力8分の1以下で反応変化
					IF BASE:MASTER:精力 <= MAXBASE:MASTER:精力 / 8
						PRINTFORML 「啊嘞、感觉量和浓度都開始下降了呢」
						PRINTFORML 「已经累了吗？　遗憾呢」
						PRINTW
					ELSE
						SELECTCASE RAND:2
						CASE 0
							PRINTFORML 「哇啊、浓浓的好臭啊」
							PRINTFORML 「用人偶的手还能射出来这么多、%CALLNAME:MASTER%真是个变态呢」
							PRINTFORML 每次被梅蒂欣摩擦时、精液就会从马眼哔咕、哔咕的喷射而出
							PRINTW
							PRINTFORML 「不过、我最喜欢这个变态了哟」
							PRINTFORML 「无需忍耐哦。我会、让你好好舒服舒服的」
							PRINTW
						CASE 1
							PRINTFORML 「呵呵、射出来很多呢。了不起了不起」
							PRINTFORML 「不过、在手上就算射出来也没法生出小孩子啊」
							PRINTFORML 「不好好在我%CSTR:75:82%的里面射出来的话呢」
							PRINTW
						ENDSELECT
					ENDIF
				ENDIF
			ELSE
				IF TALENT:75:無知
					;精力8分の1以下で反応変化
					IF BASE:MASTER:精力 <= MAXBASE:MASTER:精力 / 8
						PRINTFORML 「感觉都飞不太远了呢。无聊」
						PRINTFORML 「喂、再多射一些%CSTR:75:81%嘛ー」
						PRINTW
					ELSE
						PRINTFORML 「呵呵、有意思呢、铃铃」
						PRINTFORML 「要多多从%CSTR:75:80%的前面射出来哦」
						PRINTFORML 「再多蹭一蹭的话、会不会多出来一些呢♪」
						PRINTW
					ENDIF
				ELSE
					;精力8分の1以下で反応変化
					IF BASE:MASTER:精力 <= MAXBASE:MASTER:精力 / 8
						PRINTFORML 「啊嘞、感觉量和浓度都開始下降了呢」
						PRINTFORML 「人类啊、几下子就弱下来了真是没用呢、铃铃」
						PRINTW
					ELSE
						PRINTFORML 「欸ー、这么能射啊」
						PRINTFORML 「不过、还能射出来更多吧？　能射的吧？」
						PRINTFORML 「就算你拒绝也没用ー。射到我腻为止吧」
						PRINTW
					ENDIF
				ENDIF
			ENDIF
		ENDIF
	ENDIF
	RETURN 1
ENDIF
RETURN 1

@M_KOJO_MESSAGE_PALAMCNG_A_K75_0(ARG)
CALL PALAM_MESSAGE_A
;-------------------------------------------------
;避孕套
;記入チェック（=0, 非表示、1, 表示）
LOCAL = 1
;-------------------------------------------------
IF LOCAL
	;初めて射精を見るなら精液名づけ
	IF CFLAG:75:1007 == 0
		CALL SAMEN_MEETING_K75
		CFLAG:75:1007 = 1
	ELSE
		IF TALENT:MASTER:濃厚精液
			IF TALENT:恋慕 || TALENT:恋人
				IF TALENT:75:無知
				ELSE
				ENDIF
			ELSE
				IF TALENT:75:無知
				ELSE
				ENDIF
			ENDIF
		ELSE
			IF TALENT:恋慕 || TALENT:恋人
				IF TALENT:75:無知
				ELSE
				ENDIF
			ELSE
				IF TALENT:75:無知
				ELSE
				ENDIF
			ENDIF
		ENDIF
	ENDIF
	RETURN 1
ENDIF
RETURN 1

@M_KOJO_MESSAGE_PALAMCNG_A_K75_23(ARG)
CALL PALAM_MESSAGE_A
;-------------------------------------------------
;深喉插入
;記入チェック（=0, 非表示、1, 表示）
LOCAL = 0
;-------------------------------------------------
IF LOCAL
	PRINTFORMW
	RETURN 1
ENDIF
RETURN 1

@M_KOJO_MESSAGE_PALAMCNG_A_K75_22(ARG)
CALL PALAM_MESSAGE_A
;-------------------------------------------------
;六九式
;記入チェック（=0, 非表示、1, 表示）
LOCAL = 0
;-------------------------------------------------
IF LOCAL
	;同時射精
	IF NOWEX:射精 && NOWEX:MASTER:射精
		PRINTFORMW
		RETURN 1
	;TARGETだけ射精
	ELSEIF NOWEX:射精
		;PLAYERについてる
		IF GETBIT(TALENT:PLAYER:性別,1)
			PRINTFORMW
			RETURN 1
		;付いてない
		ELSE
			PRINTFORMW
			RETURN 1
		ENDIF
	;PLAYERだけ射精
	ELSE
		;TARGETについてる
		IF GETBIT(TALENT:性別,1)
			PRINTFORMW
			RETURN 1
		;付いてない
		ELSE
			PRINTFORMW
			RETURN 1
		ENDIF
	ENDIF
ENDIF
RETURN 1

@M_KOJO_MESSAGE_PALAMCNG_A_K75_26(ARG)
CALL PALAM_MESSAGE_A
;-------------------------------------------------
;授乳PLAY
;記入チェック（=0, 非表示、1, 表示）
LOCAL = 0
;-------------------------------------------------
IF LOCAL
	PRINTFORMW
	RETURN 1
ENDIF
RETURN 1

@M_KOJO_MESSAGE_PALAMCNG_A_K75_21(ARG)
CALL PALAM_MESSAGE_A
;-------------------------------------------------
;乳夾口交
;記入チェック（=0, 非表示、1, 表示）
LOCAL = 1
;-------------------------------------------------
IF LOCAL
	IF CFLAG:75:1007 == 0
		CALL SAMEN_MEETING_K75
	ENDIF
	RETURN 1
ENDIF
RETURN 1

@M_KOJO_MESSAGE_PALAMCNG_A_K75_20(ARG)
CALL PALAM_MESSAGE_A
;-------------------------------------------------
;手淫口交
;記入チェック（=0, 非表示、1, 表示）
LOCAL = 1
;-------------------------------------------------
IF LOCAL
	IF CFLAG:75:1007 == 0
		CALL SAMEN_MEETING_K75
	ENDIF
	IF !FLAG:時間停止
		IF !TALENT:75:無知
			;精飲
			IF EXP_UP(15) == NOWEX:PLAYER:射精 * 3
				IF TALENT:MASTER:濃厚精液
					SELECTCASE RAND:3
					CASE 0
						PRINTFORML 「嗯咕、嗯咕、嗯咕……咕嘟」
						PRINTFORML 「%CALLNAME:MASTER%的%CSTR:75:81%、十分地浓厚、美味呢」
						PRINTW
					CASE 1
						PRINTFORML 「嗯咕、嚼嚼…咕嘟」
						PRINTFORML 「真厉害呢、%CSTR:75:81%、这个黏到没法咬断的程度十分有弹性哇」
						PRINTW
					CASE 2
						PRINTFORML 「嗯～～、～～～～、Bei～…嚼嚼、嗯咕、嗯库、咕嘟…Bei～」
						PRINTFORML 「%CSTR:75:81%、我好好地品尝了味道喝下去了哟」
						PRINTW
					ENDSELECT
				ELSE
					SELECTCASE RAND:3
					CASE 0
						PRINTFORML 「嗯咕、嗯咕……咕嘟」
						PRINTFORMW 「Bei～。你看、我好好喝下去了哟？」
					CASE 1
						PRINTFORML 「嗯ー、嗯、嗯、咕噜」
						PRINTFORMW 「呼呜…多谢款待。很美味哇」
					CASE 2
						PRINTFORML 「嗯、嗯～～～～、Bei～…嗯库、嗯库…咕嘟」
						PRINTFORMW 「喝下%CALLNAME:MASTER%的%CSTR:75:81%这种程度没理由做不到哇」
					ENDSELECT
				ENDIF
			ELSE
				IF TALENT:MASTER:濃厚精液
					SELECTCASE RAND:3
					CASE 0
						PRINTFORML 「啾呜呜呜呜、啾啾呜呜呜呜」
						PRINTFORML 「好好地全都射出来了吗？　撸呀撸呀、撸呀撸呀…」
						PRINTFORML BiuKu、BiuKuBiuKu…
						PRINTFORML 「你看、深处还残留了那么多…啾呜呜」
						PRINTW
					CASE 1
						PRINTFORML 「嗯、嗯ーー、嗯…嗯Beiー」
						PRINTFORML 「真厉害呢。弹弹的%CSTR:75:81%射出来了这么多」
						PRINTW
					CASE 2
						PRINTFORML 「嗯、嗯ー……、嗯Bei……」
						PRINTFORML 「喝下去什么的做不到哟。%CSTR:75:81%、实在是浓厚过头了嘛」
						PRINTW
					ENDSELECT
				ELSE
					SELECTCASE RAND:3
					CASE 0
						PRINTFORML 「嗯ー…啾砰。呼呜…好厉害的量哇」
						PRINTW
					CASE 1
						PRINTFORML 「嗯、嗯ー……嗯Beiー」
						PRINTFORML 「哇、出来了这么多。这是不是射过头了哇？」
						PRINTW
					CASE 2
						PRINTFORML 「嗯ー、嗯嗯ーーーー」
						PRINTFORML 「嗯Beiー。要射出来的话、不好好说出来这边会困扰的哇」
						PRINTW
					ENDSELECT
				ENDIF
			ENDIF
		;無知
		ELSE
			;精飲
			IF EXP_UP(15) == NOWEX:PLAYER:射精 * 3
				SELECTCASE RAND:3
				CASE 0
					PRINTFORML 「嗯咕嗯咕……咕嘟」
					PRINTFORMW 「嗯啊～%UNICODE(0x2764)% 这个、感觉我的力量越来越强了呢！」
				CASE 1
					PRINTFORML 「嗯ー、嗯咕嗯咕……啾噜噜……」
					PRINTFORMW 「全ー部都给你榨出来哟ー♪」
				CASE 2
					PRINTFORML 「嚼嚼……咕嘟」
					PRINTFORMW 「嗯ー%UNICODE(0x2764)% 超ー美味%UNICODE(0x2764)%」
				ENDSELECT
			ELSE
				SELECTCASE RAND:3
				CASE 0
					PRINTFORMW 「嗯ー、啾啪♪ 呼ー、清爽了吗？」
				CASE 1
					PRINTFORML 「呼嗯呼嗯、嗯Beiー」
					PRINTFORMW 「哇！射出来这么多♪」
				CASE 2
					PRINTFORML 「嗯、嗯ー……、嘞咯……」
					PRINTFORMW 「嗯嘿%UNICODE(0x2764)% %CALLNAME:MASTER%也要喝喝看吗？」
				ENDSELECT
			ENDIF
		ENDIF
	ENDIF
	RETURN 1
ENDIF
RETURN 1

@M_KOJO_MESSAGE_PALAMCNG_A_K75_9(ARG)
CALL PALAM_MESSAGE_A
;-------------------------------------------------
;肛門奉仕
;記入チェック（=0, 非表示、1, 表示）
LOCAL = 0
;-------------------------------------------------
IF LOCAL
	PRINTFORMW
	RETURN 1
ENDIF
RETURN 1

@M_KOJO_MESSAGE_PALAMCNG_A_K75_8(ARG)
CALL PALAM_MESSAGE_A
;-------------------------------------------------
;泡泡浴
;記入チェック（=0, 非表示、1, 表示）
LOCAL = 0
;-------------------------------------------------
IF LOCAL
	;同時射精
	IF NOWEX:射精 && NOWEX:MASTER:射精
		PRINTFORMW
		RETURN 1
	;TARGETだけ射精
	ELSEIF NOWEX:射精
		;PLAYERについてる
		IF GETBIT(TALENT:PLAYER:性別,1)
			PRINTFORMW
			RETURN 1
		;付いてない
		ELSE
			PRINTFORMW
			RETURN 1
		ENDIF
	;PLAYERだけ射精
	ELSE
		;TARGETについてる
		IF GETBIT(TALENT:性別,1)
			PRINTFORMW
			RETURN 1
		;付いてない
		ELSE
			PRINTFORMW
			RETURN 1
		ENDIF
	ENDIF
ENDIF
RETURN 1

@M_KOJO_MESSAGE_PALAMCNG_A_K75_7(ARG)
CALL PALAM_MESSAGE_A
;-------------------------------------------------
;足交
;記入チェック（=0, 非表示、1, 表示）
LOCAL = 1
;-------------------------------------------------
IF LOCAL
	IF CFLAG:75:1007 == 0
		CALL SAMEN_MEETING_K75
	ENDIF

	IF TALENT:75:無知
		IF TALENT:恋慕 || TALENT:恋人
			PRINTFORML 「哇、哇。有什么出来了」
			PRINTFORML 「真厉害呢。以惊人的势头飞出来了哟」
			PRINTW
		ELSE
			PRINTFORML 「哇、哇。有什么出来了」
			PRINTFORML 「不要突然就飞出奇怪的东西。衣服会被弄脏的啊」
			PRINTW
		ENDIF
	ELSE
		IF TALENT:恋慕 || TALENT:恋人
			PRINTFORML 「用脚就去了什么的。%CALLNAME:MASTER%真是变态」
			PRINTFORML 「变态要是跑到外面去就不妙了、我来让你全部都射出来呢」
			PRINTW
		ELSE
			PRINTFORML 「被人偶踩着%CSTR:75:80%感到喜悦什么的、真没出息啊」
			PRINTFORML 「铃铃、踩坏这个%CSTR:75:80%不是更好么？」
			PRINTW
		ENDIF
	ENDIF
	RETURN 1
ENDIF
RETURN 1

@M_KOJO_MESSAGE_PALAMCNG_A_K75_6(ARG)
CALL PALAM_MESSAGE_A
;-------------------------------------------------
;素股
;記入チェック（=0, 非表示、1, 表示）
LOCAL = 1
;-------------------------------------------------
IF LOCAL
	IF CFLAG:75:1007 == 0
		CALL SAMEN_MEETING_K75
	ENDIF

	IF TALENT:75:無知
		IF TALENT:恋慕 || TALENT:恋人
			PRINTFORML 「哇、哇。有什么出来了」
			PRINTFORML 「真厉害呢。以惊人的势头飞出来了哟」
			PRINTW
		ELSE
			PRINTFORML 「哇、哇。有什么出来了」
			PRINTFORML 「不要把奇怪的东西射出来啊。身体要被弄脏了不是嘛」
			PRINTW
		ENDIF
	ELSE
		IF TALENT:恋慕 || TALENT:恋人
			IF TALENT:75:人形 == 1
				PRINTFORML 「啊ー啊、浪费的射出来了」
				PRINTFORML 「难得有了%CSTR:75:82%、却不在那里射出来什么的」
				PRINTW
			ELSE
				PRINTFORML 「啊ー啊、射出来了」
				PRINTFORML 「我的大腿就那么舒服吗？」
				PRINTW
			ENDIF
		ELSE
			PRINTFORML 「呜哇、用人偶的身体射精了。真恶心呢、铃铃」
			PRINTFORML 「明明都没办法插入、却在拼命地扭着腰哟。真滑稽呢」
			PRINTW
		ENDIF
	ENDIF
	RETURN 1
ENDIF
RETURN 1

@M_KOJO_MESSAGE_PALAMCNG_A_K75_5(ARG)
CALL PALAM_MESSAGE_A
;-------------------------------------------------
;乳交
;記入チェック（=0, 非表示、1, 表示）
LOCAL = 1
;-------------------------------------------------
IF LOCAL
	IF CFLAG:75:1007 == 0
		CALL SAMEN_MEETING_K75
	ENDIF

	IF TALENT:75:無知
		IF TALENT:恋慕 || TALENT:恋人
			PRINTFORML 「哇、哇。有什么出来了」
			PRINTFORML 「胸部变得黏糊糊的了哇」
			PRINTW
		ELSE
			PRINTFORML 「哇、哇。有什么出来了」
			PRINTFORML 「呜呜、被这个黏在胸上很讨厌的啊」
			PRINTW
		ENDIF
	ELSE
		IF TALENT:恋慕 || TALENT:恋人
			IF TALENT:75:人形 == 1
				IF TALENT:TARGET:胸圍 > 0
					PRINTFORML 「好厉害。我的胸部好像要溺在精液里一样」
					PRINTFORML 「感觉胸部都要怀孕了。射出的太多了吧？」
					PRINTW
				ELSE
					PRINTFORML 「我的胸部也能感觉很舒服哇」
					PRINTFORML 「难得有了%CSTR:75:82%、却不在那里射出来什么的」
					PRINTW
				ENDIF
			ELSE
				PRINTFORML 「啊ー啊、射出来了」
				PRINTFORML 「胸部就那么舒服吗？」
				PRINTW
			ENDIF
		ELSE
			PRINTFORML 「摩擦着人偶的胸部射精什么的、这家伙真是个硬核的变态呢、铃铃」
			PRINTFORML 「因为找不到人做爱、所以只能够这样子消解性欲哟。真空虚呢」
			PRINTW
		ENDIF
	ENDIF
	RETURN 1
ENDIF
RETURN 1

@M_KOJO_MESSAGE_PALAMCNG_A_K75_4(ARG)
CALL PALAM_MESSAGE_A
;-------------------------------------------------
;口交
;記入チェック（=0, 非表示、1, 表示）
LOCAL = 1
;-------------------------------------------------
IF LOCAL
	IF EXP:75:精液経験 == 1
		CALL K75_POISON_COUNTER(4)
		PRINTFORML 「嗯咕！？　嗯姆、嗯呜呜～～」
		PRINTFORML 从马眼喷涌而出的精液、将梅蒂欣吓到了眼睛瞪得圆圆的
		PRINTW
		IF TALENT:MASTER:濃厚精液
			PRINTFORML 「呜唉唉…嘴里有什么东西进来了好多…」
			PRINTFORML 梅蒂欣抬起双手将口腔内的%SAMEN_DESCRIPTION(PLAYER,1)%吐了出来
			PRINTFORML 小小的手无法装下如此的巨量、从手掌边缘黏糊糊得不断滴落着
			PRINTW
		ELSE
			PRINTFORML 「bei唉…嘴里面、有奇怪的味道哇」
			PRINTFORML 梅蒂欣将口腔内的%SAMEN_DESCRIPTION(PLAYER,1)%吐在了自己的双手上
			PRINTFORML 「射出了很多呢。正在从我的手掌心里溢出哇」
			PRINTW
		ENDIF
		PRINTFORML 「呐、这到底是什么啊？」

		IF CFLAG:75:1007 == 0
			CALL SAMEN_MEETING_K75
		ENDIF
	ELSE
		CALL K75_POISON_COUNTER(4)
		IF !TALENT:75:無知
			;精飲
			IF EXP_UP(15) == NOWEX:PLAYER:射精 * 3
				IF TALENT:MASTER:濃厚精液
					SELECTCASE RAND:3
					CASE 0
						PRINTFORML 「嗯咕、嗯咕、嗯咕……咕嘟」
						PRINTFORML 「%CALLNAME:MASTER%的%CSTR:75:81%、十分地浓厚、美味呢」
						PRINTW
					CASE 1
						PRINTFORML 「嗯咕、嚼嚼…咕嘟」
						PRINTFORML 「真厉害呢、%CSTR:75:81%、这个黏到没法咬断的程度十分有弹性哇」
						PRINTW
					CASE 2
						PRINTFORML 「嗯～～、～～～～、Bei～…嚼嚼、嗯咕、嗯库、咕嘟…Bei～」
						PRINTFORML 「%CSTR:75:81%、我好好地品尝了味道喝下去了哟」
						PRINTW
					ENDSELECT
				ELSE
					SELECTCASE RAND:3
					CASE 0
						PRINTFORML 「嗯咕、嗯咕……咕嘟」
						PRINTFORMW 「Bei～。你看、我好好喝下去了哟？」
					CASE 1
						PRINTFORML 「嗯ー、嗯、嗯、咕噜」
						PRINTFORMW 「呼呜…多谢款待。很美味哇」
					CASE 2
						PRINTFORML 「嗯、嗯～～～～、Bei～…嗯库、嗯库…咕嘟」
						PRINTFORMW 「喝下%CALLNAME:MASTER%的%CSTR:75:81%这种程度没理由做不到哇」
					ENDSELECT
				ENDIF
			ELSE
				IF TALENT:MASTER:濃厚精液
					SELECTCASE RAND:3
					CASE 0
						PRINTFORML 「啾呜呜呜呜、啾啾呜呜呜呜」
						PRINTFORML 「好好地全都射出来了吗？　撸呀撸呀、撸呀撸呀…」
						PRINTFORML BiuKu、BiuKuBiuKu…
						PRINTFORML 「你看、深处还残留了那么多…啾呜呜」
						PRINTW
					CASE 1
						PRINTFORML 「嗯、嗯ーー、嗯…嗯Beiー」
						PRINTFORML 「真厉害呢。弹弹的%CSTR:75:81%射出来了这么多」
						PRINTW
					CASE 2
						PRINTFORML 「嗯、嗯ー……、嗯Bei……」
						PRINTFORML 「喝下去什么的做不到哟。%CSTR:75:81%、实在是浓厚过头了嘛」
						PRINTW
					ENDSELECT
				ELSE
					SELECTCASE RAND:3
					CASE 0
						PRINTFORML 「嗯ー…啾砰。呼呜…好厉害的量哇」
						PRINTW
					CASE 1
						PRINTFORML 「嗯、嗯ー……嗯Beiー」
						PRINTFORML 「哇、出来了这么多。这是不是射过头了哇？」
						PRINTW
					CASE 2
						PRINTFORML 「嗯ー、嗯嗯ーーーー」
						PRINTFORML 「嗯Beiー。要射出来的话、不好好说出来这边会困扰的哇」
						PRINTW
					ENDSELECT
				ENDIF
			ENDIF
		ELSE
			;精飲
			IF EXP_UP(15) == NOWEX:PLAYER:射精 * 3
				SELECTCASE RAND:3
				CASE 0
					PRINTFORML 「嗯咕嗯咕……咕嘟」
					PRINTFORMW 「嗯啊～%UNICODE(0x2764)% 这个、感觉我的力量越来越强了呢！」
				CASE 1
					PRINTFORML 「嗯ー、嗯咕嗯咕……啾噜噜……」
					PRINTFORMW 「全ー部都给你榨出来哟ー♪」
				CASE 2
					PRINTFORML 「嚼嚼……咕嘟」
					PRINTFORMW 「嗯ー%UNICODE(0x2764)% 超ー美味%UNICODE(0x2764)%」
				ENDSELECT
			ELSE
				SELECTCASE RAND:3
				CASE 0
					PRINTFORMW 「嗯ー、啾啪♪ 呼ー、清爽了吗？」
				CASE 1
					PRINTFORML 「呼嗯呼嗯、嗯Beiー」
					PRINTFORMW 「哇！射出来这么多♪」
				CASE 2
					PRINTFORML 「嗯、嗯ー……、嘞咯……」
					PRINTFORMW 「嗯嘿%UNICODE(0x2764)% %CALLNAME:MASTER%也要喝喝看吗？」
				ENDSELECT
			ENDIF
		ENDIF
	ENDIF
	RETURN 1
ENDIF
RETURN 1

@M_KOJO_MESSAGE_PALAMCNG_A_K75_3(ARG)
CALL PALAM_MESSAGE_A
;-------------------------------------------------
;手淫
;記入チェック（=0, 非表示、1, 表示）
LOCAL = 1
;-------------------------------------------------
IF LOCAL
	IF EXP:75:精液経験 == 1
		CALL K75_POISON_COUNTER(3)
		PRINTFORML 「哇、有什么出来了哇」
		PRINTFORML 从马眼喷涌而出的精液、将梅蒂欣吓到了眼睛瞪得圆圆的
		PRINTW
		IF TALENT:MASTER:濃厚精液
			PRINTFORML 「感觉带着点黄色、而且很新鲜…」
			PRINTFORML 「是从%CSTR:75:80%的先端飞出来的、这个是什么？」
			PRINTFORML 梅蒂欣展示着粘在手上如同胶水似的精液
			PRINTW
		ELSE
			PRINTFORML 「白色、而且黏糊糊的…」
			PRINTFORML 「是从%CSTR:75:80%的先端飞出来的、这个是什么？」
			PRINTFORML 梅蒂欣展示着从手上黏糊糊地滴垂着的白浊液
			PRINTW
		ENDIF
		CALL SAMEN_MEETING_K75
	ELSE
		CALL K75_POISON_COUNTER(3)
		IF !TALENT:75:無知
			IF TALENT:MASTER:濃厚精液
				SELECTCASE RAND:3
				CASE 0
					PRINTFORML Duopu、Duobiulululu
					PRINTFORML 「哇、好厉害。%CSTR:75:81%是、能射出这么多的呢」
					PRINTFORML 「%CSTR:75:81%都形成了一个小池子哇。这里面、到底积累了多少量呀？」
					PRINTW
				CASE 1
					PRINTFORML 「五ー、四ー、三、二ー、一、零」
					PRINTFORML Duopiu、Duobiulululu、DuopiuDuopiu
					PRINTW
					PRINTFORML 「我只是在耳边数着数然后撸动而已。比平时出了更多呀」
					PRINTFORML 「真是无可救药的人。但是、我最喜欢了哟」
					PRINTW
					PRINTFORML 「已经到极限了？　净是说谎。这里还很硬哟」
				CASE 2
					PRINTFORML 「嗯～～、～～～～、Bei～…嚼嚼、嗯咕、嗯库、咕嘟…Bei～」
					PRINTFORML 「%CSTR:75:81%、我好好地品尝了味道喝下去了哟」
					PRINTW
				ENDSELECT
			ELSE
				SELECTCASE RAND:3
				CASE 0
					PRINTFORML Biuku、Biululululu
					PRINTFORML 「射出了好多呢。但是、还能射出来的对吧？」
					PRINTW
					PRINTFORML NyukoNyuko、NyukoNyuko
					PRINTFORML Biu、Biululu
					PRINTFORML 「你看、果然。已经射不出来了？　真的吗？」
					PRINTW
					PRINTFORML NyuchiNyuchi、NyuchiNyuchi
					PRINTFORML Biu、Biulu
					PRINTFORML 「净是说谎。还能射出这么多呢」
					PRINTW
					PRINTFORML KujiuKujiu、KujiuKujiu
					PRINTFORML Biu、Biu
					PRINTFORML 「啊、这样的话实在是射不出来了吧？」
					PRINTW
				CASE 1
					PRINTFORML 「射出了很多呢。很乖的好孩子」
					PRINTFORML 梅蒂欣犒劳般温柔地抚摸着肉茎…
					PRINTW
				CASE 2
					PRINTFORML 「五ー、四ー、三、二ー、一、零」
					PRINTFORML Duopiu、Duopiupiu
					PRINTW
					PRINTFORML 「好的好好地射出来了呢。很棒呢、%CALLNAME:MASTER%」
					PRINTFORML 梅蒂欣继续夸奖着娇惯着射精后的阴茎…
					PRINTW
				ENDSELECT
			ENDIF
		ELSE
			IF TALENT:MASTER:濃厚精液
				SELECTCASE RAND:3
				CASE 0
					PRINTFORML 「呜哇、这个超级粘稠的啊。真恶心…」
					PRINTFORML 看着%SAMEN_DESCRIPTION(PLAYER,1)%的梅蒂欣皱起了眉头
					PRINTW
				CASE 1
					PRINTFORML 「哇、哇。有什么大量得出来了哇」
					PRINTFORML 「%CSTR:75:81%、是这样子射出来的呀。被吓了一跳哇」
					PRINTW
				CASE 2
					PRINTFORML DuoPu、BiuKuBiuKu、Biulululu
					PRINTFORML 「好厉害好厉害、%CSTR:75:81%射出了好多哇」
					PRINTFORML 梅蒂欣觉得很有意思持续地撸动着绝顶后的肉茎…
					PRINTW
				ENDSELECT
			ELSE
				SELECTCASE RAND:3
				CASE 0
					PRINTFORML 「哇、好厉害。%CSTR:75:81%从前端出来了哇」
					PRINTW
				CASE 1
					PRINTFORML 「………………」
					PRINTFORML 梅蒂欣无言得继续撸动着绝顶后的阴茎…
					PRINTW
				CASE 2
					PRINTFORML 「哇、我的手里好多%CSTR:75:81%黏在上面了呢」
					PRINTFORML 梅蒂欣的手上沾满了%SAMEN_DESCRIPTION(PLAYER,1)%…
					PRINTW
				ENDSELECT
			ENDIF
		ENDIF
	ENDIF
	RETURN 1
ENDIF
RETURN 1

@M_KOJO_MESSAGE_PALAMCNG_A_K75_2(ARG)
CALL PALAM_MESSAGE_A
;-------------------------------------------------
;肛門
;記入チェック（=0, 非表示、1, 表示）
LOCAL = 0
;-------------------------------------------------
IF LOCAL
	PRINTFORMW
	RETURN 1
ENDIF
RETURN 1

@M_KOJO_MESSAGE_PALAMCNG_A_K75_1(ARG)
CALL PALAM_MESSAGE_A
;-------------------------------------------------
;膣内
;記入チェック（=0, 非表示、1, 表示）
LOCAL = 0
;-------------------------------------------------
IF LOCAL
	PRINTFORMW
	RETURN 1
ENDIF
RETURN 1

;-------------------------------------------------
;眠姦射精に関する口上の表示
;一時的にTARGETを口上主に設定している
;-------------------------------------------------

@M_KOJO_MESSAGE_PALAMCNG_A2_K75_0(ARG)
CALL PALAM_MESSAGE_A
;-------------------------------------------------
;避孕套
;記入チェック（=0, 非表示、1, 表示）
LOCAL = 0
;-------------------------------------------------
IF LOCAL
	PRINTFORMW
	RETURN 1
ENDIF
RETURN 1

@M_KOJO_MESSAGE_PALAMCNG_A2_K75_23(ARG)
CALL PALAM_MESSAGE_A
;-------------------------------------------------
;深喉插入
;記入チェック（=0, 非表示、1, 表示）
LOCAL = 0
;-------------------------------------------------
IF LOCAL
	PRINTFORMW
	RETURN 1
ENDIF
RETURN 1

@M_KOJO_MESSAGE_PALAMCNG_A2_K75_7(ARG)
CALL PALAM_MESSAGE_A
;-------------------------------------------------
;足交
;記入チェック（=0, 非表示、1, 表示）
LOCAL = 0
;-------------------------------------------------
IF LOCAL
	PRINTFORMW
	RETURN 1
ENDIF
RETURN 1

@M_KOJO_MESSAGE_PALAMCNG_A2_K75_5(ARG)
CALL PALAM_MESSAGE_A
;-------------------------------------------------
;乳交
;記入チェック（=0, 非表示、1, 表示）
LOCAL = 0
;-------------------------------------------------
IF LOCAL
	PRINTFORMW
	RETURN 1
ENDIF
RETURN 1

@M_KOJO_MESSAGE_PALAMCNG_A2_K75_4(ARG)
CALL PALAM_MESSAGE_A
;-------------------------------------------------
;口交
;記入チェック（=0, 非表示、1, 表示）
LOCAL = 0
;-------------------------------------------------
IF LOCAL
	PRINTFORMW
	RETURN 1
ENDIF
RETURN 1

@M_KOJO_MESSAGE_PALAMCNG_A2_K75_3(ARG)
CALL PALAM_MESSAGE_A
;-------------------------------------------------
;手淫
;記入チェック（=0, 非表示、1, 表示）
LOCAL = 0
;-------------------------------------------------
IF LOCAL
	PRINTFORMW
	RETURN 1
ENDIF
RETURN 1

@M_KOJO_MESSAGE_PALAMCNG_A2_K75_2(ARG)
CALL PALAM_MESSAGE_A
;-------------------------------------------------
;肛門
;記入チェック（=0, 非表示、1, 表示）
LOCAL = 0
;-------------------------------------------------
IF LOCAL
	PRINTFORMW
	RETURN 1
ENDIF
RETURN 1

@M_KOJO_MESSAGE_PALAMCNG_A2_K75_1(ARG)
CALL PALAM_MESSAGE_A
;-------------------------------------------------
;膣内
;記入チェック（=0, 非表示、1, 表示）
LOCAL = 0
;-------------------------------------------------
IF LOCAL
	PRINTFORMW
	RETURN 1
ENDIF
RETURN 1

@M_KOJO_MESSAGE_PALAMCNG_F_K75(ARG)
CALL PALAM_MESSAGE_F
;-------------------------------------------------
;挑逗
;記入チェック（=0, 非表示、1, 表示）
LOCAL = 0
;-------------------------------------------------
IF LOCAL
	PRINTFORMW
	RETURN 1
ENDIF
RETURN 1

path: ERB/口上・メッセージ関連/個人口上/【75】メディスン/M_KOJO_K75_絶頂.ERB


code:
;-------------------------------------------
;刻印取得
;-------------------------------------------
@M_KOJO_MESSAGE_MARKCNG_K75
;このままだと地の文が表示されません
;地の文を表示したい方は、下記のコメントアウトを削除して下さい
;CALL MARK_MESSAGE
;苦痛刻印
IF TFLAG:22 == 1
	PRINTFORMW
ELSEIF TFLAG:22 == 2
	PRINTFORMW
ELSEIF TFLAG:22 == 3
	PRINTFORMW
ENDIF

;時姦刻印
IF TFLAG:時姦刻印取得 == 1
	PRINTFORMW
ELSEIF TFLAG:時姦刻印取得 == 2
	PRINTFORMW
ELSEIF TFLAG:時姦刻印取得 == 3
	PRINTFORMW
ENDIF

;快楽刻印
IF TFLAG:23 == 1
	PRINTFORMW
ELSEIF TFLAG:23 == 2
	PRINTFORMW
ELSEIF TFLAG:23 == 3
	PRINTFORMW
ENDIF

;不埒刻印
;快楽による刻印
;LV1
IF TFLAG:24 == 11
	PRINTFORMW
;LV2
ELSEIF TFLAG:24 == 12
	PRINTFORMW
;LV3
ELSEIF TFLAG:24 == 13
	PRINTFORMW
;屈服、恭順による刻印
;LV1
ELSEIF TFLAG:24 == 31
	PRINTFORMW
;LV2
ELSEIF TFLAG:24 == 32
	PRINTFORMW
;LV3
ELSEIF TFLAG:24 == 33
	PRINTFORMW
ENDIF

;反発刻印
IF TFLAG:21 == 1
	PRINTFORMW
ELSEIF TFLAG:21 == 2
	PRINTFORMW
ELSEIF TFLAG:21 == 3
	PRINTFORMW
ENDIF

repo_name: akadiya/eratw

path: ERB/口上・メッセージ関連/個人口上/【75】メディスン/M_KOJO_K75刻印取得.ERB

license: unknown


code:
eraTheWorld　梅蒂欣・梅蘭可莉口上 ver0.06
作者：すし（小町、極口上作者）
執筆開始日03/08/08
莉莉ス日03/10/17
最終更新日04/02/12

三作目です。前二作にはない機能にチャレンジしてみました
技術のない人类が慣れないことするものじゃないですね
eraTW4.793～4.821+修正＆改良パッチ2.1＆虹剛パッチ1.4環境下で執筆した梅蒂欣口上です
申し訳ないですがバグ発生時は報告お願いします

■謝辞
　=====================================================================================================================
　本口上を作成するに中奖了主に参考にさせていただいた口上・バリアント等
　・諏訪子口上内「祟りCounterシステム」
　・「eratohoЯeverse」内「ぱにめーしょん」
　・eratohoスレ内で助言をくださった皆様
　・最後に、本口上を使用してプレイしてくださった皆様に感謝を。ありがとうございます

■角色コンセプト
　=====================================================================================================================
・原作那般讨厌人类，虽然不会直接打过来但是会警戒你没有原谅你的意思
・碍事的话就用毒杀了就好了，小孩子般的简单想法
・另一方面为了了解敌人，想要从你那里获取人类的知识
・初期对你没兴趣。有兴趣的只是人类
・随之好感度增加感兴趣的会从人类→变成你
・因为的毒人偶、所以身体接触会减体力。諏訪子様の「祟りCounterシステム」が常時発動しているような感じ
・接触越是浓密收到的伤害越多
・随着对你的爱增加对毒的控制能力也会增强
・因为是人偶、没有基本的对应性器
・H的时候没有娇喘。如同死鱼一条般没有反应。只是身体有感觉会湿
・没有爱的时候会观察人类的行为、当爱情越来越深的时候会温柔地注视你舒服的样子
・随着好感度增加（陥落素質取得）と、身体的质感会变化
・失去无知后、H的时候Ｓ的感觉会增强
・恋慕后、罵倒（？）也会完全肯定的感觉。这样子的、像这样的，是什么类型的呢…是雌小鬼？萝莉？妈妈吗？
・「幼稚」化为了虚无
・女你、扶她你は想定していません不会对应女性扶她的主角
・以「任性的公主大人」为印象写的
・虽然很任性、就是耍着小任性享受对方反应的感觉
・小孩子向父母撒娇求抱抱、洗完澡后不换睡衣光着身子在房间里乱跑、的这种感觉
・语气很成熟。虽说幼稚更符合梅蒂欣、但是原作不幼稚所以嘛啊…
・奉仕系写了一堆、性交系现在就正常位、対面座位のみです
■梅蒂欣の毒について
　=====================================================================================================================
　まずはじめに、参考にさせていただいた諏訪子口上作者様に感謝を

・先に述べましたが、諏訪子様の「祟りCounterシステム」とほぼ同じです和青蛙子的时停猥亵口气力tsp那种
・还出生不久、无法完全操控毒的公式設定に準じています
・和青蛙子不同、不仅是時姦、睡姦時だけでなく、即使是通常的「拥抱」等性骚扰也会大量扣体力
・濃密的行為（特别是推倒后）越是做扣得越多
・kiss什么的会发生很不妙的事情请注意
・陷落素质以及爱情经验等积极的状态越增加、减少值就越缓慢变少
・越是爱你就越能控制毒、的这种感觉
・详细的各种看「ユーザー関数」に書かれています

■梅蒂欣のウフフ仕様について
　=====================================================================================================================
・梅蒂欣是人形身体、初期状態只有印度、菊穴、阴道不存在的（这种口上内設定）
・eratenの機械の乙女にさらに制限を加えた状態です有很多限制的状态
・此外、几乎所有行为都没感觉。即使是時止め、睡眠中も同じです
・陥落前如此、陥落後也是如此
・和梅蒂欣进行深度sex、必须要进行一个事件才能让她绝顶
・事件进度会显示在个人资料上面
・没有菊穴吃的东西哪去了？这个问题、是被毒消化了没有行迹的设定
・漫画里（茨歌仙？）有吃綿菓子景象的描写があったと思います
・ウフフ可イベントは書いてて自己もビックリのトンデモ理論のバーゲンセールです

■自分用メモ
　=====================================================================================================================
・梅蒂欣は[幼稚]で[初潮]を迎えていないので、性器が実装されてもすぐには孕まない
・梅蒂欣は[人形]持ちなので、妊娠確率はひじょうに低い（[讓人偶懷孕]で軽減）
・起床時間は6時。就寝時間は21時
	女性器不在（性別のbit0が0）もしくは[幼児／幼児退行][幼稚]で[初潮]未取得で那个ば周期を設定しない
	IF ((TALENT:LOCAL:150 || TALENT:LOCAL:151) && !TALENT:LOCAL:初潮) || !GETBIT(TALENT:LOCAL:性別,0)
		CFLAG:LOCAL:900 = 0
・無知消失の条件
・TARGETが無知かつＨな本読みかつMASTERがTARGETより教養が高くTARGETの教養が2以上かつ五分の一だと無知消失
	SIF !RAND:5 && TALENT:TARGET:無知 && TFLAG:193 >= 6 && TFLAG:193 <= 8 && ABL:MASTER:教養 > ABL:教養 && ABL:教養 >= 2	TFLAG:194 = 2
	EVENTMESSAGE_COM500.ERBの462行目以降参照
・自慰経験が（調教自慰経験より多く）一定以上だと保護者に報告して無知消失
	AFTERTRA.ERBの510行目以降参照

■更新履歴
2022/02/14（ver.0.06）
「今日会っていない」の発生条件と発生間隔を変更
発生そのものをなくしたい場合は
イベント.ERBの3712行目
LOCAL:1 = 1←この1を0（半角）に

2022/01/29（ver.0.05）
料理指令で極の会話部分が移植されたまま改変されていなかったのを削除

2021/11/28（ver.0.04）
梅蒂欣改造イベントで紫を選んだ時、祈願項目に「獣耳を生やす」を追加
時止め中は接吻で愛情経験が入らないように
梅蒂欣改造イベントが何度も発生してしまう不具合を修正
梅蒂欣改造イベント発生条件が誤っていたのを修正
梅蒂欣改造イベントで依頼対象選択が中止できるように（「考えを保留する」の選択肢追加）
おまんこ名付けの時、精液名付けになってしまう不具合とその周りを修正
愛撫時に毒Counterが設定されていなかったのを修正。結果的に陥落前のウフフは厳しくなります
[掃除][牽手][告白][约会帰りの接吻]加筆
[肛門愛撫][掀裙子]加筆

2021/10/20（ver.0.03）
角色介绍部分の修正

2021/10/17（ver.0.02）
指令関連の実行判定に誤りがあったのを修正

2021/10/17（ver.0.01）
とりあえず莉莉ス

■ネタバレ
　=====================================================================================================================
梅蒂欣改造イベント発生条件
・恋慕＆恋人取得、または恋慕もしくは恋人を取得した状態で好感度1万以上、信賴度5000以上
・さらに、以下の４人と面識があり、信賴度が一定値以上に達しているとイベントが発生する
　青娥…信賴度100以上
　愛麗絲…信賴度250以上
　永琳…信賴度750以上
　紫…信賴度1000以上
　誰を選んでも性交が解放されるが、角色によってメリット、デメリットが発生する

毒Counter
・恋人になると消費が0になる。反発がついていても0になる
・恋慕時の減少値は-35だが、その時点でプラス補正も最低15あるので、圍裙付けて「什麼也不做」を200回も連打すれば減少値は0になる（心情が悪い、反発が付いている場合を除く）

path: ERB/口上・メッセージ関連/個人口上/【75】メディスン/readme.txt


path: ERB/口上・メッセージ関連/個人口上/【75】メディスン/ぱにめーしょん/HTML_FUNC/HTML_FUNC _ADD.ERB


path: ERB/口上・メッセージ関連/個人口上/【75】メディスン/ぱにめーしょん/HTML_FUNC/HTML_FUNC.ERB


code: #DIMS CONST HTML_SUBSTITUTE = "【HTML】"

path: ERB/口上・メッセージ関連/個人口上/【75】メディスン/ぱにめーしょん/HTML_FUNC/HTML_FUNC.ERH


code:
@LAYER_TEST
DRAWLINE
PRINTFORML [ 0] LAYER HTMLサンプル      文章本文# の形式
PRINTFORML [-1] 終了
INPUT
SELECTCASE RESULT
	CASE 0
		CALL LAYER_TEST_HTML
	CASE -1
		RETURN
ENDSELECT
RESTART

@LAYER_TEST_HTML
X:0 = 18
Y:0 =  9

X:1 = 32
Y:1 =  9

X:2 = 46
Y:2 =  9

X:3 = 4
Y:3 = 2

LOCALS:0 = 【HTML】
LOCALS:1 = 【HTML】
LOCALS:2 = 【HTML】
LOCALS:4 =
LOCAL = 0
LOCAL:1 = LINECOUNT
LOCAL:2 = 0
DO
REDRAW 0

Z:2 = GETMILLISECOND()
	;半角10スケール
	FOR COUNT, 0, 56*2
		PRINTFORM \@ COUNT%10 == 0 ? * # _ \@
	NEXT
;	PRINTL
	;半角 1スケール
	FOR COUNT, 0, 56*2
		PRINTFORM {COUNT%10,1}
	NEXT
	PRINTL
;	;全角スケール
;	FOR COUNT, 0, 56
;		PRINTFORM {COUNT,2}
;	NEXT
;	PRINTL

; 初期化 (区切り文字を"#"に)
CALL LAYER_INIT("`")

; 大枠

CALL LAYER_SET(@"┏%"━"*54%┓",0,0)
FOR COUNT, 1,39
	CALL LAYER_SET(@"┃`<button value='P'>%"  "*54%</button>`┃",COUNT,0)
NEXT
CALL LAYER_SET(@"<button value='P'>全画面ボタン</button>",19,50)
CALL LAYER_SET(@"┗%"━"*54%┛",39,0)

; 情報画面

CALL LAYER_SET(@"┏━━━━━┓",Y:3 + 0,X:3)
CALL LAYER_SET(@"┃`%HTML_SETTAG( LOCALS:LOCAL , @"選択NO.{LOCAL}  " )%`┃",Y:3 + 1,X:3)
CALL LAYER_SET(@"┃ X:{X:LOCAL,2} Y:{Y:LOCAL,2}┃",Y:3 + 2,X:3)
CALL LAYER_SET(@"┃描画速度  ┃",Y:3 + 3,X:3)
CALL LAYER_SET(@"┃%@"{Z:1}",7%/ms┃",Y:3 + 4,X:3)
CALL LAYER_SET(@"┃ループ速度┃",Y:3 + 5,X:3)
CALL LAYER_SET(@"┃`%LAYER_CBAR(LOCAL:2,10,10,UNICODE(0x2584),UNICODE(0x2584),0xFFFF00,0x606060)%`┃",Y:3 + 6,X:3)
CALL LAYER_SET(@"┃%@"{Z:3}",7%/ms┃",Y:3 + 7,X:3)
CALL LAYER_SET(@"┃TINPUT速度┃",Y:3 + 8,X:3)
CALL LAYER_SET(@"┃%@"{Z:5}",7%/ms┃",Y:3 + 9,X:3)
CALL LAYER_SET(@"┃差        ┃",Y:3 + 10,X:3)
CALL LAYER_SET(@"┃%@"{Z:3-Z:5}",7%/ms┃",Y:3 + 11,X:3)
CALL LAYER_SET(@"┗━━━━━┛",Y:3 + 12,X:3)

; レイヤ0
CALL LAYER_SET(@"┏━━━━━┓",Y:0 + 0,X:0)
CALL LAYER_SET(@"┃`%HTML_SETTAG(LOCALS:0,"あいうえお")%`┃",Y:0 + 1,X:0)
CALL LAYER_SET(@"┃`%HTML_SETTAG(LOCALS:0,"かきくけこ")%`┃",Y:0 + 2,X:0)
CALL LAYER_SET(@"┃`%HTML_SETTAG(LOCALS:0,"さしすせそ")%`┃",Y:0 + 3,X:0)
CALL LAYER_SET(@"┃`%HTML_SETTAG(LOCALS:0,"たちつてと")%`┃",Y:0 + 4,X:0)
CALL LAYER_SET(@"┗━━━━━┛",Y:0 + 5,X:0)

; レイヤ1
CALL LAYER_SET(@"┏━━━━━┓",Y:1 + 0,X:1)
CALL LAYER_SET(@"┃`%HTML_SETTAG(LOCALS:1,"なにぬねの")%`┃",Y:1 + 1,X:1)
CALL LAYER_SET(@"┃`%HTML_SETTAG(LOCALS:1,"はひふへほ")%`┃",Y:1 + 2,X:1)
CALL LAYER_SET(@"┃`%HTML_SETTAG(LOCALS:1,"まみむめも")%`┃",Y:1 + 3,X:1)
CALL LAYER_SET(@"┃`%HTML_SETTAG(LOCALS:1,"や　ゆ　よ")%`┃",Y:1 + 4,X:1)
CALL LAYER_SET(@"┗━━━━━┛",Y:1 + 5,X:1)

; レイヤ2
CALL LAYER_SET(@"┏━━━━━┓",Y:2 + 0,X:2)
CALL LAYER_SET(@"┃`%HTML_SETTAG(LOCALS:2,"らりるれろ")%`┃",Y:2 + 1,X:2)
CALL LAYER_SET(@"┃`%HTML_SETTAG(LOCALS:2,"わ　を　ん")%`┃",Y:2 + 2,X:2)
CALL LAYER_SET(@"┃`%HTML_SETTAG(LOCALS:2,"１２３４５")%`┃",Y:2 + 3,X:2)
CALL LAYER_SET(@"┃`%HTML_SETTAG(LOCALS:2,"６７８９０")%`┃",Y:2 + 4,X:2)
CALL LAYER_SET(@"┗━━━━━┛",Y:2 + 5,X:2)

CALL LAYER_SET(@"8426で移動、0で対象変更、-で抜け", 39,  70)

Z = GETMILLISECOND()
CALL LAYER_PRINT(,40)
Z:1 = GETMILLISECOND() - Z

Z:4 = GETMILLISECOND()
TONEINPUTS 100,"",0
;ONEINPUTS
Z:5 = GETMILLISECOND() - Z:4
Z:6 = 100 - Z:5
CLEARLINE 1
;SIF Z:5 < 100
;	TWAIT (Z:6), 1
SELECTCASE RESULTS
	CASE "8"
		SIF Y:LOCAL > 1
			Y:LOCAL -= 1
	CASE "6"
		SIF X:LOCAL < 96
			X:LOCAL += 2
	CASE "4"
		SIF X:LOCAL >= 4
			X:LOCAL -= 2
	CASE "2"
		SIF Y:LOCAL < 33
			Y:LOCAL += 1
	CASE "0"
		LOCAL += 1
		SIF LOCAL > 2
			LOCAL = 0
	CASE "P"
		; 全画面ボタンテスト
		CALL FLASHTEST
	CASE "-"
		RETURN
ENDSELECT
$DO_LOOP
CLEARLINE LINECOUNT - LOCAL:1
LOCAL:2 = LOCAL:2 == 10 ? 0 # LOCAL:2 +1
Z:3 = GETMILLISECOND() - Z:2
LOOP 1

@FLASHTEST
FOR COUNT,0,200
	SETBGCOLOR GETDEFBGCOLOR()
	IF COUNT % 100 == 0
		SETBGCOLOR 0x606060
		TWAIT 100,1
	ENDIF
NEXT
SETBGCOLOR GETDEFBGCOLOR()

path: ERB/口上・メッセージ関連/個人口上/【75】メディスン/ぱにめーしょん/LAYER/LAYER_SAMPLE.ERB


code:
;===============================================================================
;
;	LAYER関連関数群
;
;===============================================================================
;	文字列を狙った座標に、指定した色とフォントで、ボタン化も可能で、
;	何枚でも破綻なく重ねられて、そこそこ重い関数
;-------------------------------------------------------------------------------
;	例：	CALL LAYER_INIT, "`"
;			CALL LAYER_SET, @"あ`<font color='#ff0000'>な</font>`た`",Y,X
;			CALL LAYER_PRINT,0,40
;
;	この例だとX,Y座標のところに"你"("な"は赤色で"た"は明朝で)表示される
;	レイヤ機能がメインなのでかなり重ねられる(座標がかぶっても大丈夫)
;	とりあえずY行は50行、Xのブロック数は100まで対応、同名のERH参照のこと。
;
;	表示は次の関数 LAYER_PRINTを使用
;	例：	CALL LAYER_PRINT,開始行,終了行
;-------------------------------------------------------------------------------
;	■偉大なるN鳥さん作成のSET_PICTURE  の改変版です
;
;	■SET_PICTURE関数実行後		→	なにこれすげぇ…(驚愕)
;	　SET_PICTURE.ERB開いてみて	→	なにこれすげぇ…(困惑)
;
;	■文字列の仕様はHTML_PRINT方式に変更  →  高速化

;	■注意
;	　レイヤーで重ねるときには、同じ一つのネストの中に
;	　タグで区切られた本文が複数入ることのないように工夫してください
;	　分割した際、内部的に一つのネストの中に複数同じタグが生成されてしまった場合
;	　重ねたときに破綻します（以下NEST_SEPARATOR = ` )
;														  ↓本文1      ↓本文2
;	　	具体例：	<button value='A'>うんこ</red>もれそう</button>`
;
;	　上の例の場合、重ねるときの文字列分割時、内部的には强行こう解釈する
;	　退避するTAG = <button value='A'>【HTML】</red>【HTML】</button>`
;	　TOPLAINTEXT = うんこもれそう
;	　さらに合成で、
;	　<button value='A'>うんこもれそう</red>うんこもれそう</button>`
;
;	　同じネストの中に本文が二重になっているので合成した時に多重化し、
;	　文字数も代入時は全角*7の14で、返り値は倍の28と正常ではなくなるので破綻
;
;	　	正解例：	<button value='A'>うんこ</red></button>`<button value='A'>もれそう</button>`
;
;	　重ねることを考えないなら坦率に一番上の例で通るのでそのままどうぞ
;	　問題が発生するのはあくまで重ねたときに分割合成が発生した場合のみで候
;
;	■当然ライセンスフリー
;
;===============================================================================
;
;	Edit	Date			Author					Reason
;	001		201X/XX/XX		Crow					新規作成
;	001		2014/07/05		Ｎ鳥					<shape>機能に対応
;_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/#

;

;-------------------------------------------------------------------------------
;	LAYER_INIT
;-------------------------------------------------------------------------------
;	LAYER_SETで保存されているログを削除し、区切り文字を設定する関数
;	実はLAYER_SETに引数を何も入れないでCALLすることでここに来るが
;	区切り文字は ` になる。変更したい場合は面倒がらずに直接よぼう
;
;	実際のところ区切り文字で例外なくぶった切るんで、默认のままか
;	二文字使用なり、マルチバイト文字使用なり、うにこーど使用なりで
;	行中に出現する可能性のある文字は避けたほうが無難
;	默认の ` はSHIFT+@で出るんで楽なうえ、
;	構文解釈の意味でも本文に使用にも用途が無いのでオススメ
;
;===============================================================================
@LAYER_INIT, ARGS = "`" , ARG = 0 , ARG:1 = -1
SIF ARG:1 == -1
	ARG:1 = VARSIZE("LAYER_LOG")
VARSET LAYER_LOG , "" , ARG , ARG:1
NEST_SEPARATOR = %ARGS%
RETURN RESULT

;-------------------------------------------------------------------------------
;	LAYER_SET
;-------------------------------------------------------------------------------
;	レイヤにセット、使い方は上記
;===============================================================================
;		    入力,	  Y行,  表示座標X
@LAYER_SET , ARGS , ARG = 0 , XPOINT = -1
#LOCALSIZE 3
#LOCALSSIZE 10

#DIMS L_RESULTS , 10
#DIM LCOUNT , 2

#DIM XPOINT,1			; X指定座標
#DIM XCOUNT,1			; それまでの文字数のX座標
#DIM INSSTRLEN,1		; それまでの文字列数の総数
#DIM NOWSTRLEN,1		; 今回の文字列数

#DIM BLOCKNUM,1			; ブロック数
#DIM FIRSTBLOCK,1		; 分割開始するブロック位置
#DIM LASTBLOCK,1		; 分割終了するブロック位置

#DIMS NOWBLK,1			; 現在的ブロック
#DIMS LFTSTR,2			; 分割挿入する際の左側の文字列
#DIMS NOWSTR,1			; 現在的文字列
#DIMS RGTSTR,2			; 分割挿入する際の右側の文字列
#DIMS NOWBLKPROP,1		; 分割時のブロック属性の一時退避場所

#DIM CUTLFT,1			; LFTSTRの分割まで何文字？
#DIM CUTRGT,1			; RGTSTRの分割まで何文字？

LOCAL = RESULT

IF ARGS == "" && ARG == 0 && XPOINT == -1
	CALL LAYER_INIT
	RETURN LOCAL
ENDIF
; 区切り記号の挿入
ARGS += NEST_SEPARATOR
;imgとshapeは問答無用でNEST_SEPARATERを使って別ブロックへ隔離
ARGS '= REPLACE(ARGS , "()" , NEST_SEPARATOR + "$1" + NEST_SEPARATOR)
ARGS '= REPLACE(ARGS , "(<shape.+?>)" , NEST_SEPARATOR + "$1" + NEST_SEPARATOR)

;NEST_SEPARATERが二つ以上重なって空になっているブロックは削除
ARGS '= REPLACE(ARGS ,  NEST_SEPARATOR + "+" , NEST_SEPARATOR)

; XPOINTの指定がない = ログ指定行の末尾に直接追加
IF XPOINT == -1
	LAYER_LOG:ARG += ARGS
; XPOINTの指定があるよ
ELSE
	; XPOINTの指定はあるがログは空  = XPOINTまで半スペを放り込んで追加
	IF LAYER_LOG:ARG == ""
		SIF XPOINT > 0
			LAYER_LOG:ARG = %" " * XPOINT + NEST_SEPARATOR%
		LAYER_LOG:ARG += ARGS

	; XPOINTの指定があってログもすでにある
	ELSE
		; 初期変数設定
		FIRSTBLOCK = -1
		LASTBLOCK = -1
		XCOUNT = 0
		LFTSTR =
		RGTSTR =
		; LAYER_TMPにARGSをブロックごとに分割して退避
		VARSET LAYER_TMP
		SPLIT ARGS , NEST_SEPARATOR , LAYER_TMP
		LOCAL:1 = RESULT
		;----- 全ブロックの文字列部分の文字数総数 --------------------
			INSSTRLEN = 0
			FOR LCOUNT , 0 , LOCAL:1+1
				SIF LAYER_TMP:LCOUNT == ""
					CONTINUE
				INSSTRLEN += LAYER_STRLENS(LAYER_TMP:LCOUNT)
			NEXT
		;-------------------------------------------------------------
		; LAYER_TMPにログから今回の行をブロックごとに分割して退避
		VARSET LAYER_TMP
		SPLIT LAYER_LOG:ARG , NEST_SEPARATOR , LAYER_TMP
		;何ブロックあるの？ (1ブロックは確定)
		BLOCKNUM = RESULT

		FOR LCOUNT, 0, BLOCKNUM + 1
			; NOWBLKにこのブロックを入れる
			NOWBLK = %LAYER_TMP:LCOUNT%
			; NOWSTRにこのブロックの本文だけを入れる
			NOWSTR = %HTML_TOPLAINTEXT(NOWBLK)%
			; このブロックの本文の文字数
			;NOWSTRLEN = STRLENS(NOWSTR)
			NOWSTRLEN = LAYER_STRLENS(NOWBLK)
			; 今回のブロックが空の場合は基本的には飛ばし
			IF NOWBLK == ""
				; ブロック分割をしていないのに最終ブロックまできちゃった
				IF (FIRSTBLOCK == -1) && (LCOUNT == BLOCKNUM)
					; 空白だがXPOINT指定があるため、XPOINTまでXCOUNT分の半スペで埋める
					LFTSTR += @"%" " * (XPOINT - XCOUNT) + NEST_SEPARATOR%"
				ENDIF
				CONTINUE
			ENDIF

		; ---- 分割ブロック未確定 ----------------------------------------------
			IF FIRSTBLOCK == -1
				;これまでの文字列の文字数+今回の文字列の長さがXPOINTよりも長い場合、そのブロックの途中から挿入を開始する
				IF ( XCOUNT + NOWSTRLEN ) > XPOINT
					;分割する位置を特定
					CUTRGT = ( XPOINT - XCOUNT )
					FIRSTBLOCK = LCOUNT

					; CUTRGT+INSSTRLENの長さが今回の文字列の長さより小さい場合、このブロックで完結する
					IF ( CUTRGT + INSSTRLEN ) <= NOWSTRLEN
						CUTLFT = CUTRGT + INSSTRLEN
						LASTBLOCK = LCOUNT

						; ---- 当該ブロックの文字列を二つに分割 ----------------
							;imgの場合とshapeの場合とそうでない場合で分岐
							IF STRFIND(NOWBLK , "<shape") > -1
								;図形内への挿入処理
								;この場合、1タグで単独のブロックを形成しているはず
								;paramの中身を取得する
								SPLIT NOWBLK , "param='" , LOCALS
								SPLIT LOCALS:1 , "'" , LOCALS
								IF STRFIND(LOCALS , ",") > -1
									;LOCALSを更に分ける
									SPLIT LOCALS , "," , L_RESULTS
									;分けた後の幅を決定し、LOCALS:1～2とLOCAL:1～2に入れる
									LOCALS:1 '= TOSTR(CUTRGT * 50) , TOSTR((NOWSTRLEN - CUTLFT) * 50)
									LOCAL:1 = TOINT(LOCALS:1) , TOINT(LOCALS:2)
									;他の要素(X,Y,width)と合流
									LOCALS:1 = %L_RESULTS%,%L_RESULTS:1%,%LOCALS:1%,%L_RESULTS:3%
									LOCALS:2 = %L_RESULTS%,%L_RESULTS:1%,%LOCALS:2%,%L_RESULTS:3%
								ELSE
									;分けた後の幅を決定し、LOCALS:1～2とLOCAL:1～2に入れる
									LOCALS:1 '= TOSTR(CUTRGT * 50) , TOSTR((NOWSTRLEN - CUTLFT) * 50)
									LOCAL:1 = TOINT(LOCALS:1) , TOINT(LOCALS:2)
								ENDIF
								;NOWBLKのparam部分の要素をLOCALS:1とLOCALS:2に置換して左右に分ける
								LFTSTR += REPLACE(NOWBLK , "(param=').+?(')" , "$1" + " " + LOCALS:1 + "$2") + NEST_SEPARATOR
								SIF LOCAL:2 > 0
									RGTSTR '= REPLACE(NOWBLK , "(param=').+?(')" , "$1" + " " + LOCALS:2 + "$2") + NEST_SEPARATOR
							ELSEIF STRFIND(NOWBLK , " -1
								;画像内への挿入処理
								;画像は全て2文字分として扱うので、この場合画像を丸ごと上書きする2文字分か半分だけ上書きする1文字分
								;1文字分の場合だけ、前か頭に半スぺを入れる
								SIF CUTRGT == 1
									LFTSTR += " " + NEST_SEPARATOR
								SIF CUTRGT == 0 && INSSTRLEN == 1
									RGTSTR '= " " + NEST_SEPARATOR
							ELSE

								;フォントや色の情報を保存
								NOWBLKPROP = %HTML_TOTAGTEXT(NOWBLK)%

								;通常のタグ文の挿入処理
								; 左側は0～CUTRGTまで
								LFTSTR:1 = %SUBSTRING(NOWSTR , 0 , CUTRGT)%
								; 全角文字の途中から削ろうとした際、ズレ防止のために左側の最後の一文字を半スペに変換する
								SIF STRLENS(LFTSTR:1) > CUTRGT
									LFTSTR:1 = %SUBSTRING(LFTSTR:1 , 0 , STRLENS(LFTSTR:1) - 2) + " "%
								; 退避したフォントや色の情報を戻す
								SIF LFTSTR:1 != "" && NOWBLKPROP != ""
									LFTSTR:1 = %HTML_SETTAGTEXT(LFTSTR:1 , NOWBLKPROP)%

								; 右側はCUTLFT～文字列の最後まで
								RGTSTR:1 = %SUBSTRING(NOWSTR , CUTLFT)%
								; 全角文字の途中までを削ろうとした際、ズレ防止のために右側の最初の一文字を半スペに変換する
								SIF NOWSTRLEN > CUTLFT + STRLENS(RGTSTR:1)
									RGTSTR:1 = %" " + SUBSTRING(RGTSTR:1, 0 , STRLENS(RGTSTR:1))%
								; 退避したフォントや色の情報を戻す
								SIF RGTSTR:1 != "" && NOWBLKPROP != ""
									RGTSTR:1 = %HTML_SETTAGTEXT(RGTSTR:1 , NOWBLKPROP)%

								LFTSTR += LFTSTR:1 + NEST_SEPARATOR
								RGTSTR = %RGTSTR:1 + NEST_SEPARATOR%
							ENDIF
						; ------------------------------------------------------

					; そうでなければ終了位置を尋找為に继続
					ELSE
						CUTLFT = INSSTRLEN - (NOWSTRLEN - CUTRGT)
						XCOUNT += NOWSTRLEN

						;imgの場合とshapeの場合とそうでない場合で分岐
						IF STRFIND(NOWBLK , "<shape") > -1
							;図形内への挿入処理
							;この場合、1タグで単独のブロックを形成しているはず
							;paramの中身を取得する
							SPLIT NOWBLK , "param='" , LOCALS
							SPLIT LOCALS:1 , "'" , LOCALS
							IF STRFIND(LOCALS , ",") > -1
								;LOCALSを更に分ける
								SPLIT LOCALS , "," , L_RESULTS
								;分けた後の幅を決定し、LOCALS:1に入れる
								LOCALS:1 '= TOSTR(CUTRGT * 50)
								;他の要素(X,Y,width)と合流
								LOCALS:1 = %L_RESULTS%,%L_RESULTS:1%,%LOCALS:1%,%L_RESULTS:3%
							ELSE
								;分けた後の幅を決定し、LOCALS:1に入れる
								LOCALS:1 '= TOSTR(CUTRGT * 50)
							ENDIF
							;NOWBLKのparam部分の要素をLOCALS:1とLOCALS:2に置換して左右に分ける
							LFTSTR += REPLACE(NOWBLK , "(param=').+?(')" , "$1" + " " + LOCALS:1 + "$2") + NEST_SEPARATOR
						ELSEIF STRFIND(NOWBLK , " -1
							;画像内への挿入処理
							;画像は全て2文字分として扱うので、この場合画像を丸ごと上書きする2文字分か半分だけ上書きする1文字分
							;1文字分の場合だけ、前か頭に半スぺを入れる
							SIF CUTRGT == 1
								LFTSTR += " " + NEST_SEPARATOR
						ELSE

							; CUTRGTより右の文字列は削る
							NOWSTR = %SUBSTRING(NOWSTR , 0 , CUTRGT)%
							NOWSTRLEN = STRLENS(NOWSTR)
							; 全角文字の途中から削ろうとした際、ズレ防止のために左側の最後の一文字を半スペに変換する
							IF NOWSTRLEN > CUTRGT
								NOWSTR = %SUBSTRING(NOWSTR , 0 , NOWSTRLEN - 2) + " "%
								XCOUNT -= 1
							ENDIF
							NOWBLKPROP = %HTML_TOTAGTEXT(NOWBLK)%
							IF NOWBLKPROP != "" && NOWSTR != ""
								LFTSTR = %LFTSTR + HTML_SETTAGTEXT(NOWSTR , NOWBLKPROP) + NEST_SEPARATOR%
							ELSE
								LFTSTR = %LFTSTR + NOWSTR + NEST_SEPARATOR%
							ENDIF
						ENDIF
					ENDIF

				; XPOINTまで届かなかった場合、XPOINT-XCOUNT分の空白を追加
				ELSEIF LCOUNT == BLOCKNUM
					LFTSTR += @"%" " * (XPOINT - XCOUNT) + NEST_SEPARATOR%"
				;まだ開始ブロックを見つけていない場合は次のブロックへ
				ELSE
					XCOUNT += NOWSTRLEN
					LFTSTR += NOWBLK + NEST_SEPARATOR
				ENDIF
		; ---- 分割終了ブロック未確定-------------------------------------------
			ELSEIF LASTBLOCK == -1
				; CUTLFTがこの文字列の長さ以下でないと削れないJK
				IF CUTLFT <= NOWSTRLEN
					LASTBLOCK = LCOUNT

					;imgの場合とshapeの場合とそうでない場合で分岐
					IF STRFIND(NOWBLK , "<shape") > -1
						;図形内への挿入処理
						;この場合、1タグで単独のブロックを形成しているはず
						;paramの中身を取得する
						SPLIT NOWBLK , "param='" , LOCALS
						SPLIT LOCALS:1 , "'" , LOCALS
						IF STRFIND(LOCALS , ",") > -1
							;LOCALSを更に分ける
							SPLIT LOCALS , "," , L_RESULTS
							;分けた後の幅を決定し、LOCALS:1～2とLOCAL:1～2に入れる
							LOCALS:2 '= TOSTR((NOWSTRLEN - CUTLFT) * 50)
							;他の要素(X,Y,width)と合流
							LOCALS:2 = %L_RESULTS%,%L_RESULTS:1%,%LOCALS:2%,%L_RESULTS:3%
						ELSE
							;分けた後の幅を決定し、LOCALS:1～2とLOCAL:1～2に入れる
							LOCALS:2 '= TOSTR((NOWSTRLEN - CUTLFT) * 50)
						ENDIF
						RGTSTR '= REPLACE(NOWBLK , "(param=').+?(')" , "$1" + " " + LOCALS:2 + "$2") + NEST_SEPARATOR
					ELSEIF STRFIND(NOWBLK , " -1
						;画像内への挿入処理
						;画像は全て2文字分として扱うので、この場合画像を丸ごと上書きする2文字分か半分だけ上書きする1文字分
						;1文字分の場合だけ、前か頭に半スぺを入れる
						SIF CUTRGT == 0 && INSSTRLEN == 1
							RGTSTR '= " " + NEST_SEPARATOR
					ELSE

						; CUTLFTよりも左を削る
						NOWSTR = %SUBSTRING(NOWSTR , CUTLFT)%
						NOWSTRLEN = STRLENS(NOWSTR)
						; 全角文字の途中までを削ろうとした際、ズレ防止のために右側の最初の一文字を半スペに変換する
						SIF STRLENS(HTML_TOPLAINTEXT(NOWBLK)) > CUTLFT + NOWSTRLEN
							NOWSTR = %" " + SUBSTRING( NOWSTR, 0, NOWSTRLEN )%
						; RGTSTRに今回削ったものを代入
						NOWBLKPROP = %HTML_TOTAGTEXT(NOWBLK)%
						IF NOWBLKPROP != "" && NOWSTR != ""
							RGTSTR = %HTML_SETTAGTEXT(NOWSTR, NOWBLKPROP) + NEST_SEPARATOR%
						ELSE
							RGTSTR = %NOWSTR + NEST_SEPARATOR%
						ENDIF
					ENDIF
				; CUTLFTを丸める
				ELSE
					CUTLFT -= NOWSTRLEN
				ENDIF
		; ---- 削らない --------------------------------------------------------
			ELSE
				;後はRGTSTRに残りを追加していく
				RGTSTR += NOWBLK + NEST_SEPARATOR
			ENDIF
		NEXT
	; ------------------------------------------------------------------------
		LAYER_LOG:ARG = % LFTSTR + ARGS + RGTSTR %
	ENDIF
ENDIF
RETURN LOCAL

;-------------------------------------------------------------------------------
;	LAYER_PRINT
;-------------------------------------------------------------------------------
;	例：	CALL LAYER_PRINT, 0, 40
;
;	0行目から40行目までLAYER_SETでセットされたレイヤを重ねて表示させる
;===============================================================================
;			表示開始行	終了行
@LAYER_PRINT, ARG = 0, ARG:1 = -1
#LOCALSIZE 2
#LOCALSSIZE 1
LOCAL:1 = RESULT
; 終了行が未指定の場合、ログのうち何行まで文字列が入っているかを取得
IF ARG:1 == -1
	FOR LOCAL, 0, VARSIZE("LAYER_LOG")
		SIF LAYER_LOG:LOCAL != ""
			ARG:1 = LOCAL
	NEXT
	ARG:1 += 1
ENDIF
; 各行ごと
FOR LOCAL , ARG , (ARG + ARG:1)
	LOCALS = %REPLACE(LAYER_LOG:LOCAL,NEST_SEPARATOR,"")%
	IF LOCALS != ""
		HTML_PRINT LOCALS
	ELSE
		PRINTL
	ENDIF
NEXT
RETURN LOCAL:1

;-------------------------------------------------------------------------------
;	カラーバーのLAYER対応版
;-------------------------------------------------------------------------------
;	例  %LAYER_CBAR(BASE:0,MAXBASE:0,10,UNICODE(0x2584),UNICODE(0x2584),GETCOLOR(),0x404040)%
;===============================================================================
;	引数は頭三つはBARとほぼ一緒 + ARGSで描写文字の変更が可能(指定しない場合はBARと同じ仕様)
;	ただし、前後の[]は省かれます
;	ARG:3 = バーの色(0xFFFFFF形式で指定)  ARG:4 = バーの背景色(0xFFFFFF形式で指定)
@LAYER_CBAR(ARG, ARG:1, ARG:2, ARGS = "*", ARGS:1 = ".", ARG:3 = 0xC0C0C0, ARG:4 = 0x404040)
#FUNCTIONS
#LOCALSIZE 3
#LOCALSSIZE 2
VARSET LOCAL
VARSET LOCALS
LOCAL:1 = ARG * ARG:2 / ARG:1
FOR LOCAL, 1, ARG:2 + 1
	IF LOCAL:1 >= LOCAL
		; 最初の一度のみ色変えるよフラグ1
		SIF !GETBIT(LOCAL:2, 1)
			SETBIT LOCAL:2, 1
		LOCALS:0 += ARGS
	ELSE
		; 最初の一度のみ色変えるよフラグ2
		SIF !GETBIT(LOCAL:2, 2)
			SETBIT LOCAL:2, 2
		LOCALS:1 += ARGS:1
	ENDIF
NEXT
SIF GETBIT(LOCAL:2, 1)
	LOCALS:0 = %HTML_ADDFONTTAG( LOCALS:0 , TOSTR(ARG:3) )%
SIF GETBIT(LOCAL:2, 2)
	LOCALS:1 = %HTML_ADDFONTTAG( LOCALS:1 , TOSTR(ARG:4) )%
RETURNF LOCALS + NEST_SEPARATOR + LOCALS:1

@LAYER_DRAWLINE, ARG, ARGS = "-"
CALL LAYER_SET, LAYER_DRAWLINEFORM(ARGS), ARG, 0
RETURN RESULT

@LAYER_DRAWLINEFORM(ARGS,ARG)
#FUNCTIONS
RETURNF ARGS * (STRLENS(DRAWLINESTR) / STRLENS(ARGS))

;-------------------------------------------------------------------------------
;	カラーバーのRECT対応版
;-------------------------------------------------------------------------------
;	例  %LAYER_CBAR(BASE:0,MAXBASE:0,10,UNICODE(0x2584),UNICODE(0x2584),GETCOLOR(),0x404040)%
;===============================================================================
;	引数は頭三つはBARとほぼ一緒 + ARGSで描写文字の変更が可能(指定しない場合はBARと同じ仕様)
;	ただし、前後の[]は省かれます
;	ARG:3 = バーの色(0xFFFFFF形式で指定)  ARG:4 = バーの背景色(0xFFFFFF形式で指定)
;-------------------------------------------------------------------------------
@LAYER_RECTBAR(ARG, ARG:1, MAX_LENGTH, COLOR = 0xC0C0C0, COLOR:1 = 0x404040, BCOLOR = -1, BCOLOR:1 = -1, HEIGHT = 100, L_X = 0, L_Y = -1)
#FUNCTIONS
#LOCALSIZE 3
#LOCALSSIZE 2
#DIM CONST FONT_SIZE = 16
#DIM MAX_LENGTH
#DIM COLOR, 2
#DIM BCOLOR, 2
#DIMS COLORS, 2
#DIMS BCOLORS, 2
#DIM LENGTH, 2
#DIM L_X
#DIM L_Y
#DIM HEIGHT
SIF BCOLOR == -1
	BCOLOR = GETBGCOLOR()
SIF BCOLOR:1 == -1
	BCOLOR:1 = GETBGCOLOR()
;中央に揃える
SIF L_Y == -1
	L_Y = (100 - HEIGHT) / 2
COLORS '= "#" + CONVERT(COLOR,16)
COLORS:1 '= "#" + CONVERT(COLOR:1, 16)
BCOLORS '= "#" + CONVERT(BCOLOR, 16)
BCOLORS:1 '= "#" + CONVERT(BCOLOR:1, 16)
VARSET LOCAL
VARSET LOCALS
MAX_LENGTH *= 100
LENGTH = ARG * MAX_LENGTH / ARG:1 + (ARG * MAX_LENGTH % ARG:1 > 0)
LENGTH:1 = MAX_LENGTH - LENGTH
IF LENGTH
	LOCALS =<shape type='rect' param = '{L_X}, {L_Y}, {LENGTH}, {HEIGHT}' color= '%COLORS%' bcolor= '%BCOLORS%'>
ELSE
	LOCALS =
ENDIF
IF LENGTH:1
	LOCALS:1 = <shape type='rect' param = '{L_X}, {L_Y}, {LENGTH:1}, {HEIGHT}' color= '%COLORS:1%' bcolor= '%BCOLORS:1%'>
ELSE
	LOCALS:1 =
ENDIF
RETURNF LOCALS + LOCALS:1

;	LAYER_STRLENS
;-------------------------------------------------------------------------------
;	ARGSに渡された文字列がHTML_PRINT上で何文字使用かをカウントする
;	ただし、imgは2文字として扱い、shapeはフォント幅50%毎に半角1文字としてカウントする
;===============================================================================
;				表示開始行	終了行
@LAYER_STRLENS, ARGS
#FUNCTION
#DIM INSSTRLEN
#LOCALSIZE 2
#LOCALSSIZE 3
SWAP LOCAL:1 , RESULT
;平文の文字数をカウント
INSSTRLEN = STRLENS( HTML_TOPLAINTEXT(ARGS))
;img・shapeの文字数をカウント
HTML_TAGSPLIT ARGS
FOR LOCAL , 0 , RESULT
	IF STRFIND(RESULTS:LOCAL , " -1
		INSSTRLEN += 2
	ELSEIF STRFIND(RESULTS:LOCAL , "<shape") > -1
		SPLIT RESULTS:LOCAL , "param='" , LOCALS
		SPLIT LOCALS:1 , "'" , LOCALS
		IF STRFIND(LOCALS , "," ) > -1
			SPLIT LOCALS , "," , LOCALS
			INSSTRLEN += TOINT(REPLACE(LOCALS:2 , " " , ""))/50
		ELSE
			INSSTRLEN += TOINT(REPLACE(LOCALS , " " , ""))/50
		ENDIF
	ENDIF
NEXT
SWAP LOCAL:1 , RESULT
RETURNF INSSTRLEN

;---- EDIT 016 ADD END   -------------------------

;-------------------------------------------------------------------------------
;	LAYER_REFRESH
;-------------------------------------------------------------------------------
;	例：	CALL LAYER_REFRESH, 0, 40
;
;	G_LINEに記憶された行数まで画面を一度消し、
;	指定された行数までLAYER_SETでセットされたレイヤを重ねて表示させ、
;	WAITANYKEYで入力受付状態にする
;===============================================================================
;				表示開始行	終了行
@LAYER_REFRESH, ARG = 0, ARG:1 = -1
#LOCALSIZE 2
#LOCALSSIZE 1
CLEARLINE LINECOUNT - G_LINE
CALL LAYER_PRINT , ARG , ARG:1
WAITANYKEY

path: ERB/口上・メッセージ関連/個人口上/【75】メディスン/ぱにめーしょん/LAYER/SYSTEM_LAYER.ERB


code:
#DIMS LAYER_LOG , 100
#DIMS LAYER_TMP , 100
#DIM G_LINE

path: ERB/口上・メッセージ関連/個人口上/【75】メディスン/ぱにめーしょん/LAYER/SYSTEM_LAYER.ERH


path: ERB/口上・メッセージ関連/個人口上/【75】メディスン/ぱにめーしょん/LAYER/SYSTEM_LAYER_ADD.ERB


code: #DIMS LAYER_BUTTON , 1

path: ERB/口上・メッセージ関連/個人口上/【75】メディスン/ぱにめーしょん/LAYER/SYSTEM_LAYER_ADD.ERH


code:
;≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
;文字列表示・アニメーション関数ファイル「ぱにめーしょん」0527版
;文字色設定や文字列のビジュアル・アニメ表示に特化した関数ファイルです。
;このファイル単独で利用できますが、旧ぱんくしょん其他との関数名被りにはご注意ください
;たぶん、たいていのバリアントにそのまま入れて動作するはずです
;≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡

;≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
;＠色操作系関数
;色の取出しや変換を行う基本関数。
;同梱の関数から呼ばれたり、呼ぶ時に使用と便利だったり。
;≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡

;-------------------------------------------------
;RGB色指定関数@RGBCOLOR
;	引数0：Ｒ輝度（0～255）
;	引数1：Ｇ輝度（0～255）
;	引数2：Ｂ輝度（0～255）
;
;式中で使用する関数です。引数0～3でRGBを指定すると、16進（0xRRGGBB）にして返します
;
;念のため必要なビットしか見ないように。COLOR_FROMRGB式中関数が復活したので置き換え@revkoishi(14/04/28)
;-------------------------------------------------
@RGBCOLOR(ARG:0, ARG:1, ARG:2)
#FUNCTION
;RETURNF (65536*ARG)+(256*ARG:1)+ARG:2
;RETURNF (ARG:0 & 0xFF) << 16 | (ARG:1 & 0xFF) << 8 | (ARG:2 & 0xFF)
RETURNF COLOR_FROMRGB(ARG:0 & 0xFF, ARG:1 & 0xFF, ARG:2 & 0xFF)

;-------------------------------------------------
;カラー分解関数@GETRED/GETGREEN/GETBLUE
;	引数：16進カラー表記、省略すると現在的文字色
;
;0xRRGGBB形式のカラー表記から、RGBそれぞれの値を0～255で抽出します
;
;念のため必要なビットしか見ないようにしておく@revkoishi(14/04/20)
;-------------------------------------------------
@GETRED(ARG:0 = -1)
#FUNCTION
;RETURNF (ARG >= 0 ? ARG # GETCOLOR())/65536
RETURNF ((ARG >= 0 ? ARG:0 # GETCOLOR()) & 0xFF0000) >> 16

@GETGREEN(ARG:0 = -1)
#FUNCTION
;RETURNF ((ARG >= 0 ? ARG # GETCOLOR())/256)%256
RETURNF ((ARG >= 0 ? ARG:0 # GETCOLOR()) & 0x00FF00) >> 8

@GETBLUE(ARG:0 = -1)
#FUNCTION
;RETURNF (ARG >= 0 ? ARG # GETCOLOR())%256
RETURNF ((ARG >= 0 ? ARG:0 # GETCOLOR()) & 0x0000FF)

;-------------------------------------------------------------------------------
;	色を明度のパーセントで変更
;-------------------------------------------------------------------------------
;	例  CALL BRIGHTCOLOR(70)	※70%の暗さへSETCOLOR
;		CALL BRIGHTCOLOR(150)	※150%の明るさへSETCOLOR
;===============================================================================
@BRIGHTCOLOR(ARG)
SETCOLOR BRIGHTCOLORF(ARG)
RETURN RESULT

;-------------------------------------------------------------------------------
;	上のやつの式中版
;-------------------------------------------------------------------------------
;	例	SETCOLOR BRIGHTCOLORF(50) ※50%の暗さへSETCOLOR
;		直でこれ叩くほうが早い気もする
;===============================================================================
@BRIGHTCOLORF(ARG, ARG:1 = -1)
#FUNCTION
#LOCALSIZE 1
#DIM NOW,1
ARG = LIMIT(ARG, 0, 1000)
LOCAL = ARG:1 == -1 ? GETCOLOR() # ARG:1
RETURNF RGBCOLOR( TIMESF(GETRED(LOCAL),ARG), TIMESF(GETGREEN(LOCAL),ARG), TIMESF(GETBLUE(LOCAL),ARG) )

;≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
;＠拡張表示系関数
;Emuera本体の表示機能を强行強化する関数。
;BARをカラー表示したり、文字列をため込んだり、特殊文字を表示したり。
;≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡

;-------------------------------------------------
;カラーバー表示関数@PRINT_COLORBAR
;	引数0：バーにする変数（数値）
;	引数1：バーの最大値（数値）
;	引数2：バー全体の長さ（1中奖了半角１文字）
;	文字列引数0：バーに使用する文字（省略すると*）
;	文字列引数1：バーの背景に使用する文字（省略すると.）
;	引数3：バーの色（16進。RGBCOLOR関数使用可能。省略すると現在的文字色に）
;	引数4：バーの背景色（同上）
;
;BARを指定した文字・指定した色で表示する関数です。UNICODE2588番などの、隙間のないブロックと相性がよかったり。
;隙間が出る場合はフォント関連のコンフィグを見直しましょう。
;引数0～2の仕様はBAR命令とほとんど同一（従来引数型）です。
;バーの背景とは、バーの最大値に満たない部分の表示です。格闘ゲームとかでよく見る■■■■■■□□　の□の部分。
;グラデーション機能を用意することもできそうですが、背景色もあるし、現状必要ないと思ってやってません。
;この関数は口上・開発chのCrow君から輸入して改変したものです。さんくす
;-------------------------------------------------
;本体にあるからコメントアウト
;@PRINT_COLORBAR(ARG, ARG:1, ARG:2, ARGS = "*", ARGS:1 = ".", ARG:3 = -1, ARG:4 = -1)
;#LOCALSIZE 5
;VARSET LOCAL
;ARG:3 = ARG:3 < 0 ? GETCOLOR() # ARG:3
;ARG:4 = ARG:4 < 0 ? GETCOLOR() # ARG:4
;LOCAL:1 = ARG * ARG:2 / ARG:1
;LOCAL:2 = GETCOLOR()
;FOR LOCAL, 1, ARG:2 + 1
;	IF LOCAL:1 >= LOCAL
;		IF !LOCAL:3
;			SETCOLOR ARG:3
;			LOCAL:3 = 1
;		ENDIF
;		PRINTFORM %ARGS%
;	ELSE
;		IF !LOCAL:4
;			SETCOLOR ARG:4
;			LOCAL:4 = 1
;		ENDIF
;		PRINTFORM %ARGS:1%
;	ENDIF
;NEXT
;SETCOLOR LOCAL:2

;-------------------------------------------------
;関数名:HTML_COLORBAR
;概　要:カラーバー表示用HTML文字列取得関数
;引　数: ARG:0…バーにする値
;　　　  ARG:1…バーの最大値
;　　　  ARG:2…バー表示に使用する桁数
;　　　 ARGS:0…[省略可]バーに使用する文字。省略した場合は*
;　　　 ARGS:1…[省略可]バーの背景に使用する文字。省略した場合は.
;　　　  ARG:3…[省略可]バーの色(16進表現の色値)。省略した場合は現在的文字色
;　　　  ARG:4…[省略可]バーの背景色(16進表現の色値)。省略した場合は現在的文字色
;戻り値:カラーバーのHTML文字列(HTML_PRINT命令で使用可能)
;備　考:式中関数
;@PRINT_COLORBAR関数のHTML_PRINT対応版
;新規作成@revkoishi(14/07/07)
;-------------------------------------------------
@HTML_COLORBAR(ARG:0, ARG:1, ARG:2, ARGS:0 = "*", ARGS:1 = ".", ARG:3 = -1, ARG:4 = -1)
#FUNCTIONS
{
RETURNF "<font color='#" + TOSTR(ARG:3 < 0 ? GETCOLOR() # (ARG:3 & 0xFFFFFF), "x6") + "'>"
        + ARGS:0 * LIMIT(ARG:0 * ARG:2 / ARG:1, 0, ARG:2) + ""
        + "<font color='#" + TOSTR(ARG:4 < 0 ? GETCOLOR() # (ARG:4 & 0xFFFFFF), "x6") + "'>"
        + ARGS:1 * LIMIT(ARG:2 - (ARG:0 * ARG:2 / ARG:1), 0, ARG:2) + ""
}

;-------------------------------------------------
;従来引数型・8分割カラーバー表示関数@PRINT_EIGHT_BAR_INT
;	引数0：バーにする変数（数値）
;	引数1：バーの最大値（数値）
;	引数2：バー全体の長さ（1中奖了半角１文字）
;	引数3：バー始端の色（16進。RGBCOLOR関数使用可能。省略すると現在的文字色に）
;	引数4：バー終端の色（同上。省略すると単色バーに）
;	引数5：始色比率（始端の色が濃くなる。1～10で比率指定、デフォだと5、つまり5:5）
;
;引数0～2の仕様はBAR命令とほとんど同一（従来引数型）です。
;@PRINT_EIGHT_BARの引数が独自形式なので、従来のBARの形式でも呼び出せるように用意しました。
;半角の1/8刻みでバーを表示できますが、バーに使用文字を指定はできません。また、バーの背景色も使えません。
;引数3・4を指定することでグラデーションができますが、この場合色の変わる単位は半角１文字ごとになります。
;この関数は口上・開発chのkapnaluqa君から輸入したものです。さんくす
;-------------------------------------------------
@PRINT_EIGHT_BAR_INT(ARG, ARG:1, ARG:2, ARG:3 = -1, ARG:4 = -1, ARG:5 = 5)
;ARG:2を8倍して1/8単位での全体の長さを得る
ARG:2 *= 8
IF ARG >= ARG:1
	;対象変数が最大値以上だった場合、バーの長さは全体の長さに等しい
	ARG = ARG:2
ELSE
	;最大値を全体の長さで割って、1/8単位中奖了の数値。
	;対象変数をそれで割ることで1/8単位での長さを得る
	ARG /= ARG:1/ARG:2
ENDIF
;数値を与えて表示関数へ
CALL PRINT_EIGHT_BAR(ARG, ARG:2, ARG:3, ARG:4, ARG:5, 10-ARG:5)

;-------------------------------------------------
;8分割カラーバー表示関数@PRINT_EIGHT_BAR
;	引数0：バーの長さ（半角1/8文字単位）
;	引数1：バー全体の長さ（半角1/8文字単位）
;		なお、バーの長さが最長の数値(ARG:1*8-1)を超えている場合、表示は0に返回
;	引数2：バー始端の色（16進。RGBCOLOR関数使用可能。省略すると現在的文字色に）
;	引数3：バー終端の色（同上。省略すると単色バーに）
;	引数4：始色比率（始端の色が濃くなる）
;	引数5：終色比率（終端の色が濃くなる）
;
;独自形式の引数です。ご注意ください
;@PRINT_EIGHT_BARの引数が独自形式なので、従来のBARの形式でも呼び出せるように用意しました。
;半角の1/8刻みでバーを表示できますが、バーに使用文字を指定はできません。また、バーの背景色も使えません。
;引数3・4を指定することでグラデーションができますが、この場合色の変わる単位は半角１文字ごとになります。
;-------------------------------------------------
@PRINT_EIGHT_BAR(ARG, ARG:1 = 32, ARG:2 = -1, ARG:3 = -1, ARG:4 = 1, ARG:5 = 1)
#LOCALSIZE 1
#DIM COLOR
#DIM RED, 3
#DIM BLUE, 3
#DIM GREEN, 3
#DIM 始色比率
#DIM 終色比率
始色比率 = ARG:4
終色比率 = ARG:5
COLOR = GETCOLOR()
IF ARG:2  >= 0 && ARG:3 >= 0
	RED:1 = GETRED(ARG:2)
	GREEN:1 = GETGREEN(ARG:2)
	BLUE:1 = GETBLUE(ARG:2)
	RED:2 = GETRED(ARG:3)
	GREEN:2 = GETGREEN(ARG:3)
	BLUE:2 = GETBLUE(ARG:3)
ELSEIF ARG:2 >= 0
	SETCOLOR ARG:2
ENDIF
FOR LOCAL, 0, ARG:1
	IF ARG:2 >= 0 && ARG:3 >= 0
		RED = (RED:1 * (ARG:1 - LOCAL) * 始色比率 + RED:2 * LOCAL * 終色比率) / ((ARG:1 -LOCAL) * 始色比率 + LOCAL * 終色比率)
		GREEN = (GREEN:1 * (ARG:1 - LOCAL) * 始色比率 + GREEN:2 * LOCAL * 終色比率) / ((ARG:1 -LOCAL) * 始色比率 + LOCAL * 終色比率)
		BLUE = (BLUE:1 * (ARG:1 - LOCAL) * 始色比率 + BLUE:2 * LOCAL * 終色比率) / ((ARG:1 -LOCAL) * 始色比率 + LOCAL * 終色比率)
		SETCOLOR RED, GREEN, BLUE
	ENDIF
	IF LOCAL < MAX((ARG % (ARG:1 * 8) / 8),0)
		PRINTFORM %UNICODE(0x2588)%
	ELSEIF LOCAL == MAX((ARG % (ARG:1 * 8) / 8),0)
		PRINTFORM \@ARG % (ARG:1 * 8) % 8 ? %UNICODE(0x2588 + 8 - (ARG % (ARG:1 * 8) % 8))%# %" "%\@
	ELSE
		PRINTFORM
	ENDIF
NEXT
SETCOLOR COLOR

;-------------------------------------------------
;口上色指定文字列表示関数@PRINTCOLOR～系
;	引数0：文字色
;	引数1：文字列
;
;指定した文字色で文字列を表示します。カラー指定は16進ですが、RGBCOLOR関数を利用することができます
;PRINT命令同様の「PRINTCOLORL」「PRINTCOLORW」もありますが、書式は面倒です
;例えば…
;CALL PRINTCOLORW(RGBCOLOR(255, 0, 0), "この文字列は赤く表示されて改行待ちをします。")
;-------------------------------------------------
@PRINTCOLOR(ARG, ARGS, ARG:1)
#LOCALSIZE 1
LOCAL = GETCOLOR()
SETCOLOR ARG
PRINTFORM %ARGS%
IF ARG:1 == 1
	PRINTL
ELSEIF ARG:1 == 2
	PRINTW
ENDIF
SETCOLOR LOCAL
RETURN RESULT

@PRINTCOLORL(ARG, ARGS)
CALL PRINTCOLOR(ARG, ARGS, 1)
RETURN RESULT

@PRINTCOLORW(ARG, ARGS)
CALL PRINTCOLOR(ARG, ARGS, 2)
RETURN RESULT

;---------------------------------------------------------------------
;COLORPRINT　※頂き物関数
;---------------------------------------------------------------------
;__0xFFFFFF__のように区切り文字(この場合"__")の間にSETCOLORに渡す値をするとそこで色を変える関数
;____のように空白にすると默认色(関数開始時にGETCOLORで取得した値)でSETCOLORします
;表記例 "默认__0x808080__灰色__0xFF8080__赤____默认"
;以上のように書くと文頭・文末の默认は默认色、灰色は灰色(0x808080)、赤は赤(0xFF8080)で表示します
;ARGS   = 分割前の文字列
;ARGS:1 = 区切り文字
;ARG    = PLAINモード制御( 0:ボタン有効 1:ボタン無効 )
;---------------------------------------------------------------------
@COLORPRINT(ARGS,ARGS:1="__",ARG=0)
LOCAL = 0
LOCAL:2 = GETCOLOR()
DO
	;文の表示
	LOCALS = %TSPLIT(ARGS,LOCAL,ARGS:1)%
	SIF LOCALS == ARGS:1
		BREAK
	IF ARG == 0
		PRINTS LOCALS
	ELSE
		PRINTPLAINFORM %LOCALS%
	ENDIF
	;色の変更部分
	LOCALS = %TSPLIT(ARGS,LOCAL+1,ARGS:1)%
	LOCAL:1 = ( LOCALS == "" ) ? LOCAL:2 # TOINT(LOCALS)
	SETCOLOR LOCAL:1
	LOCAL+=2
LOOP 1
SETCOLOR LOCAL:2

;---------------------------------------------------------------------
;COLORPRINTL
;最後に改行を加えるCOLORPRINT
;---------------------------------------------------------------------
@COLORPRINTL(ARGS,ARGS:1="__",ARG=0)
CALL COLORPRINT(ARGS,ARGS:1,ARG)
PRINTL

;---------------------------------------------------------------------
;COLORPRINTW
;最後にウェイトを加えるCOLORPRINT
;---------------------------------------------------------------------
@COLORPRINTW(ARGS,ARGS:1="__",ARG=0)
CALL COLORPRINT(ARGS,ARGS:1,ARG)
WAIT

;TOINTが16進数でも問題なく変換してくれるお陰で大変楽が出来ました、ありがとうございます

;---------------------------------------------------------------------
;TEMP_SPLIT
;---------------------------------------------------------------------
;指定文字列ARGSをARG:1を区切りに分割しLOCALS配列に代入、ARG番目の内容を帰す
;どの程度処理速度に貢献するのかは不明だが、ARGSが更新されない限りはLOCALSを使いまわす
;領域外に達した場合区切り文字を帰す
@TSPLIT(ARGS,ARG,ARGS:1="..")
#FUNCTIONS
#LOCALSSIZE 200
#DIMS STRINGS
SIF ARGS == ""
	RETURNF ""
IF STRINGS != ARGS
	STRINGS = %ARGS%
	SPLIT STRINGS,ARGS:1,LOCALS, LOCAL
ENDIF
SIF INRANGE(ARG,0,LOCAL-1)
	RETURNF LOCALS:ARG
RETURNF ARGS:1

;-------------------------------------------------
;文字列整列関数@UNITCELL
;	文字列引数：セルに入れる文字列
;	引数0：区切り文字数（PRINTCの文字数+1が望ましい）
;
;指定文字数に合わせて半角スペースを付与します。
;PRINTCとの違いは、指定文字数を超えた場合、指定文字数の２倍、３倍で区切る点です
;PRINTCと併用して横２セル結合みたいな表示ができます
;キチッと揃った表や罫線囲みを作成するのに便利です
;-------------------------------------------------
@UNITCELL(ARGS, ARG)
#FUNCTIONS
RETURNF @"%ARGS+(" "*(ARG-(STRLENS(ARGS)%ARG)))%"

;こちらは余った分はカットします。
@FIXEDCELL(ARGS, ARG)
#FUNCTIONS
RETURNF \@ STRLENS(ARGS) > ARG ? %SUBSTRING(ARGS, 0, ARG-2)%.. # %ARGS+" "*(ARG-(STRLENS(ARGS)))% \@

;-------------------------------------------------
;再描画関数@SAVELINE/@RETURNLINE
;	引数0：RETUENLINEから呼ばれたことを表す
;
;SAVELINEしてからRETURNLINEすると、SAVELINEしたところまで行削除します。
;メニューの再描画とかにご利用ください
;SAVELINE忘れてRETURNLINEするとごっそり削除してしまいます。
;-------------------------------------------------
@SAVELINE(ARG)
#LOCALSIZE 1
IF ARG
	CLEARLINE LINECOUNT-LOCAL
ELSE
	LOCAL = LINECOUNT
ENDIF
RETURN RESULT

@RETURNLINE
CALL SAVELINE, 1
RETURN RESULT

;-------------------------------------------------
;表示文本保管関数@STRBANK
;	文字列引数：保存する文面（空文字列可）
;	引数0：改行情報。0で改行無、1で改行、2でクリック待ち、3で文本放出して廃棄、4で放出、5で廃棄（3以上のとき文字列引数は無視する）
;	引数1：文字色情報。0で指定無、1で一行デフォカラー、2で一行カラー指定、3でカラー指定しつつ、そのカラーを維持する（表示が終わっても戻らない）
;	引数2：文字色指定。引数2が2か3だった場合に参照される。式中関数@RGBCOLORに対応
;
;繰り返し呼ぶことで文字列をLOCALSに蓄えていき、引数で指定したときに全部表示します。
;表示方法は代入するときに指定可能。1000行まで引き接受よ！
;カラー指定は行単位でのみ可能。同じ行で複数回指定された場合、最後の指定を優先。フォント指定は何かと問題起こすんでオミットしてます
;@STRBANKL～@STRDRAWを経由して使われるのを想定していますが、直接呼ばなきゃできない操作もあります。
;-------------------------------------------------
@STRBANK(ARGS, ARG, ARG:1, ARG:2)
#LOCALSIZE 1000
#LOCALSSIZE 1000
#DIM COLORDATA, 1000
#DIM COLORNUM, 1000
#DIM SET_LOCALS, 1
#DIM LCOUNT, 2
;初期設定
IF !SET_LOCALS
	VARSET LOCALS, "VOID"
	VARSET LOCAL
	SET_LOCALS = 1
ENDIF
;預金
IF ARG < 3
	FOR LCOUNT, 0, 1000
		IF !LOCAL:LCOUNT
			IF LOCALS:LCOUNT == "VOID"
				LOCALS:LCOUNT = %ARGS%
			ELSE
				LOCALS:LCOUNT = %LOCALS:LCOUNT + ARGS%
			ENDIF
			LOCAL:LCOUNT = ARG
			COLORDATA:LCOUNT = ARG:1
			COLORNUM:LCOUNT = ARG:2
			BREAK
		ENDIF
	NEXT
;引き出し
ELSE
	IF ARG < 5
		FOR LCOUNT, 0, 1000
			SIF LOCALS:LCOUNT == "VOID"
				BREAK
			SELECTCASE COLORDATA:LCOUNT
				CASE 0
					PRINTS LOCALS:LCOUNT
				CASE 1
					PRINTSD LOCALS:LCOUNT
				CASE 2
					LCOUNT:1 = GETCOLOR()
					SETCOLOR COLORNUM:LCOUNT
					PRINTS LOCALS:LCOUNT
					SETCOLOR LCOUNT:1
				CASE 3
					SETCOLOR COLORNUM:LCOUNT
					PRINTS LOCALS:LCOUNT
			ENDSELECT
			SELECTCASE LOCAL:LCOUNT
				CASE 1
					PRINTL
				CASE 2
					PRINTW
			ENDSELECT
		NEXT
	ENDIF
	IF ARG != 4
		VARSET LOCALS, "VOID"
		VARSET LOCAL
	ENDIF
ENDIF
RETURN RESULT

;以下、関連関数。PRINT系命令の名称に倣う
;一部不使用と判断して入ってないものも。

;STRBANKL 改行つきで文字列を保存する
@STRBANKL(ARGS)
CALL STRBANK(ARGS, 1)
RETURN RESULT

;STRBANKW 改行と入力待ちつきで文字列を保存する
@STRBANKW(ARGS)
CALL STRBANK(ARGS, 2)
RETURN RESULT

;STRBANKDL 默认文字色。改行つきで文字列を保存する
@STRBANKDL(ARGS)
CALL STRBANK(ARGS, 1, 1)
RETURN RESULT

;STRBANKDW 默认文字色。改行と入力待ちつきで文字列を保存する
@STRBANKDW(ARGS)
CALL STRBANK(ARGS, 2, 1)
RETURN RESULT

;STRBANKCL 文字色を引数で指定。改行つきで文字列を保存する
@STRBANKCL(ARGS, ARG)
CALL STRBANK(ARGS, 1, 2, ARG)
RETURN RESULT

;STRBANKCW 文字色を引数で指定。改行と入力待ちつきで文字列を保存する
@STRBANKCW(ARGS, ARG)
CALL STRBANK(ARGS, 2, 2, ARG)
RETURN RESULT

;STRDRAW 保存した文字列を全部ぶちまける。引数を1にするとデータを廃棄しない。2にすると表示せずに廃棄する。
@STRDRAW(ARG)
CALL STRBANK("", ARG + 3)
RETURN RESULT

;塗りつぶしハート系のフォントを等幅のＭＳ Ｐゴ別緻に
;中抜きハート系のフォントがVerdanaだと正しく表示されないのでＭＳ Ｐゴ別緻に
;それぞれ変更@/L(14/09/28)
;-------------------------------------------------
;ハートマーク関数@HEART
;	引数0：心形の数（省略すると1つ）
;	引数1：使用するフォント名（省略するとＭＳ Ｐゴ別緻）
;
;中抜きのハートマークを表示します
;-------------------------------------------------
;すでに本体同梱してあるのでコメントアウト
;@HEART(ARG = 1, ARGS = "ＭＳ Ｐゴシック")
;#LOCALSIZE 1
;#LOCALSSIZE 1
;LOCAL = RESULT
;LOCALS = %GETFONT()%
;
;SETFONT CHKFONT(ARGS) ? ARGS # LOCALS
;
;CALL SYMBOLPRINT(ARG, UNICODE(0x2661))
;
;SETFONT LOCALS
;RETURN LOCAL

;-------------------------------------------------
;入力待ちハートマーク関数@HEARTW
;	引数0：心形の数（省略すると1つ）
;	引数1：使用するフォント名（省略するとＭＳ Ｐゴ別緻）
;	引数2：『」』の代わりに表示する文字列
;	引数3：真にすると、『」』を表示しない
;
;中抜きハートマークを表示してから『」』を表示し、入力待ち・改行をします。口上に便利です
;引数2に文字列を入れると、代わりにそれを表示します。
;-------------------------------------------------
@HEARTW(ARG = 1, ARGS = "ＭＳ Ｐゴシック", ARGS:1 = "」", ARG:1 = -1)
CALL HEART(ARG, ARGS)
SIF ARG:1 < 1
	PRINTSW ARGS:1
RETURN RESULT

;-------------------------------------------------
;黒ハートマーク関数@HEARTB
;	引数0：心形の数（省略すると1つ）
;	引数1：使用するフォント名（省略するとＭＳ Ｐゴ別緻）
;
;塗りつぶしのハートマークを表示します
;-------------------------------------------------
@HEARTB(ARG = 1, ARGS = "ＭＳ Ｐゴシック")
#LOCALSIZE 1
#LOCALSSIZE 1
LOCAL = RESULT
LOCALS = %GETFONT()%

SETFONT CHKFONT(ARGS) ? ARGS # LOCALS

IF GETFONT() == "Symbol"
	CALL SYMBOLPRINT(ARG, UNICODE(0xA9))
ELSE
	CALL SYMBOLPRINT(ARG, UNICODE(0x2665))
ENDIF

SETFONT LOCALS
RETURN LOCAL

;-------------------------------------------------
;入力待ち黒ハートマーク関数@HEARTBW
;	引数0：心形の数（省略すると1つ）
;	引数1：使用するフォント名（省略するとＭＳ Ｐゴ別緻）
;	引数2：『」』の代わりに表示する文字列
;	引数3：真にすると、『」』を表示しない
;
;塗りつぶしハートマークを表示してから『」』を表示し、入力待ち・改行をします
;-------------------------------------------------
@HEARTBW(ARG = 1, ARGS = "ＭＳ Ｐゴシック", ARGS:1 = "」", ARG:1 = -1)
CALL HEARTB(ARG, ARGS)
SIF ARG:1 < 1
	PRINTSW ARGS:1
RETURN RESULT

;-------------------------------------------------
;ハートマーク系カラーバリエーション関数@HEARTC～系
;
;上記と同じバリエーションがありますが、最初の引数で指定した文字色で表示します。省略すると粉色がかった明るい赤になります
;文字色指定についてはGETRGBCOLOR関数が使えます。
;
;HEARTCWとHEARTCBWのARG:1が重複していたので、後者をARG:2に変更@revkoishi(14/04/28)
;-------------------------------------------------
@HEARTC(ARG:1 = 0xC07070, ARG = 1, ARGS = "ＭＳ Ｐゴシック")
#LOCALSIZE 1
LOCAL = GETCOLOR()
SETCOLOR ARG:1
CALL HEART(ARG, ARGS)
SETCOLOR LOCAL
RETURN RESULT

@HEARTCW(ARG:1 = 0xC07070, ARG = 1, ARGS = "ＭＳ Ｐゴシック", ARGS:1 = "」", ARG:2)
#LOCALSIZE 1
LOCAL = GETCOLOR()
SETCOLOR ARG:1
CALL HEARTW(ARG, ARGS, ARGS:1, ARG:2)
SETCOLOR LOCAL
RETURN RESULT

@HEARTCB(ARG:1 = 0xC07070, ARG = 1, ARGS = "ＭＳ Ｐゴシック")
#LOCALSIZE 1
LOCAL = GETCOLOR()
SETCOLOR ARG:1
CALL HEARTB(ARG, ARGS)
SETCOLOR LOCAL
RETURN RESULT

@HEARTCBW(ARG:1 = 0xC07070, ARG = 1, ARGS = "ＭＳ Ｐゴシック", ARGS:1 = "」", ARG:2)
#LOCALSIZE 1
LOCAL = GETCOLOR()
SETCOLOR ARG:1
CALL HEARTBW(ARG, ARGS, ARGS:1, ARG:2)
SETCOLOR LOCAL
RETURN RESULT

;-------------------------------------------------
;ハートマーク系默认カラー関数@HEARTD～系
;
;上記と同じバリエーションがありますが、默认の文字色で表示します
;また、こちらで呼ぶと入力待ちハート系の『」』が表示されません。つまり地の文向けの関数
;引数3を真にすれば逆に『」』を表示するようになります
;-------------------------------------------------
@HEARTD(ARG = 1, ARGS = "ＭＳ Ｐゴシック")
#LOCALSIZE 1
LOCAL = GETCOLOR()
RESETCOLOR
CALL HEART(ARG, ARGS)
SETCOLOR LOCAL
RETURN RESULT

@HEARTDW(ARG = 1, ARGS = "ＭＳ Ｐゴシック", ARGS:1 = "」", ARG:1)
#LOCALSIZE 1
LOCAL = GETCOLOR()
RESETCOLOR
CALL HEARTW(ARG, ARGS, ARGS:1, !ARG:1)
SETCOLOR LOCAL
RETURN RESULT

@HEARTDB(ARG = 1, ARGS = "ＭＳ Ｐゴシック")
#LOCALSIZE 1
LOCAL = GETCOLOR()
RESETCOLOR
CALL HEARTB(ARG, ARGS)
SETCOLOR LOCAL
RETURN RESULT

@HEARTDBW(ARG = 1, ARGS = "ＭＳ Ｐゴシック", ARGS:1 = "」", ARG:1)
#LOCALSIZE 1
LOCAL = GETCOLOR()
RESETCOLOR
CALL HEARTBW(ARG, ARGS, ARGS:1, !ARG:1)
SETCOLOR LOCAL
RETURN RESULT

;-------------------------------------------------
;記号表示関数@SYMBOLPRINT
;内部的に使用関数です。呼び出さないでください
;-------------------------------------------------
@SYMBOLPRINT(ARG, ARGS)
#LOCALSIZE 1
FOR LOCAL, 0, ARG
	PRINTS ARGS
NEXT
RETURN RESULT

;≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
;＠アニメーション系関数
;文字列を動かしたりフェードイン・アウトさせたりします。ある意味このファイルの目玉か
;だいたい表示時間があるため、多用すると鬱陶しさを与えます、注意。
;制御関数を通して、各関数毎にアニメーションのオンオフ設定ができます。
;≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡

;-------------------------------------------------
;アニメーション制御関数@ANIME_CONFIG
;	文字列引数・引数：文字列引数により機能分岐
;		"SAVE"：引数は無効。コンフィグビットの値を返します。セーブされる変数に代入する際に。
;		"SET"：コンフィグビットに引数の値を直接代入。@EVENTLORD等で設定反映する際に。引数省略するとSAVE互換
;		"FORCE"：強制表示・強制非表示・通常のモード切り替えをします。コンフィグビットは元のままです
;				（引数=0,コンフィグビットを参照して表示（通常）、1,強制表示、2,強制非表示、省略,現在的設定を返すのみ）
;		"TIMES"：この後に呼ばれるアニメを、引数の回数分、強制表示にします。関数は指定できません。FORCEに優先します
;				 引数を0にすると、回数を初期化します。引数を省略すると、残り回数を返すのみ
;		"ONCE"：この後に呼ばれるアニメを、一回だけ強制表示にします。関数は指定できません。FORCE・TIMESに優先します。引数は無効。
;		"%関数名%"：指定した関数ごとのコンフィグビットを設定します。引数1で表示に、0で非表示にします。2だと、設定を逆にします
;					引数を省略すると、戻り値が真なら表示する判定になります（強制表示状態に影響されます）
;		"USER{番号}"：ユーザー定義のコンフィグ項目を設定できます。自己アニメ効果を作成した場合に便利です。1～13番まで持てます
;					　引数を省略すると、戻り値が真なら表示する判定になります（強制表示状態に影響されます）
;
;ぱにめーしょん内蔵のアニメ効果の総合的な制御。関数毎のコンフィグビットが立っていると、その関数のアニメ効果を表示しません
;表示しない場合は右クリックスキップ用と同じ簡略文本を表示するようにします
;関数名はエイリアスでなく本体で指定。あと日本語名も受け付けるようになってます。
;口上側などでFORCE・TIMES機能を多用すると、きっと嫌われます。
;-------------------------------------------------
@ANIME_CONFIG(ARGS, ARG = -1)
#FUNCTION
#LOCALSIZE 6
;LOCALはコンフィグビットを格納
;LOCAL:1は強制表示・非表示状態
;LOCAL:2は回数指定強制表示の回数を格納
;LOCAL:3は編集・参照するコンフィグビットの番号
;LOCAL:4はユーザー定義の番号
;LOCAL:5はONCE状態

SELECTCASE ARGS
	CASE "SAVE"
		RETURNF LOCAL
	CASE "SET"
		SIF ARG >= 0
			LOCAL = ARG
		RETURNF LOCAL
	CASE "FORCE"
		SIF ARG >= 0
			LOCAL:1 = ARG
		RETURNF LOCAL:1
	CASE "TIMES"
		SIF ARG >= 0
			LOCAL:2 = ARG
		RETURNF LOCAL:2
	CASE "ONCE"
		LOCAL:5 = 1
		RETURNF LOCAL:5
	CASE "SCROLLTEXT", "スクロール"
		;コンフィグビット0番
		LOCAL:3 = 0
	CASE "FADE", "フェード"
		;コンフィグビット1番
		LOCAL:3 = 1
	CASE "QUAKE", "振動"
		;コンフィグビット2番
		LOCAL:3 = 2
	CASE "FLASH", "発光"
		;コンフィグビット3番
		LOCAL:3 = 3
	CASE "FULLCUTIN", "全画面カットイン"
		;コンフィグビット4番
		LOCAL:3 = 4
	CASE "BGM_CUTIN", "ＢＧＭカットイン"
		;コンフィグビット41番
		LOCAL:3 = 41
	CASE "CHARA_CUTIN", "角色カットイン"
		;コンフィグビット42番
		LOCAL:3 = 42
	CASEELSE
		LOCAL:4 = TOINT(REPLACE(ARGS, "USER", ""))
		;ユーザー定義の処理
		IF STRCOUNT(ARGS, "USER") && LOCAL:4 > 0 && LOCAL:4 < 14
			;コンフィグビット51番以降
			LOCAL:3 = 50+LOCAL:4
		;それ以外は-1を返すのみ。デ背包用
		ELSE
			RETURNF -1
		ENDIF
ENDSELECT
;コンフィグビットの処理
SELECTCASE ARG
	CASE 0
		SETBIT LOCAL, LOCAL:3
	CASE 1
		CLEARBIT LOCAL, LOCAL:3
	CASE 2
		INVERTBIT LOCAL, LOCAL:3
ENDSELECT
;ONCEが有効な場合
IF LOCAL:5
	LOCAL:5 = 0
	RETURNF MESSKIP() ? 0 # 1
;強制表示系が有効な場合
ELSEIF LOCAL:2 > 0
	LOCAL:2--
	RETURNF MESSKIP() ? 0 # 1
ELSEIF LOCAL:1
	RETURNF MESSKIP() ? 0 # !(LOCAL:1-1)
ENDIF
;コンフィグビットを参照して返回
RETURNF MESSKIP() ? 0 # !GETBIT(LOCAL, LOCAL:3)

;-------------------------------------------------
;文字列スクロール関数@SCROLLTEXT
;	文字列引数：スクロールさせる文字列
;	引数0：1にするとスクロール中、文字列の下にDRAWLINEします。2だと-=ラインに
;	引数1：スクロール速度（默认だと30）
;	引数2：ウィンドウの横に入る文字数（默认だと117）
;			メモ　117
;	引数3：真にすると文字列が端でバウンドします。数字を上げるとバウンドが緩くなります。誰が得するんだよこの機能
;	引数4：真にするとスクロール方向が逆になります。默认だと左から右。SCROLLTEXTLというエイリアスが存在
;
;引数の文字列をスクロールさせます
;-------------------------------------------------
@SCROLLTEXT(ARGS, ARG, ARG:1 = 30, ARG:2 = 117, ARG:3, ARG:4)
#LOCALSIZE 3
#LOCALSSIZE 1
LOCALS = %ARGS%
;スペースを付加
IF ARG:4
	ARGS = %(" "*ARG:2)+ARGS%
ELSE
	ARGS = %" "*(ARG:2 - 2 - STRLENS(ARGS))+ARGS%
ENDIF
;表示オン
IF ANIME_CONFIG("SCROLLTEXT")
	;スクロール速度がウィンドウ幅に対し速すぎる場合、矯正する
	ARG:1 = ARG:1 >= ARG:2 ? ARG:2-1 # ARG:1
	REDRAW 0
	LOCAL = 0
	FOR LOCAL, 0, ARG:2-2, ARG:1
		IF ARG:4
			PRINTSINGLEFORM %SUBSTRING(ARGS , LOCAL)%
		ELSE
			PRINTSINGLEFORM %SUBSTRING(ARGS , (ARG:2 - 2) - LOCAL)%
		ENDIF
		IF ARG == 1
			DRAWLINE
		ELSEIF ARG == 2
			CUSTOMDRAWLINE -=
		ENDIF
		TWAIT 2 , 0
		CLEARLINE 1+!(!ARG)
	NEXT
	;ばうんど。実に随意跳ねます
	IF ARG:3
		FOR LOCAL, ARG:3, ARG:3*5, ARG:3*2
			IF ARG:4
				PRINTFORML %LOCALS%
			ELSE
				PRINTFORML %ARGS%
			ENDIF
			IF ARG == 1
				DRAWLINE
			ELSEIF ARG == 2
				CUSTOMDRAWLINE -=
			ENDIF
			TWAIT 2 , 0
			CLEARLINE 1+!(!ARG)
			FOR LOCAL:1, 0, ARG:2/(LOCAL+4), ARG:1/(LOCAL+1)
				IF ARG:4
					PRINTSINGLEFORM %SUBSTRING(ARGS , ARG:2 - LOCAL:1)%
				ELSE
					PRINTSINGLEFORM %SUBSTRING(ARGS , LOCAL:1)%
				ENDIF
				IF ARG == 1
					DRAWLINE
				ELSEIF ARG == 2
					CUSTOMDRAWLINE -=
				ENDIF
				TWAIT 2 , 0
				CLEARLINE 1+!(!ARG)
			NEXT
			FOR LOCAL:2, 0, ARG:2/(LOCAL+4), ARG:1/(LOCAL+1)
				IF ARG:4
					PRINTSINGLEFORM %SUBSTRING(ARGS , ARG:2 - LOCAL:1 + LOCAL:2)%
				ELSE
					PRINTSINGLEFORM %SUBSTRING(ARGS , LOCAL:1 - LOCAL:2)%
				ENDIF
				IF ARG == 1
					DRAWLINE
				ELSEIF ARG == 2
					CUSTOMDRAWLINE -=
				ENDIF
				TWAIT 2 , 0
				CLEARLINE 1+!(!ARG)
			NEXT
		NEXT
	ENDIF
ENDIF

IF ARG:4
	PRINTFORML %LOCALS%
ELSE
	PRINTFORML %ARGS%
ENDIF
IF ARG == 1
	DRAWLINE
ELSEIF ARG == 2
	CUSTOMDRAWLINE -=
ENDIF
REDRAW 1
RETURN RESULT

;-------------------------------------------------
;文字列右スクロール関数@SCROLLTEXTL
;	文字列引数：スクロールさせる文字列
;	引数0：真にするとスクロール中、文字列の下にDRAWLINEします
;	引数1：スクロール速度（默认だと30）
;	引数2：ウィンドウの横に入る文字数（默认だと117）
;	引数3：真にすると文字列が端でバウンドします。数字を上げるとバウンドが緩くなります
;
;引数の文字列をウィンドウの右から左へスクロールさせます
;-------------------------------------------------
@SCROLLTEXTL(ARGS, ARG, ARG:1 = 30, ARG:2 = 117, ARG:3)
CALL SCROLLTEXT(ARGS, ARG, ARG:1, ARG:2, ARG:3, 1)
RETURN RESULT

;-------------------------------------------------
;フェードアウト関数@FADEOUT
;	引数0：コマ数。多くするほどゆるやかになります。默认は8
;	文字列引数0～29：表示する文字列（空行はスペースで。省略すると無視します）
;	引数3：FULLCUTIN用。正にすると開幕行削除から入ります
;
;引数で与えた文字列を表示し、背景色にフェードアウトします。
;見えなくなるだけで消えないので、必要ならCLEARLINEで消してください。
;文字列は30行まで引き接受ことができます
;-------------------------------------------------
@FADEOUT(ARG = 8, ARGS = "VOID", ARGS:1 = "VOID", ARGS:2 = "VOID", ARGS:3 = "VOID", ARGS:4 = "VOID", ARGS:5 = "VOID", ARGS:6 = "VOID", ARGS:7 = "VOID", ARGS:8 = "VOID", ARGS:9 = "VOID", ARGS:10 = "VOID", ARGS:11 = "VOID", ARGS:12 = "VOID", ARGS:13 = "VOID", ARGS:14 = "VOID", ARGS:15 = "VOID", ARGS:16 = "VOID", ARGS:17 = "VOID", ARGS:18 = "VOID", ARGS:19 = "VOID", ARGS:20 = "VOID", ARGS:21 = "VOID", ARGS:22 = "VOID", ARGS:23 = "VOID", ARGS:24 = "VOID", ARGS:25 = "VOID", ARGS:26 = "VOID", ARGS:27 = "VOID", ARGS:28 = "VOID", ARGS:29 = "VOID", ARG:3)
CALL FADE(ARG, GETCOLOR(), GETBGCOLOR(), ARGS, ARGS:1, ARGS:2, ARGS:3, ARGS:4, ARGS:5, ARGS:6, ARGS:7, ARGS:8, ARGS:9, ARGS:10, ARGS:11, ARGS:12, ARGS:13, ARGS:14, ARGS:15, ARGS:16, ARGS:17, ARGS:18, ARGS:19, ARGS:20, ARGS:21, ARGS:22, ARGS:23, ARGS:24, ARGS:25, ARGS:26, ARGS:27, ARGS:28, ARGS:29, ARG:3)
RETURN RESULT

;-------------------------------------------------
;フェードイン関数@FADEIN
;	引数0：コマ数。多くするほどゆるやかになります。默认は8
;	文字列引数0～29：表示する文字列（空行はスペースで。省略すると無視します）
;
;引数で与えた文字列を、背景色からフェードイン表示します。
;色を変えたい場合は事前にSETCOLORするか、@FADEを直接呼んでください
;文字列は30行まで引き接受ことができます
;-------------------------------------------------
@FADEIN(ARG = 8, ARGS = "VOID", ARGS:1 = "VOID", ARGS:2 = "VOID", ARGS:3 = "VOID", ARGS:4 = "VOID", ARGS:5 = "VOID", ARGS:6 = "VOID", ARGS:7 = "VOID", ARGS:8 = "VOID", ARGS:9 = "VOID", ARGS:10 = "VOID", ARGS:11 = "VOID", ARGS:12 = "VOID", ARGS:13 = "VOID", ARGS:14 = "VOID", ARGS:15 = "VOID", ARGS:16 = "VOID", ARGS:17 = "VOID", ARGS:18 = "VOID", ARGS:19 = "VOID", ARGS:20 = "VOID", ARGS:21 = "VOID", ARGS:22 = "VOID", ARGS:23 = "VOID", ARGS:24 = "VOID", ARGS:25 = "VOID", ARGS:26 = "VOID", ARGS:27 = "VOID", ARGS:28 = "VOID", ARGS:29 = "VOID")
CALL FADE(ARG, GETBGCOLOR(), GETCOLOR(), ARGS, ARGS:1, ARGS:2, ARGS:3, ARGS:4, ARGS:5, ARGS:6, ARGS:7, ARGS:8, ARGS:9, ARGS:10, ARGS:11, ARGS:12, ARGS:13, ARGS:14, ARGS:15, ARGS:16, ARGS:17, ARGS:18, ARGS:19, ARGS:20, ARGS:21, ARGS:22, ARGS:23, ARGS:24, ARGS:25, ARGS:26, ARGS:27, ARGS:28, ARGS:29)
RETURN RESULT

;-------------------------------------------------
;フェード処理関数@FADE
;	引数0：コマ数。多くするほどゆるやかになります。默认は8。大きくしすぎるとおかしくなります
;	引数1：初期文字色
;	引数2：変化する文字色
;	文字列引数0～29：表示する文字列（空行はスペースで。省略すると無視します）
;	引数3：FULLCUTIN用。正にすると開幕行削除から入ります
;
;フェードアウト・フェードインの処理をします。内部関数ですが、呼び出しも可能です
;-------------------------------------------------
@FADE(ARG = 8, ARG:1 , ARG:2, ARGS = "VOID", ARGS:1 = "VOID", ARGS:2 = "VOID", ARGS:3 = "VOID", ARGS:4 = "VOID", ARGS:5 = "VOID", ARGS:6 = "VOID", ARGS:7 = "VOID", ARGS:8 = "VOID", ARGS:9 = "VOID", ARGS:10 = "VOID", ARGS:11 = "VOID", ARGS:12 = "VOID", ARGS:13 = "VOID", ARGS:14 = "VOID", ARGS:15 = "VOID", ARGS:16 = "VOID", ARGS:17 = "VOID", ARGS:18 = "VOID", ARGS:19 = "VOID", ARGS:20 = "VOID", ARGS:21 = "VOID", ARGS:22 = "VOID", ARGS:23 = "VOID", ARGS:24 = "VOID", ARGS:25 = "VOID", ARGS:26 = "VOID", ARGS:27 = "VOID", ARGS:28 = "VOID", ARGS:29 = "VOID", ARG:3)
#LOCALSIZE 3
#DIM PRICOLOR,1
#DIM RED,2
#DIM GREEN,2
#DIM BLUE,2
VARSET RED
VARSET GREEN
VARSET BLUE

;元の文字色の取得
PRICOLOR = GETCOLOR()

;表示オン
IF ANIME_CONFIG("FADE")
	;一部環境でフェード処理がうまくいかないようなので対策@revkoishi(14/05/28)
	LOCAL:2 = CURRENTREDRAW()
	REDRAW 0

	;初期色
	SETCOLOR ARG:1

	;RGBそれぞれのベース値、減少値を各色:0と1に代入
	RED = GETRED()
	IF RED > GETRED(ARG:2)
		RED:1 = MAX(1, (RED-GETRED(ARG:2))/ARG)
	ELSEIF RED < GETRED(ARG:2)
		RED:1 = MIN(-1, (RED-GETRED(ARG:2))/ARG)
	ENDIF
	GREEN = GETGREEN()
	IF GREEN > GETGREEN(ARG:2)
		GREEN:1 = MAX(1, (GREEN-GETGREEN(ARG:2))/ARG)
	ELSEIF GREEN < GETGREEN(ARG:2)
		GREEN:1 = MIN(-1, (GREEN-GETGREEN(ARG:2))/ARG)
	ENDIF
	BLUE = GETBLUE()
	IF BLUE > GETBLUE(ARG:2)
		BLUE:1 = MAX(1, (BLUE-GETBLUE(ARG:2))/ARG)
	ELSEIF BLUE < GETBLUE(ARG:2)
		BLUE:1 = MIN(-1, (BLUE-GETBLUE(ARG:2))/ARG)
	ENDIF

	IF !ARG:3
		FOR LOCAL, 0, 30
			SIF ARGS:LOCAL != "VOID"
				PRINTSL ARGS:LOCAL
		NEXT
		TWAIT 100 , 0
	ENDIF
	CLEARLINE 30-MATCH(ARGS, "VOID")

	FOR LOCAL:1, 0, ARG
		RED = MAX(0, RED-RED:1)
		GREEN = MAX(0, GREEN-GREEN:1)
		BLUE = MAX(0, BLUE-BLUE:1)
		SETCOLOR RED, GREEN, BLUE
		FOR LOCAL, 0, 30
			SIF ARGS:LOCAL != "VOID"
				PRINTSL ARGS:LOCAL
		NEXT
		TWAIT 100 , 0
		CLEARLINE 30-MATCH(ARGS, "VOID")
	NEXT
	SETCOLOR ARG:2
	FOR LOCAL, 0, 30
		SIF ARGS:LOCAL != "VOID"
			PRINTSL ARGS:LOCAL
	NEXT

	REDRAW LOCAL:2
;表示オフ
ELSE
	;終了色が背景色と同じ場合、初期色で表示。そうでなければ終了色で表示
	SETCOLOR GETBGCOLOR() == ARG:2 ? ARG:1 # ARG:2
	FOR LOCAL, 0, 30
		IF ARGS:LOCAL != "VOID"
			PRINTSL ARGS:LOCAL
		ENDIF
	NEXT
ENDIF
SETCOLOR PRICOLOR
RETURN RESULT

;-------------------------------------------------
;ぱにめーしょんのコンフィグを参照してARG分の行削除を行う
;省略すれば一行削除。FADE系の後での使用を想定
;-------------------------------------------------
@FADE_CLINE(ARG = 1)
IF ANIME_CONFIG("FADE")
	LOCAL:0 = CURRENTREDRAW()
	REDRAW 0
	CLEARLINE ARG
	REDRAW LOCAL:0
ENDIF

;-------------------------------------------------
;FADE_TO_CLEARLINE
;FADEOUTと行削除を統合したもの
;角色指定文字色から背景色へフェードアウトする
;アニメコンフィグを参照して必要なら行削除を行う
;-------------------------------------------------
@FADE_TO_CLEARLINE(ARG:0, ARGS:0)
CALL FADE(ARG:0, GETCOLOR(), GETBGCOLOR(), @"%ARGS:0%")
CALL FADE_CLINE(1)

;-------------------------------------------------
;FADE_TO_CLEARLINE2
;FADE_TO_CLEARLINEの文字色、背景色を指定可能にしたもの
;『ARG:0』の速度で『ARG:1』の文字色から『ARG:2』の背景色へ『ARGS:0』の文字列をフェードアウトさせる
;-------------------------------------------------
@FADE_TO_CLEARLINE2(ARG:0, ARG:1, ARG:2, ARGS:0)
CALL FADE(ARG:0, ARG:1, ARG:2, @"%ARGS:0%")
CALL FADE_CLINE(1)

;-------------------------------------------------
;振動エフェクト関数@QUAKE
;	引数0：振動数。省略すると2
;
;画面を上下に揺らします。揺れ幅はある程度随机です
;-------------------------------------------------
@QUAKE(ARG = 2)
#LOCALSIZE 3
;表示オフだと返回
SIF !ANIME_CONFIG("QUAKE")
	RETURN RESULT
REDRAW 0
FOR LOCAL, 0, ARG
	LOCAL:1 = RAND:4+1
	FOR LOCAL:2, 0, LOCAL:1
		PRINTL
	NEXT
	TWAIT 100, 0
	CLEARLINE LOCAL:1
	TWAIT 100, 0
NEXT
REDRAW 3
RETURN RESULT

;-------------------------------------------------
;発光エフェクト関数@FLASH
;	引数0：発光数。省略すると2
;	引数1：光る色。省略すると白
;
;画面を発光させます。背景色の点滅
;-------------------------------------------------
@FLASH(ARG = 2, ARG:1 = 0xFFFFFF)
#LOCALSIZE 2
;表示オフだと返回
SIF !ANIME_CONFIG("FLASH")
	RETURN RESULT
REDRAW 0
FOR LOCAL, 0, 150
	PRINTL
NEXT
LOCAL:1 = GETBGCOLOR()
FOR LOCAL, 0, ARG
	SETBGCOLOR ARG:1
	REDRAW 2
	SETBGCOLOR LOCAL:1
	REDRAW 2
NEXT
CLEARLINE 150
REDRAW 3
RETURN RESULT

;-------------------------------------------------
;全画面カットイン関数@FULLCUTIN
;	引数0：左端からのインデント
;	引数1：床から浮かせる行数（表示文字列と合わせて30を超えないでください）
;	文字列引数0～29：表示する文字列
;
;空行で画面を掃除して、全画面分のカットインを表示します
;行揃えやフォントなどのオプションはまだほとんど設定していません。アイデアだけとりあえず。
;-------------------------------------------------
@FULLCUTIN(ARG, ARG:1, ARGS = "VOID", ARGS:1 = "VOID", ARGS:2 = "VOID", ARGS:3 = "VOID", ARGS:4 = "VOID", ARGS:5 = "VOID", ARGS:6 = "VOID", ARGS:7 = "VOID", ARGS:8 = "VOID", ARGS:9 = "VOID", ARGS:10 = "VOID", ARGS:11 = "VOID", ARGS:12 = "VOID", ARGS:13 = "VOID", ARGS:14 = "VOID", ARGS:15 = "VOID", ARGS:16 = "VOID", ARGS:17 = "VOID", ARGS:18 = "VOID", ARGS:19 = "VOID", ARGS:20 = "VOID", ARGS:21 = "VOID", ARGS:22 = "VOID", ARGS:23 = "VOID", ARGS:24 = "VOID", ARGS:25 = "VOID", ARGS:26 = "VOID", ARGS:27 = "VOID", ARGS:28 = "VOID", ARGS:29 = "VOID", ARG:2 = 8)
#LOCALSIZE 1
;表示オン
IF ANIME_CONFIG("FULLCUTIN")
	FOR LOCAL, 0, 30
		IF ARGS:LOCAL == "VOID"
			IF ARG:1 > 0
				ARGS:LOCAL =
				ARG:1--
			ENDIF
		ELSE
			ARGS:LOCAL = %" "*ARG+ARGS:LOCAL%
		ENDIF
	NEXT
	CALL SAVELINE
	FOR LOCAL, 0, 150
		PRINTL
	NEXT
	;FULLCUTINがオンならフェードは強制
	CALLF ANIME_CONFIG("ONCE")
	CALL FADEIN(ARG:2, ARGS, ARGS:1, ARGS:2, ARGS:3, ARGS:4, ARGS:5, ARGS:6, ARGS:7, ARGS:8, ARGS:9, ARGS:10, ARGS:11, ARGS:12, ARGS:13, ARGS:14, ARGS:15, ARGS:16, ARGS:17, ARGS:18, ARGS:19, ARGS:20, ARGS:21, ARGS:22, ARGS:23, ARGS:24, ARGS:25, ARGS:26, ARGS:27, ARGS:28, ARGS:29)
	TWAIT 2000, 0
	CALLF ANIME_CONFIG("ONCE")
	CALL FADEOUT(ARG:2, ARGS, ARGS:1, ARGS:2, ARGS:3, ARGS:4, ARGS:5, ARGS:6, ARGS:7, ARGS:8, ARGS:9, ARGS:10, ARGS:11, ARGS:12, ARGS:13, ARGS:14, ARGS:15, ARGS:16, ARGS:17, ARGS:18, ARGS:19, ARGS:20, ARGS:21, ARGS:22, ARGS:23, ARGS:24, ARGS:25, ARGS:26, ARGS:27, ARGS:28, ARGS:29, 1)
	TWAIT 500, 0
	CALL RETURNLINE
;表示オフ（簡略化表示）
ELSE
	PRINTL
	PRINTL
	FOR LOCAL, 0, 30
		IF ARGS:LOCAL != "VOID"
			IF STRLENSU(ARGS:LOCAL) < 2
				PRINTSL ARGS:LOCAL
			ELSE
				PRINTFORMW %" "*ARG+ARGS:LOCAL%
			ENDIF
		ENDIF
	NEXT
	PRINTL
	PRINTL
ENDIF
RETURN RESULT

;-------------------------------------------------
;全画面カットイン関数@FULLCUTIN2
;	フェードイン・アウト等が従来より速いだけです
;-------------------------------------------------
@FULLCUTIN2(ARG, ARG:1, ARGS = "VOID", ARGS:1 = "VOID", ARGS:2 = "VOID", ARGS:3 = "VOID", ARGS:4 = "VOID", ARGS:5 = "VOID", ARGS:6 = "VOID", ARGS:7 = "VOID", ARGS:8 = "VOID", ARGS:9 = "VOID", ARGS:10 = "VOID", ARGS:11 = "VOID", ARGS:12 = "VOID", ARGS:13 = "VOID", ARGS:14 = "VOID", ARGS:15 = "VOID", ARGS:16 = "VOID", ARGS:17 = "VOID", ARGS:18 = "VOID", ARGS:19 = "VOID", ARGS:20 = "VOID", ARGS:21 = "VOID", ARGS:22 = "VOID", ARGS:23 = "VOID", ARGS:24 = "VOID", ARGS:25 = "VOID", ARGS:26 = "VOID", ARGS:27 = "VOID", ARGS:28 = "VOID", ARGS:29 = "VOID", ARG:2 = 4)
#LOCALSIZE 1
CALL FULLCUTIN(ARG, ARG:1, ARGS, ARGS:1, ARGS:2, ARGS:3, ARGS:4, ARGS:5, ARGS:6, ARGS:7, ARGS:8, ARGS:9, ARGS:10, ARGS:11, ARGS:12, ARGS:13, ARGS:14, ARGS:15, ARGS:16, ARGS:17, ARGS:18, ARGS:19, ARGS:20, ARGS:21, ARGS:22, ARGS:23, ARGS:24, ARGS:25, ARGS:26, ARGS:27, ARGS:28, ARGS:29, ARG:2)
RETURN RESULT

path: ERB/口上・メッセージ関連/個人口上/【75】メディスン/ぱにめーしょん/PANIMATION.ERB


code:
;≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
;文字列表示・アニメーション関数ファイル「ぱにめーしょん」0527版 同梱、東方Projectローカル関数ファイル
;東方系バリアントで使えそうなビジュアル・雰囲気向上系の関数群です。東方系以外では…どうだろう。あっても邪魔はしませんが。
;こちらは、ぱにめーしょん本体がないと動作しません
;≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡

;-------------------------------------------------
;東方Project風BGMカットイン関数@BGM_CUTIN
;	文字列引数0：曲名
;	文字列引数1：フォント（等幅じゃないと機能しません。省略したらDFKai-SB）
;	引数0：省略すると頭に「♪（紅・文・DS・妖戦タイプ）」、正にすると「ＢＧＭ. （永・風以降タイプ）」、負にすると何もつけない
;	引数1：スクロール速度（默认だと5）
;	引数2：画面端まで入る文字数（默认だと117）
;	引数3：1にすると消え方がサイドアウトに（默认だとフェードアウト）
;
;Windows標準フォントではないHG創英ﾌﾟﾚｾﾞﾝｽEBは望ましくないので、独断と偏見でデフォのフォントをDFKai-SBに変更@/L(14/09/28)
;-------------------------------------------------
@BGM_CUTIN(ARGS, ARG, ARGS:1 = "DFKai-SB", ARG:1 = 5, ARG:2 = 117, ARG:3)
#LOCALSIZE 2
#LOCALSSIZE 2
IF ARG >= 0
	LOCALS = %\@ ARG ? %"ＢＧＭ. "% # ♪ \@+ARGS%
ELSE
	LOCALS = %ARGS%
ENDIF
;色保存
LOCAL:1 = GETCOLOR()
RESETCOLOR
ARGS = %" "*ARG:2+LOCALS%
LOCALS:1 = %GETFONT()%
SIF CHKFONT(ARGS:1)
	SETFONT ARGS:1
;表示オン
IF ANIME_CONFIG("BGM_CUTIN")
	;スクロール速度がウィンドウ幅に対し速すぎる場合、矯正する
	ARG:1 = ARG:1 >= ARG:2 ? ARG:2-1 # ARG:1
	REDRAW 0
	LOCAL = 0
	;サイドイン
	FOR LOCAL, 0, STRLENS(LOCALS)+4, ARG:1
		PRINTSINGLEFORM %SUBSTRING(ARGS , LOCAL)%
		TWAIT 2, 0
		CLEARLINE 1
	NEXT
	PRINTFORML %" "*(ARG:2-STRLENS(LOCALS)-4)+LOCALS%
	TWAIT 800, 0
	CLEARLINE 1

	IF ARG:3 == 1
		;サイドアウト
		FOR LOCAL, 0, STRLENS(LOCALS)+4, ARG:1*2
			PRINTSINGLEFORM %SUBSTRING(ARGS , STRLENS(LOCALS)+4-LOCAL)%
			TWAIT 2 , 0
			CLEARLINE 1
		NEXT
	ELSE
		;BGMアニメオンだとフェードを強制表示する
		CALLF ANIME_CONFIG("ONCE")
		;フェードアウト
		CALL FADEOUT(8, " "*(ARG:2-STRLENS(LOCALS)-4)+LOCALS)
		CLEARLINE 1
	ENDIF
	REDRAW 1
;表示オフ
ELSE
	PRINTFORMW %" "*(ARG:2-STRLENS(LOCALS)-4)+LOCALS%
ENDIF
SETFONT LOCALS:1
SETCOLOR LOCAL:1
RETURN RESULT

;-------------------------------------------------
;東方Project風角色登場カットイン関数@CHARA_CUTIN
;	文字列引数0：肩書き
;	文字列引数1：名前
;	文字列引数2：ローマ字読み
;	引数0：省略すると左、正だと右寄りに表示。表示位置の逆からクロールインする
;	引数1：スクロール速度（默认だと30）
;	引数2：画面端まで入る文字数（默认だと117）
;			…バウンドいらんよね？
;神霊廟風の中央揃えです。需要が那个ば一行目左寄せ・三行目右寄せのバージョンも作る？
;-------------------------------------------------
;二つ名のフォントをHG教科書体からDFKai-SBへ
;ローマ字読みのフォントをＭＳ 明朝からGungsuhCheへ、それぞれ変更
;HG教科書体の粛清はWindows標準のフォントではない為。ＭＳ 明朝からGungsuhCheへの変更はついでに何か変えたかった、ということで
;Win7で那个ば環境に依存しないはずだけど、Win8/8.1での検証ができていないので、そこら辺はなんともなところ@/L(2014/09/28)
;-------------------------------------------------
@CHARA_CUTIN(ARGS, ARGS:1, ARGS:2, ARG, ARG:1 = 30, ARG:2 = 117)
#LOCALSIZE 11
#LOCALSSIZE 11
;フォント保存
LOCALS:10 = %GETFONT()%
;色保存
LOCAL:10 = GETCOLOR()
RESETCOLOR

;まず、３つの文字列を偶数にする
ARGS   = %\@ STRLENS(ARGS)/2 ? %ARGS+" "% # %ARGS% \@%
ARGS:1 = %\@ STRLENS(ARGS:1)/2 ? %ARGS:1+" "% # %ARGS:2% \@%
ARGS:2 = %\@ STRLENS(ARGS:2)/2 ? %ARGS:2+" "% # %ARGS:2% \@%

;一番長い文字列の字数を保存して、4を足す
LOCAL:3 = MAX(STRLENS(ARGS), STRLENS(ARGS:1), STRLENS(ARGS:2))+4

;文字列整理
FOR LOCAL, 0, 3
	LOCAL:1 = (LOCAL:3-STRLENS(ARGS:LOCAL))/2
	;インデントがてらに頭と尾巴をつけます
	ARGS:LOCAL = %(" "*LOCAL:1)+ARGS:LOCAL+(" "*LOCAL:1)%
	;原本を保存
	LOCALS:LOCAL = %ARGS:LOCAL%
	;スペースを付加
	IF !ARG
		LOCALS:LOCAL = %"  "+LOCALS:LOCAL%
		ARGS:LOCAL = %(" "*ARG:2)+LOCALS:LOCAL%
	ELSE
		ARGS:LOCAL = %" "*(ARG:2 - 2 - STRLENS(ARGS:LOCAL))+ARGS:LOCAL%
	ENDIF
NEXT

;罫線も用意しないとね
LOCALS:4 = %"-="*(LOCAL:3/2)%
LOCALS:5 = %"=-"*(LOCAL:3/2)%
;スペースを付加
IF !ARG
	LOCALS:4 = %"  "+LOCALS:4%
	LOCALS:5 = %"  "+LOCALS:5%
	LOCALS:6 = %(" "*ARG:2)+LOCALS:4%
	LOCALS:7 = %(" "*ARG:2)+LOCALS:5%
ELSE
	LOCALS:6 = %" "*(ARG:2 - 3 - STRLENS(LOCALS:4))+LOCALS:4%
	LOCALS:7 = %" "*(ARG:2 - 3 - STRLENS(LOCALS:5))+LOCALS:5%
ENDIF

;表示オン
IF ANIME_CONFIG("CHARA_CUTIN")
	;スクロール速度がウィンドウ幅に対し速すぎる場合、矯正する
	ARG:1 = ARG:1 >= ARG:2 ? ARG:2-1 # ARG:1
	REDRAW 0
	LOCAL = 0
	FOR LOCAL, 0, ARG:2-2, ARG:1
		IF !ARG
			;罫線は元フォント
			SETFONT LOCALS:10
			PRINTSINGLEFORM %SUBSTRING(LOCALS:6 , LOCAL)%
			;二つ名はDFKai-SB
			;SIF CHKFONT("HG教科書体")
			;	SETFONT "HG教科書体"
			SIF CHKFONT("DFKai-SB")
				SETFONT "DFKai-SB"
			PRINTSINGLEFORM %SUBSTRING(ARGS , LOCAL)%
			;名前は元フォント
			SETFONT LOCALS:10
			PRINTSINGLEFORM %SUBSTRING(ARGS:1 , LOCAL)%
			;ローマ字読みはGungsuhChe
			SIF CHKFONT("GungsuhChe")
				SETFONT "GungsuhChe"
			;SIF CHKFONT("ＭＳ 明朝")
			;	SETFONT "ＭＳ 明朝"
			PRINTSINGLEFORM %SUBSTRING(ARGS:2 , LOCAL)%
			;罫線は元フォント
			SETFONT LOCALS:10
			PRINTSINGLEFORM %SUBSTRING(LOCALS:7 , LOCAL)%
		ELSE
			SETFONT LOCALS:10
			PRINTSINGLEFORM %SUBSTRING(LOCALS:6 , (ARG:2 - 2) - LOCAL)%
			SIF CHKFONT("DFKai-SB")
				SETFONT "DFKai-SB"
			PRINTSINGLEFORM %SUBSTRING(ARGS , (ARG:2 - 2) - LOCAL)%
			SETFONT LOCALS:10
			PRINTSINGLEFORM %SUBSTRING(ARGS:1 , (ARG:2 - 2) - LOCAL)%
			SIF CHKFONT("GungsuhChe")
				SETFONT "GungsuhChe"
			PRINTSINGLEFORM %SUBSTRING(ARGS:2 , (ARG:2 - 2) - LOCAL)%
			SETFONT LOCALS:10
			PRINTSINGLEFORM %SUBSTRING(LOCALS:7 , (ARG:2 - 2) - LOCAL)%
		ENDIF
		TWAIT 2 , 0
		SIF !ARG || LOCAL
			CLEARLINE 5
	NEXT
ENDIF

IF !ARG
	SETFONT LOCALS:10
	PRINTFORML %LOCALS:4%
	SIF CHKFONT("DFKai-SB")
		SETFONT "DFKai-SB"
	PRINTFORML %LOCALS%
	SETFONT LOCALS:10
	PRINTFORML %LOCALS:1%
	SIF CHKFONT("GungsuhChe")
		SETFONT "GungsuhChe"
	PRINTFORML %LOCALS:2%
	SETFONT LOCALS:10
	PRINTFORML %LOCALS:5%
ELSE
	SETFONT LOCALS:10
	PRINTFORML %LOCALS:6%
	SIF CHKFONT("DFKai-SB")
		SETFONT "DFKai-SB"
	PRINTFORML %ARGS%
	SETFONT LOCALS:10
	PRINTFORML %ARGS:1%
	SIF CHKFONT("GungsuhChe")
		SETFONT "GungsuhChe"
	PRINTFORML %ARGS:2%
	SETFONT LOCALS:10
	PRINTFORML %LOCALS:7%
ENDIF
REDRAW 1
SETCOLOR LOCAL:10
RETURN RESULT

;-------------------------------------------------
;幻想暦関数@GENSOU_CALENDAR
;	引数0：2000年1月1日（115季睦月一日）からの経過日数
;引数に経過日数を与えることで、幻想卿の暦を文字列で返す関数です
;-------------------------------------------------
@GENSOU_CALENDAR(ARG)
#FUNCTIONS
#LOCALSIZE 3
;LOCALに年数
LOCAL = GETYEAR(ARG)
;LOCAL:1に月数
LOCAL:1 = GETDATE(GETYEAR(ARG, 1), GETURUU(LOCAL))
;LOCAL:2に日数
LOCAL:2 = GETDATE(GETYEAR(ARG, 1), GETURUU(LOCAL), 1)

RETURNF @"第%TOKANJI(LOCAL+115)%季　%GETMONTHNAME(LOCAL:1)%の%TOKANJI(LOCAL:2)%"

;-------------------------------------------------
;古典時刻関数@CLASSICAL_TIME
;	引数0：対象の変数（デフォでは秒）
;	引数1：1なら引数0を秒で、2なら時で計算する
;	引数2：表示形式（デフォ「○の○つ」、1=「○の刻、○つ」、2=「○の○つ　-○○-」）
;式中で使用する関数です。引数に記録されている数字を秒として、現在的時刻を文字列で返します
;古典時刻表記なので、30分単位未満の端数は切り捨てます。
;-------------------------------------------------
;すでに本体同梱してあるのでコメントアウト
;@CLASSICAL_TIME(ARG, ARG:1, ARG:2)
;#FUNCTIONS
;;分に変換する
;SELECTCASE ARG:1
;	;時で渡す場合
;	CASE 2
;		ARG *= 60
;	;秒で渡す場合
;	CASE 1
;		ARG /= 60
;ENDSELECT
;;0:00が子の三つなので、60分を足す
;ARG += 60
;;日期も管理しているケースを考え、24時間（1440分）で割ってあまりを取る（子の一つ～二つもここで対応される）
;ARG %= 1440
;;表示
;SIF GET_CLASSICAL_HOUR(ARG, 1) == "丑" && (ARG%120)/30 == 2
;	RETURNF "丑三つ時"
;RETURNF @"%GET_CLASSICAL_HOUR(ARG, 1)%の\@ ARG:2 == 1 ? 刻、 # \@%TOKANJI(((ARG%120)/30)+1)%つ\@ ARG:2 == 2 ? 　-%GET_CLASSICAL_HOUR(ARG, 1, 1)%時- # \@"

;時を取得
;引数2を真にすると、大まかな時間の様子を取る
;すでに本体同梱してあるのでコメントアウト
;@GET_CLASSICAL_HOUR(ARG, ARG:1, ARG:2)
;#FUNCTIONS
;;分に変換する
;SELECTCASE ARG:1
;	;時で渡す場合
;	CASE 2
;		ARG *= 60
;	;分で渡す場合（処理無）
;	CASE 1
;	;秒で渡す場合（默认）
;	CASEELSE
;		ARG /= 60
;ENDSELECT
;
;SELECTCASE ARG/120
;	CASE 0
;		RETURNF \@ ARG:2 ? 深更（しんこう） # 子 \@
;	CASE 1
;		RETURNF \@ ARG:2 ? 未明（みめい） # 丑 \@
;	CASE 2
;		RETURNF \@ ARG:2 ? 東雲（しののめ） # 寅 \@
;	CASE 3
;		RETURNF \@ ARG:2 ? 暁（あかつき） # 卯 \@
;	CASE 4
;		RETURNF \@ ARG:2 ? 早天（そうてん） # 辰 \@
;	CASE 5
;		RETURNF \@ ARG:2 ? 小昼（こひる） # 巳 \@
;	CASE 6
;		RETURNF \@ ARG:2 ? 昼中（ひるなか） # 午 \@
;	CASE 7
;		RETURNF \@ ARG:2 ? 日盛り（ひざかり） # 未 \@
;	CASE 8
;		RETURNF \@ ARG:2 ? 終日（ひねもす） # 申 \@
;	CASE 9
;		RETURNF \@ ARG:2 ? 黄昏（たそがれ） # 酉 \@
;	CASE 10
;		RETURNF \@ ARG:2 ? 宵（よい） # 戌 \@
;	CASE 11
;		RETURNF \@ ARG:2 ? 夜半（よわ） # 亥 \@
;ENDSELECT
;

;-------------------------------------------------
;数値→漢数字変換関数@TOKANJI
;TOSTR関数チックに、引数の数値を漢数字の文字列で返します
;変数の最大値は約922京であるため、一、万、億、兆、京の5回処理します
;-------------------------------------------------
;すでに本体同梱してあるのでコメントアウト
;@TOKANJI(ARG)
;#FUNCTIONS
;#LOCALSIZE 1
;#LOCALSSIZE 1
;#DIM LCOUNT, 1
;VARSET LOCALS
;FOR LCOUNT, 0, 5
;	LOCAL = ARG/POWER(10000, (4-LCOUNT))
;	ARG %= POWER(10000, (4-LCOUNT))
;	IF LOCAL
;		LOCALS += TOKANJIT(LOCAL)
;		SELECTCASE LCOUNT
;			CASE 0
;				LOCALS += "京"
;			CASE 1
;				LOCALS += "兆"
;			CASE 2
;				LOCALS += "億"
;			CASE 3
;				LOCALS += "万"
;		ENDSELECT
;	ENDIF
;NEXT
;RETURNF \@ LOCALS != "" ? %LOCALS% # 零 \@

;内部用or簡易用
;四桁以内の漢字変換。万以上与えるとバグ
;すでに本体同梱してあるのでコメントアウト
;@TOKANJIT(ARG)
;#FUNCTIONS
;SIF ARG >= 10000
;	RETURNF "ＢＵＧ"
;LOCALS = \@ ARG/1000 ? %TOKANJIS(ARG/1000, 1)%千 # \@
;ARG %= 1000
;LOCALS += \@ ARG/100 ? %TOKANJIS(ARG/100, 1)%百 # \@
;ARG %= 100
;LOCALS += \@ ARG/10 ? %TOKANJIS(ARG/10, 1)%十 # \@
;ARG %= 10
;RETURNF LOCALS + TOKANJIS(ARG)

;一桁の変換。引数1を真にすると一を省略する。2以上にすると零を表示する
;すでに本体同梱してあるのでコメントアウト
;@TOKANJIS(ARG, ARG:1)
;#FUNCTIONS
;SELECTCASE ARG
;	CASE 0
;		RETURNF \@ ARG:1 > 1 ? 零 #  \@
;	CASE 1
;		RETURNF \@ ARG:1 ?  # 一 \@
;	CASE 2
;		RETURNF "二"
;	CASE 3
;		RETURNF "三"
;	CASE 4
;		RETURNF "四"
;	CASE 5
;		RETURNF "五"
;	CASE 6
;		RETURNF "六"
;	CASE 7
;		RETURNF "七"
;	CASE 8
;		RETURNF "八"
;	CASE 9
;		RETURNF "九"
;	CASE 10
;		RETURNF "十"
;	CASEELSE
;		RETURNF "ＢＵＧ"
;ENDSELECT

;-------------------------------------------------
;閏年判定関数@GETURUU
;	引数0：年数
;西暦で年数を与えるとその年の日数を返します
;-------------------------------------------------
@GETURUU(ARG)
#FUNCTION
RETURNF (!(ARG % 4) && (ARG % 100)) || !(ARG % 400) ? 366 # 365

;-------------------------------------------------
;年数判定関数@GETYEAR
;	引数0：2000年1月1日からの経過日数
;	引数1：1にすると、端日数を返します
;経過日数から、経過年数を返します。
;引数1を真にすると、現在的年で何日経過しているかを返します。
;2000年を0年として返すため、西暦表記する際は2000を足してください。
;単純に経過年数を数える場合は意識しなくてもＯＫ
;-------------------------------------------------
@GETYEAR(ARG, ARG:1)
#FUNCTION
#LOCALSIZE 1
VARSET LOCAL
;2000年を0年目として扱う
;2000年から順に回して、年数LOCALを増やす
WHILE ARG > GETURUU(LOCAL)
	LOCAL++
	ARG -= GETURUU(LOCAL)
WEND
RETURNF ARG:1 ? ARG # LOCAL

;-------------------------------------------------
;日期判定関数@GETDATE
;	引数0：年内経過日数（年内総日数を超えるときはエラー…にはせず、総日数で割った余りで計算する。でもやめてね？）
;	引数1：年内総日数（GETURUU併用推奨）
;	引数2：省略すると○月、真にすると○日を返します
;-------------------------------------------------
@GETDATE(ARG, ARG:1 = 365, ARG:2)
#FUNCTION
#LOCALSIZE 2
;念のための処理
ARG %= ARG:1
;月ごとの日数計算
FOR LOCAL, 1, 13
	SELECTCASE LOCAL
		;30日の月
		CASE 4, 6, 9, 11
			LOCAL:1 = 30
		;2月
		CASE 2
			LOCAL:1 = 28 + (ARG:2 == 366)
		;31日の月
		CASEELSE
			LOCAL:1 = 31
	ENDSELECT
	IF ARG > LOCAL:1
		ARG -= LOCAL:1
	ELSE
		BREAK
	ENDIF
NEXT
RETURNF ARG:2 ? ARG # LOCAL-1

;-------------------------------------------------
;月名変換関数@GETMONTHNAME
;	引数0：ｎ月のｎ
;旧暦の月名に変換するだけ！
;12を超えていたら勝手に12で割って計算します。
;-------------------------------------------------
@GETMONTHNAME(ARG)
#FUNCTIONS
;念のための処理
ARG %= 12
SELECTCASE ARG
	CASE 1
		RETURNF "睦月"
	CASE 2
		RETURNF "如月"
	CASE 3
		RETURNF "弥生"
	CASE 4
		RETURNF "卯月"
	CASE 5
		RETURNF "皐月"
	CASE 6
		RETURNF "水無月"
	CASE 7
		RETURNF "文月"
	CASE 8
		RETURNF "葉月"
	CASE 9
		RETURNF "長月"
	CASE 10
		RETURNF "神無月"
	CASE 11
		RETURNF "霜月"
	CASEELSE
		RETURNF "師走"
ENDSELECT

path: ERB/口上・メッセージ関連/個人口上/【75】メディスン/ぱにめーしょん/PANIMATION_TOHO.ERB


path: ERB/口上・メッセージ関連/個人口上/【75】メディスン/ぱにめーしょん/TAGSPLIT/SYSTEM_TAGSPLIT.ERB


code:
; ブロックをタグと本文に分解する置き場
#DIMS TAGSPLIT_STR,1
#DIMS TAGSPLIT_TAG,1

; ブロックからタグごとに分解する置き場
#DIMS TAGSPLIT_TAGBLOCS,20
; ブロックからタグごとに分解したのを、さらにタグと数値に分解する置き場
#DIMS TAGSPLIT_TAGPROPS,2
; 引数をタグと数値に分解する置き場
#DIMS TAGSPLIT_NOWPROPS,2
; タグ分割数
#DIM TAGSPLIT_TAGNUM,1

path: ERB/口上・メッセージ関連/個人口上/【75】メディスン/ぱにめーしょん/TAGSPLIT/SYSTEM_TAGSPLIT.ERH


code:
;-------------------------------------------------------------------------------
;
;	TAGPRINT関数群
;
;===============================================================================
;	タグを利用した色・フォント・ス磚瓦・ボタン化自由自在な表示用関数
;	レイヤー用に作ったけど別にレイヤーじゃなくても使えます
;	CALL TAGPRINT(LOCALS)
;	CALL TAGPRINTL(LOCALS)
;	CALL TAGPRINTW(LOCALS)	と直接叩いてね
;-------------------------------------------------------------------------------
;	■区切り文字
;	  默认で"#"ですがARGS:1で変更が可能なので、見やすいのを使ってください
;	  以下"#"で説明します
;
;	  ブロックＡ#← ここ →#ブロックＣ  ※左の例の区切り文字で区切られた部分を1ブロック
;
;	  このブロック内でフォントを変えたり色を変えたりしています
;	  ブロックは1文字から可能で、1行中奖了100ブロックまで使用可能
;-------------------------------------------------------------------------------
;	■文字列の仕様はタグ方式
;	  <COLOR_0xFFFF00><FONT_ＭＳ 明朝><BUTTON_いろは>,いろはにほへと#
;	  この例では"いろはにほへと"を 赤色・フォント明朝・ボタン値"いろは" で表示します
;
;	■利用できるタグ
;		<COLOR_XX>	<色_XX> 			文字列の色を変えて表示、プロパティは16進RGB(追記すれば短縮可能)
;										もとに戻したい時は<COLOR><色>等プロパティ無しで宣言
;		<FONT_XX>	<フォント_XX> 		文字列のフォントを変えて表示、プロパティはフォント名(追記すれば短縮可能)
;										もとに戻したい時は<FONT><フォント>等プロパティ無しで宣言
;		<STYLE_XX>	<ス磚瓦_XX>		文字列のス磚瓦 0～0x0Fのビット積算 ( 1 = 太字  2 = 斜体  4 = 打ち消し線  8 = 下線 )
;										もとに戻したい時は<STYLE><ス磚瓦>等プロパティ無しで宣言
;		<BUTTON_XX>	<ボタン_XX>			文字列のボタン化、プロパティは返り値(RESULTS)
;
;	・プロパティのXXは文字列、Yは数値
;	・日英表記を强行両対応させたので、同一ブロック内で同時に不使用でね
;	・タグの順番は適当でOK、当然不使用のは省いてOK
;	・いろはにほへと,<COLOR_0xFFFF00><FONT_ＭＳ 明朝><BUTTON_いろは>#  こういう形式も可能
;	  対応させるにはSYSTEM_TAGSPLIT.ERBの @TAGSPLIT_TAGEND()関数の返り値を0から1に変えてください
;-------------------------------------------------------------------------------
;	■色とフォントは短縮表記が可能
;	  <色_赤>とか<FONT_明朝>とかやりたいならこのファイルの下部にある
;	  AUTOSETCOLOR/FONTに追加してご利用ねがいます
;===============================================================================
@TAGPRINT(ARGS, ARGS:1)
#LOCALSIZE 4
#LOCALSSIZE 2
#DIM LCOUNT,1
SIF ARGS == ""
	RETURN RESULT
VARSET LOCAL
; RESULT退避
LOCAL = RESULT, RESULT:1, RESULT:2
; 区切り文字をセット
CALL SET_NEST_SEPARATOR(ARGS:1)
; ブロックごとに分割
SPLIT ARGS, NEST_SEPARATOR, TAGPRINT_NEST
; 1ブロックずつ
FOR LCOUNT , 0 , RESULT
	; 空なら什麼也不做
	SIF TAGPRINT_NEST:LCOUNT == ""
		CONTINUE
	; 文字列セット
	LOCALS = %TAGSPLIT_ONE(TAGPRINT_NEST:LCOUNT)%
	; 色タグ
	LOCALS:1 = %TAGSPLIT_ONE(,"COLOR") + TAGSPLIT_ONE(,"色")%
	SIF LOCALS:1 != ""
		CALL AUTOSETCOLOR( LOCALS:1 )
	; フォントタグ
	LOCALS:1 = %TAGSPLIT_ONE(,"FONT") + TAGSPLIT_ONE(,"フォント")%
	SIF LOCALS:1 != ""
		CALL AUTOSETFONT( LOCALS:1 )
	; ス磚瓦タグ
	LOCALS:1 = %TAGSPLIT_ONE(,"STYLE") + TAGSPLIT_ONE(,"ス磚瓦")%
	SIF LOCALS:1 != ""
		CALL AUTOSETSTYLE( LOCALS:1 )
	; ボタンタグ
	LOCALS:1 = %TAGSPLIT_ONE(,"BUTTON") + TAGSPLIT_ONE(,"ボタン")%
	IF LOCALS:1 != ""
		PRINTBUTTON LOCALS, LOCALS:1
	ELSE
		PRINTFORM %LOCALS%
	ENDIF
	CALL AUTOSETCOLOR_SYS(-1)
	CALL AUTOSETFONT( "RESET" )		;	重さの5割以上はこいつだぁぁぁぁ
	CALL AUTOSETSTYLE( "RESET" )
NEXT
RESULT = LOCAL, LOCAL:1, LOCAL:2
RETURN RESULT

@TAGPRINTL(ARGS,ARGS:1)
CALL TAGPRINT(ARGS,ARGS:1)
PRINTL
RETURN RESULT

@TAGPRINTW(ARGS,ARGS:1)
CALL TAGPRINT(ARGS,ARGS:1)
WAITANYKEY
RETURN RESULT

@SET_NEST_SEPARATOR(ARGS)
IF (NEST_SEPARATOR != "" ) && (ARGS != "")
	NEST_SEPARATOR = %ARGS%
ELSE
	NEST_SEPARATOR = #
ENDIF
RETURN RESULT

;-------------------------------------------------------------------------------
;	TAGPRINTで使用した小関数
;-------------------------------------------------------------------------------
;	AUTOSETCOLOR(ARGS)
;	ARGSに放り込んだ文字列を解釈してSETCOLOR、RESETで色を戻す。
;-------------------------------------------------------------------------------
;	AUTOSETFONT(ARGS)
;	ARGSに放り込んだ文字列を解釈してSETFONT、RESETでフォント戻す。
;-------------------------------------------------------------------------------
;===============================================================================
@AUTOSETCOLOR(ARGS = "RESET")
#LOCALSIZE 1
LOCAL = RESULT
IF ISNUMERIC(ARGS)
	CALL AUTOSETCOLOR_SYS(TOINT(ARGS))
ELSE
	SELECTCASE ARGS
		CASE "","RESET","COLOR","色"		; 初期化
			CALL AUTOSETCOLOR_SYS(-1)
		CASE "赤"							; --- "赤"とかやりたい場合こんな感じで追加すべし  ---
			CALL AUTOSETCOLOR_SYS(0xFF0000)
		CASE "緑"
			CALL AUTOSETCOLOR_SYS(0x00FF00)
		CASE "青"
			CALL AUTOSETCOLOR_SYS(0x0000FF)
		CASE "黄"
			CALL AUTOSETCOLOR_SYS(0xFFFF00)
		CASE "水"
			CALL AUTOSETCOLOR_SYS(0x00FFFF)
		CASE "紫"
			CALL AUTOSETCOLOR_SYS(0xFF00FF)
	ENDSELECT
ENDIF
RETURN RESULT

;-------------------------------------------------------------------------------
@AUTOSETCOLOR_SYS(ARG = -1)
#DIM LCOLOR,1
#LOCALSIZE 1
SELECTCASE ARG
	CASE 0 TO 0xFFFFFF						; 現在色退避した上で変更
		LCOLOR = GETCOLOR()
		SETCOLOR ARG
		LOCAL = 1
	CASE -1									; 引数無しで戻す
		IF LOCAL == 1
			SIF LCOLOR == GETDEFBGCOLOR()	; 万が一最初に-1で呼んでしまった場合真っ黒になるため避けておく
				LCOLOR = GETDEFCOLOR()
			;SIF GETCOLOR() != LCOLOR
				SETCOLOR LCOLOR
			LOCAL = 0
		ENDIF
ENDSELECT

;-------------------------------------------------------------------------------
;===============================================================================
@AUTOSETFONT(ARGS = "RESET")
#LOCALSIZE 2
#DIMS LFONTS,1
LOCAL = RESULT
IF GROUPMATCH(ARGS, "","RESET","FONT","フォント")
	; 変更されてないなら即返回
	IF LOCAL:1 == 0
		RETURN LOCAL
	ELSE
		SIF CHKFONT(LFONTS)
			SETFONT LFONTS
		LOCAL:1 = 0
	ENDIF
ELSE
	$RESTART
	SELECTCASE ARGS
		CASE "ゴ別緻"						; 短縮させたい場合こんなかんじで追加すべし
			ARGS = "ＭＳ ゴシック"
			GOTO RESTART
		CASE "明朝"
			ARGS = "ＭＳ 明朝"
			GOTO RESTART
		CASEELSE
			IF CHKFONT(ARGS)
				LFONTS = %GETFONT()%
				SETFONT ARGS
				LOCAL:1 = 1
			ENDIF
	ENDSELECT
ENDIF
RETURN LOCAL

;-------------------------------------------------------------------------------
;===============================================================================
@AUTOSETSTYLE(ARGS = "RESET")
#LOCALSIZE 2
#DIM LSTYLE,1
LOCAL = RESULT
IF GROUPMATCH(ARGS,"","RESET","STYLE","ス磚瓦")
	IF LOCAL:1 == 0
		RETURN LOCAL
	ELSE
		FONTSTYLE LSTYLE
		LOCAL:1 = 0
	ENDIF
ELSEIF ISNUMERIC(ARGS)
	LSTYLE = GETSTYLE()
	FONTSTYLE TOINT(ARGS)
	LOCAL:1 = 1
ENDIF
RETURN LOCAL

path: ERB/口上・メッセージ関連/個人口上/【75】メディスン/ぱにめーしょん/TAGSPLIT/TAGPRINT.ERB


code:
#DIMS TAGPRINT_NEST,100
#DIMS NEST_SEPARATOR,1

path: ERB/口上・メッセージ関連/個人口上/【75】メディスン/ぱにめーしょん/TAGSPLIT/TAGPRINT.ERH


code:
;≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
;「ぱにめーしょん」0527版　By ぱ。
;Emuera専用汎用、アニメーション・ビジュアル拡張関数ファイル。ほぼバリアント間互換あり
;無断再配布ＯＫ、その際改変・追記は元の機能を損なわない範囲でお願いします
;≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡

これは何かと言うと、汎用便利関数ファイル（ビジュアル系）です。
当然のようにEmuera専用です。可能な限り私家改造を含めての新しいバージョンをご用意ください。

文字列がフェードアウトしたり飛んで来たり、PALAMをビジュアルフルな色つきバー表示にしたり、
まあそういう関数ばかり詰まっています。
文字列操作が楽になるようなものも結構。

アニメ効果の制御をおこなうコンフィグ関数「ANIME_CONFIG」を用意しました。
ただし、単品ではLOCALへの保存なので設定はセーブされません。
設定した値を取り出して別の変数（GLOBALがおすすめ）に保存して使ってみてください。
ユーザー設定のコンフィグ項目が増やせるので、ぱにめーしょん外のコンフィグも一緒に引き受けられたりします。

ファイル構成…
  PANIMATION.ERB      …ぱにめーしょん本体
  PANIMATION_TOHO.ERB …東方系バリアント向け関数。本体必須

詳しい使い方はファイル内の関数ごとのコメントをご覧ください。
手が空き次第、Readmeを充実させるかもしれません。

願わくば、どこか遠くの知らないバリアントのお役に立てますように。

謝辞と宣伝。

ぱにめーしょんは、口上・開発ｃｈの害悪どもの協力でできています。

  irc.2ch.net系「#eraEVENT_KXX」

さあ皆さんも、ぜひぜひ。

@FULLCUTIN？　そりゃネタだよ！

;一応、使用例
SETFONT "ＭＳ 明朝"
FONTSTYLE 3
REDRAW 0
CALL FULLCUTIN(40, 25, "ぱにめーしょんPresents","　","　","　　　　　　――狂気の全画面カットイン")
FONTSTYLE 0
SETFONT "ＭＳ ゴシック"
REDRAW 1

path: ERB/口上・メッセージ関連/個人口上/【75】メディスン/ぱにめーしょん/ぱにめーしょん_Readme.txt


code:
単に口上内でSOURCE:快Ｃ += 100などと加筆しても、処理の関係上絶頂させたりできません。
ソースの追加を適切に行いたい場合、以下の関数を加筆してください。

指令実行後に追加ソースをいれるための関数、霊夢の会話なら@M_KOJO_EXTRASOURCE_COM_K1_300
関数が存在していて指令が実行された場合、指令失敗しようが必ず読み込まれるので、
TFLAGなどで分岐を作り、特定の場合のみ追加ソースが入るようにしておくことを推奨。

;
@M_KOJO_EXTRASOURCE_COM_KX_指令番号
IF TFLAG:192 == 1 && TALENT:恋慕
	SOURCE:快Ｃ += 100
ENDIF

path: ERB/口上・メッセージ関連/個人口上/【75】メディスン/コマンド口上でソースを追加する方法.txt