code:
;=========================
;通常画面HTML統合メソッド
;ARG:0 = 描画範囲内左隅X座標
;ARG:1 = 描画範囲Y座標
;=========================
@D20XX_GenerateHTML(X_ViewPoint,Y_ViewPoint)
	#DIM DYNAMIC LCOUNT
	#DIM DYNAMIC X_ViewPoint
	#DIM DYNAMIC Y_ViewPoint
	#DIMS DYNAMIC HEX_HTML
	#DIMS DYNAMIC UNIT_HTML
	#DIMS DYNAMIC MovableRangeHTML
	#DIMS DYNAMIC AttackRangeHTML
	#DIMS DYNAMIC AstarRouteHTML
	#DIMS DYNAMIC MapButtonHTML
	#DIMS DYNAMIC CommandBttonHTML

	[IF_NDEBUG]
		CLEARLINE LINECOUNT
	[ENDIF]
	;初期化するよ
	CALL D20XX_HTML_Constructor
	CALL D20XX_MoveCostMap_Constructor
	CALL D20XX_MoveRoute_Constructor
	CALL D20XX_AttackRangeMap_Constructor
	CALL D20XX_AttackRoute_Constructor

	FOR LCOUNT, 0, 16
		CALL D20XX_GenerateHTML_Hex(X_ViewPoint,(Y_ViewPoint + LCOUNT),LCOUNT,HEX_HTML)
		CALL D20XX_GenerateHTML_Unit(X_ViewPoint,(Y_ViewPoint + LCOUNT),LCOUNT,UNIT_HTML)
		CALL D20XX_GenerateHTML_MapButton(X_ViewPoint,(Y_ViewPoint + LCOUNT),LCOUNT,MapButtonHTML)
		MovableRangeHTML =
		AttackRangeHTML =
		AstarRouteHTML =
		CALL D20XX_GenerateHTML_CommandButton(LCOUNT,CommandBttonHTML)
		IF D20XX_SelectCommandMode == "移動" && TOINT(D20XX_Unit:D20XX_SelectUnit:3) > 0
		;	IF Demoslaviya20SXX_EnemyTargetMode == "True"
		;		PRINTFORML 【Debug】GHTML31
		;		CALL D20XX_GenerateHTML_EnemyMoveHexSelect(ARG:0,(ARG:1 + LCOUNT),LCOUNT,MovableRangeHTML)
		;	ELSE
		;		PRINTFORML 【Debug】GHTML34
				CALL D20XX_GenerateHTML_MovableRange(X_ViewPoint,(Y_ViewPoint + LCOUNT),LCOUNT,MovableRangeHTML)
		;	ENDIF
			D20XX_HTML:LCOUNT += @"<nobr>%HEX_HTML%%UNIT_HTML%%MovableRangeHTML%%MapButtonHTML%%CommandBttonHTML% </nobr>"
		ELSEIF D20XX_SelectCommandMode == "最短経路計算"
			;PRINTFORMW 【Debug！】GHTML40 X_ViewPoint ={X_ViewPoint} Y_ViewPoint = {Y_ViewPoint}
			CALL D20XX_GenerateHTML_MovableRange(X_ViewPoint,(Y_ViewPoint + LCOUNT),LCOUNT,MovableRangeHTML)
			CALL D20XX_GenerateHTML_AstarHexSelect(X_ViewPoint,(Y_ViewPoint + LCOUNT),LCOUNT,AstarRouteHTML)
			D20XX_HTML:LCOUNT += @"<nobr>%HEX_HTML%%UNIT_HTML%%MovableRangeHTML%%AstarRouteHTML%%MapButtonHTML%%CommandBttonHTML% </nobr>"
		ELSEIF D20XX_SelectCommandMode == "攻撃" && TOINT(D20XX_Unit:D20XX_SelectUnit:3) > 0
			;IF Demoslaviya20SXX_EnemyTargetMode == "True"
		;		CALL D20XX_GenerateHTML_EnemyTargetHexSelect(ARG:0,(ARG:1 + LCOUNT),LCOUNT,AttackRangeHTML)
		;	ELSE
				CALL D20XX_GenerateHTML_AttackRange(X_ViewPoint,(Y_ViewPoint + LCOUNT),LCOUNT,AttackRangeHTML)
		;	ENDIF
			D20XX_HTML:LCOUNT += @"<nobr>%HEX_HTML%%UNIT_HTML%%AttackRangeHTML%%MapButtonHTML%%CommandBttonHTML% </nobr>"
		ELSE
			D20XX_HTML:LCOUNT += @"<nobr>%HEX_HTML%%UNIT_HTML%%MapButtonHTML%%CommandBttonHTML% </nobr>"
		ENDIF

		;D20XX_HTML:LCOUNT += @"<nobr>%HEX_HTML%%UNIT_HTML%%MovableRangeHTML%%AstarRouteHTML%%AttackRangeHTML%%MapButtonHTML%%CommandBttonHTML%</nobr>"
		;PRINTFORML %D20XX_HTML:LCOUNT%
	NEXT
	;ここは余白なので何も入れたらだめなのだ！気を付けるのだ！
	FOR LCOUNT,16,28
		CALL D20XX_GenerateHTML_CommandButton(LCOUNT,CommandBttonHTML)
		D20XX_HTML:LCOUNT += @"<nobr>%CommandBttonHTML% </nobr>
"
	NEXT

;;;ARG = 描画中Y座標行目
@D20XX_GenerateHTML_CommandButton(ARG,RESULT_DATA)
	#DIM DYNAMIC Y_Line
	#DIMS DYNAMIC temp,28
	#DIMS REF RESULT_DATA
	#DIM DYNAMIC Face
	Y_Line = ARG
	temp:0  += @""
	temp:1  += @"<nonbutton pos='4800'>Демославия20XX</nonbutton>"
	temp:2  += @"<nonbutton pos='5100'>(ダエモスラビヤ20XX)</nonbutton>"
	temp:3  += @"<nonbutton pos='5000'>～シナリオ～</nonbutton>"
	temp:4  += @"<nonbutton pos='5150'>%D20XX_StageName%</nonbutton>"
	temp:5  += @"<nonbutton pos='5000'>～目標～</nonbutton>"
	temp:6  += @"<nonbutton pos='5150' title = '敵を全滅させる'>殲滅</nonbutton>"
	temp:7  += @"<nonbutton pos='5000'>┏画面移動━━━━━┓</nonbutton>"
	temp:8  += @"<nonbutton pos='5000'>┃</nonbutton><button value='100' pos='5450'>[↑]</button><nonbutton pos='6000'>┃</nonbutton>"
	temp:9  += @"<nonbutton pos='5000'>┃</nonbutton><button value='101' pos='5250'>[←]</button><button value='102' pos='5650'>[→]</button><nonbutton pos='6000'>┃</nonbutton>"
	temp:10  += @"<nonbutton pos='5000'>┃</nonbutton><button value='103' pos='5450'>[↓]</button><nonbutton pos='6000'>┃</nonbutton>"
	temp:11 += @"<nonbutton pos='5000'>┗━━━━━━━━━┛</nonbutton>"
	temp:12 += @"<nonbutton pos='5000'>┏現在的指示モード━┓</nonbutton>"
	IF D20XX_SelectCommandMode == "移動"
		temp:13 += @"<nonbutton pos='5000'>┃</nonbutton><button value='200' pos='5250'>移動モード</button><nonbutton pos='6000'>┃</nonbutton>"
	ELSEIF D20XX_SelectCommandMode == "攻撃"
		temp:13 += @"<nonbutton pos='5000'>┃</nonbutton><button value='200' pos='5250'>攻撃モード</button><nonbutton pos='6000'>┃</nonbutton>"
	ELSEIF D20XX_SelectCommandMode == "最短経路計算"
		temp:13 += @"<nonbutton pos='5000'>┃</nonbutton><button value='200' pos='5250'>最短経路計算中</button><nonbutton pos='6000'>┃</nonbutton>"
	ELSE
		temp:13 += @"<nonbutton pos='5000'>┃</nonbutton><button value='200' pos='5250'>選択モード</button><nonbutton pos='6000'>┃</nonbutton>"
	ENDIF
	temp:14 += @"<nonbutton pos='5000'>┗━━━━━━━━━┛</nonbutton>"
	temp:15 += @"<nonbutton pos='5100'>所持軍資金：</nonbutton>"
	temp:16 += @"<nonbutton pos='5000'>{CFLAG:MASTER:槞彁所持金,19}</nonbutton>"
	temp:17 += @"<nonbutton pos='5150'>表示：大 [+] [-]</nonbutton>"
	;Debug! あとで本格的にする
	IF Y_Line == 18
		CALL D20XX_Generate_UniqueFcsv, "イェニェル"
		;CALL D20XX_Face_ToHTML(Face,5050,"本/BG=0魔界空")
		CALL D20XX_FACE_FcsvToSprite(RESULTS)
		CALL D20XX_FACE_Packaging(RESULTS)
		RESULTS = %CONVERTSTR(RESULTS)%
		CALL D20XX_NO_NOBR(RESULTS)
		temp:18 += @"<nonbutton pos='5000'>%RESULTS%</nonbutton>"
	ENDIF
	temp:19 += @" "
	temp:20 += @" "
	temp:21 += @" "
	temp:22 += @" "
	temp:23 += @" "
	temp:24 += @" "
	temp:25 += @" "
	temp:26 += @" "
	temp:27 += @"<button value='998' title='次のターンに移ります' pos='5600'>ターン終了</button>"
	RESULT_DATA = %temp:Y_Line%
;;;=========================
;;;Hex&Unitボタンバインディング用HTML作成メソッド
;;;ARG = 描画範囲内左隅X座標
;;;ARG:1 = 描画範囲Y座標
;;;ARG:2 = 描画中Y座標行目
;;;=========================
@D20XX_GenerateHTML_MapButton(ARG:0,ARG:1,ARG:2,RESULT_DATA)
	#DIM DYNAMIC X_VIEW
	#DIM DYNAMIC Y_View
	#DIM DYNAMIC X_Count
	#DIM DYNAMIC Y_LINE

	#DIMS DYNAMIC HexName
	#DIMS DYNAMIC HexText
	#DIM DYNAMIC HexButtonValue

	#DIMS DYNAMIC UnitID
	#DIMS DYNAMIC UnitName
	#DIMS DYNAMIC UnitText
	#DIMS DYNAMIC UnitDefaultSrc
	#DIM DYNAMIC UnitButtonValue

	#DIMS REF RESULT_DATA

	;#region 初期化
		X_VIEW = ARG
		Y_View = ARG:1
		Y_LINE = ARG:2
		RESULT_DATA =
	;#endregion

	FOR X_Count , X_VIEW , X_VIEW + 38
		SIF X_Count >= 200
			BREAK ;描画範囲突破してしまった場合はBreakするよ
		SIF Y_LINE >= 200
			BREAK ;上に同じく
		SIF Y_VIEW >= 200
			BREAK

		IF X_Count % 2 == Y_View % 2
			HexName = %D20XX_MAP:Y_View:X_Count:0%
			HexButtonValue = 1000000 + Y_View * 1000 + X_Count
			IF D20XX_GET_HEXDATA(D20XX_MAP:Y_View:X_Count:0,"領帯ル名") != "Error" && D20XX_GET_HEXDATA(D20XX_MAP:Y_View:X_Count:0,"領帯ル名") != "虚無" && D20XX_GET_HEXDATA(D20XX_MAP:Y_View:X_Count:0,"領帯ル名") != ""
				IF Y_View % 2 == 1
					RESULT_DATA += @"<button value='{HexButtonValue}' title='%D20XX_GET_HEXDATA(D20XX_MAP:Y_View:X_Count:0,"解説")%\n デバッグ ={D20XX_AttackRangeMap:Y_View:X_Count}' pos='{D20XX_LeftSpase + (X_COUNT-X_VIEW)*D20XX_HexSize/2}'>"
					RESULT_DATA += @""
					RESULT_DATA += @"</button>"
				ELSE
					RESULT_DATA += @"<button value='{HexButtonValue}' title='%D20XX_GET_HEXDATA(D20XX_MAP:Y_View:X_Count:0,"解説")% \n デバッグ ={D20XX_AttackRangeMap:Y_View:X_Count}' pos='{D20XX_LeftSpase + (X_COUNT-X_VIEW)*D20XX_HexSize/2}'>"
					RESULT_DATA += @""
					RESULT_DATA += @"</button>"
				ENDIF
			ENDIF

			UnitID = %D20XX_MAP:Y_View:X_Count:1%

			IF ISNUMERIC(UnitID) == 1
				UnitName = %D20XX_Unit:(TOINT(UnitID)):1%

				IF TOINT(UnitID) == D20XX_SelectUnit
					UnitDefaultSrc = SelectUnit
				ELSE
					UnitDefaultSrc = NoneUnit
				ENDIF

				UnitButtonValue = 2000000 + Y_View * 1000 + X_Count
				IF Y_View % 2 == 1
					RESULT_DATA += @"<button value='{UnitButtonValue}' title='%D20XX_GenerateUnitComment(TOINT(UnitID))%' pos='{D20XX_LeftSpase + D20XX_HexHalfSize + (X_COUNT-X_VIEW - 1)*D20XX_HexSize/2 + 50}'>"
					RESULT_DATA += @""
					RESULT_DATA += @"</button>"
				ELSE
					RESULT_DATA += @"<button value='{UnitButtonValue}' title='%D20XX_GenerateUnitComment(TOINT(UnitID))%' pos='{D20XX_LeftSpase + D20XX_HexHalfSize + (X_COUNT-X_VIEW -1)*D20XX_HexSize/2 + 50}'>"
					RESULT_DATA += @""
					RESULT_DATA += @"</button>"
				ENDIF
			ENDIF
		ENDIF
	NEXT
	RETURN
;;;=========================
@D20XX_GenerateHTML_Hex(ARG,ARG:1,ARG:2,RESULT_DATA)
	#DIM DYNAMIC X_VIEW
	#DIM DYNAMIC Y_VIEW
	#DIM DYNAMIC X_COUNT
	#DIM DYNAMIC Y_LINE
	#DIMS DYNAMIC HEX_NAME
	#DIMS DYNAMIC TITLE_DATA
	#DIMS DYNAMIC SRC_DATA

	#DIMS REF RESULT_DATA

	;#region 初期化
		X_VIEW = ARG
		Y_VIEW = ARG:1
		Y_LINE = ARG:2
		RESULT_DATA =
	;#endregion
	FOR X_COUNT, X_VIEW, X_VIEW+38 ;表示画面は横幅12だよ！でもヘクス領帯ル方式なので数値が二倍になるのだ！
		SIF X_COUNT >= 200
			BREAK ;描画範囲突破してしまった場合はBreakするよ
		SIF Y_LINE >= 200
			BREAK ;上に同じく
		SIF Y_VIEW >= 200
			BREAK

		IF X_COUNT % 2 == Y_VIEW % 2
			HEX_NAME = %D20XX_GET_HEXDATA(D20XX_MAP:Y_VIEW:X_COUNT:0,"ファイル名")%
			TITLE_DATA = %D20XX_Generate_Hex_Comment(HEX_NAME)%
			SRC_DATA = %D20XX_GET_HEXDATA(HEX_NAME, "ファイル名")%

			IF HEX_NAME != "Error"
				IF Y_VIEW % 2 == 0
					RESULT_DATA += @"<nonbutton pos='{D20XX_LeftSpase + (X_COUNT-X_VIEW)*D20XX_HexSize/2}'>"
					RESULT_DATA += @""
					RESULT_DATA += @"</nonbutton>"
				ELSE
					RESULT_DATA += @"<nonbutton pos='{D20XX_LeftSpase + D20XX_HexHalfSize + (X_COUNT-X_VIEW-1)*D20XX_HexSize/2}'>"
					RESULT_DATA += @""
					RESULT_DATA += @"</nonbutton>"
				ENDIF
			ENDIF
		ENDIF
	NEXT
	RETURN

;;;=========================
;;;ユ针织描画HTML命令作成メソッド
;;;ARG = 描画範囲内左隅X座標
;;;ARG:1 = 描画範囲Y座標（要するにMAP全体で見たときのY座標　データ取得用）
;;;ARG:2 = 描画中Y座標行目（こっちは、表示画面内のY座標　表示するときの描画Y座標移動用）
;;;=========================
@D20XX_GenerateHTML_Unit(ARG,ARG:1,ARG:2,RESULT_DATA)
	#DIM DYNAMIC X_VIEW
	#DIM DYNAMIC Y_VIEW
	#DIM DYNAMIC X_COUNT
	#DIM DYNAMIC Y_LINE
	#DIM DYNAMIC UnitID
	#DIMS DYNAMIC UnitName
	#DIMS DYNAMIC UnitIFF
	#DIMS DYNAMIC UnitColor
	#DIMS DYNAMIC IsUnitMoved

	#DIMS REF RESULT_DATA

	;#region 初期化
		X_VIEW = ARG
		Y_VIEW = ARG:1
		Y_LINE = ARG:2
		RESULT_DATA =
	;#endregion
	FOR X_COUNT, X_VIEW, X_VIEW+38 ;表示画面は横幅12だよ！でもヘクス領帯ル方式なので数値が二倍になるのだ！
		SIF X_COUNT >= 200
			BREAK ;描画範囲突破してしまった場合はBreakするよ
		SIF Y_LINE >= 200
			BREAK ;上に同じく
		SIF Y_VIEW >= 200
			BREAK
		IF X_COUNT % 2 == Y_VIEW % 2
			UnitID = TOINT(D20XX_Map:Y_VIEW:X_COUNT:1)
			UnitName = %D20XX_Unit:UnitID:1%
			UnitIFF = %D20XX_Unit:UnitID:0%

			IF UnitName != "None" && UnitName != ""
				IF UnitIFF == "敵"
					UnitColor = Enemy
				ELSEIF UnitIFF == "自軍"
					IF D20XX_Unit:UnitID:3 < D20XX_GET_UNITDATA(UnitName,"行動力")
						UnitColor = Moved
					ELSE
						UnitColor = Wait
					ENDIF
				ELSEIF UnitIFF == "友軍"
					UnitColor = Friend
				ENDIF
				IF Y_VIEW % 2 == 0
					RESULT_DATA += @"<nonbutton pos='{D20XX_LeftSpase + (X_COUNT - X_VIEW)*D20XX_HexSize/2 + 50}'>"
					RESULT_DATA += @""
					RESULT_DATA += @"</nonbutton>"
					RESULT_DATA += @"<nonbutton pos='{D20XX_LeftSpase + (X_COUNT - X_VIEW)*D20XX_HexSize/2 +50}'>"
					RESULT_DATA += @""
					RESULT_DATA += @"</nonbutton>"
				ELSE
					RESULT_DATA += @"<nonbutton pos='{D20XX_LeftSpase + D20XX_HexHalfSize + ((X_COUNT - X_VIEW)-1)*D20XX_HexSize/2 + 50}'>"
					RESULT_DATA += @""
					RESULT_DATA += @"</nonbutton>"
					RESULT_DATA += @"<nonbutton pos='{D20XX_LeftSpase + D20XX_HexHalfSize + ((X_COUNT - X_VIEW)-1)*D20XX_HexSize/2 +50}'>"
					RESULT_DATA += @""
					RESULT_DATA += @"</nonbutton>"
				ENDIF
			ENDIF
		ENDIF
	NEXT
	RETURN
