let imgDisplay = Add mageList("display.png"); let imgMarker = AddImageList("marker.png"); let imgEffect = AddImageList("missile.png"); let imgText = AddImageList("text.png"); function AddSEList(let node){ node = CSD~"..\se\"/*"*/~node; SEList = SEList~[node]; return node; } let SEList = []; //let SEShot = AddSEList("tm2_shoot002.wav"); let SEShot = AddSEList("tm2_gun006_minigunlp2.wav"); let SESonic = AddSEList("tm2_sonic001.wav"); let SEExplode01 = AddSEList("se43-explosion.wav"); let SEExplode02 = AddSEList("tm2r_bom34.wav"); let SERecover = AddSEList("tm2r_shoot16.wav"); let SEDanger = AddSEList("se59-noise.wav"); let SECursor = AddSEList("cursor11.wav"); function max(val1, val2){if(val1 < val2){return val2;}return val1;} function min(val1, val2){if(val1 > val2){return val2;}return val1;} //--------------------------------------?s???????? function CreateEffect( let RectX, let RectY, let RectW, let RectH, let Layer, let RenderType, let IMG ){ let obj = Obj_Create(OBJ_EFFECT); ObjEffect_SetRenderState( obj, RenderType ); ObjEffect_SetPrimitiveType( obj, PRIMITIVE_TRIANGLESTRIP ); ObjEffect_CreateVertex( obj, 4 ); ObjEffect_SetTexture( obj, IMG ); ObjEffect_SetLayer( obj, Layer ); Obj_SetAutoDelete(obj, false); ascent( let i in 0..2 ){ ascent( let j in 0..2 ){ ObjEffect_SetVertexXY( obj, j+i*2, RectW*i, RectH*j ); ObjEffect_SetVertexUV( obj, j+i*2, RectX+RectW*i, RectY+RectH*j ); } } return obj; } function CreateEffect_Center( let RectX, let RectY, let RectW, let RectH, let Layer, let RenderType, let IMG ){ let obj = Obj_Create(OBJ_EFFECT); ObjEffect_SetRenderState( obj, RenderType ); ObjEffect_SetPrimitiveType( obj, PRIMITIVE_TRIANGLESTRIP ); ObjEffect_CreateVertex( obj, 4 ); ObjEffect_SetTexture( obj, IMG ); ObjEffect_SetLayer( obj, Layer ); Obj_SetAutoDelete(obj, false); ascent( let i in 0..2 ){ ascent( let j in 0..2 ){ ObjEffect_SetVertexXY( obj, j+i*2, RectW*(i-0.5), RectH*(j-0.5) ); ObjEffect_SetVertexUV( obj, j+i*2, RectX+RectW*i, RectY+RectH*j ); } } return obj; } //--------------------------------------End of Function //--------------------------------------s????????? function SetEffectColor( let obj, let an_Dat ){ ascent( let i in 0..4 ){ ObjEffect_SetVertexColor( obj, i, an_Dat[0], an_Dat[1], an_Dat[2], an_Dat[3] ); } } //--------------------------------------End of Function task Initialize_System(){ CreateCommonDataArea( "YK" ); SetPlayerLife.dnh ( imgPlayer, 1, 1, 48, 48 ); ascent( let i in 0..length(ImageList) ){ LoadGraphic( ImageList[i] ); } ascent( let i in 0..length(SEList) ){ LoadSE( SEList[i] ); } // SetSpeed( N_SPD_H, N_SPD_L ); SetSpeed( 0, 0 ); LoadPlayerShotData( CSD~"YUKIKAZE_SHOTDATA.dnh" ); SetItemCollectLine(480); SetRebirthFrame(0); SetRebirthFrameReduction(0); SetGrazeCircle(64); SetAutoEffect(false); SetInitialBombCount(2); main_ShotRoutine; main_BombRoutine; main_MissRoutine; // InitializeDisplay; // InitializeLader; // Main; } let SHOTTYPE = 1; task main_ShotRoutine{ loop{ if(OnMissed){} else{ if(B_SHOT_VALID && GetEnemyNum > 0){ // PlaySE("sePlayerShot01.wav"); PlaySE(SEShot); CreatePlayerShot01(GetPlayerX, GetPlayerY, 18, 270+DRAW_ANGLE, 5, 1, SHOTTYPE); SHOTTYPE = SHOTTYPE%3+1; } } yield; } } task main_BombRoutine{ loop{ if(OnBomb){ PlaySE(SESonic); if(IsBossExisting){ if(GetKeyState(VK_SLOWMOVE)==KEY_HOLD){ loop(2){ ascent(let i in 1..3){ CreateMissile01( i*6, i*2, 0); loop(2){yield;} CreateMissile01(-i*6, i*2, 0); loop(2){yield;} } } } else{ let list = []; let max = 0; let ind = 0; ascent(en in EnumEnemyBegin..EnumEnemyEnd){ let id = EnumEnemyGetID(en); if(length(list) < 8){list = [id]~list;} else{ let temp = [0,0,0,0,0,0,0,0,0]; list = [id]~list; ascent(let i in 0..9){temp[i]=(GetEnemyInfo(list[i], ENEMY_X)-GetPlayerX)^2+(GetEnemyInfo(list[i], ENEMY_Y)-GetPlayerY)^2;} ind = 0; max = temp[0]; ascent(let i in 1..9){if(temp[i] > max){max = temp[i]; ind = i;}} list = erase(list, ind); } } let len = length(list); if(len == 0){ loop(2){ ascent(let i in 1..3){ CreateMissile01( i*6, i*2, -1); loop(2){yield;} CreateMissile01(-i*6, i*2, -1); loop(2){yield;} } } } else{ let ind = 0; loop(2){ ascent(let i in 1..3){ CreateMissile01( i*6, i*2, list[ind%len]); ind++; loop(2){yield;} CreateMissile01(-i*6, i*2, list[ind%len]); ind++; loop(2){yield;} } } } } } else if(GetKeyState(VK_SLOWMOVE)!=KEY_HOLD){ let list = []; let max = 0; let ind = 0; ascent(en in EnumEnemyBegin..EnumEnemyEnd){ let id = EnumEnemyGetID(en); if(Yukikaze st) < 8){list = [id]~list;} else{ let temp = [0,0,0,0]~[0]; list = [id]~list; ascent(let i in 0..5){temp[i]=(GetEnemyInfo(list[i], ENEMY_X)-GetPlayerX)^2+(GetEnemyInfo(list[i], ENEMY_Y)-GetPlayerY)^2;} ind = 0; max = temp[0]; ascent(let i in 1..5){if(temp[i] > max){max = temp[i]; ind = i;}} list = erase(list, ind); } } let len = length(list); if(len == 0){ loop(2){ ascent(let i in 1..3){ CreateMissile01( i*6, i*2, -1); loop(2){yield;} CreateMissile01(-i*6, i*2, -1); loop(2){yield;} } } } else{ let ind = 0; loop(2){ ascent(let i in 1..3){ CreateMissile01( i*6, i*2, list[ind%len]); ind++; loop(2){yield;} CreateMissile01(-i*6, i*2, list[ind%len]); ind++; loop(2){yield;} } } } } else{ let tgt_id = -1; let life = 0; ascent(en in EnumEnemyBegin..EnumEnemyEnd){ let id = EnumEnemyGetID(en); if(GetEnemyInfo(id, ENEMY_LIFE) > life){ tgt_id = id; life = GetEnemyInfo(id, ENEMY_LIFE); } } loop(2){ ascent(let i in 1..3){ CreateMissile01( i*6, i*2, tgt_id); loop(2){yield;} CreateMissile01(-i*6, i*2, tgt_id); loop(2){yield;} } } } } while(OnBomb){yield;} yield; } } let TXT_RDYGUN = 0; let TXT_ENGAGE = 1; let TXT_CAUTION = 2; let TXT_WARNING = 3; let TXT_DANGER = 4; let TXT_HIT = 5; let TXT_LOST = 6; let TXT_DESTROY = 7; let TXT_TRANS = 8; let TXT_COMPLETE = 9; let TXT_GOODLUCK = 10; let TXT_YOUHAVECONTROL = 11; task DisplayMessage(ind, x, y, size, col1, col2, dt, time){ let t = 0; let dt = 360/dt; // let wid = [94,87,92,89,245,116,121,32,54,108][ind%9]; let wid = 256; let obj = CreateEffect_Center(0,int(1+31.5*ind),wid,24, 2, ADD, imgText); Obj_SetPosition(obj, x, y)) ) h:) h:) le(obj, R 8? Z]?) R ?) ) T = UKIKAZE let VALIimg\select.png YUKIKAZE ect.png HAVE CONTROL. HOT_VALID && !OnMissed && !OnEvent){ ForbidShot(false); } if(!OnMissed && !OnEvent){ ID_NEXT = Obj_Create(OBJ_SHOT); Obj_Delete(ID_NEXT); ID_NEXT++; if(ID_NEXT > ID_MAX){ID_NEXT = ID_MIN;} } if(!B_SHOT_VALID && !OnMissed && !OnEvent){ForbidShot(true);} }