
goto *include_command

////////////////////////////////////////////////////////////////////////////////////////////////

*COMMAND

	if MD=1 & RPY!=1 & IVB_time<=101{
	
		//ダッシュ判定(dash)//
		switch config(2)
			case 0
				if Space=1 { dash=1 }else: dash=0
			swbreak
			case 1
				if Shift=1 { dash=1 }else: dash=0
			swbreak
			case 2
				if Z=1 { dash=1 }else: dash=0
			swbreak
			case 3
				if X=1 { dash=1 }else: dash=0
			swbreak
			case 4
				if C=1 { dash=1 }else: dash=0
			swbreak
			case 5
				if d_cnt=0 & ((key&1) | ((key&4)!0)) : d_cnt=1
				if d_cnt>1 & ((key&1) | ((key&4)!0)) : dash=1
				if dash=1 & (L=1 | R=1) : dash=1
				if dash=1 & L=0 & R=0  : dash=0
				if d_cnt>=1 : d_cnt++
				if d_cnt>8 : d_cnt=0
			swbreak
		swend
		if dash=0 { 
			if(pad&config(12)) { dash=1 }else:dash=0
		}
		
		//移動判定(L)(R)//
		if climb=0 {
			if (L=1 & R=0) | (pad&1) {
				if dash=1 { 
					if zs_1=0 { zx-5
						if zs_2=1 { 
							if zv>-5.0 { zv-=1.0
							}else: zv=-5.0
						}else{
							if zv>0 : zv-=0.25
						}
					}else{ zx-3 
						if zs_2=1 { 
							if zv>-3.0 { zv-=0.6
							}else: zv=-3.0
						}else{
							if zv>0 : zv-=0.15
						}
					}
				}else{
					 if zs_1=0 { zx-3
					 	if zs_2=1 {
							if zv>-3.0 { zv-=0.6
							}else: zv=-3.0
						}else{
							if zv>0 : zv-=0.15
						}
					 }else{ zx-1
					 	if zs_2=1 {
							if zv>-1.0 { zv-=0.2
							}else: zv=-1.0
						}else{
							if zv>0 : zv-=0.05
						}
					}
				}
				move_R=0
			}else:if (R=1 & L=0) | (pad&4) {
				if dash=1 {
					 if zs_1=0 { zx+5
						if zs_2=1 { 
							if zv<5.0 { zv+=1.0
							}else: zv=5.0
						}else{
							if zv<0 : zv+=0.25
						}
					}else{ zx+3
						if zs_2=1 { 
							if zv<3.0 { zv+=0.6
							}else: zv=3.0
						}else{
							if zv<0 : zv+=0.15
						}
					} 
				}else{
					 if zs_1=0 { zx+3
					 	if zs_2=1 {
							if zv<3.0 { zv+=0.6
							}else: zv=3.0
						 }else{
							if zv<0 : zv+=0.15
						}
					 }else{ zx+1
					 	if zs_2=1 {
							if zv<1.0 { zv+=0.2
							}else: zv=1.0
						}else{
							if zv<0 : zv+=0.05
						}
					}
				}
				move_R=1
			// (氷)移動していないときの滑り判定 //
			}else{
				if (zv!=0) : zx=zv+zx
				if zs_1=0 {
					if zv>=-0.2 & zv<=0.2 { zv=0.0
					}else:if zv>0.2 { zv-=0.2 
					}else: zv+=0.2
				}else{
					if zv>=-0.3 & zv<=0.3 { zv=0.0
					}else:if zv>0.3 { zv-=0.3 
					}else: zv+=0.3
				}
			}
		}
	
		//梯子判定(U)(D)//	
		if ladder=1 & ( U=1 | (padkey=2) ) & climb=0 : climb=1 : zv=0.0
		if climb=1 {
			A=0 
			if U=1 | (pad&2) { zy-2
			}else:if D=1 | (pad&8)  : zy+2 
			if L=1 | (pad&1)  : zx-- {
			}else:if R=1 | (pad&4)  : zx++	
		}
		if ladder=0 : climb=0
		ladder=0 ;梯子判定リセット
		
		//ジャンプ判定(key)//
		if A_btn=1 & JF!=2{
			if JF=0 : A=1
			if JF=1 { repeat EFFECT_MAX : if effect(cnt)=0 { effect(cnt)=999 : effect_x(cnt)=int(zx) : effect_y(cnt)=int(zy+32) : break } : loop }
			JF++ 
			if (zs_1=0) { JS=-12 : mmplay 71
			}else: JS=-8 : mmplay 71
			if climb=1 : climb=0 : JF=1 : A=1 : JS=-12 ;梯子ジャンプ
		}
	
		//バリア発生//
		if C_btn=1 & BRR_cnt=5 & BRR=0 {
			BRR=1 : BRR_cnt=0 : mmplay 69 
			repeat EFFECT_MAX : if effect(cnt)=0 { effect(cnt)=998 : effect_x(cnt)=int(zx) : effect_y(cnt)=int(zy) : break } : loop
		}
		
		//(re)リプレイモード保存用//
		
		if RPY=2 { 
			RPY_KEY=0 
			if L=1 : RPY_KEY+=1	; ←
			if U=1 : RPY_KEY+=2 ; ↑
			if R=1 : RPY_KEY+=4 ; →
			if D=1 : RPY_KEY+=8 ; ↓
			if A_btn=1 : RPY_KEY+=16 ; ジャンプ
			if dash=1  : RPY_KEY+=32 ; ダッシュ
	
			if F<2280 { 
				replay(F)=RPY_KEY
			}else {
				notesel replay_note
				noteadd ""+stage,1
				noteadd ""+level,3
				repeat 2280
					noteadd ""+replay(cnt),5+cnt,1
				loop
				notesave  "demo_"+rpy_num+".rpy"
			
				font msgothic, 18, font_italic
				color 255,255,255 : pos 0,0 :mes "＊＊リプレイ保存しました＊＊"
				redraw 1
				
				stop
			}
		}	
	}else:if MD=1 & RPY=1 { ;(re)リプレイ用動作
	
		// リプレイタイトルバック //
		if RPY=1 { 
			if maku!=4 && (A_btn=1 | B_btn=1 | pad!=0) { maku=4 :mmplay 65
			}else:if F=2100 : maku=4
			if maku=4 : SF++
			if SF=80 : goto*TITLE_BREAK // 80だった
		}
	
		//ダッシュ判定(dash)//
			if replay(F)&32 { dash=1 }else: dash=0
		
		//移動判定(L)(R)//
		if climb=0 {
			if replay(F)&1 {
				if dash=1 { 
					if zs_1=0 { zx-5
						if zs_2=1 { 
							if zv>-5.0 { zv-=1.0
							}else: zv=-5.0
						}else{
							if zv>0 : zv-=0.25
						}
					}else{ zx-3 
						if zs_1=1 & zs_2=1 { 
							if zv>-3.0 { zv-=0.6
							}else: zv=-3.0
						}else{
							if zv>0 : zv-=0.15
						}
					}
				}else{
					 if zs_1=0 { zx-3
					 	if zs_2=1 {
							if zv>-3.0 { zv-=0.6
							}else: zv=-3.0
						}else{
							if zv>0 : zv-=0.15
						}
					 }else{ zx-1
					 	if zs_1=1 & zs_2=1 {
							if zv>-1.0 { zv-=0.2
							}else: zv=-1.0
						}else{
							if zv>0 : zv-=0.05
						}
					}
				}
				move_R=0
			}else:if replay(F)&4 {
				if dash=1 {
					 if zs_1=0 { zx+5
						if zs_2=1 { 
							if zv<5.0 { zv+=1.0
							}else: zv=5.0
						}else{
							if zv<0 : zv+=0.25
						}
					}else{ zx+3
						if zs_2=1 { 
							if zv<3.0 { zv+=0.6
							}else: zv=3.0
						}else{
							if zv<0 : zv+=0.15
						}
					} 
				}else{
					 if zs_1=0 { zx+3
					 	if zs_2=1 {
							if zv<3.0 { zv+=0.6
							}else: zv=3.0
						 }else{
							if zv<0 : zv+=0.15
						}
					 }else{ zx+1
					 	if zs_2=1 {
							if zv<1.0 { zv+=0.2
							}else: zv=1.0
						}else{
							if zv<0 : zv+=0.05
						}
					}
				}
				move_R=1
			// (氷)移動していないときの滑り判定 //
			}else{
				if (zv!=0) : zx=zv+zx
				if zs_1=0 {
					if zv>=-0.2 & zv<=0.2 { zv=0.0
					}else:if zv>0.2 { zv-=0.2 
					}else: zv+=0.2
				}else{
					if zv>=-0.3 & zv<=0.3 { zv=0.0
					}else:if zv>0.3 { zv-=0.3 
					}else: zv+=0.3
				}
			}
		}
	
		//梯子判定(U)(D)//	
		if ( replay(F)&2 ) {
			if ladder=1 & climb=0 : climb=1 : zv=0.0
		}
		if climb=1 {
			A=0 
			if replay(F)&2 { zy-2
			}else:if replay(F)&8 : zy+2 
			if replay(F)&1 : zx-- {
			}else:if replay(F)&4 : zx++	
		}
		if ladder=0 : climb=0
		ladder=0 ;梯子判定リセット
		
		//ジャンプ判定(key)//
		if replay(F)&16 {
			if JF=0 : A=1
			if JF=1 { repeat EFFECT_MAX : if effect(cnt)=0 { effect(cnt)=999 : effect_x(cnt)=int(zx) : effect_y(cnt)=int(zy+32) : break } : loop }
			JF++ 
			if (zs_1=0) { JS=-12 : mmplay 71
			}else: JS=-8 : mmplay 71
			if climb=1 : climb=0 : JF=1 : A=1 : JS=-12 ;梯子ジャンプ
		}
	}
	
	//ポーズ画面コントロール//
	if MD=1 & F>=136 & A=0 & RPY!=1 { 
		if (key&128) | (pad&config(14)) :MD=5 : cursor=0 :csX=224 :csY=212 :mmplay 72
	}else:if MD=5 {
		if (key&2) | padkey=2 { 	;↑
			cursor-- :csY-17 
			if cursor=2 & TA=0 { csY-17 :cursor--
			}else:if cursor=-1 :cursor=3 :csY+68
			mmplay 74
		}else:if (key&8)  | padkey=8 { ;↓
			cursor++ :csY+17 
			if cursor=2 & TA=0 { csY+17 :cursor++
			}else:if cursor=4 :cursor=0 :csY-68
			mmplay 74
		}else:if A_btn=1 {
			if cursor=0 { MD=1 :mmplay 65				;ゲームに戻る
			}else:if cursor=1 { MD=51 :cursor=0 :csY+17 : csX=180 :csY=158 :m=config(1) :n=config(2) :o=config(3) :mmplay 65	;オプション
			}else:if cursor=2 { MD=52 :cursor=1 :csY+17 :mmplay 65	;リトライ（ＴＡ専用選択肢）
			}else:if cursor=3 :MD=53 :cursor=1 :mmplay 65	;タイトルに戻る（確認画面へ）
		}else:if B_btn=1 {  MD=1 :mmplay 66
		}else:if key and 128 :MD=1 :mmplay 66
	}else:if MD=52 | MD=53 |( MD=4 & SF=50 & TA=1 ){
		if (key&2) | padkey=2 { 
			cursor-- :csY-17 :if cursor=-1 :cursor=1 :csY+34
			mmplay 74
		}else:if (key&8) | padkey=8  { 
			cursor++ :csY+17 :if cursor=2 :cursor=0 :csY-34
			mmplay 74
		}else:if A_btn=1 {
			if MD=52 {
				if cursor=0 { MD=521 :SF=0 :maku=3 :mmplay 65	;はい
				}else:if cursor=1 :MD=5 :cursor=2 :csY=263-17 :mmplay 65 	;いいえ
			}else:if MD=53{
				if cursor=0 { MD=531 :SF=0 :maku=3 :mmplay 65	;はい
				}else:if cursor=1 :MD=5 :cursor=3 :mmplay 65 	;いいえ
			}else{
				if cursor=0 { SF=0 :maku=3 :mmplay 65	;はい
				}else:if cursor=1 :SF=0 :maku=3 :mmplay 65	 	;いいえ
			}
		}else:if B_btn=1 {
			if MD=52 { MD=5 :cursor=2 :csY=263-17 :mmplay 66
			}else:if MD=53 : MD=5 :cursor=3 :csY=263 :mmplay 66
		}
		
	}else:if MD=51 {
		if key&2 | padkey=2 { 		;↑
			cursor-- :csY-=18
			if cursor=-1 :cursor=5
			if cursor=4 & config(0)=0 : cursor=3 ;ポーズ
			switch cursor
				case 0
					csX=182 :csY=158 :if config(1)!=m :config(1)=m
				swbreak
				case 1
					if config(2)!=n :config(2)=n
				swbreak
				case 2
					if config(3)!=o :config(3)=o
				swbreak
				case 3
					csX=190
					if config(0)=0 : csY=202+28
				swbreak
				case 4
					csX=190 :csY=188+54
				swbreak
				case 5
					csX=346 :csY=410
				swbreak
			swend
			mmplay 74
		}else:if key&8 | padkey=8 { ;↓
			cursor++ :csY+=18
			if cursor=6 :cursor=0
			if cursor=4 & config(0)=0 : cursor=5
			switch cursor
				case 0
					csX=182 :csY=158
				swbreak
				case 1
					csX=190
					if config(0)=0 { csY=194
					}else:csY=188
				swbreak
				case 2
					if config(0)=0 : if config(1)!=m :config(1)=m
				swbreak
				case 3
					if config(0)=0 : if config(2)!=n :config(2)=n
				swbreak
				case 5
					csX=346 :csY=410 :if config(3)!=o :config(3)=o
				swbreak
			swend
			mmplay 74
		}
		if A_btn=1 {
			switch cursor
				case 0	;config(0)＝ キーボード/0  | ゲームパッド/1
					if config(0)=0 { config(0)=1
					}else:config(0)=0
					mmplay 75
				swbreak
				case 1	;config(1)・ジャンプ＝ Space/0 | Shift/1 | Ｚ/2 | Ｘ/3 | Ｃ/4 
					if config(0)=0 {
						m++
						if m=5 :m=0
						if m=n :m++ :if m=5 :m=0
						if m=o :m++ :if m=5 :m=0
						if m=n :m++
						if m=o :m++
						mmplay 75
					}
				swbreak
				case 2	;config(2)・ダッシュ＝ Space/0 | Shift/1 | Ｚ/2 | Ｘ/3 | Ｃ/4 | →→/5
					if config(0)=0 {
						n++
						if n=6 :n=0
						if n=m : n++
						if n=o : n++
						mmplay 75
					}
				swbreak
				case 3	;config(3)・バリア（ショット）＝ Space/0 | Shift/1 | Ｚ/2 | Ｘ/3 | Ｃ/4 | →→/5
					if config(0)=0 {
						o++
						if o=5 :o=0
						if o=m :o++ :if o=5 :o=0
						if o=n :o++ :if o=5 :o=0
						if o=m :o++
						if o=n :o++
						mmplay 75
					}
				swbreak
				case 5	;タイトルバック
					MD=5 :cursor=1 :csY=351 :msgcnt=0 :csX=224 :csY=212+17:bsave"config.sys",config  :mmplay 66
				swbreak
			swend
		}else:if B_btn=1 & cursor=5 : MD=5 :cursor=1 :csY=351 :msgcnt=0 :csX=224 :csY=212+17:bsave"config.sys",config : mmplay 66

		if config(0)=1 & cursor>=1 & cursor<=4 & pad>=16{
			switch cursor
				case 1
					if (pad=16|pad=32|pad=64|pad=128|pad=256|pad=512|pad=1024|pad=2048|pad=4096|pad=8192|pad=16384|pad=32768)& config(11)!=pad & config(12)!=pad & config(13)!=pad & config(14)!=pad {
						config(11)=pad :mmplay 75
					}
				swbreak
				case 2
					if (pad=16|pad=32|pad=64|pad=128|pad=256|pad=512|pad=1024|pad=2048|pad=4096|pad=8192|pad=16384|pad=32768)& config(11)!=pad & config(12)!=pad & config(13)!=pad & config(14)!=pad {
						config(12)=pad :mmplay 75
					}
				swbreak
				case 3
					if (pad=16|pad=32|pad=64|pad=128|pad=256|pad=512|pad=1024|pad=2048|pad=4096|pad=8192|pad=16384|pad=32768)& config(11)!=pad & config(12)!=pad & config(13)!=pad & config(14)!=pad {
						config(13)=pad :mmplay 75
					}
				swbreak
				case 4
					if (pad=16|pad=32|pad=64|pad=128|pad=256|pad=512|pad=1024|pad=2048|pad=4096|pad=8192|pad=16384|pad=32768)& config(11)!=pad & config(12)!=pad & config(13)!=pad & config(14)!=pad {
						config(14)=pad :mmplay 75
					}
				swbreak
			swend
		}
	}


	//ゲームオーバータイトルバック//
	if MD=4 & zanki=0 & SF=124{
		if A_btn=1 {
			//if continues!=0 {
				MD=41 : cursor=0 :csX=234 :csY=346 : mmplay 65
			//}else{
				//redraw 1 : color 0,0,0 : boxf :mmplay 65 :wait 100 :goto *SAVE
			//}
		}

	//　コンティニュー //
	}else:if MD=41 {
		if (key&2) | padkey=2 { 
			cursor-- :csY-17 :if cursor=-1 :cursor=1 :csY+34
			mmplay 74
		}else:if (key&8) | padkey=8  { 
			cursor++ :csY+17 :if cursor=2 :cursor=0 :csY-34
			mmplay 74
		}else:if A_btn=1 {
			if cursor=0 {	;はい
				//continues-=1
				continues++
				;リバイブクリスタル・スイッチの初期化
				repeat 5 
					c_num(cnt)=0
					bot(cnt)=0 
				loop
				SF=0 : move_R=1 :F=0 : MD=0 : orb=0 :maku=0 :time=0 :crystal=0 :zanki=3 // config(5) 
				SRR=0 : BRR=0 : BRR_cnt=2 : IVB_time=0 : BB=0 : kbs_G=0 : kbs_LR=0 : zv=0 : LIFE=LIFE_MAX
				redraw 1 : color 0,0,0 : boxf :mmplay 65 :wait 200 :goto *MAIN
			}else:if cursor=1 { 	;いいえ
				redraw 1 : color 0,0,0 : boxf :mmplay 65 :wait 200 :goto *SAVE
			}
		}
	}
	
	//ノックバック処理//
	if nbk_G!=0 : zy+=nbk_G : nbk_G++
	if nbk_LR!=0 {
		zx+=nbk_LR 
		if nbk_LR>0 { nbk_LR-- }else: nbk_LR++
		if climb=1 : nbk_LR=0
	}
	
	//落下判定//
	if MD<=3 {
		if climb=0 : A=1       ;常時空中判定
		if A=1 {
			if (zs_1=0) { JS++   ;重力
			}else:if JS<8 : JS=0.5+JS
			zy=JS+zy  ;重力値をキャラ座標に付加
		}
	
		if zs=0 & JS>16 { JS=16		;加速度限界
		}else:if zs=1 & JS>8 : JS=-1.0+JS
		if zx<0 : zx=0
		if zx>x_MAX-32 : zx=x_MAX-32
		if zy>y_MAX : MD=4 : BB=1
	}
		
return

////////////////////////////////////////////////////////////////////////////////////////////////

*include_command