;;;=========================
;;;移動可能範囲表示HTML作成メソッド
;;;RESULT_DATA = 作成したHTMLを入れる所だよー これを戻り値として使うわよ！
;;;ARG:0 = 描画範囲内左隅X座標
;;;ARG:1 = 描画範囲Y座標（要するにMAP全体で見たときのY座標　データ取得用）
;;;ARG:2 = 描画中Y座標行目（こっちは、表示画面内のY座標　表示するときの描画Y座標移動用）
;;;=========================
@D20XX_GenerateHTML_MovableRange(ARG:0,ARG:1,ARG:2,RESULT_DATA)
	#DIMS DYNAMIC UnitType
	#DIM DYNAMIC UnitNowMovePower
	#DIM DYNAMIC X_Now
	#DIM DYNAMIC Y_Now

	#DIM DYNAMIC X_Count
	#DIM DYNAMIC X_View
	#DIM DYNAMIC Y_View
	#DIM DYNAMIC Y_Line

	#DIMS REF RESULT_DATA

	;#region 初期化
		X_View = ARG
		Y_View = ARG:1
		Y_Line = ARG:2
		UnitNowMovePower = 0
		RESULT_DATA =
	;#endregion

	IF D20XX_SelectUnit != 0
		UnitType = %D20XX_Unit:D20XX_SelectUnit:1%
		UnitNowMovePower = TOINT(D20XX_Unit:D20XX_SelectUnit:3)
		CALL D20XX_UnitSearch(D20XX_SelectUnit)
		IF RESULT:0 == 1
			Y_Now = RESULT:1
			X_Now = RESULT:2
			D20XX_MoveCostMap:Y_Now:X_Now = TOINT(D20XX_Unit:D20XX_SelectUnit:3)
			CALL D20XX_MoveCostCalc(UnitType,UnitNowMovePower,Y_Now,X_Now)
			;いつもの
			FOR X_Count, X_View, X_View+38 ;表示画面は横幅12だよ！でもヘクス領帯ル方式なので数値が二倍になるのだ！
				SIF X_Count >= 200
					BREAK ;描画範囲突破してしまった場合はBreakするよ
				SIF Y_Line >= 200
					BREAK ;上に同じく
				SIF Y_VIEW >= 200
					BREAK
				IF X_Count % 2 == Y_View % 2
					IF D20XX_MoveCostMap:Y_View:X_Count >= 0
						IF Y_VIEW % 2 == 0
							RESULT_DATA += @"<nonbutton pos='{D20XX_LeftSpase + (X_COUNT - X_View)*D20XX_HexSize/2}'>"
							RESULT_DATA += @""
							RESULT_DATA += @"</nonbutton>"
						ELSE
							RESULT_DATA += @"<nonbutton pos='{D20XX_LeftSpase + D20XX_HexHalfSize + ((X_COUNT - X_View)-1)*D20XX_HexSize/2}'>"
							RESULT_DATA += @""
							RESULT_DATA += @"</nonbutton>"
						ENDIF
					ENDIF
				ENDIF
			NEXT
		ENDIF
	ENDIF
	RETURN

;;;=========================
;;;最短経路表示HTML作成メソッド
;;;RESULT_DATA = 作成したHTMLを入れる所だよー これを戻り値として使うわよ！
;;;ARG:0 = 描画範囲内左隅X座標
;;;ARG:1 = 描画範囲Y座標（要するにMAP全体で見たときのY座標　データ取得用）
;;;ARG:2 = 描画中Y座標行目（こっちは、表示画面内のY座標　表示するときの描画Y座標移動用）
;;;=========================
@D20XX_GenerateHTML_AstarHexSelect(X_View,Y_View,Y_Line,RESULT_DATA)
	#DIM DYNAMIC X_Count
	#DIM DYNAMIC X_View
	#DIM DYNAMIC Y_View
	#DIM DYNAMIC Y_Line

	#DIMS REF RESULT_DATA

	;#region 初期化
		RESULT_DATA =
	;#endregion

	IF D20XX_SelectUnit != 0
		;PRINTFORM D20XX_SelectUnit = {D20XX_SelectUnit} X_View = {X_View}  Y_View = {Y_View} Y_Line = {Y_Line}
		;いつもの
		FOR X_Count, X_View, X_View+38 ;表示画面は横幅12だよ！でもヘクス領帯ル方式なので数値が二倍になるのだ！
			SIF X_Count >= 200
				BREAK ;描画範囲突破してしまった場合はBreakするよ
			SIF Y_Line >= 200
				BREAK ;上に同じく
			SIF Y_VIEW >= 200
				BREAK
			;IF X_Count % 2 == Y_View % 2
				IF D20XX_AstarMap:Y_View:X_Count:0 == 3
					IF Y_VIEW % 2 == 0
						RESULT_DATA += @"<nonbutton pos='{D20XX_LeftSpase + (X_COUNT - X_View)*D20XX_HexSize/2}'>"
						;AstarHex
						RESULT_DATA += @""
						RESULT_DATA += @"</nonbutton>"
					ELSE
						RESULT_DATA += @"<nonbutton pos='{D20XX_LeftSpase + D20XX_HexHalfSize + ((X_COUNT - X_View)-1)*D20XX_HexSize/2}'>"
						RESULT_DATA += @""
						RESULT_DATA += @"</nonbutton>"
					ENDIF
				ENDIF
			;ENDIF
		NEXT
	ENDIF
	;PRINTFORML D20XX_GenerateHTML_AstarHexSelect %RESULT_DATA%
	RETURN

;;;=========================
;;;攻撃可能範囲表示HTML作成メソッド
;;;RESULT_DATA = 作成したHTMLを入れる所だよー これを戻り値として使うわよ！
;;;X_View = 描画範囲内左隅X座標
;;;Y_View = 描画範囲Y座標（要するにMAP全体で見たときのY座標　データ取得用）
;;;ARG:2 = 描画中Y座標行目（こっちは、表示画面内のY座標　表示するときの描画Y座標移動用）
;;;=========================
@D20XX_GenerateHTML_AttackRange(X_View,Y_View,Y_Line,RESULT_DATA)
	#DIMS DYNAMIC UnitType
	#DIM DYNAMIC WeaponRange
	#DIM DYNAMIC X_Now
	#DIM DYNAMIC Y_Now

	#DIM DYNAMIC X_Count
	#DIM DYNAMIC X_View
	#DIM DYNAMIC Y_View
	#DIM DYNAMIC Y_Line

	#DIMS REF RESULT_DATA
	[IF_DEBUG]
		PRINTFORML 【Debug!】 D20XX_GenerateHTML_AttackRange X_View = {X_View}, Y_View = {Y_View}, Y_Line = {Y_Line},
	[ENDIF]
	IF D20XX_SelectUnit != 0
		UnitType = Demolaviya20XX_Unit:D20XX_SelectUnit:1
		WeaponRange = TOINT(D20XX_GET_WEAPONDATA(D20XX_SelectWeapon,"射程"))
		CALL D20XX_UnitSearch(D20XX_SelectUnit)
		IF RESULT:0 == 1
			Y_Now = RESULT:1
			X_Now = RESULT:2
			CALL D20XX_AttackRangeCalc(D20XX_SelectWeapon,WeaponRange,Y_Now,X_Now)
			;いつもの
			FOR X_Count, X_View, X_View+38 ;表示画面は横幅12だよ！でもヘクス領帯ル方式なので数値が二倍になるのだ！
				SIF X_Count >= 200
					BREAK ;描画範囲突破してしまった場合はBreakするよ
				SIF Y_Line >= 200
					BREAK ;上に同じく
				SIF Y_VIEW >= 200
					BREAK
				IF X_Count % 2 == Y_View % 2
					IF D20XX_AttackRangeMap:Y_View:X_Count >= 0
						IF Y_VIEW % 2 == 0
							RESULT_DATA += @"<nonbutton pos='{D20XX_LeftSpase + (X_Count - X_View)*D20XX_HexSize/2}'>"
							RESULT_DATA += @""
							RESULT_DATA += @"</nonbutton>"
						ELSE
							RESULT_DATA += @"<nonbutton pos='{D20XX_LeftSpase + D20XX_HexHalfSize + ((X_COUNT - X_View)-1)*D20XX_HexSize/2}'>"
							RESULT_DATA += @""
							RESULT_DATA += @"</nonbutton>"
						ENDIF
					ENDIF
				ENDIF
			NEXT
		ENDIF
	ENDIF
	RETURN

;;;========================
;;;敵ターン時攻撃対象ヘクス表示HTML作成メソッド
;;;RESULT_DATA = 作成したHTMLを入れる所だよー これを戻り値として使うわよ！
;;;X_View = 描画範囲内左隅X座標
;;;Y_View = 描画範囲Y座標（要するにMAP全体で見たときのY座標　データ取得用）
;;;Y_Line = 描画中Y座標行目（こっちは、表示画面内のY座標　表示するときの描画Y座標移動用）
;;;=========================
@D20XX_GenerateHTML_EnemyTargetHexSelect(X_View,Y_View,Y_Line,RESULT_DATA)
	#DIMS DYNAMIC UnitType
	#DIM DYNAMIC WeaponRange
	#DIM DYNAMIC X_Now
	#DIM DYNAMIC Y_Now

	#DIM DYNAMIC X_Count
	#DIM DYNAMIC X_View
	#DIM DYNAMIC Y_View
	#DIM DYNAMIC Y_Line

	#DIMS REF RESULT_DATA

	IF D20XX_SelectUnit != 0
		UnitType = Demolaviya20XX_Unit:D20XX_SelectUnit:1
		WeaponRange = TOINT(D20XX_GET_WEAPONDATA(D20XX_SelectWeapon,"射程"))
		CALL D20XX_UnitSearch(D20XX_SelectUnit)
		;いつもの
		FOR X_Count, X_View, X_View+38 ;表示画面は横幅12だよ！でもヘクス領帯ル方式なので数値が二倍になるのだ！
			SIF X_Count >= 200
				BREAK ;描画範囲突破してしまった場合はBreakするよ
			SIF Y_Line >= 200
				BREAK ;上に同じく
			SIF Y_VIEW >= 200
				BREAK
			IF X_Count % 2 == Y_View % 2
				IF D20XX_EnemyTargetSelectMap:Y_View:X_Count >= 0
					IF Y_VIEW % 2 == 0
						RESULT_DATA += @"<nonbutton pos='{D20XX_LeftSpase + (X_Count - X_View)*D20XX_HexSize/2}'>"
						RESULT_DATA += @""
						RESULT_DATA += @"</nonbutton>"
					ELSE
						RESULT_DATA += @"<nonbutton pos='{D20XX_LeftSpase + D20XX_HexHalfSize + ((X_COUNT - X_View)-1)*D20XX_HexSize/2}'>"
						RESULT_DATA += @""
						RESULT_DATA += @"</nonbutton>"
					ENDIF
				ENDIF
			ENDIF
		NEXT
	ENDIF
	RETURN

;;;=========================
;;;移動可能範囲表示HTML作成メソッド
;;;RESULT_DATA = 作成したHTMLを入れる所だよー これを戻り値として使うわよ！
;;;ARG:0 = 描画範囲内左隅X座標
;;;ARG:1 = 描画範囲Y座標（要するにMAP全体で見たときのY座標　データ取得用）
;;;ARG:2 = 描画中Y座標行目（こっちは、表示画面内のY座標　表示するときの描画Y座標移動用）
;;;=========================
@D20XX_GenerateHTML_EnemyMoveHexSelect(ARG:0,ARG:1,ARG:2,RESULT_DATA)
	#DIMS DYNAMIC UnitType
	#DIM DYNAMIC WeaponRange
	#DIM DYNAMIC X_Now
	#DIM DYNAMIC Y_Now

	#DIM DYNAMIC X_Count
	#DIM DYNAMIC X_View
	#DIM DYNAMIC Y_View
	#DIM DYNAMIC Y_Line

	#DIMS REF RESULT_DATA

	;IF D20XX_SelectUnit != 0
		CALL D20XX_UnitSearch(D20XX_SelectUnit)
		;いつもの
		FOR X_Count, X_View, X_View+38 ;表示画面は横幅12だよ！でもヘクス領帯ル方式なので数値が二倍になるのだ！
			SIF X_Count >= 200
				BREAK ;描画範囲突破してしまった場合はBreakするよ
			SIF Y_Line >= 200
				BREAK ;上に同じく
			SIF Y_VIEW >= 200
				BREAK
			IF X_Count % 2 == Y_View % 2
				IF D20XX_AstarMap:Y_View:X_Count:0 == 3
					IF Y_VIEW % 2 == 0
						RESULT_DATA += @"<nonbutton pos='{D20XX_LeftSpase + (X_Count - X_View)*D20XX_HexSize/2}'>"
						RESULT_DATA += @""
						RESULT_DATA += @"</nonbutton>"
					ELSE
						RESULT_DATA += @"<nonbutton pos='{D20XX_LeftSpase + D20XX_HexHalfSize + ((X_COUNT - X_View)-1)*D20XX_HexSize/2}'>"
						RESULT_DATA += @""
						RESULT_DATA += @"</nonbutton>"
					ENDIF
				ENDIF
			ENDIF
		NEXT
	;ENDIF
	RETURN
;
@D20XX_NO_NOBR(ARGS)
	#DIM LCOUNT
	#DIMS ResultHtml
	#DIM TagCount
	#DIMS DYNAMIC MEMO_RESULTS,100
	#DIM MEMO_REDRAW

	MEMO_REDRAW = CURRENTREDRAW()

	REDRAW 0
	ResultHtml =
	;HTML_PRINT CONVERTSTR(ARGS)
	;HTML_PRINT ARGS
	;LOCALS = %HTML_GETPRINTEDSTR(0)%
	;CLEARLINE 1
	HTML_TAGSPLIT ARGS
	TagCount = RESULT

	FOR LCOUNT, 0, TagCount
		MEMO_RESULTS:LCOUNT = %RESULTS:LCOUNT%
	NEXT
	FOR LCOUNT, 0, TagCount
		IF SUBSTRING(MEMO_RESULTS:LCOUNT, 0, 5) == "<nobr"
		ELSEIF SUBSTRING(MEMO_RESULTS:LCOUNT, 0, 6) == "</nobr"
		ELSEIF SUBSTRING(RESULTS:LCOUNT, 0, 2) == "<p"
		ELSEIF SUBSTRING(RESULTS:LCOUNT, 0, 3) == "</p"
		ELSEIF SUBSTRING(MEMO_RESULTS:LCOUNT, 0, 7) == "<button"
		ELSEIF SUBSTRING(MEMO_RESULTS:LCOUNT, 0, 8) == "</button"
		ELSEIF SUBSTRING(MEMO_RESULTS:LCOUNT, 0, 10) == "<nonbutton"
		ELSEIF SUBSTRING(MEMO_RESULTS:LCOUNT, 0, 11) == "</nonbutton"
		ELSE
			ResultHtml += @"%MEMO_RESULTS:LCOUNT%"
		ENDIF
	NEXT
	RESULTS = %ResultHtml%
	REDRAW MEMO_REDRAW
;


code:
;;;<Summary>
;;;	勝利判定するわよ
;;;</Summary>
;;;<returns>勝利判定(0=戦闘継続,1=勝利,-1=敗北)</returns>
@D20XX_Judgment()
	#DIM DYNAMIC LCount
	#DIM DYNAMIC EnemyCount
	#DIM DYNAMIC PlayerCount

	EnemyCount = 0
	SELECTCASE D20XX_VictoryType
		;全部の敵を倒せば勝利
		CASE "殲滅"
			FOR LCount, 0, 10000
				SIF D20XX_Unit:LCount:1 == "-1"
					BREAK
				IF D20XX_Unit:LCount:0 == "敵"
					SIF TOINT(D20XX_Unit:LCount:2) > 0
						EnemyCount++
				ELSEIF D20XX_Unit:LCount:0 == "自軍"
					SIF TOINT(D20XX_Unit:LCount:2) > 0
						PlayerCount++
				ENDIF
			NEXT
			SIF PlayerCount == 0
				RETURN -1
			SIF EnemyCount == 0
				RETURN 1
		CASEELSE
			PRINTFORML %D20XX_VictoryType%
			PRINTFORML ！デバッグメッセージ！
			PRINTFORML どうやら勝利条件が設定されていないようですわよ？
			PRINTFORMW とりあえず勝利ということにするのでデバッグをしてくださいな
			RETURN 1
	ENDSELECT
	RETURN 0

license: unknown


code:
;;;=========================
;;;迷你游戏 ダエモスラビヤ20XX呼び出しメソッド
;;;=========================
@D20XX_Start
	#DIMS FromPlace
	SETBGCOLOR 30,0,0
	REDRAW 0
	FromPlace = %SAVESTR:現在位置%

	SAVESTR:現在位置 = 魔界
	CALL D20XX_SelectStage

	CALL D20XX_EndGame
	SAVESTR:現在位置 = %FromPlace%
