diff --git a/.gitignore b/.gitignore
index 28c98f2ade2643616e47da0c40af940c64d526d0..64802fbaf79c4e73d7c52e4e3f2c61828a9b3f43 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,3 +11,4 @@
 /ERB/口上/悪魔汎用口上
 setting.json
 /setting.json
+resources/画像_自家製/
\ No newline at end of file
diff --git "a/ERB/\350\252\277\346\225\231\351\226\242\351\200\243/EVENT_T.ERB" "b/ERB/\350\252\277\346\225\231\351\226\242\351\200\243/EVENT_T.ERB"
index 4c0761306350f759fe9ff0afa69830a246b675bc..29832ba98ad617668f132803d8dfe54c03a9628e 100644
--- "a/ERB/\350\252\277\346\225\231\351\226\242\351\200\243/EVENT_T.ERB"
+++ "b/ERB/\350\252\277\346\225\231\351\226\242\351\200\243/EVENT_T.ERB"
@@ -63,10 +63,11 @@ SIF ASSI >= 0
 
 ;射精フラグ、処女喪失フラグなどをリセット
 VARSET TFLAG, 0, 0, 200
-;SELECTCOM・PREVCOMの廃棄
+;SELECTCOM・PREVCOM・INDICATE_COMの廃棄
 VARSET SELECTCOM, -1
 VARSET PREVCOM, -1
 VARSET PREVPLAYER, -1
+VARSET INDICATE_COM , -1
 TFLAG:PLAYER一時保存 = -1
 ;FOR LCOUNT, 0, 200
 ;	TFLAG:LCOUNT = 0
diff --git "a/ERB/\350\252\277\346\225\231\351\226\242\351\200\243/TRAIN.ERB" "b/ERB/\350\252\277\346\225\231\351\226\242\351\200\243/TRAIN.ERB"
index 75f3bedf99c18123ef10de6858872352d9d8331e..6ed210a0eb71ef851ed7786c3cc104f1ab510d74 100644
--- "a/ERB/\350\252\277\346\225\231\351\226\242\351\200\243/TRAIN.ERB"
+++ "b/ERB/\350\252\277\346\225\231\351\226\242\351\200\243/TRAIN.ERB"
@@ -23,6 +23,7 @@ IF 調教画面旧表示 == 0
 	NEXT
 ENDIF
 BEGIN TRAIN
+;CALL TRAIN_FLOW
 FLAG:ショップコマンド = 0
 RETURN 1
 
@@ -37,3 +38,133 @@ SIF ADD_TRAINABLE_2
 L_COUNT -= FLAG:調教実行済み回数
 RETURNF L_COUNT
 