;;;=========================
;;;ステージ選択メソッド
;;;まだステージ解放処理とか作ってないよ
;;;=========================
@D20XX_SelectStage
	#DIMS StageList
	#DIMS CHOICES
	StageList = チュートリアル/デバッグ用MAP

	VARSET LOCALS
	SPLIT StageList, "/", LOCALS
	PRINTFORML シナリオ選択
	PRINTFORML ※未完成だよ！更新待っててね！

	CALL PRINT_SELECT(StageList,"返回")

	CHOICES = %LOCALS:RESULT%
	SELECTCASE CHOICES
		CASE "チュートリアル"
			CALL D20XX_MAP_チュートリアル
			;CALL D20XX_MAP_チュートリアル_開始メッセージ
			CALL D20XX_Main
			IF RESULT == 1
				;勝利のメッセージをモチモチ
				;CALL D20XX_MAP_チュートリアル_勝利
			ELSEIF RESULT == 2;敗北時
				;敗北のメッセージをモチモチ
				;CALL D20XX_MAP_チュートリアル_敗北
			ELSE
				;中断したときのメッセージをモチモチ
				;CALL D20XX_MAP_チュートリアル_撤退
			ENDIF
		CASE "デバッグ用MAP"
			CALL D20XX_MAP_デバッグ用MAP
			CALL D20XX_Main
		CASE "返回"
			RETURN 1
	ENDSELECT

;;;=========================
;;;D20XXメインメソッド
;;;ARGS = MAP情報三次元データ
;;;ARGS:1 = ユ针织データ
;;;=========================
@D20XX_Main
	#DIM DYNAMIC X_View
	#DIM DYNAMIC Y_View
	#DIM DYNAMIC LCount

	#DIMS DYNAMIC WeaponList,3

	#DIMS IsEND

	#DIM DYNAMIC SelectX
	#DIM DYNAMIC SelectY
	#DIM DYNAMIC Temp;何か別の名前つけたい

	;#region 初期化
		X_View = 0 ;い移開はMAP事に初期描画位置を変えられるようにする予定でございまする
		Y_View = 0 ;い移開はMAP事に初期描画位置を変えられるようにする予定でございまする

		D20XX_TarnMode = System

		CALL D20XX_MoveCostMap_Constructor
		CALL D20XX_AttackRangeMap_Constructor

		;これはテスト用だよ、
		D20XX_SelectCommandMode = 移動
		D20XX_SelectWeapon = None

	;#endregion

	;CALL D20XX_MAP_チュートリアル
	;メインループ
	$MainLoop
		;---------------------------------
		;PLAYヤーのターン(先手が解放軍のパターンにもしやすいようにモジュール化したいなぁ)
		;---------------------------------
		D20XX_TarnMode = Player
		$PlayerLoop
			CALL D20XX_GenerateHTML(X_View,Y_View)
			CALL D20XX_ViewHTML
			INPUT
			;ユ针织ボタンが押ささった時
			IF RESULT >= 2000000
				Temp = RESULT - 2000000
				SelectY = Temp / 1000
				SelectX = Temp % 1000
				IF D20XX_SelectUnit == 0
					IF D20XX_SelectUnit != TOINT(D20XX_MAP:SelectY:SelectX:1)
						IF D20XX_Unit:TOINT(D20XX_MAP:SelectY:SelectX:1):0 == "自軍"
							D20XX_SelectUnit = 0
							D20XX_SelectUnit = TOINT(D20XX_MAP:SelectY:SelectX:1)
						ELSE
							CALL D20XX_KOJO_イェニェル("敵ユ针织選択警告")
						ENDIF
					ELSEIF D20XX_SelectUnit == TOINT(D20XX_MAP:SelectY:SelectX:1)
						D20XX_SelectUnit = 0;同じユ针织が押された時は選択中ユ针织を重置(解除)するわよ
						;#region 武器選択初期化
							VARSET WeaponList:0 ,"None"
							D20XX_SelectWeapon = None
						;#endregion
					ENDIF
				ELSEIF D20XX_SelectCommandMode == "移動"
					IF D20XX_SelectUnit != TOINT(D20XX_MAP:SelectY:SelectX:1)
						IF D20XX_Unit:TOINT(D20XX_MAP:SelectY:SelectX:1):0 == "自軍"
							D20XX_SelectUnit = TOINT(D20XX_MAP:SelectY:SelectX:1);選択ユ针织を変更するわよ
							;#region 武器選択初期化
								VARSET WeaponList:0 ,"None"
								D20XX_SelectWeapon = None
							;#endregion
						ELSEIF D20XX_Unit:TOINT(D20XX_MAP:SelectY:SelectX:1):0 == "敵"
							CALL D20XX_KOJO_イェニェル("敵ユ针织選択警告")
						ENDIF
					ELSEIF D20XX_SelectUnit == TOINT(D20XX_MAP:SelectY:SelectX:1)
						D20XX_SelectUnit = 0;同じユ针织が押された時は選択中ユ针织を重置(解除)するわよ
						;#region 武器選択初期化
							VARSET WeaponList:0 ,"None"
							D20XX_SelectWeapon = None
						;#endregion
					ENDIF
				ELSEIF D20XX_SelectCommandMode == "攻撃"
					IF D20XX_Unit:TOINT(D20XX_MAP:SelectY:SelectX:1):0 == "自軍"
						D20XX_SelectUnit = TOINT(D20XX_MAP:SelectY:SelectX:1)
						D20XX_SelectWeapon = None
					ELSE
						CALL D20XX_HitCalc(SelectY,SelectX)
					ENDIF
				ENDIF
				;GOTO PlayerLoop
			;領帯ルボタンが押ささった時
			ELSEIF RESULT >= 1000000
				IF D20XX_SelectUnit != 0
					Temp = RESULT - 1000000
					SelectY = Temp / 1000
					SelectX = Temp % 1000
					SIF SelectY == 1000
						SelectY = 0

					IF D20XX_SelectCommandMode == "移動"
						CALL D20XX_Move(SelectY,SelectX)
					ELSEIF D20XX_SelectCommandMode == "攻撃"
						CALL D20XX_HitCalc(SelectY,SelectX)
					ENDIF

					;CALL D20XX_MoveCostMap_Constructor
					;CALL D20XX_AttackRangeMap_Constructor

					;移動してもユ针织選択解除しないほうが玩耍やすかったですわ
					;移動したらユ针织選択を解除するわよ
					;D20XX_SelectUnit = 0
				ENDIF
				;GOTO PlayerLoop
			;其他指令が押ささった時
			ELSE
				;指令モード変更ボタンとかターン終了ボタンとかの処理回りね
				;#region 武器選択
					IF RESULT == 1;武器1が選ばれた場合
						VARSET WeaponList:0 ,"None"
						SPLIT D20XX_Unit:D20XX_SelectUnit:6,",",WeaponList
						D20XX_SelectWeapon = %WeaponList:0%
						D20XX_SelectCommandMode = 攻撃
					ELSEIF RESULT == 2;武器2が選ばれた場合
						VARSET WeaponList:0 ,"None"
						SPLIT D20XX_Unit:D20XX_SelectUnit:6,",",WeaponList
						D20XX_SelectWeapon = %WeaponList:1%
						D20XX_SelectCommandMode = 攻撃
					ELSEIF RESULT == 3;武器3が選ばれた場合
						VARSET WeaponList:0 ,"None"
						SPLIT D20XX_Unit:D20XX_SelectUnit:6,",",WeaponList
						D20XX_SelectWeapon = %WeaponList:2%
						D20XX_SelectCommandMode = 攻撃
				;#endregion

				;#region MAP移動キー
					ELSEIF RESULT == 100;↑
						SIF Y_View > 0
							Y_View--
					ELSEIF RESULT == 102;→
						SIF X_View < 200
							X_View++
					ELSEIF RESULT == 101;←
						SIF X_View > 0
							X_View--
					ELSEIF RESULT == 103;↓
						SIF Y_View < 200
							Y_View++
				;#endregion

				;#region 命令モード変更
					ELSEIF RESULT == 200
						IF D20XX_SelectCommandMode == "移動"
							D20XX_SelectCommandMode = 攻撃
						ELSEIF D20XX_SelectCommandMode == "攻撃"
							D20XX_SelectCommandMode = 移動
						ENDIF
				;#endregion

				;#region Debug用 後で消す
					ELSEIF RESULT == 500
						CALL D20XX_UnitSearch (1)
						PRINTFORML 見つかった？ = {RESULT:0} Y = {RESULT:1}   X = {RESULT:2}
						CALL D20XX_UnitSearch (2)
						PRINTFORML 見つかった？ = {RESULT:0} Y = {RESULT:1}   X = {RESULT:2}
						CALL D20XX_AI_AsterByUnit(1,2)
				;#endregion

					ELSEIF RESULT == 800
						CALL D20XX_BlackMarket

					ELSEIF RESULT == 900;マニュアル
						CALL D20XX_Manual
					ELSEIF RESULT == 998
						;PLAYヤーのターン終了よ
						D20XX_SelectUnit = 0
						GOTO EndPlayerLoop
					ELSEIF RESULT == 999
						RETURN 0;後々、途中退室処理も作らねばならぬなぁ
					ENDIF
			ENDIF
		GOTO PlayerLoop
		$EndPlayerLoop
		;---------------------------------
		;敵のターン(先手が種族解放軍のパターンにもしやすいようにモジュール化したいなぁ)
		;---------------------------------
		D20XX_TarnMode = Enemy
		CALL D20XX_AI_Test
		;---------------------------------
		;ターン終了時の処理
		;---------------------------------
		D20XX_TarnMode = System
		CALL D20XX_Judgment
		IF RESULT == 1
			PRINTFORML
			PRINTFORML !!勝利!!
			PRINTFORMW
			RETURN 1
			;CALL CALL_LIB(@"勝利_%D20XX_StageName%")
		ELSEIF RESULT == -1
			PRINTFORML
			PRINTFORML 敗北...
			PRINTFORMW
			RETURN 2
		ELSE
			CALL D20XX_UnitMovePower_Constructor
			GOTO MainLoop
		ENDIF
@D20XX_ViewHTML
	#DIM DYNAMIC LCount
	#DIM DYNAMIC UnitFace
	#DIMS DYNAMIC Fcsv
	#DIMS DYNAMIC Weapon,4
		;CLEARLINE LINECOUNT
		CALL DEL_MOB
		FOR LCount,0,28
			HTML_PRINT @"%D20XX_HTML:LCOUNT%"
		NEXT
		DRAWLINE
		IF D20XX_SelectUnit > 0
			STR:0 = 選択中ユ针织：%D20XX_GET_UNITDATA(D20XX_Unit:D20XX_SelectUnit:1,"ユ针织名")%
			STR:1 = HTML:　HP:%D20XX_Unit:D20XX_SelectUnit:2%/%D20XX_GET_UNITDATA(D20XX_Unit:D20XX_SelectUnit:1,"HP")%　<nonbutton pos='3000'>-武装-</nonbutton>
			STR:2 = HTML:　行動力:%D20XX_Unit:D20XX_SelectUnit:3%/%D20XX_GET_UNITDATA(D20XX_Unit:D20XX_SelectUnit:1,"行動力")%
			STR:3 = HTML:　指揮統制率:%D20XX_Unit:D20XX_SelectUnit:4%/%D20XX_GET_UNITDATA(D20XX_Unit:D20XX_SelectUnit:1,"指揮統制率")%
			STR:4 = HTML:　ERA:%D20XX_Unit:D20XX_SelectUnit:5%/%D20XX_GET_UNITDATA(D20XX_Unit:D20XX_SelectUnit:1,"ERA")%
			STR:5 = HTML:
			STR:6 = HTML:
			STR:7 = HTML:
			STR:8 = HTML:
			SPLIT D20XX_Unit:D20XX_SelectUnit:6,",",Weapon
			FOR LCount, 0, 3
				IF Weapon:LCount != ""
					IF D20XX_SelectWeapon == Weapon:LCount
						STR:((LCount*2)+2) += @"<button pos='3100' value = '{LCount + 1}' title= '%D20XX_GET_WEAPONDATA(Weapon:LCount,"解説")%'>%D20XX_GET_WEAPONDATA(Weapon:LCount,"武器名")%</button>"
						STR:((LCount*2)+3) += @"<nonbutton pos='3200'>威力:%D20XX_GET_WEAPONDATA(Weapon:LCount,"威力")%×%D20XX_GET_WEAPONDATA(Weapon:LCount,"射撃回数")%　命中率：%D20XX_GET_WEAPONDATA(Weapon:LCount,"命中率")%　制圧力：%D20XX_GET_WEAPONDATA(Weapon:LCount,"制圧力")%</nonbutton>"
					ELSE
						STR:((LCount*2)+2) += @"<button pos='3100' value = '{LCount + 1}' title= '%D20XX_GET_WEAPONDATA(Weapon:LCount,"解説")%'>%D20XX_GET_WEAPONDATA(Weapon:LCount,"武器名")%</button>"
						STR:((LCount*2)+3) += @"<nonbutton pos='3200'>威力:%D20XX_GET_WEAPONDATA(Weapon:LCount,"威力")%×%D20XX_GET_WEAPONDATA(Weapon:LCount,"射撃回数")%　命中率：%D20XX_GET_WEAPONDATA(Weapon:LCount,"命中率")%　制圧力：%D20XX_GET_WEAPONDATA(Weapon:LCount,"制圧力")%</nonbutton>"
					ENDIF
				ELSE

				ENDIF
			NEXT

			IF D20XX_Unit:D20XX_SelectUnit:10 == "None"||D20XX_Unit:D20XX_SelectUnit:10 == ""
				CALL D20XX_Generate_UniqueFcsv, "兵士"
				Fcsv = %RESULTS%
				CALL D20XX_FACE_DFRAME(Fcsv, "")
			ELSE
				Fcsv = %D20XX_Leader:TOINT(D20XX_Unit:D20XX_SelectUnit:10):0%
				CALL D20XX_FACE_DFRAME(Fcsv, "")
			ENDIF
			CLEARLINE 1
			DRAWLINE
			SETCOLOR 0xffdc00
			IF D20XX_Unit:D20XX_SelectUnit:10 != "None"
			HTML_PRINT @"　　- %D20XX_Leader:TOINT(D20XX_Unit:D20XX_SelectUnit:10):1% -"
			ELSE
				PRINTFORML 　　- 路人リーダー -
			ENDIF
			RESETCOLOR
			PRINTFORML 口上入力スペース
			PRINTFORML 口上入力スペース

			;PRINTFORML 選択中ユ针织：%D20XX_GET_UNITDATA(D20XX_Unit:D20XX_SelectUnit:1,"ユ针织名")%
			;PRINTFORML HP:%D20XX_Unit:D20XX_SelectUnit:2%/%D20XX_GET_UNITDATA(D20XX_Unit:D20XX_SelectUnit:1,"HP")%
			;PRINTFORML 行動力:%D20XX_Unit:D20XX_SelectUnit:3%/%D20XX_GET_UNITDATA(D20XX_Unit:D20XX_SelectUnit:1,"行動力")%
			;PRINTFORML 指揮統制率:%D20XX_Unit:D20XX_SelectUnit:4%/%D20XX_GET_UNITDATA(D20XX_Unit:D20XX_SelectUnit:1,"指揮統制率")%
			;PRINTFORML ERA:%D20XX_Unit:D20XX_SelectUnit:5%/%D20XX_GET_UNITDATA(D20XX_Unit:D20XX_SelectUnit:1,"ERA")%
			;PRINTFORML 　-武装-
			;SPLIT D20XX_Unit:D20XX_SelectUnit:6,",",Weapon
			;FOR LCount, 0, 3
			;	IF Weapon:LCount != ""
			;		IF D20XX_SelectWeapon == Weapon:LCount
			;			HTML_PRINT @"<shape type='space' param='200'><button value = '{LCount + 1}' title= '%D20XX_GET_WEAPONDATA(Weapon:LCount,"解説")%'>%D20XX_GET_WEAPONDATA(Weapon:LCount,"武器名")%</button>"
			;			HTML_PRINT @"<shape type='space' param='300'>威力:%D20XX_GET_WEAPONDATA(Weapon:LCount,"威力")%×%D20XX_GET_WEAPONDATA(Weapon:LCount,"射撃回数")%　命中率：%D20XX_GET_WEAPONDATA(Weapon:LCount,"命中率")%　制圧力：%D20XX_GET_WEAPONDATA(Weapon:LCount,"制圧力")%"
			;		ELSE
			;			HTML_PRINT @"<shape type='space' param='200'><button value = '{LCount + 1}' title= '%D20XX_GET_WEAPONDATA(Weapon:LCount,"解説")%'>%D20XX_GET_WEAPONDATA(Weapon:LCount,"武器名")%</button>"
			;			HTML_PRINT @"<shape type='space' param='300'>威力:%D20XX_GET_WEAPONDATA(Weapon:LCount,"威力")%×%D20XX_GET_WEAPONDATA(Weapon:LCount,"射撃回数")%　命中率：%D20XX_GET_WEAPONDATA(Weapon:LCount,"命中率")%　制圧力：%D20XX_GET_WEAPONDATA(Weapon:LCount,"制圧力")%"
			;		ENDIF
			;	ELSE
			;		PRINTL
			;		PRINTL
			;	ENDIF
			;NEXT
		ELSE
			STR:0 = 選択中ユ针织：无
			STR:1 = HTML:　HP:0/0　<nonbutton pos='3000'>-武装-</nonbutton>
			STR:2 = HTML:　行動力:0/0　<nonbutton pos='3100'>Null</nonbutton>
			STR:3 = HTML:　指揮統制率:0
			STR:4 = HTML:　ERA:0
			STR:5 =
			STR:6 =
			STR:7 =
			STR:8 =

			IF CFLAG:MASTER:颜绘 == 0
				CALL D20XX_Generate_UniqueFcsv, "無人"
				Fcsv = %RESULTS%
				CALL D20XX_FACE_DFRAME(Fcsv, "無人")
			ELSE
				CALL DIALOGUE_FRAME(MASTER,"憤怒/托下巴/对话框・・・")
			ENDIF
			CLEARLINE 1
			DRAWLINE
			SETCOLOR 0xffdc00
			PRINTFORML 　　- %NAME:MASTER% -
			RESETCOLOR
			PRINTFORML (どうするか行動を決めなくては...)
			PRINTFORML

		;	CALL CREATE_MOB, "イェニェル"
		;	Yenyel = CNUM("イェニェル")
		;	STR:1 = - _黄色_イェニェル_ -
		;	STR:2 = 「%PRINT_NamariF("どいつえの命令をするのか教えてくれ")%」
		;	CALL DIALOGUE_FRAME(Yenyel, "本")
		;	RESETCOLOR
		;	PRINTFORML
		;	PRINTFORML
		;	CALL D20XX_KOJO_イェニェル("ユ针织未選択")
		;	FOR LCount, 0, 11
		;		PRINTL
		;	NEXT
		ENDIF

		DRAWLINE
		;TRYCALLFORM D20XX_Start_KOJO_K15
		PRINTFORML [800] イェニェル兵器廠社 [900] 操作説明 [999] 迷你游戏を終了する

@D20XX_ViewHTML_Enemy
	#DIM DYNAMIC LCount
	#DIMS DYNAMIC Weapon,4
	#DIMS DYNAMIC Fcsv
		;CLEARLINE LINECOUNT
		CALL DEL_MOB
		FOR LCount,0,28
			HTML_PRINT @"%D20XX_HTML:LCOUNT%"
		NEXT
		DRAWLINE
		IF D20XX_SelectUnit > 0
			STR:0 = 選択中ユ针织：%D20XX_GET_UNITDATA(D20XX_Unit:D20XX_SelectUnit:1,"ユ针织名")%
			STR:1 = HTML:　HP:%D20XX_Unit:D20XX_SelectUnit:2%/%D20XX_GET_UNITDATA(D20XX_Unit:D20XX_SelectUnit:1,"HP")%　<nonbutton pos='3000'>-武装-</nonbutton>
			STR:2 = HTML:　行動力:%D20XX_Unit:D20XX_SelectUnit:3%/%D20XX_GET_UNITDATA(D20XX_Unit:D20XX_SelectUnit:1,"行動力")%
			STR:3 = HTML:　指揮統制率:%D20XX_Unit:D20XX_SelectUnit:4%/%D20XX_GET_UNITDATA(D20XX_Unit:D20XX_SelectUnit:1,"指揮統制率")%
			STR:4 = HTML:　ERA:%D20XX_Unit:D20XX_SelectUnit:5%/%D20XX_GET_UNITDATA(D20XX_Unit:D20XX_SelectUnit:1,"ERA")%
			STR:5 = HTML:
			STR:6 = HTML:
			STR:7 = HTML:
			STR:8 = HTML:
			SPLIT D20XX_Unit:D20XX_SelectUnit:6,",",Weapon
			FOR LCount, 0, 3
				IF Weapon:LCount != ""
					IF D20XX_SelectWeapon == Weapon:LCount
						STR:((LCount*2)+2) += @"<button pos='3100' value = '{LCount + 1}' title= '%D20XX_GET_WEAPONDATA(Weapon:LCount,"解説")%'>%D20XX_GET_WEAPONDATA(Weapon:LCount,"武器名")%</button>"
						STR:((LCount*2)+3) += @"<nonbutton pos='3200'>威力:%D20XX_GET_WEAPONDATA(Weapon:LCount,"威力")%×%D20XX_GET_WEAPONDATA(Weapon:LCount,"射撃回数")%　命中率：%D20XX_GET_WEAPONDATA(Weapon:LCount,"命中率")%　制圧力：%D20XX_GET_WEAPONDATA(Weapon:LCount,"制圧力")%</nonbutton>"
					ELSE
						STR:((LCount*2)+2) += @"<button pos='3100' value = '{LCount + 1}' title= '%D20XX_GET_WEAPONDATA(Weapon:LCount,"解説")%'>%D20XX_GET_WEAPONDATA(Weapon:LCount,"武器名")%</button>"
						STR:((LCount*2)+3) += @"<nonbutton pos='3200'>威力:%D20XX_GET_WEAPONDATA(Weapon:LCount,"威力")%×%D20XX_GET_WEAPONDATA(Weapon:LCount,"射撃回数")%　命中率：%D20XX_GET_WEAPONDATA(Weapon:LCount,"命中率")%　制圧力：%D20XX_GET_WEAPONDATA(Weapon:LCount,"制圧力")%</nonbutton>"
					ENDIF
				ELSE

				ENDIF
			NEXT

			IF D20XX_Unit:D20XX_SelectUnit:10 == "None"||D20XX_Unit:D20XX_SelectUnit:10 == ""
				CALL D20XX_Generate_UniqueFcsv, "兵士"
				Fcsv = %RESULTS%
				CALL D20XX_FACE_DFRAME(Fcsv, "")
			ELSE
				Fcsv = %D20XX_Unit:D20XX_SelectUnit:10%
				CALL D20XX_FACE_DFRAME(Fcsv, "")
			ENDIF
			CLEARLINE 1
			DRAWLINE
			SETCOLOR 0xffdc00
			PRINTFORML 　　- 敵軍角色名を挿入 -
			RESETCOLOR
			PRINTFORML 敵軍口上入力スペース
			PRINTFORML 敵軍口上入力スペース
			DRAWLINE
			PRINTFORML 計算を実行中...
		ENDIF
;背景色変更する領帯ミングを用意するために、迷你游戏終了時はココに来るようにする。
@D20XX_EndGame
	CALL D20XX_KOJO_イェニェル("游戏終了")
	RESETBGCOLOR
	RETURN 0