+
+
+;---------------------------------------------
+;	@TRAIN_FLOW
+;	BEGIN TRAINを廃し、関数による調教フローの制御をおこなうための関数
+;	基本的にはEmueraのBEGIN TRAINのフロー図を参考にして処理する
+;	
+;---------------------------------------------
+@TRAIN_FLOW
+
+;調教開始時の諸々の処理呼び出し。開始時口上もここ。
+CALL EVENTTRAIN_GENERAL
+
+$REFRESH_DISPLAY
+
+;調教画面描画
+;調教対象・調教者の状態等表示
+CALL SHOW_STATUS
+;通常のフローでは@COMABLE群のチェックが入るが、@COMABLE群は全て殺しているので無視
+;コマンドリスト表示
+CALL SHOW_USERCOM
+;CUP,CDOWN,LOXEBASEについて初期化
+VARI CHARA , 3
+CHARA = MASTER , TARGET , ASSI
+FOR LOCAL , 0 , 3
+	SIF CHARA:LOCAL == -1
+		CONTINUE
+	VARSET CUP:CHARA:0 , 0
+	VARSET CDOWN:CHARA:0 , 0
+	VARSET DOWNBASE:CHARA:0 , 0
+	VARSET NOWEX:CHARA:0 , 0
+NEXT
+;入力
+$INPUTS_LOOP
+INPUTS
+;入力結果に対する反応の細かい処理はUSERCOMに投げる。調教コマンドの実行は後でやる。
+;CALL USERCOM , RESULTS
+;調教コマンドが入力されていたのなら、調教コマンドの実行処理へ
+SIF SELECTCOM > -1
+	GOTO EXETRAIN_LOOP
+;RUTURNしてきた値で処理を替える
+IF RESULT == 0
+	;0が返ってきたら入力処理に戻る
+	CLEARLINE 1
+	GOTO INPUTS_LOOP
+ELSEIF RESULT == 1
+	;1が返ってきたら出力画面に戻る
+	GOTO REFRESH_DISPLAY
+ELSEIF RESULT == 999
+	;調教終了
+	;調教終了時処理を呼び出して終了
+	CALL END_TRAINCOM
+	RETURN 1
+ENDIF
+;抜けて来た場合は調教コマンドであるため、それを実行
+$EXETRAIN_LOOP
+CALL EXE_TRAINCOM , SELECTCOM:0
+
+;BASEや絶頂等の変動記録値の取得。
+CALL RECORD_VALUE
+
+;COM終了後の処理
+CALL COMEND
+;実行が終わったSELECTCOMをずらす
+ARRAYREMOVE SELECTCOM, 0, 1
+SELECTCOM:99 = -1
+;SELECTCOMが空になっていない場合、コマンド連続実行判定に投げる
+IF SELECTCOM:0 > -1
+	CALL CHECK_CASCADE_COM
+	;RESULTが1ならコマンドを連続実行
+	SIF RESULT == 1
+		GOTO EXETRAIN_LOOP
+ENDIF
+
+
+;ここまで来たら調教画面を更新しに戻る
+GOTO REFRESH_DISPLAY
+
+;---------------------------------------------
+;	@EVENTTRAIN_GENERAL
+;	BEGINを排したTRAIN実行時に、調教開始時の処理として実行する関数
+;	@EVENTTRAIN相当
+;	
+;---------------------------------------------
+@EVENTTRAIN_GENERAL
+
+;---------------------------------------------
+;	@EXE_TRAIN
+;	指定された調教COMを実行するための関数
+;	DOTRAIN命令相当
+;	ARG :COM番号
+;	
+;---------------------------------------------
+@EXE_TRAINCOM , ARG
+
+;CALLFORM 
+;---------------------------------------------
+;	@RECORD_VALUE
+;	調教コマンド実行後にBASE・PALAM・EXの増減値を取得し、記録しておく関数
+;	ARG :COM番号
+;	
+;---------------------------------------------
+@RECORD_VALUE , ARG
+
+;---------------------------------------------
+;	@ECOMEND
+;	指定された調教COMを実行後に処理する関数
+;	@EVENTCOMEND相当
+;	ARG :COM番号
+;	
+;---------------------------------------------
+@COMEND , ARG
+
+;---------------------------------------------
+;	@EVENTTRAIN_GENERAL
+;	BEGINを排したTRAIN実行時に、調教終了時の処理として実行する関数
+;	@EVENTEND相当
+;	
+;---------------------------------------------
+@END_TRAINCOM
+
+
+
+;---------------------------------------------
+;	@CHECK_CASCADE_COM
+;	コマンド実行後、SELECTCOMに0以上の値が入っていたのなら、
+;	@EVENTEND相当
+;	
+;---------------------------------------------
+@CHECK_CASCADE_COM
\ No newline at end of file
diff --git "a/ERB/\350\252\277\346\225\231\351\226\242\351\200\243/TRAIN.ERH" "b/ERB/\350\252\277\346\225\231\351\226\242\351\200\243/TRAIN.ERH"
index ac2c9ead8a7450492a78322c5a7eedd99d313b37..166ff1a17f23de341b0ce90c767469f35c6bf50e 100644
--- "a/ERB/\350\252\277\346\225\231\351\226\242\351\200\243/TRAIN.ERH"
+++ "b/ERB/\350\252\277\346\225\231\351\226\242\351\200\243/TRAIN.ERH"
@@ -18,6 +18,10 @@
 ;履歴コマンドの実行可能成否の記録
 #DIM PREVCOMABLE, 100
 
+;次回に選んで欲しいコマンドを強調して指定する変数
+#DIM INDICATE_COM , 100
+
+
 #DIM SAVEDATA ADD_TRAINABLE_1;調教の実行可能数追加1 納金ランク5
 #DIM SAVEDATA ADD_TRAINABLE_2;調教の実行可能数追加1 納金ランク12
 
diff --git "a/ERB/\350\252\277\346\225\231\351\226\242\351\200\243/USERCOM.ERB" "b/ERB/\350\252\277\346\225\231\351\226\242\351\200\243/USERCOM.ERB"
index 07700f6031eaa1d5816f2b9b2ee2599ea67eb737..11644ee066b208dfa6d97d771f4c3dca58e2e502 100644
--- "a/ERB/\350\252\277\346\225\231\351\226\242\351\200\243/USERCOM.ERB"
+++ "b/ERB/\350\252\277\346\225\231\351\226\242\351\200\243/USERCOM.ERB"
@@ -87,6 +87,8 @@ SIF TFLAG:CALLTRAIN
 	RETURN 0
 ;コマンドを全てチェック
 LOCAL:1 = -1