code:
;=========================
;�~�j�Q�[�� �_�G���X���r��20XX�Ăяo�����\�b�h
;=========================
@Demoslaviya20XX_Start
	SETBGCOLOR 30,0,0
	CALL Demoslaviya20XX_SelectStage

	CALL Demoslaviya20XX_EndGame
;=========================
;�X�e�[�W�I�����\�b�h
;�܂��X�e�[�W��������Ƃ�����ĂȂ���
;=========================
@Demoslaviya20XX_SelectStage
	#DIMS StageList
	#DIMS CHOICES
	StageList = �`���[�g���A��/�f�o�b�O�pMAP

	VARSET LOCALS
	SPLIT StageList, "/", LOCALS
	PRINTFORML �V�i���I�I��
	PRINTFORML ������������I

	CALL PRINT_SELECT(StageList,"�߂�")

	CHOICES = %LOCALS:RESULT%
	SELECTCASE CHOICES
		CASE "�`���[�g���A��"
			CALL Demoslaviya20XX_MAP_�`���[�g���A��
			;CALL Demoslaviya20XX_MAP_�`���[�g���A��_�J�n���b�Z�[�W
			CALL Demoslaviya20XX_Main
			IF RESULT == 1
				;�����̃��b�Z�[�W�����`���`
				;CALL Demoslaviya20XX_MAP_�`���[�g���A��_����
			ELSEIF RESULT == 2;�s�k��
				;�s�k�̃��b�Z�[�W�����`���`
				;CALL Demoslaviya20XX_MAP_�`���[�g���A��_�s�k
			ELSE
				;���f�����Ƃ��̃��b�Z�[�W�����`���`
				;CALL Demoslaviya20XX_MAP_�`���[�g���A��_�P��
			ENDIF
		CASE "�f�o�b�O�pMAP"
			CALL Demoslaviya20XX_MAP_�f�o�b�O�pMAP
			CALL Demoslaviya20XX_Main
		CASE "�߂�"
			RETURN 1
	ENDSELECT

;=========================
;Demoslaviya20XX���C�����\�b�h
;ARGS = MAP���O�����f�[�^
;ARGS:1 = ���j�b�g�f�[�^
;=========================
@Demoslaviya20XX_Main
	#DIM DYNAMIC X_View
	#DIM DYNAMIC Y_View
	#DIM DYNAMIC LCount

	#DIMS DYNAMIC WeaponList,3

	#DIMS IsEND

	#DIM DYNAMIC SelectX
	#DIM DYNAMIC SelectY
	#DIM DYNAMIC Temp;�����ʂ̖��O������

	;#region ������
		X_View = 0 ;�������MAP���ɏ����`��ʒu��ς�����悤�ɂ���\��ł������܂���
		Y_View = 0 ;�������MAP���ɏ����`��ʒu��ς�����悤�ɂ���\��ł������܂���

		Demoslaviya20XX_TarnMode = System

		CALL Demoslaviya20XX_MoveCostMap_Constructor
		CALL Demoslaviya20XX_AttackRangeMap_Constructor

		;����̓e�X�g�p����A
		Demoslaviya20XX_SelectCommandMode = �ړ�
		Demoslaviya20XX_SelectWeapon = None

	;#endregion

	;CALL Demoslaviya20XX_MAP_�`���[�g���A��
	;���C�����[�v
	$MainLoop
		;---------------------------------
		;�v���C���[�̃^�[��(��肪����R�̃p�^�[���ɂ����₷���悤�Ƀ��W���[�����������Ȃ�)
		;---------------------------------
		Demoslaviya20XX_TarnMode = Player
		$PlayerLoop
			CALL Demoslaviya20XX_GenerateHTML(X_View,Y_View)
			CALL Demoslaviya20XX_ViewHTML
			INPUT
			;���j�b�g�{�^����������������
			IF RESULT >= 2000000
				Temp = RESULT - 2000000
				SelectY = Temp / 1000
				SelectX = Temp % 1000
				IF Demoslaviya20XX_SelectUnit == 0
					IF Demoslaviya20XX_SelectUnit != TOINT(Demoslaviya20XX_MAP:SelectY:SelectX:1)
						IF Demoslaviya20XX_Unit:TOINT(Demoslaviya20XX_MAP:SelectY:SelectX:1):0 == "����"
							Demoslaviya20XX_SelectUnit = 0
							Demoslaviya20XX_SelectUnit = TOINT(Demoslaviya20XX_MAP:SelectY:SelectX:1)
						ELSE
							CALL Demoslaviya20XX_KOJO_�C�F�j�C�F��("�G���j�b�g�I���x��")
						ENDIF
					ELSEIF Demoslaviya20XX_SelectUnit == TOINT(Demoslaviya20XX_MAP:SelectY:SelectX:1)
						Demoslaviya20XX_SelectUnit = 0;�������j�b�g�������ꂽ���͑I�𒆃��j�b�g�����Z�b�g(����)������
						;#region ����I��������
							VARSET WeaponList:0 ,"None"
							Demoslaviya20XX_SelectWeapon = None
						;#endregion
					ENDIF
				ELSEIF Demoslaviya20XX_SelectCommandMode == "�ړ�"
					IF Demoslaviya20XX_SelectUnit != TOINT(Demoslaviya20XX_MAP:SelectY:SelectX:1)
						IF Demoslaviya20XX_Unit:TOINT(Demoslaviya20XX_MAP:SelectY:SelectX:1):0 == "����"
							Demoslaviya20XX_SelectUnit = TOINT(Demoslaviya20XX_MAP:SelectY:SelectX:1);�I�����j�b�g��ύX������
							;#region ����I��������
								VARSET WeaponList:0 ,"None"
								Demoslaviya20XX_SelectWeapon = None
							;#endregion
						ELSE
							CALL Demoslaviya20XX_KOJO_�C�F�j�C�F��("�G���j�b�g�I���x��")
						ENDIF
					ELSEIF Demoslaviya20XX_SelectUnit == TOINT(Demoslaviya20XX_MAP:SelectY:SelectX:1)
						Demoslaviya20XX_SelectUnit = 0;�������j�b�g�������ꂽ���͑I�𒆃��j�b�g�����Z�b�g(����)������
						;#region ����I��������
							VARSET WeaponList:0 ,"None"
							Demoslaviya20XX_SelectWeapon = None
						;#endregion
					ENDIF
				ELSEIF Demoslaviya20XX_SelectCommandMode == "�U��"
					IF Demoslaviya20XX_Unit:TOINT(Demoslaviya20XX_MAP:SelectY:SelectX:1):0 == "����"
						Demoslaviya20XX_SelectUnit = TOINT(Demoslaviya20XX_MAP:SelectY:SelectX:1)
						Demoslaviya20XX_SelectWeapon = None
					ELSE
						CALL Demoslaviya20XX_HitCalc(SelectY,SelectX)
					ENDIF
				ENDIF
				;GOTO PlayerLoop
			;�^�C���{�^����������������
			ELSEIF RESULT >= 1000000
				IF Demoslaviya20XX_SelectUnit != 0
					Temp = RESULT - 1000000
					SelectY = Temp / 1000
					SelectX = Temp % 1000
					SIF SelectY == 1000
						SelectY = 0

					IF Demoslaviya20XX_SelectCommandMode == "�ړ�"
						CALL Demoslaviya20XX_Move(SelectY,SelectX)
					ELSEIF Demoslaviya20XX_SelectCommandMode == "�U��"
						CALL Demoslaviya20XX_HitCalc(SelectY,SelectX)
					ENDIF

					;CALL Demoslaviya20XX_MoveCostMap_Constructor
					;CALL Demoslaviya20XX_AttackRangeMap_Constructor

					;�ړ����Ă����j�b�g�I���������Ȃ��ق����V�т₷�������ł���
					;�ړ������烆�j�b�g�I��������������
					;Demoslaviya20XX_SelectUnit = 0
				ENDIF
				;GOTO PlayerLoop
			;���̑��R�}���h��������������
			ELSE
				;�R�}���h���[�h�ύX�{�^���Ƃ��^�[���I���{�^���Ƃ��̏�������
				;#region ����I��
					IF RESULT == 1;����1���I�΂ꂽ�ꍇ
						VARSET WeaponList:0 ,"None"
						SPLIT Demoslaviya20XX_Unit:Demoslaviya20XX_SelectUnit:6,",",WeaponList
						Demoslaviya20XX_SelectWeapon = %WeaponList:0%
						Demoslaviya20XX_SelectCommandMode = �U��
					ELSEIF RESULT == 2;����2���I�΂ꂽ�ꍇ
						VARSET WeaponList:0 ,"None"
						SPLIT Demoslaviya20XX_Unit:Demoslaviya20XX_SelectUnit:6,",",WeaponList
						Demoslaviya20XX_SelectWeapon = %WeaponList:1%
						Demoslaviya20XX_SelectCommandMode = �U��
					ELSEIF RESULT == 3;����3���I�΂ꂽ�ꍇ
						VARSET WeaponList:0 ,"None"
						SPLIT Demoslaviya20XX_Unit:Demoslaviya20XX_SelectUnit:6,",",WeaponList
						Demoslaviya20XX_SelectWeapon = %WeaponList:2%
						Demoslaviya20XX_SelectCommandMode = �U��
				;#endregion

				;#region MAP�ړ��L�[
					ELSEIF RESULT == 100;��
						SIF Y_View > 0
							Y_View--
					ELSEIF RESULT == 102;��
						SIF X_View < 200
							X_View++
					ELSEIF RESULT == 101;��
						SIF X_View > 0
							X_View--
					ELSEIF RESULT == 103;��
						SIF Y_View < 200
							Y_View++
				;#endregion

				;#region ���߃��[�h�ύX
					ELSEIF RESULT == 200
						IF Demoslaviya20XX_SelectCommandMode == "�ړ�"
							Demoslaviya20XX_SelectCommandMode = �U��
						ELSEIF Demoslaviya20XX_SelectCommandMode == "�U��"
							Demoslaviya20XX_SelectCommandMode = �ړ�
						ENDIF
				;#endregion

					ELSEIF RESULT == 800
						PRINTFORML ���߂�ˁI�܂��������Ȃ񂾁I
						PRINTFORMW �X�V�҂��ĂāI
						;CALL Demoslaviya20XX_BlackMarket

					ELSEIF RESULT == 900;�}�j���A��
						CALL Demoslaviya20XX_Manual
					ELSEIF RESULT == 998
						;�v���C���[�̃^�[���I����
						Demoslaviya20XX_SelectUnit = 0
						GOTO EndPlayerLoop
					ELSEIF RESULT == 999
						RETURN 0;��X�A�r���ގ����������˂΂Ȃ�ʂȂ�
					ENDIF
			ENDIF
		GOTO PlayerLoop
		$EndPlayerLoop
		;---------------------------------
		;�G�̃^�[��(��肪�푰����R�̃p�^�[���ɂ����₷���悤�Ƀ��W���[�����������Ȃ�)
		;---------------------------------
		Demoslaviya20XX_TarnMode = Enemy
		CALL Demoslaviya20XX_AI_Test
		;---------------------------------
		;�^�[���I�����̏���
		;---------------------------------
		Demoslaviya20XX_TarnMode = System
		CALL Demoslaviya20XX_Judgment
		IF RESULT == 1
			PRINTFORML
			PRINTFORML !!����!!
			PRINTFORMW
			RETURN 1
			;CALL CALL_LIB(@"����_%Demoslaviya20XX_StageName%")
		ELSEIF RESULT == -1
			PRINTFORML
			PRINTFORML �s�k...
			PRINTFORMW
			RETURN 2
		ELSE
			CALL Demoslaviya20XX_UnitMovePower_Constructor
			GOTO MainLoop
		ENDIF
@Demoslaviya20XX_ViewHTML
	#DIM DYNAMIC LCount
	#DIMS DYNAMIC Weapon,4
		;CLEARLINE LINECOUNT
		FOR LCount,0,21
			HTML_PRINT @"%Demoslaviya20XX_HTML:LCOUNT%"
		NEXT
		DRAWLINE
		CALL Demoslaviya20XX_Demol(@"�����R�����F{CFLAG:MASTER:�לZ������}�D")
		IF Demoslaviya20XX_SelectUnit > 0
			PRINTFORML �I�𒆃��j�b�g�F%Demoslaviya20XX_GET_UNITDATA(Demoslaviya20XX_Unit:Demoslaviya20XX_SelectUnit:1,"���j�b�g��")%
			PRINTFORML HP:%Demoslaviya20XX_Unit:Demoslaviya20XX_SelectUnit:2%/%Demoslaviya20XX_GET_UNITDATA(Demoslaviya20XX_Unit:Demoslaviya20XX_SelectUnit:1,"HP")%�@
			PRINTFORML �s����:%Demoslaviya20XX_Unit:Demoslaviya20XX_SelectUnit:3%/%Demoslaviya20XX_GET_UNITDATA(Demoslaviya20XX_Unit:Demoslaviya20XX_SelectUnit:1,"�s����")%�@
			PRINTFORML �w��������:%Demoslaviya20XX_Unit:Demoslaviya20XX_SelectUnit:4%/%Demoslaviya20XX_GET_UNITDATA(Demoslaviya20XX_Unit:Demoslaviya20XX_SelectUnit:1,"�w��������")%�@
			PRINTFORML ERA:%Demoslaviya20XX_Unit:Demoslaviya20XX_SelectUnit:5%/%Demoslaviya20XX_GET_UNITDATA(Demoslaviya20XX_Unit:Demoslaviya20XX_SelectUnit:1,"ERA")%�@
			PRINTFORML �@-����-
			SPLIT Demoslaviya20XX_Unit:Demoslaviya20XX_SelectUnit:6,",",Weapon
			FOR LCount, 0, 3
				IF Weapon:LCount != ""
					IF Demoslaviya20XX_SelectWeapon == Weapon:LCount
						HTML_PRINT @"<shape type='space' param='200'><button value = '{LCount + 1}' title= '%Demoslaviya20XX_GET_WEAPONDATA(Weapon:LCount,"���")%'>%Demoslaviya20XX_GET_WEAPONDATA(Weapon:LCount,"���햼")%</button>"
						HTML_PRINT @"<shape type='space' param='300'>�З�:%Demoslaviya20XX_GET_WEAPONDATA(Weapon:LCount,"�З�")%�~%Demoslaviya20XX_GET_WEAPONDATA(Weapon:LCount,"�ˌ���")%�@�������F%Demoslaviya20XX_GET_WEAPONDATA(Weapon:LCount,"������")%�@�����́F%Demoslaviya20XX_GET_WEAPONDATA(Weapon:LCount,"������")%"
					ELSE
						HTML_PRINT @"<shape type='space' param='200'><button value = '{LCount + 1}' title= '%Demoslaviya20XX_GET_WEAPONDATA(Weapon:LCount,"���")%'>%Demoslaviya20XX_GET_WEAPONDATA(Weapon:LCount,"���햼")%</button>"
						HTML_PRINT @"<shape type='space' param='300'>�З�:%Demoslaviya20XX_GET_WEAPONDATA(Weapon:LCount,"�З�")%�~%Demoslaviya20XX_GET_WEAPONDATA(Weapon:LCount,"�ˌ���")%�@�������F%Demoslaviya20XX_GET_WEAPONDATA(Weapon:LCount,"������")%�@�����́F%Demoslaviya20XX_GET_WEAPONDATA(Weapon:LCount,"������")%"
					ENDIF
				ELSE
					PRINTL
					PRINTL
				ENDIF
			NEXT
		ELSE
			CALL Demoslaviya20XX_KOJO_�C�F�j�C�F��("���j�b�g���I��")
			FOR LCount, 0, 11
				PRINTL
			NEXT
		ENDIF

		DRAWLINE
		;TRYCALLFORM Demoslaviya20XX_Start_KOJO_K15
		PRINTFORML [800] �C�F�j�C�F�����폱�� [900] ������� [999] �~�j�Q�[�����I������

@Demoslaviya20XX_ViewHTML_Enemy
	#DIM DYNAMIC LCount
	#DIMS DYNAMIC Weapon,4
		;CLEARLINE LINECOUNT
		FOR LCount,0,21
			HTML_PRINT @"%Demoslaviya20XX_HTML:LCOUNT%"
		NEXT
		DRAWLINE
		CALL Demoslaviya20XX_Demol(@"�����R�����F{CFLAG:MASTER:�לZ������}�D")
		IF Demoslaviya20XX_SelectUnit > 0
			PRINTFORML �I�𒆃��j�b�g�F%Demoslaviya20XX_GET_UNITDATA(Demoslaviya20XX_Unit:Demoslaviya20XX_SelectUnit:1,"���j�b�g��")%
			PRINTFORML HP:%Demoslaviya20XX_Unit:Demoslaviya20XX_SelectUnit:2%/%Demoslaviya20XX_GET_UNITDATA(Demoslaviya20XX_Unit:Demoslaviya20XX_SelectUnit:1,"HP")%�@
			PRINTFORML �s����:%Demoslaviya20XX_Unit:Demoslaviya20XX_SelectUnit:3%/%Demoslaviya20XX_GET_UNITDATA(Demoslaviya20XX_Unit:Demoslaviya20XX_SelectUnit:1,"�s����")%�@
			PRINTFORML �w��������:%Demoslaviya20XX_Unit:Demoslaviya20XX_SelectUnit:4%/%Demoslaviya20XX_GET_UNITDATA(Demoslaviya20XX_Unit:Demoslaviya20XX_SelectUnit:1,"�w��������")%�@
			PRINTFORML ERA:%Demoslaviya20XX_Unit:Demoslaviya20XX_SelectUnit:5%/%Demoslaviya20XX_GET_UNITDATA(Demoslaviya20XX_Unit:Demoslaviya20XX_SelectUnit:1,"ERA")%�@
			PRINTFORML �@-����-
			SPLIT Demoslaviya20XX_Unit:Demoslaviya20XX_SelectUnit:6,",",Weapon
			FOR LCount, 0, 3
				IF Weapon:LCount != ""
					IF Demoslaviya20XX_SelectWeapon == Weapon:LCount
						HTML_PRINT @"<shape type='space' param='200'><button value = '{LCount + 1}' title= '%Demoslaviya20XX_GET_WEAPONDATA(Weapon:LCount,"���")%'>%Demoslaviya20XX_GET_WEAPONDATA(Weapon:LCount,"���햼")%</button>"
						HTML_PRINT @"<shape type='space' param='500'>�З�:%Demoslaviya20XX_GET_WEAPONDATA(Weapon:LCount,"�З�")%�~%Demoslaviya20XX_GET_WEAPONDATA(Weapon:LCount,"�ˌ���")%�@�������F%Demoslaviya20XX_GET_WEAPONDATA(Weapon:LCount,"������")%�@�����́F%Demoslaviya20XX_GET_WEAPONDATA(Weapon:LCount,"������")%"
					ELSE
						HTML_PRINT @"<shape type='space' param='200'><button value = '{LCount + 1}' title= '%Demoslaviya20XX_GET_WEAPONDATA(Weapon:LCount,"���")%'>%Demoslaviya20XX_GET_WEAPONDATA(Weapon:LCount,"���햼")%</button>"
						HTML_PRINT @"<shape type='space' param='500'>�З�:%Demoslaviya20XX_GET_WEAPONDATA(Weapon:LCount,"�З�")%�~%Demoslaviya20XX_GET_WEAPONDATA(Weapon:LCount,"�ˌ���")%�@�������F%Demoslaviya20XX_GET_WEAPONDATA(Weapon:LCount,"������")%�@�����́F%Demoslaviya20XX_GET_WEAPONDATA(Weapon:LCount,"������")%"
					ENDIF
				ELSE
					PRINTL
				ENDIF
			NEXT
		ELSE
			PRINTFORML
			FOR LCount, 0, 13
				PRINTL
			NEXT
		ENDIF

		DRAWLINE
;�w�i�F�ύX����^�C�~���O��p�ӂ��邽�߂ɁA�~�j�Q�[���I�����̓R�R�ɗ���悤�ɂ���B
@Demoslaviya20XX_EndGame
	CALL Demoslaviya20XX_KOJO_�C�F�j�C�F��("�Q�[���I��")
	RESETBGCOLOR
	RETURN 0


code:
@D20XX_Manual
	#DIMS DYNAMIC SelectTab
	#DIMS DYNAMIC ShopMenu,4,20
	#DIMS DYNAMIC ManualText,39;行は20行
	#DIM DYNAMIC LCount

	;#region
		SelectTab = 始めに
	;#endregion
	$ManualLoop
		DRAWLINE
				PRINTFORML ┏━━━┳━━━┳━━━┳━━━┳━━━┓
		HTML_PRINT "<nonbutton>┃</nonbutton><button value = '10000'>始めに</button><nonbutton>┃</nonbutton><button value = '10001'> 移動 </button><nonbutton>┃</nonbutton><button value = '10002'>攻撃１</button><nonbutton>┃</nonbutton><button value = '10003'>攻撃２</button><nonbutton>┃</nonbutton><button value = '10004'> 購入 </button><nonbutton>┃</nonbutton>"
		SELECTCASE SelectTab
			CASE "始めに"
				PRINTFORML ┃　　　┗━━━┻━━━┻━━━┻━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
			CASE "移動"
				PRINTFORML ┣━━━┛　　　┗━━━┻━━━┻━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
			CASE "攻撃１"
				PRINTFORML ┣━━━┻━━━┛　　　┗━━━┻━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
			CASE "攻撃２"
				PRINTFORML ┣━━━┻━━━┻━━━┛　　　┗━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
			CASE "購入"
				PRINTFORML ┣━━━┻━━━┻━━━┻━━━┛　　　┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
		ENDSELECT

		SELECTCASE SelectTab
			CASE "始めに"
				ManualText:0 = やぁ、悪魔に魂を売った正義の使者様、ご心情いかが？
				ManualText:1 = 知っているとは思うけど、僕はイェニェル(Yenyel)、偉大なる主の使い天使だ。
				ManualText:2 = これは、ダエモスラビヤで生き拔出ためのマニュアルだ。秘書官殿の言葉では分からないだろう？
				ManualText:3 = 文章で書いた方が訛っていなくて理解しやすいし、何度でも読み返せて便利だしな
				ManualText:4 = あぁ、このマニュアルの代金はサービスしておくよ。これから、僕のお得意様になるはずだからナ
				ManualText:5 =
				ManualText:6 = 君に説明する必要はないと思うが、一応現時点の状況を説明してやろう
				ManualText:7 = 　このダエモスラビヤ(ダエモスラビヤ評価主義王国連邦)は、
				ManualText:8 = 　第82次十字軍で支配されていた魔界の小国が%NAME:TARGET%の父、赤彁によって纏められ
				ManualText:9 = 　十字軍を魔界から逐出、連邦を組んだことで成立した多種族国家だ。
				ManualText:10 = 　ただ、元々種族間、国家間は非常に仲が悪かった。
				ManualText:11 = 　一応、赤彁の筹码によって連邦としては纏まっていたんだがね。
				ManualText:12 = 　しかし先日、その赤彁国王が何者かによって暗殺された。
				ManualText:13 = 　その数時間後、連邦加盟国のボルシャ国が離脱を宣言、それを認めない連邦政府が軍を派遣
				ManualText:14 =
				ManualText:15 = これがこの紛争勃発の大まかな流れだ
				ManualText:16 = 悪魔同士で殺しあってくれるなんて、僕たち天使には願ったり叶ったりだね。
				ManualText:17 =
				ManualText:18 = あぁそうだ、この游戏はマウスを使う事を前提に作られている。
				ManualText:19 = </nonbutton><nonbutton title = 'そうそう...そんな感じで...\nただな？ここでやっても特に追加情報は出ないぜ？\n\nよく、こんな所の解説を見つけたなぁ\nマニュアルの他の場所には、こういうテ接吻トは付いてないから探さなくて良いぞ' pos = '100'>マウスカーソルを合わせると、追加で情報が表示されたりするから色々見てみると良いぜ。
				ManualText:20 = </nonbutton><nonbutton title = 'そうそう...そんな感じで...\nただな？ここでやっても特に追加情報は出ないぜ？\n\nよく、こんな所の解説を見つけたなぁ\nマニュアルの他の場所には、こういうテ接吻トは付いてないから探さなくて良いぞ' pos = '100'>ユ针织の細かいパラメータや武器の解説とかな。
				ManualText:21 =
				ManualText:22 = 操作は大体直感的に動かせるようにしてあるつもりだ、分からなかったら
				ManualText:23 = </nonbutton><button value = '183' pos = '100'>随意それっぽい所を阴蒂ック</button><nonbutton>したら出来るかもしれないナ
				ManualText:24 =
				ManualText:25 = あぁ、そうだ大切な事を言い忘れていた。
				ManualText:26 = EmueraのConfigを弄っている場合描画が崩れる事が有る。
				ManualText:27 = ここを弄って表示おかしいって言われても作者は対応できないとよ
				ManualText:28 =
				ManualText:29 = (この游戏はまだβ版だからバグとか未実装の部分が数多く有るから很多に見てね！)
				ManualText:30 = (武器とかユ针织案有ったらスレに書いてくれたら嬉しいな！)
				ManualText:31 = (ERB\\EVENT_K\\槞彁\\D20XX\\DATA フォルダを見れば何となく追加方法分かると思うよ！)
			CASE "移動"
				ManualText:0 = この游戏には两个移動が有る。ユ针织の移動とMAP描画範囲の移動だ。
				ManualText:1 = この页ではその两个解説をするぞ。
				ManualText:2 =
				ManualText:3 = ☆MAP描画範囲の移動☆
				ManualText:4 = ...と言ってもこれは特に説明する事は無いな。
				ManualText:5 = Mapの右に十字キーが有るだろう？それを押したらMAPがグリグリ動くぜ
				ManualText:6 = でも、動かし過ぎて迷子になっても知らねぇぞ？僕は君のお母桑じゃあ無いからナ
				ManualText:7 = (...まぁ、迷子になっても左上を目指して動けば戻れると思うぞ)
				ManualText:8 =
				ManualText:9 =
				ManualText:10 = ☆ユ针织の移動☆
				ManualText:11 = さて、これが出来なきゃ戦えねぇ。酱と覚えろよ？
				ManualText:12 = 移動をするにはMAP移動キーの下に有る現在的指示モードが
				ManualText:13 = 『移動モード』になっている必要が有る
				ManualText:14 = この状態でユ针织を阴蒂ックするとMAPに水色の領帯ルが出るだろう。それが移動可能範囲だ。
				ManualText:15 = もちろん、各ユ针织には行動力って数値が有って、この分だけ移動できる。
				ManualText:16 = 基本的には移動に必要な行動力は移動先に地形によって変わってくるぞ。
				ManualText:17 = 簡単に言うと「騎兵は歩兵よりも動ける。道路は早い、森は遅い。」みたいな感じだ。
				ManualText:18 =
				ManualText:19 = 後、空を飛べるユ针织なんかは移動コストを全て1にする能力を持ってたりする。
				ManualText:20 = 空を飛ぶユ针织は森とか川を無視して、こっちの横っ腹を狙ってきたりするからな。
				ManualText:21 = こういう奴には、十分警戒するべきだ。最近は鉄の塊の癖に飛ぶ乗り物が出てきたりして、
				ManualText:22 = 飛べる＝軽装有翼兵とは限らなくなってきた。
				ManualText:23 = ...といっても下界には飛べる知性体は居ないんだったな。
				ManualText:24 = とにかく、警戒する事に越したことは無い。
				ManualText:25 =
				ManualText:26 =
				ManualText:27 = ちなみに、領帯ルにカーソルを合わせると必要なコストが表示されたりするぞ。
				ManualText:28 = まぁ、青い範囲を見て移動すれば間違いは無い。
				ManualText:29 =
				ManualText:30 = (未実装機能だよ！)
				ManualText:31 = (そのターン中に行動力消費を行わなかったユ针织は指揮統制率が1回復するよ)
			CASE "攻撃１"
				ManualText:0 = さて、お待ちかねの戦闘だ。圧倒的火力で敵を蹂躙しよう。
				ManualText:1 = 攻撃について説明する事はかなりあるから、2页使うことにした。
				ManualText:2 =
				ManualText:3 = ☆攻撃指示の出し方☆
				ManualText:4 = まァー、移動の页を読んだなら大体察しは付いていると思うが、攻撃するには
				ManualText:5 = 移動をするにはMAP移動キーの下に有る現在的指示モードが
				ManualText:6 = 『攻撃モード』になっている必要が有る
				ManualText:7 = その状態でユ针织を選択して、攻撃に使用する武器を選べばMAP上に赤い領帯ルが出てくるはずだ
				ManualText:8 = そして、その赤い領帯ルを阴蒂ックすれば射撃指示完了だ。簡単だろう？
				ManualText:9 = ちなみに、敵ユ针织アイコンを阴蒂ックしても同じ効果があるぞ。
				ManualText:10 =
				ManualText:11 = ...と、ここまで書いて気が付いたが、
				ManualText:12 = 敵ユ针织と自軍ユ针织の見分け方が分からないとか言わないよな？
				ManualText:13 = 背景が赤いユ针织は敵
				ManualText:14 = 明るい青は行動していない自軍
				ManualText:15 = 暗い青は行動した自軍だ。
				ManualText:16 = 分かってるとは思うが一応な。
				ManualText:17 =
				ManualText:18 = ☆命中判定について☆
				ManualText:19 = 当たり前だが、全部の武器が100％命中するような世界じゃあない。
				ManualText:20 = 武器には基礎命中率というパラメータが有る。基本的にこの基礎命中率に補正がかけられるぞ。
				ManualText:21 =
				ManualText:22 = 攻撃対象の地形によって、命中率が下がる。
				ManualText:23 = 例えば森林だったら、遮蔽率20％　つまり、基礎命中率から20％減少する。
				ManualText:24 = もし、基礎命中率50％の武器で森林に居る敵に射撃した場合、40％の確率で命中するな。
				ManualText:25 =
				ManualText:26 = また、各ユ针织には指揮統制率というパラメータが有る。
				ManualText:27 = このパラメータも、命中率に影響を与える
				ManualText:28 = 攻撃対象の指揮統制率が、現在地/最大％分だけ命中率が上昇する。
				ManualText:29 = ただ、この倍率補正は地形補正を受けた後にかけられる。
				ManualText:30 = だから、上の例で攻撃対象のユ针织の指揮統制率が50％の場合、命中率は60％に上昇する。
				ManualText:31 = 指揮統制率についての詳しい事は察看下一頁で解説するぞ。
			CASE "攻撃２"
				ManualText:0 = ☆指揮統制率について☆
				ManualText:1 = 前页でも触れたが、指揮統制率というパラメータが有る。
				ManualText:2 = これは、ユ针织の混乱度や圧抑度みたいな物だな。
				ManualText:3 = 指揮統制率は、攻撃を受けた武器の制圧力によって減少する。
				ManualText:4 = 更に、命中して無かった場合でも指揮統制率は下がる。
				ManualText:5 = だから、たとえ命中率が低い武器でも、制圧力が高い武器で撃ち続ける事で、
				ManualText:6 = 敵の指揮統制率を下げる事が出来るぞ。
				ManualText:7 = 敵に弾が命中しない場合は指揮統制率を下げる事をしてみると良いかもしれないな。
				ManualText:8 =
				ManualText:9 = (未実装情報だよ)
				ManualText:10 = (ただ、この指揮統制率はHPと違って行動をしなかったら毎ターン１回復する事が出来る。)
				ManualText:11 = (もし指揮統制率が下がってしまったユ针织が居れば、一旦後方へ下げると良いぞ。)
				ManualText:12 = (そうそう、指揮統制率が0变成了ら士気崩壊という状態異常になる。)
				ManualText:13 = (こうなると、もうユ针织に指示する事は出来ない。)
				ManualText:14 = (敵味方関係なく近くに発砲したり、移動したりする。こうならないように注意しような)
				ManualText:15 =
				ManualText:16 =
				ManualText:17 = ☆装甲について☆
				ManualText:18 = 装甲には二種類ある。普通の「装甲」と最近新しく作られた「era」だ
				ManualText:19 = 普通の「装甲」は文字街道、ダメージを減少させる。
				ManualText:20 = だから、3の装甲を持つ敵に2のダメージの攻撃を何度してもHPを減らす事は出来ない。
				ManualText:21 = まぁ、すごく単純だ。巷ではアルテリオス式って呼ばれている計算式だな。
				ManualText:22 =
				ManualText:23 = もう一つの装甲「era」正式名称：Explosive Reactive Armour
				ManualText:24 = 持っているユ针织は少ないが、非常に強力だぜ？
				ManualText:25 = 装甲が貫通された時に、「era」を一つ消費してダメージを完全無効化する。
				ManualText:26 = 要するに使い捨て式、最強の装甲だ。
				ManualText:27 = こいつを持っているユ针织一体で複数の敵と数ターンは殴り合える、敵に居たら要注意だ
				ManualText:28 =
				ManualText:29 = eraへの対策？大量のユ针织による飽和攻撃でeraを削り切るしかないだろうな。
				ManualText:30 = お望みとあらば、資金さえ有れば僕も提供できるよ。もちろん、値は張るがね。
				ManualText:31 = 文胸から核兵器まで、お客様がお求めなら何でも販売するよ。；）
			CASE "購入"
				ManualText:0 = ごめんね、ユ针织購入周りの処理はまだ全く出来ていないんだ。
				ManualText:1 = 次の更新を待ってねー
				ManualText:2 =
				ManualText:3 =
				ManualText:4 = ～予定～
				ManualText:5 = 魔界の大国のどの陣営に付いたかで購入可能な武器が変わるようにしたいわね。
				ManualText:6 = でも、テクノロジーツリー系も捨てがたい...どっちが良いかしら？
				ManualText:7 =
				ManualText:8 =
				ManualText:9 = </nonbutton><nonbutton pos = '1750'>核弾頭</nonbutton><nonbutton pos = '100'>あ、大金を払えば一瞬で勝利できる道具を、イェニェルから
				ManualText:10 = 購入できるようにする予定だから、こういう游戏苦手な人でも大丈夫よ。ただ、もれなくルート分岐するので可能なら使わないほうが良いんじゃないかな
				ManualText:11 =
				ManualText:12 =
				ManualText:13 =
				ManualText:14 = 平衡調整とか全然分からない...調整案とか追加案有ったらスレに書いてくれたら嬉しいな。
				ManualText:15 = ファンタジーには詳しくないので詳しい人ファンタジーユ针织考えて。
				ManualText:16 = あ、間違えた。
				ManualText:17 = この迷你游戏に登場するユ针织や武器は全部ファンタジーだよ！
				ManualText:18 = だから実在する兵器は一切登場していない、いいね？
				ManualText:19 =
				ManualText:20 =
				ManualText:21 = <s>ファイアーエムブレムみたいに、</s>各ユ针织一体一体に武器を割り振る事も出来るように...
				ManualText:22 = って事も計画中よー
				ManualText:23 = でも、次の更新も結構大きいなぁ...早めに公開出来たらいいのだけども...
				ManualText:24 =
				ManualText:25 =
				ManualText:26 =
				ManualText:27 =
				ManualText:28 =
				ManualText:29 =
				ManualText:30 =
				ManualText:31 = ご存知の街道絵は描けないので許して...(誰か描いて)
		ENDSELECT

		FOR LCount,0,39
			HTML_PRINT @"<nobr><nonbutton>┃</nonbutton> <nonbutton pos='100'>%ManualText:LCount%</nonbutton><nonbutton pos='5900'>┃</nonbutton></nobr>"
		NEXT

		PRINTFORML ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
		PRINTFORML [999]操作説明を終える

		INPUT
		SELECTCASE RESULT
			CASE 183
				PRINTFORML そうそう、そんな感じで色々試してみると良いぞ。
				PRINTFORMW でもな？流石にマニュアルの中にはボタンは無いから安心してくれ。
			CASE 10000
				SelectTab = 始めに
			CASE 10001
				SelectTab = 移動
			CASE 10002
				SelectTab = 攻撃１
			CASE 10003
				SelectTab = 攻撃２
			CASE 10004
				SelectTab = 購入
			CASE 999
				RETURN
		ENDSELECT
		GOTO ManualLoop


code:
;;;ユ针织移動メソッド
;;;ARG:0 = 移動先Y座標
;;;ARG:1 = 移動先X座標
@D20XX_Move(Y_After,X_After)
	#DIM DYNAMIC X_After
	#DIM DYNAMIC Y_After
	#DIM DYNAMIC X_Before
	#DIM DYNAMIC Y_Before
	#DIM DYNAMIC LCount

	;#region 初期設定
		CALL D20XX_UnitSearch(D20XX_SelectUnit)
		IF RESULT:0 == 1
			Y_Before = RESULT:1
			X_Before = RESULT:2
		ENDIF
	;#endregion
	IF D20XX_MoveCostMap:Y_After:X_After >= 0 && TOINT(D20XX_Map:Y_After:X_After:1) == 0
		D20XX_Map:Y_Before:X_Before:1 = TOSTR({0})
		D20XX_Map:Y_After:X_After:1 = {D20XX_SelectUnit}
	ENDIF

	SIF D20XX_MoveCostMap:Y_After:X_After >= 0
		D20XX_Unit:D20XX_SelectUnit:3 = {D20XX_MoveCostMap:Y_After:X_After}

;;;ARGS = ユ针织種類名
;;;ARG:0 = 計算中残移動コスト
;;;ARG:1 = 現在計算中心点Y座標
;;;ARG:2 = 現在計算中心点X座標
@D20XX_MoveCostCalc(UnitType,RemnantMovePower,Y_Before,X_Before)
	#DIMS DYNAMIC UnitType
	#DIM DYNAMIC RemnantMovePower
	#DIM DYNAMIC X_Before
	#DIM DYNAMIC Y_Before
	#DIM DYNAMIC X_After
	#DIM DYNAMIC Y_After

	#DIM DYNAMIC LCount

	IF STRFIND(D20XX_GET_UNITDATA(UnitType,"スキル"), "【地形無視】") != -1
		;地形無視スキル持ってたときの計算はこっち
		;1時方向のへクスへ移動したときのコスト計算
		IF X_Before+1 <= 199 && Y_Before-1 >= 0;MAPの右端でも上端でも無いことの確認
			X_After = X_Before + 1
			Y_After = Y_Before - 1
			IF D20XX_MoveCostMap:Y_After:X_After < RemnantMovePower - 1 && TOINT(D20XX_MAP:Y_After:X_After:1 ) == 0
				D20XX_MoveCostMap:Y_After:X_After = RemnantMovePower - 1
				CALL D20XX_MoveRoute_Add(Y_Before,X_Before)
				CALL D20XX_MoveCostCalc(UnitType,D20XX_MoveCostMap:Y_After:X_After,Y_After,X_After)
				CALL D20XX_MoveRoute_GetLast(Y_Before,X_Before)
				CALL D20XX_MoveRoute_DelLast
			ENDIF
		ENDIF

		;3時方向のへクスへ移動したときのコスト計算
		IF X_Before+2 <= 199;MAPの右端では無いことの確認
			X_After = X_Before + 2
			Y_After = Y_Before
			IF D20XX_MoveCostMap:Y_After:X_After < RemnantMovePower - 1 && TOINT(D20XX_MAP:Y_After:X_After:1 ) == 0
				D20XX_MoveCostMap:Y_After:X_After = RemnantMovePower - 1
				CALL D20XX_MoveRoute_Add(Y_Before,X_Before)
				CALL D20XX_MoveCostCalc(UnitType,D20XX_MoveCostMap:Y_After:X_After,Y_After,X_After)
				CALL D20XX_MoveRoute_GetLast(Y_Before,X_Before)
				CALL D20XX_MoveRoute_DelLast
			ENDIF
		ENDIF

		;5時方向のへクスへ移動したときのコスト計算
		IF X_Before+1 <= 199 && Y_Before+1 <= 200;MAPの右端でも下端でも無いことの確認
			X_After = X_Before + 1
			Y_After = Y_Before + 1
			IF D20XX_MoveCostMap:Y_After:X_After < RemnantMovePower - 1  && TOINT(D20XX_MAP:Y_After:X_After:1 ) == 0
				D20XX_MoveCostMap:Y_After:X_After = RemnantMovePower - 1
				CALL D20XX_MoveRoute_Add(Y_Before,X_Before)
				CALL D20XX_MoveCostCalc(UnitType,D20XX_MoveCostMap:Y_After:X_After,Y_After,X_After)
				CALL D20XX_MoveRoute_GetLast(Y_Before,X_Before)
				CALL D20XX_MoveRoute_DelLast
			ENDIF
		ENDIF

		;7時方向のへクスへ移動したときのコスト計算
		IF X_Before-1 >= 0 && Y_Before+1 <= 200;MAPの左端でも下端でも無いことの確認
			X_After = X_Before - 1
			Y_After = Y_Before + 1
			IF D20XX_MoveCostMap:Y_After:X_After < RemnantMovePower - 1  && TOINT(D20XX_MAP:Y_After:X_After:1 ) == 0
				D20XX_MoveCostMap:Y_After:X_After = RemnantMovePower - 1
				CALL D20XX_MoveRoute_Add(Y_Before,X_Before)
				CALL D20XX_MoveCostCalc(UnitType,D20XX_MoveCostMap:Y_After:X_After,Y_After,X_After)
				CALL D20XX_MoveRoute_GetLast(Y_Before,X_Before)
				CALL D20XX_MoveRoute_DelLast
			ENDIF
		ENDIF

		;9時方向のへクスへ移動したときのコスト計算
		IF X_Before-2 >= 0;MAPの左端では無いことの確認
			X_After = X_Before - 2
			Y_After = Y_Before
			IF D20XX_MoveCostMap:Y_After:X_After < RemnantMovePower - 1  && TOINT(D20XX_MAP:Y_After:X_After:1 ) == 0
				D20XX_MoveCostMap:Y_After:X_After = RemnantMovePower - 1
				CALL D20XX_MoveRoute_Add(Y_Before,X_Before)
				CALL D20XX_MoveCostCalc(UnitType,D20XX_MoveCostMap:Y_After:X_After,Y_After,X_After)
				CALL D20XX_MoveRoute_GetLast(Y_Before,X_Before)
				CALL D20XX_MoveRoute_DelLast
			ENDIF
		ENDIF

		;11時方向のへクスへ移動したときのコスト計算
		IF X_Before-1 >= 0 && Y_Before-1 >= 0;MAPの左端でも上端でも無いことの確認
			X_After = X_Before - 1
			Y_After = Y_Before - 1
			IF D20XX_MoveCostMap:Y_After:X_After < RemnantMovePower - 1  && TOINT(D20XX_MAP:Y_After:X_After:1 ) == 0
				D20XX_MoveCostMap:Y_After:X_After = RemnantMovePower - 1
				CALL D20XX_MoveRoute_Add(Y_Before,X_Before)
				CALL D20XX_MoveCostCalc(UnitType,D20XX_MoveCostMap:Y_After:X_After,Y_After,X_After)
				CALL D20XX_MoveRoute_GetLast(Y_Before,X_Before)
				CALL D20XX_MoveRoute_DelLast
			ENDIF
		ENDIF
	ELSEIF STRFIND(D20XX_GET_UNITDATA(UnitType,"スキル"),"【海上ユ针织】") != -1
		;海上ユ针织の時の計算はこっち
	ELSEIF STRFIND(D20XX_GET_UNITDATA(UnitType,"スキル"), "【ZOC無視】") != -1
		;通常消費移動コスト計算はこっち
		;1時方向のへクスへ移動したときのコスト計算
		IF X_Before+1 <= 199 && Y_Before-1 >= 0;MAPの右端でも上端でも無いことの確認
			X_After = X_Before + 1
			Y_After = Y_Before - 1
			IF D20XX_MoveCostMap:Y_After:X_After < RemnantMovePower - TOINT(D20XX_GET_HEXDATA(D20XX_MAP:Y_After:X_After:0,"移動コスト") ) && TOINT(D20XX_MAP:Y_After:X_After:1 ) == 0
				D20XX_MoveCostMap:Y_After:X_After = RemnantMovePower - TOINT(D20XX_GET_HEXDATA(D20XX_MAP:Y_After:X_After:0,"移動コスト") )
				CALL D20XX_MoveRoute_Add(Y_Before,X_Before)
				CALL D20XX_MoveCostCalc(UnitType,D20XX_MoveCostMap:Y_After:X_After,Y_After,X_After)
				CALL D20XX_MoveRoute_GetLast(Y_Before,X_Before)
				CALL D20XX_MoveRoute_DelLast
			ENDIF
		ENDIF

		;3時方向のへクスへ移動したときのコスト計算
		IF X_Before+2 <= 199;MAPの右端では無いことの確認
			X_After = X_Before + 2
			Y_After = Y_Before
			IF D20XX_MoveCostMap:Y_After:X_After < RemnantMovePower - TOINT(D20XX_GET_HEXDATA(D20XX_MAP:Y_After:X_After:0,"移動コスト") ) && TOINT(D20XX_MAP:Y_After:X_After:1 ) == 0
				D20XX_MoveCostMap:Y_After:X_After = RemnantMovePower - TOINT(D20XX_GET_HEXDATA(D20XX_MAP:Y_After:X_After:0,"移動コスト") )
				CALL D20XX_MoveRoute_Add(Y_Before,X_Before)
				CALL D20XX_MoveCostCalc(UnitType,D20XX_MoveCostMap:Y_After:X_After,Y_After,X_After)
				CALL D20XX_MoveRoute_GetLast(Y_Before,X_Before)
				CALL D20XX_MoveRoute_DelLast
			ENDIF
		ENDIF

		;5時方向のへクスへ移動したときのコスト計算
		IF X_Before+1 <= 199 && Y_Before+1 <= 200;MAPの右端でも下端でも無いことの確認
			X_After = X_Before + 1
			Y_After = Y_Before + 1
			IF D20XX_MoveCostMap:Y_After:X_After < RemnantMovePower - TOINT(D20XX_GET_HEXDATA(D20XX_MAP:Y_After:X_After:0,"移動コスト") ) && TOINT(D20XX_MAP:Y_After:X_After:1 ) == 0
				D20XX_MoveCostMap:Y_After:X_After = RemnantMovePower - TOINT(D20XX_GET_HEXDATA(D20XX_MAP:Y_After:X_After:0,"移動コスト") )
				CALL D20XX_MoveRoute_Add(Y_Before,X_Before)
				CALL D20XX_MoveCostCalc(UnitType,D20XX_MoveCostMap:Y_After:X_After,Y_After,X_After)
				CALL D20XX_MoveRoute_GetLast(Y_Before,X_Before)
				CALL D20XX_MoveRoute_DelLast
			ENDIF
		ENDIF

		;7時方向のへクスへ移動したときのコスト計算
		IF X_Before-1 >= 0 && Y_Before+1 <= 200;MAPの左端でも下端でも無いことの確認
			X_After = X_Before - 1
			Y_After = Y_Before + 1
			IF D20XX_MoveCostMap:Y_After:X_After < RemnantMovePower - TOINT(D20XX_GET_HEXDATA(D20XX_MAP:Y_After:X_After:0,"移動コスト") ) && TOINT(D20XX_MAP:Y_After:X_After:1 ) == 0
				D20XX_MoveCostMap:Y_After:X_After = RemnantMovePower - TOINT(D20XX_GET_HEXDATA(D20XX_MAP:Y_After:X_After:0,"移動コスト") )
				CALL D20XX_MoveRoute_Add(Y_Before,X_Before)
				CALL D20XX_MoveCostCalc(UnitType,D20XX_MoveCostMap:Y_After:X_After,Y_After,X_After)
				CALL D20XX_MoveRoute_GetLast(Y_Before,X_Before)
				CALL D20XX_MoveRoute_DelLast
			ENDIF
		ENDIF

		;9時方向のへクスへ移動したときのコスト計算
		IF X_Before-2 >= 0;MAPの左端では無いことの確認
			X_After = X_Before - 2
			Y_After = Y_Before
			IF D20XX_MoveCostMap:Y_After:X_After < RemnantMovePower - TOINT(D20XX_GET_HEXDATA(D20XX_MAP:Y_After:X_After:0,"移動コスト") ) && TOINT(D20XX_MAP:Y_After:X_After:1 ) == 0
				D20XX_MoveCostMap:Y_After:X_After = RemnantMovePower - TOINT(D20XX_GET_HEXDATA(D20XX_MAP:Y_After:X_After:0,"移動コスト") )
				CALL D20XX_MoveRoute_Add(Y_Before,X_Before)
				CALL D20XX_MoveCostCalc(UnitType,D20XX_MoveCostMap:Y_After:X_After,Y_After,X_After)
				CALL D20XX_MoveRoute_GetLast(Y_Before,X_Before)
				CALL D20XX_MoveRoute_DelLast
			ENDIF
		ENDIF

		;11時方向のへクスへ移動したときのコスト計算
		IF X_Before-1 >= 0 && Y_Before-1 >= 0;MAPの左端でも上端でも無いことの確認
			X_After = X_Before - 1
			Y_After = Y_Before - 1
			IF D20XX_MoveCostMap:Y_After:X_After < RemnantMovePower - TOINT(D20XX_GET_HEXDATA(D20XX_MAP:Y_After:X_After:0,"移動コスト") ) && TOINT(D20XX_MAP:Y_After:X_After:1 ) == 0
				D20XX_MoveCostMap:Y_After:X_After = RemnantMovePower - TOINT(D20XX_GET_HEXDATA(D20XX_MAP:Y_After:X_After:0,"移動コスト") )
				CALL D20XX_MoveRoute_Add(Y_Before,X_Before)
				CALL D20XX_MoveCostCalc(UnitType,D20XX_MoveCostMap:Y_After:X_After,Y_After,X_After)
				CALL D20XX_MoveRoute_GetLast(Y_Before,X_Before)
				CALL D20XX_MoveRoute_DelLast
			ENDIF
		ENDIF
	ELSE
		;通常消費移動コスト計算はこっち
		;1時方向のへクスへ移動したときのコスト計算
		IF X_Before+1 <= 199 && Y_Before-1 >= 0;MAPの右端でも上端でも無いことの確認
			X_After = X_Before + 1
			Y_After = Y_Before - 1
			IF D20XX_MoveCostMap:Y_After:X_After < RemnantMovePower - TOINT(D20XX_GET_HEXDATA(D20XX_MAP:Y_After:X_After:0,"移動コスト") ) && TOINT(D20XX_MAP:Y_After:X_After:1 ) == 0
				D20XX_MoveCostMap:Y_After:X_After = RemnantMovePower - TOINT(D20XX_GET_HEXDATA(D20XX_MAP:Y_After:X_After:0,"移動コスト") )
				CALL D20XX_MoveRoute_Add(Y_Before,X_Before)
				CALL D20XX_MoveCostCalc(UnitType,D20XX_MoveCostMap:Y_After:X_After,Y_After,X_After)
				CALL D20XX_MoveRoute_GetLast(Y_Before,X_Before)
				CALL D20XX_MoveRoute_DelLast
			ENDIF
		ENDIF

		;3時方向のへクスへ移動したときのコスト計算
		IF X_Before+2 <= 199;MAPの右端では無いことの確認
			X_After = X_Before + 2
			Y_After = Y_Before
			IF D20XX_MoveCostMap:Y_After:X_After < RemnantMovePower - TOINT(D20XX_GET_HEXDATA(D20XX_MAP:Y_After:X_After:0,"移動コスト") ) && TOINT(D20XX_MAP:Y_After:X_After:1 ) == 0
				D20XX_MoveCostMap:Y_After:X_After = RemnantMovePower - TOINT(D20XX_GET_HEXDATA(D20XX_MAP:Y_After:X_After:0,"移動コスト") )
				CALL D20XX_MoveRoute_Add(Y_Before,X_Before)
				CALL D20XX_MoveCostCalc(UnitType,D20XX_MoveCostMap:Y_After:X_After,Y_After,X_After)
				CALL D20XX_MoveRoute_GetLast(Y_Before,X_Before)
				CALL D20XX_MoveRoute_DelLast
			ENDIF
		ENDIF

		;5時方向のへクスへ移動したときのコスト計算
		IF X_Before+1 <= 199 && Y_Before+1 <= 200;MAPの右端でも下端でも無いことの確認
			X_After = X_Before + 1
			Y_After = Y_Before + 1
			IF D20XX_MoveCostMap:Y_After:X_After < RemnantMovePower - TOINT(D20XX_GET_HEXDATA(D20XX_MAP:Y_After:X_After:0,"移動コスト") ) && TOINT(D20XX_MAP:Y_After:X_After:1 ) == 0
				D20XX_MoveCostMap:Y_After:X_After = RemnantMovePower - TOINT(D20XX_GET_HEXDATA(D20XX_MAP:Y_After:X_After:0,"移動コスト") )
				CALL D20XX_MoveRoute_Add(Y_Before,X_Before)
				CALL D20XX_MoveCostCalc(UnitType,D20XX_MoveCostMap:Y_After:X_After,Y_After,X_After)
				CALL D20XX_MoveRoute_GetLast(Y_Before,X_Before)
				CALL D20XX_MoveRoute_DelLast
			ENDIF
		ENDIF

		;7時方向のへクスへ移動したときのコスト計算
		IF X_Before-1 >= 0 && Y_Before+1 <= 200;MAPの左端でも下端でも無いことの確認
			X_After = X_Before - 1
			Y_After = Y_Before + 1
			IF D20XX_MoveCostMap:Y_After:X_After < RemnantMovePower - TOINT(D20XX_GET_HEXDATA(D20XX_MAP:Y_After:X_After:0,"移動コスト") ) && TOINT(D20XX_MAP:Y_After:X_After:1 ) == 0
				D20XX_MoveCostMap:Y_After:X_After = RemnantMovePower - TOINT(D20XX_GET_HEXDATA(D20XX_MAP:Y_After:X_After:0,"移動コスト") )
				CALL D20XX_MoveRoute_Add(Y_Before,X_Before)
				CALL D20XX_MoveCostCalc(UnitType,D20XX_MoveCostMap:Y_After:X_After,Y_After,X_After)
				CALL D20XX_MoveRoute_GetLast(Y_Before,X_Before)
				CALL D20XX_MoveRoute_DelLast
			ENDIF
		ENDIF

		;9時方向のへクスへ移動したときのコスト計算
		IF X_Before-2 >= 0;MAPの左端では無いことの確認
			X_After = X_Before - 2
			Y_After = Y_Before
			IF D20XX_MoveCostMap:Y_After:X_After < RemnantMovePower - TOINT(D20XX_GET_HEXDATA(D20XX_MAP:Y_After:X_After:0,"移動コスト") ) && TOINT(D20XX_MAP:Y_After:X_After:1 ) == 0
				D20XX_MoveCostMap:Y_After:X_After = RemnantMovePower - TOINT(D20XX_GET_HEXDATA(D20XX_MAP:Y_After:X_After:0,"移動コスト") )
				CALL D20XX_MoveRoute_Add(Y_Before,X_Before)
				CALL D20XX_MoveCostCalc(UnitType,D20XX_MoveCostMap:Y_After:X_After,Y_After,X_After)
				CALL D20XX_MoveRoute_GetLast(Y_Before,X_Before)
				CALL D20XX_MoveRoute_DelLast
			ENDIF
		ENDIF

		;11時方向のへクスへ移動したときのコスト計算
		IF X_Before-1 >= 0 && Y_Before-1 >= 0;MAPの左端でも上端でも無いことの確認
			X_After = X_Before - 1
			Y_After = Y_Before - 1
			IF D20XX_MoveCostMap:Y_After:X_After < RemnantMovePower - TOINT(D20XX_GET_HEXDATA(D20XX_MAP:Y_After:X_After:0,"移動コスト") ) && TOINT(D20XX_MAP:Y_After:X_After:1 ) == 0
				D20XX_MoveCostMap:Y_After:X_After = RemnantMovePower - TOINT(D20XX_GET_HEXDATA(D20XX_MAP:Y_After:X_After:0,"移動コスト") )
				CALL D20XX_MoveRoute_Add(Y_Before,X_Before)
				CALL D20XX_MoveCostCalc(UnitType,D20XX_MoveCostMap:Y_After:X_After,Y_After,X_After)
				CALL D20XX_MoveRoute_GetLast(Y_Before,X_Before)
				CALL D20XX_MoveRoute_DelLast
			ENDIF
		ENDIF
	ENDIF
;;;ARG:0 = Y座標
;;;ARG:1 = X座標
@D20XX_MoveRoute_Add(ARG:0,ARG:1)
	#DIM LCount
	FOR LCount, 0, TOINT(D20XX_GET_UNITDATA(D20XX_Unit:D20XX_SelectUnit:1,"行動力"))
		IF D20XX_MoveRoute:LCount:0 == -1 && D20XX_MoveRoute:LCount:1 == -1
			D20XX_MoveRoute:LCount:0 = ARG:0
			D20XX_MoveRoute:LCount:1 = ARG:1
			BREAK
		ENDIF
	NEXT
@D20XX_MoveRoute_GetLast(Return_Y,Return_X)
	#DIM REF Return_Y
	#DIM REF Return_X
	#DIM LCount
	FOR LCount, 0, TOINT(D20XX_GET_UNITDATA(D20XX_Unit:D20XX_SelectUnit:1,"行動力"))
		IF D20XX_MoveRoute:LCount:0 == -1 && D20XX_MoveRoute:LCount:1 == -1 && LCount > 0
			Return_Y = D20XX_MoveRoute:(LCount-1):0
			Return_X = D20XX_MoveRoute:(LCount-1):1
			BREAK
		ENDIF
	NEXT
@D20XX_MoveRoute_DelLast
	#DIM LCount
	FOR LCount, 0, TOINT(D20XX_GET_UNITDATA(D20XX_Unit:D20XX_SelectUnit:1,"行動力"))
		IF D20XX_MoveRoute:LCount:0 == -1 && D20XX_MoveRoute:LCount:1 == -1 && LCount > 0
			D20XX_MoveRoute:(LCount-1):0 = -1
			D20XX_MoveRoute:(LCount-1):1 = -1
			BREAK
		ENDIF
	NEXT


code:
;;;
;;;	MAPに領帯ルデータを設定するよ！
;;;
;;;<param name="ARGS">設定データ(X座標分割記号="," Y座標分割記号="/")</param>
;;;<example>
;;;	CALL D20XX_MAP_Set_Hex("草,草,森/街,森,森/森,森,砂")
;;;</example>
;;;<remarks>
;;;	わざわざ１領帯ル毎に虚無データを入れなくても、ここで自動的に一個飛ばしにデータを入れてくれるんだ！
;;;	やったね！
;;;	注意としては、必ず X=0,Y=0座標からスタートするんだ！
;;;	つまり下のようなMAPは対応していないんだ！
;;;	  ＠＠＠＠＠＠＠＠＠
;;;	 ＠＠＠＠＠＠＠＠＠
;;;	  ＠＠＠＠＠＠＠＠＠
;;;	 ＠＠＠＠＠＠＠＠＠
;;;	上みたいなMAP作りたかったら、これを読んでいる君が！作ってみよう！
;;;	できるだけわかりやすく作ったつもりだけど、分かりにくかったらごめんね！
;;;
;;;	ちなみに作れるMAPを上のように書くとこうなるよ！
;;;	 ＠＠＠＠＠＠＠＠＠
;;;	  ＠＠＠＠＠＠＠＠＠
;;;	 ＠＠＠＠＠＠＠＠＠
;;;	  ＠＠＠＠＠＠＠＠＠
;;;	頼むから上の図で伝わってくれ～
;;;</remarks>
@D20XX_Map_Set_Hex(ARGS)
	#DIM DYNAMIC X_COUNT
	#DIM DYNAMIC Y_COUNT
	#DIMS DYNAMIC X_DATA,200
	#DIMS DYNAMIC Y_DATA,200
	#DIM DYNAMIC X_SET

	SPLIT ARGS,"/",Y_DATA

	;ERHには200って書いてあるけど、ヘクス領帯ル式なので縦横幅最大値は半分の100なんだ！
	;ヘクス領帯ル式って分かりにくいね！
	FOR Y_COUNT, 0, 100
		IF Y_DATA:Y_COUNT == ""
			BREAK
		ELSE
			SPLIT Y_DATA:Y_COUNT,",",X_DATA

			FOR X_COUNT, 0, 100
				IF X_DATA:X_COUNT == ""
					BREAK
				ELSE
					;このIFの中身弄るだけでremarksに書いた作れないMAPを作れるようになると思ったら大間違いだ！
					;多分迷你游戏の本処理を全部対応させる必要があるから、もし本当に対応させたいと頑張っている人が居たら注意してくれ！
					;ちなみにここが一個飛ばしに値設定するための処理であって、他の処理はただのデータ対応用の本来は必要なかった処理だ！

					IF Y_COUNT == 0;0除算エラー対策よ
						X_SET = X_COUNT * 2
					ELSEIF Y_COUNT % 2 == 0;同じく0除算エラー対策よ
						X_SET = X_COUNT * 2
					ELSE
						X_SET = X_COUNT * 2 + 1
					ENDIF
					D20XX_MAP:Y_COUNT:X_SET:0 = %X_DATA:X_COUNT%
				ENDIF
			NEXT
		ENDIF
	NEXT

;;;
;;;	MAPにユ针织を配置するよ、絶対に,分割は数値で三つ用意すること！
;;;
;;;<param name="ARGS">設定データ(X,Y,UnitID分割記号="," Unit分割記号="/")</param>
;;;<example>
;;;	;座標0,0にユ针织ID:1を置く、座標1,3にユ针织ID:2を置く、座標0,12にユ针织ID:5を置く
;;;	CALL D20XX_MAP_Set_Unit("0,0,1/1,3,2/0,12,5")
;;;</example>
@D20XX_Map_Set_Unit(ARGS)
	#DIM DYNAMIC LCOUNT
	#DIMS DYNAMIC UNIT_DATA,3
	#DIM DYNAMIC X_DATA
	#DIM DYNAMIC Y_DATA
	#DIMS DYNAMIC UNITS,10000

	SPLIT ARGS,"/",UNITS
	;MAP最大面積100*100=10000へクスに全部ユ针织が居れば10000回ループする必要有るけど
	;正直10000回ループする事など無いと思う
	;ぶっちゃけ100回くらいでも十分なのでは説あるよね
	;でもまぁ、絶対はないので酱と回そうね
	;重くなるから途中でBreakするのは忘れないようにしなければ
	FOR LCOUNT ,0 , 10000
		IF UNITS:LCOUNT == ""
			BREAK
		ELSE
			SPLIT UNITS,",",UNIT_DATA

			;#region データが数値変換できない場合Breakするよ
				SIF ISNUMERIC(UNIT_DATA:0) == 0
					BREAK
				SIF ISNUMERIC(UNIT_DATA:1) == 0
					BREAK
				;Demoslabiya20XX_MAPは文字列型配列でも、処理で使うときは毎回TOINTするから数値変換可能でないと困るんだ！
				SIF ISNUMERIC(UNIT_DATA:2) == 0
					BREAK
			;#endregion

			;時空の狭間に取り込まれる場合BREAKする
			IF TOINT(UNIT_DATA:0) == 0
				IF TOINT(UNIT_DATA:1) == 0
					;什麼也不做よ
				ELSEIF TOINT(UNIT_DATA:1) % 2 == 1
					BREAK
				ENDIF
			ELSEIF TOINT(UNIT_DATA:1) == 0
				SIF TOINT(UNIT_DATA:0) % 2 == 1;上のIFでUNIT_DATA != 0である事は保証されているので、これでいいのだ
					BREAK
			ELSEIF (TOINT(UNIT_DATA:0) % 2 == TOINT(UNIT_DATA:1) % 2)
				BREAK
			ENDIF

			;指定座標に先客が居た場合BREAKする
			SIF D20XX_MAP:TOINT(UNIT_DATA:1):TOINT(UNIT_DATA:0):1 != "None"
				BREAK

			;D20XX_MAPのデータ構造は　D20XX_MAP:Y座標:X座標:各パラメータ　なんだ！
			;分かりにくいね！気を付けよう！
			;D20XX_MAPは文字列型配列だからUNIT_DATA:2はTOINTしたら駄目なんだ！
			;さらに分かりにくいね！気を付けよう！
			D20XX_MAP:TOINT(UNIT_DATA:1):TOINT(UNIT_DATA:0):1 = UNIT_DATA:2
		ENDIF
	NEXT
	;本当なら設定失敗したユ针织IDを返したかったけど、なんか色々面倒で諦めためう

;;;
;;;	ユ针织配置可能エリアを設定するよ
;;;
;;;<param name="ARGS">設定データ(X,Y,召還可能(trueもしくはfalse)="," ="/")</param>
;;;<example>
;;;	;座標0,0にユ针织ID:1を置く、座標1,3にユ针织ID:2を置く、座標0,12にユ针织ID:5を置く
;;;	CALL D20XX_MAP_Set_Unit("0,0,true/1,3,true/0,12,true")
;;;</example>
@D20XX_Map_Set_UnitSummonArea(ARGS)
	#DIM DYNAMIC LCOUNT
	#DIMS DYNAMIC IsSet,3
	#DIM DYNAMIC X_DATA
	#DIM DYNAMIC Y_DATA
	#DIMS DYNAMIC InputData,10000

	SPLIT ARGS,"/",InputData
	;MAP最大面積100*100=10000へクスに全部ユ针织が居れば10000回ループする必要有るけど
	;正直10000回ループする事など無いと思う
	;ぶっちゃけ100回くらいでも十分なのでは説あるよね
	;でもまぁ、絶対はないので酱と回そうね
	;重くなるから途中でBreakするのは忘れないようにしなければ
	FOR LCOUNT ,0 , 10000
		IF InputData:LCOUNT == ""
			BREAK
		ELSE
			SPLIT InputData,",",IsSet

			;#region データが数値変換できない場合Breakするよ
				SIF ISNUMERIC(IsSet:0) == 0
					BREAK
				SIF ISNUMERIC(IsSet:1) == 0
					BREAK
			;#endregion

			;時空の狭間に取り込まれる場合BREAKする(これは別に時空の狭間に取り込まれても問題ないんだけどね？)
			SIF (TOINT(IsSet:0) % 2 == TOINT(IsSet:1) % 2)
				BREAK

			;D20XX_MAPのデータ構造は　D20XX_MAP:Y座標:X座標:各パラメータ　なんだ！
			;分かりにくいね！気を付けよう！
			D20XX_MAP:TOINT(IsSet:1):TOINT(IsSet:0):2 = IsSet:2
		ENDIF
	NEXT


code:
;;;
;;;	ユ针织追加する
;;;
;;;<param name="ARGS:0">敵味方識別(「自軍」「敵」「友軍」)</param>
;;;<param name="ARGS:1">ユ针织種類名　種類はDATA/D20XX_武器データ.ERBを参照　ここに有る物だけよ</param>
;;;<param name="ARGS:2">残HP(TOINT可能な物のみ　正の整数のみを推奨)</param>
;;;<param name="ARGS:3">残行動力(TOINT可能な物のみ　正の整数のみを推奨)</param>
;;;<param name="ARGS:4">残指揮統制率（TOINT可能な物のみ　正の整数のみを推奨）</param>
;;;<param name="ARGS:5">残ERA（TOINT可能な物のみ　正の整数のみを推奨）</param>
;;;<param name="ARGS:6">武装（武器1,武器2,武器3　武器は三種類まで　武器との境界識別符号は「,」武器に入れられる名前はDATA/D20XX_武器データ.ERBを参照）</param>
;;;<param name="ARGS:7">状態（状態1,状態2,状態3...　境界識別符号は「,」DATA/D20XX_ユ针织状態.ERBを参照）</param>
;;;<param name="ARGS:8">AI種類(敵の場合のみ 無くても問題が無いようにする)</param>
;;;<param name="ARGS:9">性格(口上選択用に 無くても問題ないように作る)</param>
@D20XX_Unit_Add(ARGS:0, ARGS:1, ARGS:2, ARGS:3, ARGS:4, ARGS:5, ARGS:6, ARGS:7, ARGS:8, ARGS:9)
	#DIM DYNAMIC LCOUNT
	#DIM DYNAMIC NewUnitID
	#DIMS DYNAMIC IsError
	#DIMS DYNAMIC WeaponList,4
	#DIMS DYNAMIC StatusList,100

	IsError = False
	;#region 引数の内容確認
		;敵味方識別符号
		IF ARGS:0 != "敵"&&ARGS:0 != "自軍"&&ARGS:0 != "友軍"&&ARGS:0 != "None"
			PRINTFORML
			PRINTFORML ※系统信息
			PRINTFORML メソッド名：D20XX_Unit_Add
			PRINTFORML 敵でも味方でもないユ针织が設定されましたよ
			PRINTFORML ここに設定して良い物は "敵","自軍","友軍","None" の三つだよ
			PRINTFORML 第三勢力とか用意する場合は、酱とD20XX_Unit_Addの許可敵味方識別符号引数に追加してね
			PRINTFORML (設定された奴 = %ARGS:0%)
			IsError = True
		ENDIF

		;ユ针织種類名
		IF D20XX_GET_UNITDATA(ARGS:1,"ユ针织名") == "Error"
			PRINTFORML
			PRINTFORML ※系统信息
			PRINTFORML メソッド名：Demoslaviya_Unit_Add
			PRINTFORML ユ针织種類名がDATA/Demoslavia20XX_ユ针织データ.ERBに無かったよ
			PRINTFORML ユ针织データの中で設定してる名前かどうか確認してね
			PRINTFORML 設定された奴 = %ARGS:1%(ダブルクォーテーションは表示されないはずだよ)
			IsError = True
		ENDIF

		;HP
		IF ISNUMERIC(ARGS:2) == 0
			PRINTFORML
			PRINTFORML ※系统信息
			PRINTFORML ※系统信息
			PRINTFORML メソッド名：Demoslaviya_Unit_Add
			PRINTFORML HPにTOINT出来ないデータが設定されたよ
			PRINTFORML 設定された奴 = %ARGS:2%(ダブルクォーテーションは表示されないはずだよ)
			IsError = True
		ENDIF

		;残行動力
		IF ISNUMERIC(ARGS:3) == 0
			PRINTFORML
			PRINTFORML ※系统信息
			PRINTFORML メソッド名：Demoslaviya_Unit_Add
			PRINTFORML 残行動力にTOINT出来ないデータが設定されたよ
			PRINTFORML 設定された奴 = %ARGS:3%(ダブルクォーテーションは表示されないはずだよ)
			IsError = True
		ENDIF

		;残指統制率
		IF ISNUMERIC(ARGS:4) == 0
			PRINTFORML
			PRINTFORML ※系统信息
			PRINTFORML メソッド名：Demoslaviya_Unit_Add
			PRINTFORML 残指揮統制率にTOINT出来ないデータが設定されたよ
			PRINTFORML 設定された奴 = %ARGS:4%(ダブルクォーテーションは表示されないはずだよ)
			IsError = True
		ENDIF

		;残ERA
		IF ISNUMERIC(ARGS:5) == 0
			PRINTFORML
			PRINTFORML ※系统信息
			PRINTFORML メソッド名：Demoslaviya_Unit_Add
			PRINTFORML 残ERAにTOINT出来ないデータが設定されたよ
			PRINTFORML 設定された奴 = %ARGS:5%(ダブルクォーテーションは表示されないはずだよ)
			IsError = True
		ENDIF

		;武装
		SPLIT ARGS:6, ",", WeaponList
			IF WeaponList:3 != ""
				PRINTFORML
				PRINTFORML ※系统信息
				PRINTFORML メソッド名：Demoslaviya_Unit_Add
				PRINTFORML 武器が三種類以上設定されたよ、一ユ针织につき武器は三種類までだよ
				PRINTFORML 設定された奴 = %ARGS:6%(ダブルクォーテーションは表示されないはずだよ)
				IsError = True
			ENDIF
			FOR LCOUNT, 0, 3;武器は3種類まで、
				IF WeaponList:LCOUNT != "" && D20XX_GET_WEAPONDATA(WeaponList:LCOUNT,"武器名") == "Error"
					PRINTFORML
					PRINTFORML ※系统信息
					PRINTFORML メソッド名：Demoslaviya_Unit_Add
					PRINTFORML 武器名に存在しない名前が設定されたよ
					PRINTFORML 武器名には真名を設定してね、当たり前だけどDATA/D20XX_ユ针织データ.ERBにはネタバレ満載だから気をつけてね
					PRINTFORML 設定された奴 = %WeaponList:LCOUNT%(ダブルクォーテーションは表示されないはずだよ)
					IsError = True
				ENDIF
			NEXT

		;状態
		;SPLIT ARGS:7, ",", StatusList
		;	FOR LCOUNT, 0, 100;とりあえず100回回しておく
		;		IF D20XX_GET_STATEDATA(StatusList:LCOUNT,"状態名") == "Error"
		;			PRINTFORML
		;			PRINTFORML ※系统信息
		;			PRINTFORML メソッド名：Demoslaviya_Unit_Add
		;			PRINTFORML DATA/D20XX_状態.ERBに存在しないデータが設定されましたよー
		;			PRINTFORML 設定された奴 = %WeaponList:LCOUNT%(ダブルクォーテーションは表示されないはずだよ)
		;			IsError = True
		;		ENDIF
		;	NEXT
		;エラーがあったら返回
		SIF IsError == "True"
			RETURN 1
	;#endregion

	;#region 追加できるUnitIDを見つける
		NewUnitID = 1
		FOR LCOUNT, 1, 10000;0は何もない状態という意味のデータなので1から開始よー
			IF D20XX_Unit:LCOUNT:0 == "None"
				BREAK
			ELSEIF LCOUNT == 9999
				PRINTFORML
				PRINTFORML ※系统信息※
				PRINTFORML D20XX_Unit配列にこれ以上データが入らなかったよ
				PRINTFORML このメッセージが出る場合って9割方バグがどこかに有ると思われるので教えてくだしい
				PRINTFORML 本当にMAP上に10001体もユ针织だそうとデバッグみたいなPLAYしてたらごめんね
				PRINTFORML ちょっと対応出来て無いっす
				PRINTFORML 頭のいい人が無限に角色クターデータを保持出来るようにしてくれると信じてる
				PRINTFORML 文字列データでN次元配列とか実現しても良いけど境界識別符号大量的用意するの辛いし、何より読みにくい
				PRINTFORMW Yeah
				RETURN 1
			ELSE
				NewUnitID++
			ENDIF
		NEXT
	;#endregion

	FOR LCOUNT, 0, 10
		D20XX_Unit:NewUnitID:LCOUNT = %ARGS:LCOUNT%
	NEXT
	RETURN NewUnitID
;;;
;;;	初期状態でMapにユ针织を追加するメソッド
;;;
;;;<param name="ARGS:0">X座標</param>
;;;<param name="ARGS:1">Y座標</param>
;;;<param name="ARGS:2">敵味方識別</param>
;;;<param name="ARGS:2">ユ针织名</param>
;;;<param name="ARGS:3">(省略可)武装</param>
;;;<param name="ARGS:4">(省略可)AI種類</param>
;;;<param name="ARGS:5">(省略可)性格</param>
@D20XX_Unit_Add_Default(ARGS:0,ARGS:1,ARGS:2,ARGS:3,ARGS:4,ARGS:5,ARGS:6)
	#DIMS DYNAMIC IsError

	#DIMS DYNAMIC Weapon
	#DIMS DYNAMIC AI_Type
	#DIMS DYNAMIC Personality
	;X座標
	IF ISNUMERIC(ARGS:0) == 0
		PRINTFORML
		PRINTFORML ※系统信息
		PRINTFORML メソッド名：D20XX_Unit_Add_Default
		PRINTFORML X座標に数字以外が設定されましたよ
		PRINTFORML 設定された奴 = %ARGS:0%(ダブルクォーテーションは表示されないはずだよ)
		IsError = True
	ENDIF
	;Y座標
	IF ISNUMERIC(ARGS:1) == 0
		PRINTFORML
		PRINTFORML ※系统信息
		PRINTFORML メソッド名：D20XX_Unit_Add_Default
		PRINTFORML Y座標に数字以外が設定されましたよ
		PRINTFORML 設定された奴 = %ARGS:1%(ダブルクォーテーションは表示されないはずだよ)
		IsError = True
	ENDIF
	IF ARGS:2 != "敵"&& ARGS:2 != "自軍"&& ARGS:2 != "友軍"
		PRINTFORML
		PRINTFORML ※系统信息
		PRINTFORML メソッド名：D20XX_Unit_Add_Default
		PRINTFORML 敵と味方以外のデータが敵味方識別引数に入ってきましたわ！
		PRINTFORML 設定された奴 = %ARGS:2%(ダブルクォーテーションは表示されないはずだよ)
	ENDIF
	IF D20XX_GET_UNITDATA(ARGS:3,"ユ针织名") == "Error"
		PRINTFORML
		PRINTFORML ※系统信息
		PRINTFORML メソッド名：D20XX_Unit_Add_Default
		PRINTFORML 指定されたユ针织名が見つかりませんでしたわよ
		PRINTFORML 設定された奴 = %ARGS:2%(ダブルクォーテーションは表示されないはずだよ)
		IsError = True
	ENDIF

	SIF IsError == "True"
		RETURN 1

	IF ARGS:4 != ""
		Weapon = ARGS:4
	ELSE
		Weapon = D20XX_GET_UNITDATA(ARGS:3,"武装")
	ENDIF

	IF ARGS:5 != ""
		AI_Type = ARGS:5
	ELSE
		;後々随机にAIを選択するようにする
		AI_Type =
	ENDIF

	IF ARGS:6 != ""
		Personality = ARGS:6
	ELSE
		;後々随机に正確を選択するようにする
		Personality =
	ENDIF
	CALL D20XX_Unit_Add(ARGS:2,ARGS:3,D20XX_GET_UNITDATA(ARGS:3,"HP"),D20XX_GET_UNITDATA(ARGS:3,"行動力"),D20XX_GET_UNITDATA(ARGS:3,"指揮統制率"),D20XX_GET_UNITDATA(ARGS:3,"ERA"),D20XX_GET_UNITDATA(ARGS:3,"武装"),"",AI_Type,Personality)
	;PRINTFORMW UnitID = {RESULT}
	D20XX_MAP:TOINT(ARGS:1):TOINT(ARGS:0):1 = {RESULT}

;;;
;;;	初期状態でMapにユ针织を追加するメソッド
;;;
;;;<param name="ARGS:0">削除するユ针织ID</param>

@D20XX_Unit_Del(DellUnitID)
	#DIM DYNAMIC DellUnitID
	VARSET D20XX_Unit:DellUnitID:0, "None"


code:
;;;%倍とか出来るようにする奴
@MathEX_Per(BaseData,Percent)
#FUNCTION
	#DIM DYNAMIC BaseData
	#DIM DYNAMIC Percent
	RETURNF BaseData * Percent / 100

;;;通貨単位ダエモスラビヤ・デーモール表示メソッド
;;;もう使わないかも
@D20XX_Demol(ARGS)
	#DIM DYNAMIC LCOUNT

	VARSET LOCALS

	SPLIT ARGS, "Д", LOCALS

	FOR LCOUNT, 0, RESULT
		IF LCOUNT >= 1
			PRINT_IMG "Demol"
		ENDIF
		PRINTFORM %LOCALS:LCOUNT%
	NEXT
	PRINTL

;;;
;;;	ユ针织をMapの海から見つける
;;;
;;;<param name="ARG">尋找ユ针织のID</param>
;;;<returns>
;;;	RETURN:0 = 検索結果(1 = 見つかった, 0 = 見つからなかった)
;;; RETURN:1 = 見つかったY座標
;;;	RETURN:2 = 見つかったX座標
;;;</returns>
@D20XX_UnitSearch(SearchUnit)
	#DIM DYNAMIC X_Count
	#DIM DYNAMIC Y_Count
	#DIM DYNAMIC ResultData,3
	#DIM DYNAMIC SearchUnit
	ResultData:0 = 0
	FOR Y_Count,0,200
		FOR X_Count,0,200
			IF SearchUnit == TOINT(D20XX_MAP:Y_Count:X_Count:1)
				ResultData:0 = 1
				ResultData:1 = Y_Count
				ResultData:2 = X_Count
				BREAK
			ENDIF
		NEXT
	NEXT
	RETURN  ResultData:0,ResultData:1,ResultData:2

;
@HUNI(UniName,Ypos)
	#FUNCTIONS
	#DIMS DYNAMIC UniName
	#DIM DYNAMIC Ypos
	#DIMS DYNAMIC ResultHtml
	ResultHtml =
	ResultHtml += @""
		CASE "Demol","demol"
			ResultHtml += @"demol\" ypos=\"{Ypos}\">"
	ENDSELECT

	RETURNF ResultHtml


code:
#DIM CONST D20XX_HexSize = 250
#DIM CONST D20XX_HexHalfSize = 125
#DIM CONST D20XX_UnitSize = 150
#DIM CONST D20XX_UnitWidth = 50
#DIM CONST D20XX_LeftSpase = 50
#DIMS D20XX_MAP,200,200,3

;;;描画するHTMLを入れるところ
;;;12行+余白用9行描画するよ
#DIMS D20XX_HTML,28

;;;ユ针织一体一体のパラメータを保存する所
;;;要素1はユ针织ID、最大MAP全部にユ针织配置されても問題がないよう10000個を確保
;;;(でも10000体ユ针织出てきた後、ユ针织が死んでその上に新しくユ针织出されるとエラー吐いてしまう...
;;;ユ针织追加時に、死亡したユ针织を消して新しく配列を生成しなおして
;;;データをリフレッシュさせる処理が必要かもしれないなぁ)
;;;★要素2の内容★
;;;0:敵味方識別(文字列だから多分第三勢力が出てきても対応できるはず)
;;;1:ユ针织種類名(歩兵とか水槽とか)
;;;2:HP
;;;3:残行動力
;;;4:残指揮統制率
;;;5:残ERA
;;;6:武装 これは解体して読み込む処理にするので1行で大丈夫なはず
;;;7:状態(混乱、鼓舞、毒など)これも解体して読み込む処理にするので1行で大丈夫なはず
;;;8:性格(口上用に...口上の中に口上を用意するとは一体...うごご)これで指揮統制率とかAIの挙動が変わったりすると面白色かもなぁ
;;;9:AI種類(機動型AI、主力AI、砲撃AI、防衛AIの四つを作成予定)
;;;10:割り当てリーダーID
#DIMS SAVEDATA D20XX_Unit,10000,11

;;;小隊長のパラメータを格納するところ
;;;要素1はリーダー保管数だけど、多分10000も使わんべさ
;;;それはそれとしてとりあえず10000確保しておく
;;;★要素2の内容★
;;;0:FCSV...FakeCSVデータ
;;;1:名前
;;;2:割り当て中ユ针织
;;;3:種族
;;;4:特性タグ
;;;5:
;;;6:
;;;7:
;;;8:
;;;9:
#DIMS SAVEDATA D20XX_Leader,10000,10

;;;現在選択中のユ针织個体識別ID (null = 0)
#DIM D20XX_SelectUnit

;;;現在選択中の武器名
#DIMS D20XX_SelectWeapon

;;;現在的行動設定
;;;"攻撃"or"移動"(默认ルトは"移動")
#DIMS D20XX_SelectCommandMode

;;;選択中MAPの勝利条件
#DIMS D20XX_VictoryType

;;;選択中のユ针织が該当座標に移動した際の残移動コストが入るよ
;;;默认ルトでは全て-1が入るよ
#DIM D20XX_MoveCostMap,200,200
;;;該当座標まで移動するまでの道筋を保存するやで！
#DIM D20XX_MoveRoute,200,2

;;;選択中のユ针织の選択中の武器の射程範囲が入るよ
;;;默认ルトでは全て-1
#DIM D20XX_AttackRangeMap,200,200
;;;該当座標に攻撃するまでの道筋を保存するやで
#DIM D20XX_AttackRoute,200,2

;;;0:Y座標
;;;1:X座標
;;;2:使用火器
#DIMS D20XX_AttackQueue,10000,3

#DIMS D20XX_StageName

;;;敵ターン時に使用
;;;射程内の敵リスト取得用
;;;ユ针织ID,Y座標,X座標
#DIM D20XX_CandidateList,10000,3

;;;敵ターン時に攻撃対象ユ针织を見やすくするための奴
;;;True/False
#DIMS Demoslaviya20SXX_EnemyTargetMode
#DIM D20XX_EnemyTargetSelectMap,200,200
#DIM D20XX_EnemyMoveSelectMap,200,200

;;;Asterで算出した最短経路を格納するキュー
;;;0:Y座標
;;;1:X座標
;;;2:F値？
#DIM D20XX_AstarQueue,10000,3

;;;0:開放型状態か否か
;;;1:親ノードY座標
;;;2:親ノードX座標
;;;3:F値
;;;4:G値
;;;5:H値
#DIM D20XX_AstarMap,200,200,6

#DIMS D20XX_TarnMode

#DIMS D20XX_FaceHTML

#DIMS SAVEDATA D20XX_UnitFaceHTML,10000

;;;魔界通貨ディモルの為替レート
#DIM D20XX_DemolRate
#DIM D20XX_Demol