+VARS L_LB_COLOR
+L_LB_COLOR = %TOSTR_HTML(BGCOLOR("LIGHT-BLACK"))%
 FOR LOCAL, 0, 1000
 	;名前の長さが0の場合、ないものとみなす
 	SIF STRLENS(TRAINNAME:LOCAL) == 0
@@ -134,16 +136,18 @@ FOR LOCAL, 0, 1000
 	;コマンド表示
 	TRYCCALLFORM COMNAME{LOCAL:2}
 		;その調教系統のCOMリストに放り込む。"_"で区切る。
-		COMLIST_TYPE:(LOCAL:3):(COUNT_COMTYPE:(LOCAL:3)) = <button value='{LOCAL:1}'>[{LOCAL:1 , 3}]%ARRANGE_STRLENS(RESULTS , L_COMSTRLENS-5) , L_COMSTRLENS-5 , LEFT %</button>
-		COUNT_COMTYPE:(LOCAL:3)++
+		COMLIST_TYPE:(LOCAL:3):(COUNT_COMTYPE:(LOCAL:3)) = <button value='{LOCAL:1}' title='%RESULTS%'>[{LOCAL:1 , 3}]%ARRANGE_STRLENS(RESULTS , L_COMSTRLENS-5) , L_COMSTRLENS-5 , LEFT %</button>
 		;PRINTFORMC %RESULTS%[{LOCAL:1,3}]
 	CATCH
-		COMLIST_TYPE:(LOCAL:3):(COUNT_COMTYPE:(LOCAL:3)) = <button value='{LOCAL:1}'>[{LOCAL:1 , 3}]%ARRANGE_STRLENS(TRAINNAME:(LOCAL:2), L_COMSTRLENS-5) , L_COMSTRLENS-5 , LEFT%</button>
-		COUNT_COMTYPE:(LOCAL:3)++
+		LOCALS = %TRAINNAME:(LOCAL:2)%
+		COMLIST_TYPE:(LOCAL:3):(COUNT_COMTYPE:(LOCAL:3)) = <button value='{LOCAL:1}' title='%LOCALS%'>[{LOCAL:1 , 3}]%ARRANGE_STRLENS(LOCALS, L_COMSTRLENS-5) , L_COMSTRLENS-5 , LEFT%</button>
 		;PRINTFORMC %TRAINNAME:(LOCAL:2)%[{LOCAL:1,3}]
 	ENDCATCH
-	
-	
+	;口上などで次のコマンドに指定されている場合光る
+	SIF MATCH(INDICATE_COM , LOCAL:2)
+		COMLIST_TYPE:(LOCAL:3):(COUNT_COMTYPE:(LOCAL:3)) = <div background_color='%L_LB_COLOR%'><b>%COMLIST_TYPE:(LOCAL:3):(COUNT_COMTYPE:(LOCAL:3))%</b></div>
+	;	COMLIST_TYPE:(LOCAL:3):(COUNT_COMTYPE:(LOCAL:3)) =<b><i><u><font color='%TOSTR_HTML(COLOR("パ赤"))%'>%COMLIST_TYPE:(LOCAL:3):(COUNT_COMTYPE:(LOCAL:3))%</font></b></i></u>
+	COUNT_COMTYPE:(LOCAL:3)++
 	;ここまできたら表示されたものとして登録される
 	R:(LOCAL:1) = LOCAL:2
 	;改行処理
@@ -274,6 +278,10 @@ SIF 調教画面旧表示
 ;SETCOLOR COLOR("gray")
 LOCAL:2=0 ;行管理用
 LOCAL:3=0 ;行内の列管理用
+VARS L_AQUA
+VARS L_LG
+L_AQUA = %TOSTR_HTML(COLOR("aqua"))%
+L_LG = %TOSTR_HTML(COLOR("light-gray"))%
 FOR LOCAL,0,16
 	SELECTCASE LOCAL
 		CASE 13,14
@@ -281,7 +289,7 @@ FOR LOCAL,0,16
 		CASEELSE
 			IF CFLAG:TARGET:(CFLAGNAME:(170+LOCAL)) == 0
 				;表示する場合、系統フィルタボタンを水色で系統フィルタ用リストに放り込む
-				TYPELIST:(LOCAL:2) = <button value='{700+LoCAL}'><font color='%TOSTR_HTML(COLOR("aqua"))%'>[{700+LOCAL}]%SUBSTRING(CFLAGNAME:(170+LOCAL),,STRLENS(CFLAGNAME:(170+LOCAL))-8)%[-]</button></font>
+				TYPELIST:(LOCAL:2) = <button value='{700+LoCAL}'><font color='%L_AQUA%'>[{700+LOCAL}]%SUBSTRING(CFLAGNAME:(170+LOCAL),,STRLENS(CFLAGNAME:(170+LOCAL))-8)%[-]</button></font>
 
 				;そののち、リストを作成。
 				IF COUNT_COMTYPE:LOCAL >= 1
@@ -305,7 +313,7 @@ FOR LOCAL,0,16
 							LOCAL:3=0
 							;次の行がページの境目を跨ぎそうな場合かつページの頭でないのなら、系統ボタンを更におかわり
 							SIF LOCAL:2 % NUM_COMLINE == 0
-								TYPELIST:(LOCAL:2) = <button value='{700+LoCAL}'><font color='%TOSTR_HTML(COLOR("aqua"))%'>[{700+LOCAL}]%SUBSTRING(CFLAGNAME:(170+LOCAL),,STRLENS(CFLAGNAME:(170+LOCAL))-8)%[-]</button></font>
+								TYPELIST:(LOCAL:2) = <button value='{700+LoCAL}'><font color='%L_AQUA%'>[{700+LOCAL}]%SUBSTRING(CFLAGNAME:(170+LOCAL),,STRLENS(CFLAGNAME:(170+LOCAL))-8)%[-]</button></font>
 						ENDIF
 					NEXT
 				ELSE
@@ -316,7 +324,7 @@ FOR LOCAL,0,16
 			ELSE
 				;表示しない場合は灰色で放り込んで改行
 				;SETCOLOR COLOR("light-gray")
-				TYPELIST:(LOCAL:2) = <button value='{700+LoCAL}'><font color='%TOSTR_HTML(COLOR("light-gray"))%'>[{700+LOCAL}]%SUBSTRING(CFLAGNAME:(170+LOCAL),,STRLENS(CFLAGNAME:(170+LOCAL))-8)%[+]</button></font>
+				TYPELIST:(LOCAL:2) = <button value='{700+LoCAL}'><font color='%L_LG%'>[{700+LOCAL}]%SUBSTRING(CFLAGNAME:(170+LOCAL),,STRLENS(CFLAGNAME:(170+LOCAL))-8)%[+]</button></font>
 				COMLIST:(LOCAL:2):(0) '= "-"*L_COMSTRLENS , "-"*L_COMSTRLENS , "-"*L_COMSTRLENS
 				;改行するんぬ
 				LOCAL:2++
@@ -339,7 +347,7 @@ FOR LOCAL , 0 , NUM_COMLINE
 	;カテゴリ領域にカテゴリ投入
 	TYPE_DOMAIN += TYPELIST:(LOCAL+COMLIST_PAGE*NUM_COMLINE) + "<br>"
 	FOR LOCAL:1 , 0 , L_RAW_COM
-		COM_DOMAIN += COMLIST:(LOCAL+COMLIST_PAGE*NUM_COMLINE):(LOCAL:1)
+		COM_DOMAIN += @"<div xpos='{LOCAL:1*L_COMSTRLENS*50}'>" + COMLIST:(LOCAL+COMLIST_PAGE*NUM_COMLINE):(LOCAL:1) + "</div>"
 	NEXT
 	COM_DOMAIN += "<br>"
 NEXT
@@ -717,6 +725,7 @@ DRAWLINE
 PRINTC 調教終了[999]
 ;---- EDIT 005 ADD END ---------------------------
 
+;@USERCOM , ARGS
 @USERCOM
 #LOCALSIZE 2
 #DIM LCOUNT
@@ -957,7 +966,16 @@ ELSEIF RESULT == 999
 	BEGIN AFTERTRAIN
 	RETURN 1
 ELSEIF Q:RESULT >= 0
+	IF 調教画面旧表示 != 0
+		PRINTL
+		CUSTOMDRAWLINE "-"
+		PRINTL
+	ENDIF
+	;強調表示用の変数INDICATE_COMを初期化
+	VARSET INDICATE_COM , -1
 	DOTRAIN Q:RESULT
+	;SELECTCOM:0 = Q:RESULT
+	;RETURN 1
 ENDIF
 RETURN 0