// // 各キャラクタなげ // #include //プレステライブラリのヘッダ #include "pad.h" //パッド入力関連のdefine定義ヘッダ #include "gamemain.h" //define定義ヘッダ #include "commot.h" //-------------------------------------------------------------------------- // //共通モーション // //-------------------------------------------------------------------------- //歩き0 static MDATA wk0[] = { { 103, -50, 133, -110, 488, 0 , //0 -102, 286, -174 , //1 294, -482, 262 , //2 854, 60, 352 , //3 512, 1170, 250 , //4 -314, 0, 0 , //5 822, 90, 506 , //6 564, 0, 136 , //7 -88, 0, 0 , //8 156, -260, 60 , //9 -441, 40, 105 , //10 -347, 0, 8 , //11 626, 16, 164 , //12 -500, -228, 49 , //13 -223, 282, 0 , //14 } }; //1:歩き1 static MDATA wk1[] = { { 125, -13, 118 , -110, 488, 0 , //0 -102, 282, -162 , //1 314, -482, 262 , //2 888, 60, 352 , //3 498, 1170, 250 , //4 -314, 0, 0 , //5 822, 90, 506 , //6 562, 0, 136 , //7 -90, 0, 0 , //8 372, -260, 206 , //9 -517, 40, 107 , //10 -421, 0, 10 , //11 24, 10, 92 , //12 -138, -272, 47 , //13 -285, 282, 0 , //14 } }; //3:gured 0 MDATA gr0[] = { 50, 300, 0 , 108, 0, 78, //}, -456, 0, -418, //}, -182, -19, -70, //}, //2 1044, 448, 625, //}, //3 1270, 0, -298, //}, //4 633, -321, -861, //}, //5 867, -100, -10, //}, //6 1362, 0, -142, //}, //7 302, 0, -224, //}, //8 566, 95, -196, //}, //9 -800, 38, -70, //}, //10 114, 0, -84, //}, //11 -350, -244, -182, //}, //12 -425, 0, 0, //}, //13 350, 0, -210, //} //14 }; //ジャンプgr MDATA Jgr0[] = { { -24, 558, -99, -60, 322, -160, //0 -682, 9, 70, //1 219,-322, -180, //2 1274, 593, 302, //3 1008, -94, 160, //4 66, -21, 91, //5 1622,-307, 156, //6 1108, -12, 100, //7 0, -30, 90, //8 613, 20, 390, //9 -1429, 0, 90, //10 -346, 0, 20, //11 862,-104, -80, //12 -1458, -60, 40, //13 -276, -40, 60, //14 } }; //4:guared 1 MDATA Sgr0[] = { -500, 810, 00 , 26, 0, 0, //}, -641, 0, -310, //}, 287, -24, 29, //}, //2 1095, 1300, -165, //}, //3 1089, 575, -289, //}, //4 625, -227, -1025, //}, //5 1565, -344, 237, //}, //6 1381, -387, -249, //}, //7 657, 0, -224, //}, //8 997, 120, -196, //}, //9 -1046, 41, -70, //}, //10 12, 0, -84, //}, //11 416, -264, -182, //}, //12 -1540, 0, 0, //}, //13 564, 0, -210, //} //14 }; //:食らいモーションA-0 MDATA dmgA0[] = { 86, 516, 39 , -520, 202, 282, //0 -452, 56, -490, //1 -148, 98, -26, //2 1482, 618, 232, //3 544, 118, -119, //4 -34, 6, 13, //5 820, -484, -236, //6 522, 448, 648, //7 -71, -40, -8, //8 767, -20, 136, //9 -902, 0, -20, //10 376, -8, -4, //11 1122, -194, -102, //12 -818, -150, -10, //13 -226, 0, 10, //14 }; //:食らいモーションA-1 MDATA dmgA1[] = { 66, 516, 39 , -510, 272, 282, //0 -342, 56, 210, //1 -28, -22, -136, //2 1482, 678, 22, //3 414, 118, -229, //4 -34, 6, 13, //5 820, -324, -236, //6 922, 198, 648, //7 -71, -40, -8, //8 627, -20, 136, //9 -812, 0, -20, //10 386, -8, -4, //11 1002, -194, -252, //12 -628, -150, -10, //13 -226, 0, 10, //14 }; //:食らいモーションB-0 MDATA dmgB0[] = { 60, 400, 00 , 200, 50, -54, //0 394, 0, 76, //1 -340, -270, -104, //2 118, -136, 194, //3 776, 180, -336, //4 232, 180, 140, //5 596, -106, 24, //6 560, -723, 28, //7 434, 0, -224, //8 376, -60, 54, //9 -546, 0, -70, //10 -126, 0, -84, //11 -370, -168, -182, //12 -434, 0, 0, //13 462, 0, -210, //14 }; //:食らいモーションB-1 MDATA dmgB1[] = { 50, 400, 00 , 280, 0, -194, //0 714, 0, -114, //1 -200, 0, -104, //2 -362, -196, -86, //3 1246, 0, -336, //4 742, 0, 140, //5 336, -126, 154, //6 770, -723, 28, //7 434, 0, -224, //8 476, 0, -196, //9 -546, 0, -70, //10 -126, 0, -84, //11 -490, -168, -182, //12 -434, 0, 0, //13 462, 0, -210, //14 }; //:食らいモーション_C-0 MDATA dmgC0[] = { 90, 1200, 00 , 280, 0, -194, //0 -636, 0, -354, //1 -280, 0, -414, //2 -434, -250, 306, //3 812, 0, -536, //4 412, 0, 140, //5 662, -70, 210, //6 566, 0, -42, //7 474, 0, -224, //8 334, 0, -196, //9 -1172, 0, -70, //10 -466, 0, -84, //11 432, -168, -182, //12 -1152, 0, 0, //13 480, 0, -210, //14 }; //:食らいモーション_C-0(吹き飛び0) MDATA dmgD0[] = { { 50, 00, 00 , 599, 70, 3, //0 220, 0,-447, //1 90, -21, -219, //2 305, -237, 334, //3 174, 0, -314, //4 429, -121, 557, //5 230, -309, 210, //6 197, -80, 19, //7 600, 0, -224, //8 30, 78, -236, //9 -360, 29, -70, //10 -350, 0, -84, //11 -487, -73, -182, //12 -308, 100, 0, //13 -18, 0, -210, //14 } }; //:食らいモーション_C-1(吹き飛び1) MDATA dmgD1[] = { { 50, 00, 00 , 980, -140, -244, //0 -6, 0, -354, //1 70, 0, -544, //2 6, -250, 306, //3 1062, 0, -536, //4 342, 0, 140, //5 242, -70, 210, //6 436, 0, -42, //7 474, 0, -224, //8 -236, 90, -376, //9 -132, 0, -180, //10 -466, 0, -84, //11 282, -168, -182, //12 -322, 0, 0, //13 480, -0, 210, //14 } }; //:食らいモーション_C-2(吹き飛び2) MDATA dmgD2[] = { { 50, 00, 00 , 1032, 0, -194, //0 -177, 0, -354, //1 -171, 0, -414, //2 -175, -250, 306, //3 819, 0, -536, //4 412, 0, 132, //5 -68, -70, 210, //6 572, 0, -42, //7 475, 0, -224, //8 -26, 0, -196, //9 -103, 0, -70, //10 -466, 0, -84, //11 34, -168, -182, //12 -204, 0, 0, //13 481, 0, -210, //14 } }; //17:down-A0 MDATA dwnA0[] = { { 50, 1700, 00 , 1032, 0, -194, //0 -177, 0, -354, //1 -171, 0, -414, //2 -175, -250, 306, //3 819, 0, -536, //4 412, 0, 132, //5 -68, -70, 210, //6 572, 0, -42, //7 475, 0, -224, //8 -26, 0, -196, //9 -103, 0, -70, //10 -466, 0, -84, //11 34, -168, -182, //12 -204, 0, 0, //13 481, 0, -210, //14 } }; //17:down-A1 MDATA dwnA1[] = { { 50, 1200, 00 , 1082, 0, -194, //0 -517, 0, -354, //1 -171, 0, -414, //2 -15, -250, 306, //3 909, 0, -536, //4 382, 0, 132, //5 52, -70, 210, //6 682, 0, -42, //7 475, 0, -224, //8 124, 0, -196, //9 -293, 0, -70, //10 -466, 0, -84, //11 114, -168, -182, //12 -414, 0, 0, //13 481, 0, -210, //14 } }; //17:oki-A0 MDATA okiA0[] = { { 50, 1565, 00 , 857, 210, -194, //0 -812, 0, -314, //1 -291, 0, 86, //2 -605, -250, 306, //3 854, 0, -536, //4 397, 0, 132, //5 -493, -70, 210, //6 232, 0, -42, //7 475, 0, -224, //8 749, 0, 294, //9 -1528, 0, -70, //10 -466, 0, -84, //11 329, -168, 208, //12 -439, 0, 0, //13 -39, 0, -210, //14 } }; //17:ukemi-A0 MDATA ukemi0[] = { { 50, 0, 00 , 1952, 0, 104, //0 -427, 80, -124, //1 -431, 0, -414, //2 885, -250, 306, //3 1335, 0, -536, //4 412, 0, 132, //5 591, -70, 200, //6 1162, 0, -42, //7 475, 0, -224, //8 1094, 0, -196, //9 -1643, 0, -70, //10 -466, 0, -84, //11 1134, -168, -182, //12 -1634, 0, 0, //13 481, 0, -210, //14 } }; //17:ukemi-A1 MDATA ukemi1[] = { { 50, 0, 0 , 2672, 0, 164, //0 -177, 0, -164, //1 -171, 0, -414, //2 735, -230, 116, //3 1329, 0, -536, //4 412, 0, 132, //5 571, -70, -78, //6 1462, 0, -42, //7 475, 0, -54, //8 1554, 0, -196, //9 -1663, 0, -70, //10 -266, 0, -84, //11 1664, -168, -182, //12 -1774, 0, 0, //13 91, 0, -210, //14 } }; //17:ukemi-A2 MDATA ukemi2[] = { { 50, 0, 0 , 3922, 0, 166, //0 -167, 0, -164, //1 -81, 0, 26, //2 225, -230, 196, //3 1329, 0, -536, //4 412, 0, 132, //5 -271, -70, -78, //6 1092, 0, -42, //7 475, 0, -54, //8 994, 0, -46, //9 -1753, 0, -70, //10 -266, 0, -84, //11 664, -168, -182, //12 -1664, 0, 0, //13 91, 0, -210, //14 } }; //17:ukemi-A3 MDATA ukemi3[] = { { 50, 0, 0 , 3922-4096, 0, 166, //0 -167, 0, -164, //1 -81, 0, 26, //2 225, -230, 196, //3 1329, 0, -536, //4 412, 0, 132, //5 -271, -70, -78, //6 1092, 0, -42, //7 475, 0, -54, //8 994, 0, -46, //9 -1753, 0, -70, //10 -266, 0, -84, //11 664, -168, -182, //12 -1664, 0, 0, //13 91, 0, -210, //14 } }; //-------------------------------------------------------------------------- // //なげモーション // //-------------------------------------------------------------------------- //2:立ち0 static MDATA ng0_0[] = { { 28, 889, 110, 230, 362, -70, //0 -832, 304, 200, //1 -38, -32, 0, //2 114,1184, 922, //3 932, 80, 0, //4 66, 20, 0, //5 2179, 52,-1827, //6 1446, 28, 50, //7 0, -30, 0, //8 660, -10, 490, //9 -1600, 0, 0, //10 390, 0, 80, //11 774,-244, -616, //12 -1458, 0, 0, //13 74, 0, 0, //14 } }; //2:立ち0 static MDATA ng0_1[] = { { 28, 564, 110, -110, 362, -70, //0 -332, 304, 200, //1 -38, -32, 0, //2 -226, 674, 942, //3 932, 80, 0, //4 66, 20, 0, //5 1889, 52,-1827, //6 1446, 28, 50, //7 0, -30, 0, //8 920, -10, 490, //9 -790, 0, 0, //10 -10, 0, 0, //11 364, 166, -416, //12 -738, 0, 0, //13 74, 0, 0, //14 } }; // -2321 -251 600 static MDATA ng0_2[] = { { 970, 489, -354, -494, 392, -88, //0 66, -37, -46, //1 -116,-160, -71, //2 -313, -20, 458, //3 1076, 23, 2, //4 52, 3, 17, //5 575, -94,-1493, //6 418, 6, 30, //7 878, -22, 0, //8 939, 132, 520, //9 -1091, -4, -2, //10 426, 56, 0, //11 324, 106, -304, //12 -698, 0, 0, //13 38, 0, 2, //14 } }; // -2321 -251 600 static MDATA ng0_3[] = { { 630, 477, -274, -676, 384, -76, //0 -406, 59, -10, //1 -92,-304, -107, //2 -49, 20, 482, //3 1096, 23, 2, //4 56, 3, 17, //5 13,-118,-1651, //6 754, 14, 22, //7 590, -22, 0, //8 1343, 88, 512, //9 -923, -4, -2, //10 242, 36, 0, //11 94, 126, -304, //12 -1124, 0, 0, //13 50, 0, 2, //14 } }; MDATA st1[] = { { -60, 450, -105, -110, 362, -52, //0 -222, 254, 70, //1 -38,-603, -182, //2 490, 106, 532, //3 1146, 26, -9, //4 66, 0, 19, //5 -186,-172, -316, //6 1430, 38, 0, //7 9, -30, -8, //8 769, -10, 490, //9 -576, 0, -10, //10 -130, -8, -6, //11 320, 166, -296, //12 -748, 0, -10, //13 74, 0, 0, //14 } }; //歩き0 MDATA nomot[] = { { 0, 0, 0 , 0, 0, 0 , //0 0, 0, 0 , //1 0, 0, 0 , //2 0, 0, 0 , //3 0, 0, 0 , //4 0, 0, 0 , //5 0, 0, 0 , //6 0, 0, 0 , //7 0, 0, 0 , //8 0, 0, 0 , //9 0, 0, 0 , //10 0, 0, 0 , //11 0, 0, 0 , //12 0, 0, 0 , //13 0, 0, 0 , //14 } }; static MDATA ng3_0[] = { { 73, 975, -141 , -110, 908, 80,//}, -902, 152, -102, //}, 286, -482, 262, //}, //2 1268, 630, -18, //}, //3 520, 1170, 250, //}, //4 -314, 0, 0, //}, //5 1212, 90, 176, //}, //6 952, 0, 136, //}, //7 -80, 0, 0, //}, //8 1366, -260, 846, //}, //9 -821, 40, 427, //}, //10 -3, 0, 0, //}, //11 936, 40, -962, //}, //12 -1000, -116, 57, //}, //13 -65, 338, -40, //} //14 } }; static MDATA ng3_1[] = { { 73, 975, -141 , -110, 1548, 80,//}, -352, 152, -422, //}, 286, -482, 262, //}, //2 698, 700, 212, //}, //3 520, 1170, 250, //}, //4 -314, 0, 0, //}, //5 1522, -250, -194, //}, //6 1122, 250, -494, //}, //7 -80, 0, 0, //}, //8 1366, -260, 846, //}, //9 -821, 40, 427, //}, //10 -3, 0, 0, //}, //11 936, 40, -962, //}, //12 -1000, -116, 57, //}, //13 -65, 338, -40, //} //14 } }; MOVDATA nage0[] = { // motion, px, py, pz, frame, flg, HITDATA { ng0_0, 0, 0, 0, 12, MOV_STAND|MOV_MUTEKI, NULL}, { ng0_0, 0, 0, 0, 3, MOV_STAND|MOV_MUTEKI, NULL}, { ng0_1, 0, 0, 0, 12, MOV_STAND|MOV_MUTEKI, NULL}, { ng0_2, 0, 0, 0, 8, MOV_STAND|MOV_MUTEKI, NULL}, { ng0_3, 0, 0, 0, 10, MOV_STAND|MOV_MUTEKI|MOV_END, NULL}, //{ wk1, 0, 0, 0, 18, MOV_STAND|MOV_END, NULL}, }; static HITDATA Tetu0_hit = { HF_MID | HF_FUKITOBI | HF_NGD, //flg 3, 3400,550, //判定パーツの番号、判定サイズ(x,y) -150,150, //吹き飛び量 40,17, //ヒット硬直時間、ヒット硬直時間 4, //ヒットストップ時間 60, //受け身不可時間 -1, //予備領域 52 //ダメージ }; MOVDATA nage3[] = { // motion, px, py, pz, frame, flg, HITDATA { ng3_0, 3000, 0, 1000, 10, MOV_STAND|MOV_MUTEKI, NULL}, { ng3_0, -1500, 0,-1000, 10, MOV_STAND|MOV_MUTEKI, NULL}, { ng3_1, 550, 0, 0, 1, MOV_STAND|MOV_MUTEKI, &Tetu0_hit}, { ng3_1, 670, 0, 0, 3, MOV_STAND|MOV_MUTEKI, NULL}, { ng3_1, 1100, 0, 0, 8, MOV_STAND|MOV_MUTEKI, NULL}, { ng3_1, 180, 0, 0, 22, MOV_STAND|MOV_MUTEKI, NULL}, { st1, 0, 0, 0, 15, MOV_STAND||MOV_MUTEKI|MOV_END, NULL}, //{ wk1, 0, 0, 0, 18, MOV_STAND|MOV_END, NULL}, }; MOVDATA nagedmg[]= { // motion, px, py, pz, frame, flg, HITDATA { nomot, 0, 0, 8, MOV_STAND, NULL}, { nomot, 0, 0, 90, MOV_STAND|MOV_END, NULL}, }; MOVDATA standprev[]= { // motion, px, py, pz, frame, flg, HITDATA { st1, 0, 0, 3, MOV_STAND, NULL}, { st1, 0, 0, 2, MOV_STAND|MOV_END, NULL}, }; //down_0 MOVDATA down0[] = { // motion, px, py, pz, frame, flg, HITDATA { dwnA0, 0,200, 0, 2, MOV_DOWN, NULL}, { dwnA1, 0, 0, 0, 7, MOV_DOWN, NULL}, { dwnA1, 0, 0, 0, 2, MOV_DOWN, NULL}, { dwnA1, 0, 0, 0, 8, MOV_DOWN, NULL}, { dwnA0, 0, 0, 0, 11, MOV_DOWN, NULL}, { dwnA0, 0, 0, 0, 8, MOV_DOWN, NULL}, { dwnA0, 0, 0, 0, 5, MOV_DOWN|MOV_MUTEKI|MOV_END, NULL}, }; //oki_0 MOVDATA oki0[] = { // motion, px, py, pz, frame, flg, HITDATA { okiA0, 0, 0, 0, 9, MOV_DOWN|MOV_MUTEKI, NULL}, { st1, 0, 0, 0, 15, MOV_STAND|MOV_MUTEKI|MOV_THROW|MOV_END, NULL}, }; static MOVDATA standcom[] = { // motion, px, py, pz, frame, flg, HITDATA { st1, 0, 0, 0, 12, MOV_STAND|MOV_END, NULL}, //{ nomot, 0, 0, 0, 12, MOV_STAND|MOV_END, NULL}, }; BOOL ChThrow0(MAN *p,MAN *e) //0番キャラクタ移動ルーチン { GetCommand( p ); ChkGrandHit(p); if( p->st != CH_NAGE0 ) { if( p->cont & PADLleft ) p->face = LEFT; else p->face = RIGHT; p->r.vy = 0; p->st = CH_NAGE0; //よろけモーションに移行 SetNewMotion( p, &nage0[0], 0 ); ChThrowDmg0( e, p ); } if( MoveNextMotion( p ) == FALSE ) { p->throw_flg = THROW_NO; #define CH_STAND 7 p->st = CH_STAND; SetNewMotion( p, &standcom[0], 0 ); // ChThrowDmg0( e, p ); //人間の表示 SetManData( p ); //この関数で人間のすべてのパーツが表示される return TRUE; } //人間の表示 SetManData( p ); //この関数で人間のすべてのパーツが表示される return FALSE; } BOOL ChThrowDmg0(MAN *p,MAN *e) { if( p->st != CH_NAGEDMG0 ) { PlaySE( SE_GRD ); //指定番号のSEを鳴らす if( e->cont & PADLleft ) p->face = RIGHT; else p->face = LEFT; GsInitCoordinate2( &e->obj[8].co, &p->co); p->pl.vx = 0; p->pl.vy = 0; p->pl.vz = 0; p->r.vx = 2048; p->r.vy = 0; p->r.vz = 0; p->st = CH_NAGEDMG0; //モーションに移行 SetMdata( p, &nagedmg[0], 1 ); } if( e->m_no == 3 && e->m_cnt == 8 ) { PlaySE( SE_JYA ); //指定番号のSEを鳴らす //if( e->throw_flg == THROW_NO ) { #define CH_UKI 4 p->st = CH_UKI; SetNewMotion( p, &uki0[0], 0 ); p->pl.vx = p->co.workm.t[0]; p->pl.vy = p->co.workm.t[1]-320; //p->pl.vy = p->zero; p->pl.vz = 0; if( p->face == LEFT ) p->g_pl.vx = -105; else p->g_pl.vx = 105; p->g_pl.vy = -175; //p->pl.vx += p->g_pl.vx; p->r.vx = 0; p->r.vy = 0; p->r.vz = 0; p->conbo_num++; //ヒット数増加 p->ukemi_cnt = 70; p->hp -= 15; if( p->hp <= 0 ) p->hp=0; if( p->hp == 0 ) p->ukemi_cnt = 999999; //受け身不可時間の設定 GsInitCoordinate2( WORLD, &p->co); p->throw_flg = THROW_NO; //人間の表示 SetManData( p ); //この関数で人間のすべてのパーツが表示される return TRUE; } //人間の表示 SetManData( p ); //この関数で人間のすべてのパーツが表示される return FALSE; } BOOL ChThrow3(MAN *p,MAN *e) //0番キャラクタ移動ルーチン { int gy; MOVDATA *pmv; GetCommand( p ); if( p->st != CH_NAGE0 ) { p->st = CH_NAGE0; //よろけモーションに移行 SetNewMotion( p, &nage3[0], 0 ); // ChThrowDmg3( e, p ); } if( p->m_no == 2 && p->m_cnt == 1 ) { if( p->face == LEFT ) { p->face = RIGHT; e->face = LEFT;} else { p->face = LEFT; e->face = RIGHT;} p->pl.vz = 0; } //壁あたり判定(地面判定よりも先に行わないと壁判定がおかしくなる) ChkWallHit(p); pmv = &p->mv[p->m_no]; // if( !(pmv->flg&MOV_JUMP) && !(pmv->flg&MOV_UKI) ) { gy = GetGrandHeight(p->pl.vx); //現在の立ち位置の床の高さを求める if( p->pl.vy >= (gy + p->zero-200) ) { //地面と近いなら修正 p->pl.vy = gy + p->zero; } else { p->throw_flg = THROW_NO; p->st = CH_STAND; SetNewMotion( p, &standcom[0], 0 ); //人間の表示 SetManData( p ); //この関数で人間のすべてのパーツが表示される return TRUE; } // if( ChkGrandHit(p) == FALSE ) { // } // } if( MoveNextMotion( p ) == FALSE ) { p->throw_flg = THROW_NO; p->st = CH_STAND; SetNewMotion( p, &standcom[0], 0 ); //人間の表示 SetManData( p ); //この関数で人間のすべてのパーツが表示される return TRUE; } //人間の表示 SetManData( p ); //この関数で人間のすべてのパーツが表示される return FALSE; } BOOL ChThrowDmg3(MAN *p,MAN *e) { if( p->st != CH_NAGEDMG0 ) { p->st = CH_NAGEDMG0; //モーションに移行 SetNewMotion( p, &standcom[0], 0 ); // SetMdata( p, &nagedmg[0], 1 ); // SetNewMotion( p, &nagedmg[0], 1 ); } if( MoveNextMotion( p ) == FALSE ) { p->throw_flg = THROW_NO; p->st = CH_STAND; SetNewMotion( p, &standcom[0], 0 ); //人間の表示 SetManData( p ); //この関数で人間のすべてのパーツが表示される return TRUE; } //人間の表示 SetManData( p ); //この関数で人間のすべてのパーツが表示される return FALSE; } //0番キャラクタ移動ルーチン //ジャンプ準備 MDATA jb0[] = { 195,1085, -189 , -260, 362, 143, //}, -752, 229, 30, //}, 757, -658, -192, //}, //2 -575, -684, -268, //}, //3 1081, 26, -9, //}, //4 66, 5, 14, //}, //5 629, -312, -726, //}, //6 1280, 38, 0, //}, //7 9, -30, -8, //}, //8 1269, -20, 480, //}, //9 -1591, 2, -10, //}, //10 490, -80, -5, //}, //11 1210, 174, -326, //}, //12 -1588, 0, -10, //}, //13 454, 0, 0, //} //14 }; //ジャンプ0 MDATA j0[] = { { 52, 462, 83, -88, 362, 47, //0 466, 225, 6, //1 -199,-642, -192, //2 133,-276, 216, //3 753, 26, -9, //4 66, 2, 17, //5 1123,-228, -628, //6 910, -22, 120, //7 9, -30, -8, //8 -43, -10, 490, //9 -425, 0, -10, //10 106, -8, -6, //11 238, 170, -318, //12 -732, 0, -10, //13 266, 0, 0, //14 } }; //ジャンプ1 MDATA j1[] = { { -24, 558, -99, -150, 322, -40, //0 -452, 9, 70, //1 389,-482, -180, //2 654,-197, 732, //3 918, -94, 160, //4 66, -21, 91, //5 -722,-817, -304, //6 918, -12, 100, //7 0, -30, 90, //8 1113, -10, 580, //9 -1429, 0, 90, //10 -346, 0, 20, //11 862,-104, -80, //12 -1458, -60, 40, //13 -276, -40, 60, //14 } }; //しゃがみ MDATA si0[] = { 50,1100, 0 , 28, 0, 2, //}, -442, 0, -246, //}, -152, -24, 40, //}, //2 200, 48, 204, //}, //3 1631, 0, -288, //}, //4 438, -216, -1036, //}, //5 48, -118, 525, //}, //6 1418, 0, -329, //}, //7 622, 0, -224, //}, //8 1114, 120, -196, //}, //9 -1456, 40, -70, //}, //10 275, 0, -84, //}, //11 244, -264, -182, //}, //12 -1182, 0, 0, //}, //13 -258, 0, -210, //} //14 }; //拾い MDATA gt0[] = { 19, 920, 32 , -10, 100, -15, //}, -608, 72, -157, //}, 203, -186, -24, //}, //2 660, 66, 296, //}, //3 515, 8, -210, //}, //4 -15, -154, -742, //}, //5 1033, -135, 290, //}, //6 -18, 10, -236, //}, //7 451, -9, -162, //}, //8 1016, 82, -5, //}, //9 -1210, 29, -53, //}, //10 160, -4, -62, //}, //11 489, -142, -211, //}, //12 -1402, 0, -6, //}, //13 -166, 0, -151, //} //14 }; MOVDATA jump_b[] = { // motion, px, py, pz, frame, flg, HITDATA { jb0, 0, 0, 0, 5, MOV_STAND|MOV_END, NULL}, }; MOVDATA jump[] = { // motion, px, py, pz, frame, flg, HITDATA { j0, 0, 0, 0, 18, MOV_JUMP, NULL}, { j1, 0, 0, 0, 19, MOV_JUMP|MOV_END, NULL}, }; MOVDATA sit[] = { // motion, px, py, pz, frame, flg, HITDATA { si0, 0, 0, 0, 8, MOV_SIT|MOV_END, NULL}, }; MOVDATA get[] = { // motion, px, py, pz, frame, flg, HITDATA { gt0, 0, 0, 0, 4, MOV_SIT|MOV_GET, NULL}, { gt0, 0, 0, 0, 1, MOV_SIT|MOV_GET|MOV_END, NULL}, }; //summer MOVDATA guard[] = { // motion, px, py, pz, frame, flg, HITDATA { gr0, 0, 0, 0, 5, MOV_GUARD|MOV_THROW, NULL}, { gr0, 0, 0, 0, 18, MOV_GUARD|MOV_THROW, NULL}, { st1, 0, 0, 0, 9, MOV_STAND|MOV_THROW, NULL}, { st1, 0, 0, 0, 1, MOV_STAND|MOV_THROW|MOV_END, NULL}, { gr0, 0, 0, 0, 25, MOV_GUARD, NULL}, { st1, 0, 0, 0, 25, MOV_STAND|MOV_MUTEKI, NULL}, { st1, 0, 0, 0, 5, MOV_STAND|MOV_MUTEKI|MOV_END, NULL}, }; MOVDATA Jguard[] = { // motion, px, py, pz, frame, flg, HITDATA { Jgr0, 0, 0, 0, 2, MOV_GUARD|MOV_JUMP, NULL}, { Jgr0, 0, 0, 0, 6, MOV_GUARD|MOV_JUMP, NULL}, { j1, 0, 0, 0, 40, MOV_JUMP|MOV_END, NULL}, }; MOVDATA Sguard[] = { // motion, px, py, pz, frame, flg, HITDATA { Sgr0, 0, 0, 0, 4, MOV_GUARD|MOV_SIT|MOV_THROW, NULL}, { Sgr0, 0, 0, 0, 13, MOV_GUARD|MOV_SIT|MOV_THROW, NULL}, { st1, 0, 0, 0, 8, MOV_STAND|MOV_THROW|MOV_END, NULL}, }; MOVDATA dmg0[] = { // motion, px, py, pz, frame, flg, HITDATA //{ wk0, 100, 0, 0, 2, MOV_STAND, NULL}, { dmgA0, -180, 0, 0, 8, MOV_DMG, NULL}, { dmgA1, -400, 0, 0, 15, MOV_DMG, NULL}, { wk0, 300, 0, 0, 16, MOV_DMG|MOV_END, NULL}, }; MOVDATA dmg1[] = { // motion, px, py, pz, frame, flg, HITDATA //{ wk0, 100, 0, 0, 2, MOV_STAND, NULL}, { dmgB0, -180, 0, 0, 10, MOV_DMG, NULL}, { dmgB1, -400, 0, 0, 17, MOV_DMG, NULL}, { wk0, 300, 0, 0, 15, MOV_DMG|MOV_END, NULL}, }; MOVDATA dmg2[] = { // motion, px, py, pz, frame, flg, HITDATA { wk0, 30, 0, 0, 2, MOV_DMG, NULL}, { dmgC0,-1800, 0, 0, 14, MOV_DMG, NULL}, { dmgC0, -800, 0, 0, 7, MOV_DMG, NULL}, { dmgB0, -400, 0, 0, 14, MOV_DMG, NULL}, { dmgB0, -100, 0, 0, 8, MOV_DMG, NULL}, { wk1, 700, 0, 0, 11, MOV_DMG|MOV_END, NULL}, }; //uki_0 MOVDATA uki0[] = { // motion, px, py, pz, frame, flg, HITDATA { dmgD0, 0, 0, 0, 13, MOV_UKI, NULL}, //{ dmgB0, 0, 0, 0, 13, MOV_UKI, NULL}, { dmgD1, 0, 0, 0, 14, MOV_UKI, NULL}, { dmgD2, 0, 0, 0, 9, MOV_UKI|MOV_END, NULL}, }; //down_0 MOVDATA ukemi[] = { // motion, px, py, pz, frame, flg, HITDATA { ukemi0, 0, 0, 0, 5, MOV_JUMP|MOV_MUTEKI, NULL}, { ukemi1, 0, 0, 0, 5, MOV_JUMP|MOV_MUTEKI, NULL}, { ukemi2, 0, 0, 0, 5, MOV_JUMP|MOV_MUTEKI, NULL}, { ukemi3, 0, 0, 0, 1, MOV_JUMP|MOV_MUTEKI|MOV_END,NULL}, }; //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− // 食らい動作 //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− void SetChAttack( MAN *p ) { if( p->hold == HOLD_BOOM ) { SetChBoomAttack(p); return; } switch( p->syu ) { case 0: SetCh0Attack( p ); break; case 1: SetCh1Attack( p ); break; case 2: SetCh2Attack( p ); break; case 3: SetCh3Attack( p ); break; } } void SetChFDash( MAN *p ) { switch( p->syu ) { case 0: SetCh0FDash( p ); break; case 1: SetCh1FDash( p ); break; case 2: SetCh2FDash( p ); break; case 3: SetCh3FDash( p ); break; } } void SetChJump( MAN *p ) { switch( p->syu ) { case 0: SetCh0Jump( p ); break; case 1: SetCh1Jump( p ); break; case 2: SetCh2Jump( p ); break; case 3: SetCh3Jump( p ); break; } } void SetChTurn( MAN *p ) { switch( p->syu ) { case 0: SetCh0Turn( p ); break; case 1: SetCh1Turn( p ); break; case 2: SetCh2Turn( p ); break; case 3: SetCh3Turn( p ); break; } } void SetChNage( MAN *p ) { if( p->hold == HOLD_FIREGUN || p->hold == HOLD_BOX || p->hold == HOLD_BOOM ) { return; } switch( p->syu ) { case 0: SetCh0Nage( p ); break; case 1: SetCh1Nage( p ); break; case 2: SetCh2Nage( p ); break; case 3: SetCh3Nage( p ); break; } } //ジャンプ着地モーション void ChJump_a( MAN *p ) { //FntPrint("ja\n"); //振り向き動作で着地モーションをキャンセル可能 //後ろが押されたなら着地モーションキャンセルで振り向き SetChTurn( p ); //攻撃モーション発生判定 //着地モーションキャンセルで攻撃発生可能 SetChAttack( p ); SetChAttack( p );//コンパイラのバグ?二回呼ばないと反応しない //終了で立ちモーションに if( MoveNextMotion( p ) == FALSE ) { p->st = CH_STAND; SetNewMotion( p, &standcom[0], 0 ); } } //しゃがみモーション void ChSit( MAN *p ) { //FntPrint("sit\n"); //後ろが押されたなら振り向き SetChTurn( p ); //下が押されているならしゃがみを継続 if( p->cont & PADLdown ) { //モーションを進めて、モーションが終わったならもう一度しゃがみモーションを発動させる if( MoveNextMotion( p ) == FALSE ) { SetNewMotion( p, &sit[0], 0 ); } } else { //下が押され続けていなければ立ちモーションに戻る p->st = CH_STAND; SetNewMotion( p, &standcom[0], 0 ); } //攻撃モーション発生判定 SetChAttack( p ); } //拾いモーション void ChGet( MAN *p ) { //FntPrint("get\n"); //モーションを進める if( MoveNextMotion( p ) == FALSE ) { p->st = CH_STAND; SetNewMotion( p, &standcom[0], 0 ); } } //ガードモーション void ChGuard( MAN *p ) { //FntPrint("guard\n"); if( p->m_no == 0 ) { p->light_flg |= LIGHT_B; if( p->m_cnt == 1 ) p->grd_flg = GRD_NO; } if( p->grd_flg == GRD_OBJ ) { p->grd_flg = GRD_AFTER_OBJ; SetNewMotion( p, &guard[0], 4 ); } else if( p->grd_flg == GRD_ON ) { p->grd_flg = GRD_AFTER; // SetNewMotion( p, &GA0[0], 0 ); SetNewMotion( p, &guard[0], 4 ); p->light_flg |= LIGHT_R | LIGHT_B; } else if( (p->grd_flg == GRD_AFTER_OBJ) || ( p->grd_flg == GRD_AFTER )){//&& p->m_no < 2) ) { //攻撃モーション発生判定 SetChAttack( p ); //後ろが押されたなら振り向き SetChTurn( p ); //上が押されたならジャンプに移行 SetChJump( p ); //ダッシュ入力がされたならダッシュに移行 SetChFDash( p ); //和げモーション発生判定 優先順位により必殺が出ていない場合のみ SetChNage(p); } //モーションを進めて、モーションが終わったならまたモーションを発動させる if( MoveNextMotion( p ) == FALSE ) { p->st = CH_STAND; SetNewMotion( p, &standcom[0], 0 ); } return; } //しゃがみガードモーション void ChSGuard( MAN *p ) { //FntPrint("Sguard\n"); if( p->m_no == 0 ) { p->light_flg |= LIGHT_G | LIGHT_B; } if( p->m_no == 0 && p->m_cnt == 1 ) { p->grd_flg = GRD_NO; } if( p->grd_flg == GRD_ON ) { p->grd_flg = GRD_AFTER; SetNewMotion( p, &guard[0], 4 ); } else if( p->grd_flg == GRD_AFTER ) { //攻撃モーション発生判定 SetChAttack( p ); //後ろが押されたなら振り向き SetChTurn( p ); //上が押されたならジャンプに移行 SetChJump( p ); //ダッシュ入力がされたならダッシュに移行 SetChFDash( p ); } //モーションを進めて、モーションが終わったならまたモーションを発動させる if( MoveNextMotion( p ) == FALSE ) { p->st = CH_STAND; SetNewMotion( p, &standcom[0], 0 ); } return; //攻撃モーション発生判定 //+SetChAttack( p ); } //苦衷ガードモーション void ChJGuard( MAN *p ) { //FntPrint("Sguard\n"); if( p->m_no <= 1 ) { p->light_flg |= LIGHT_B; } if( p->m_no == 0 && p->m_cnt == 1 ) { p->grd_flg = GRD_NO; } if( p->grd_flg == GRD_ON ) { p->grd_flg = GRD_AFTER; p->st = CH_JUMP; // SetNewMotion( p, &[0], 4 ); } //重力にしたがって移動 p->pl.vx += p->g_pl.vx; p->pl.vy += p->g_pl.vy; p->g_pl.vy += G_POINT+2; //受け身が終わるとジャンプ中モーション if( MoveNextMotion( p ) == FALSE ) { p->grd_stop = 0; p->st = CH_JUMP; SetNewMotion( p, &jump[0], 0 ); } //壁あたり判定(地面判定よりも先に行わないと壁判定がおかしくなる) ChkWallHit(p); //着地すると着地モーションに移行 if( ChkGrandHit( p ) == TRUE ) { p->conbo_num = 0; //コンボ数初期化 p->grd_stop = 0; p->st = CH_STAND; SetMdata( p, &standcom[0], 0 ); SetNewMotion( p, &standcom[0], 0 ); } } //振り向きモーション(振り向き動作のみ、モーションではなくキャラ全体の単純な回転) void ChTurn( MAN *p ) { //FntPrint("turn\n"); //振り向きキャンセル //上が押されたならジャンプに移行 SetChJump( p ); //ダッシュ入力がされたならダッシュに移行 SetChFDash( p ); //和げモーション発生判定 SetChNage(p); //攻撃モーション発生判定 SetChAttack( p ); //モーションを進めて、モーションが終わったならもう一度モーションを発動させる if( MoveNextMotion( p ) == FALSE ) { p->m_no = 0; //モーションを戻す // SetNewMotion( p, &standcom[0], 0 ); } //p->r.vy -= p->turn_sp; //回転 if( p->r.vy <= 0 ) { //回転終了で立ちモーションに戻る p->r.vy = 0; p->st = CH_STAND; } } //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− // 食らい動作 //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− //ダメージモーション void ChDmg( MAN *p ) { p->grd_stop--; //終了で立ちモーションに if( p->grd_stop < 0 || MoveNextMotion( p ) == FALSE ) { p->conbo_num = 0; //コンボ数初期化 p->st = CH_STAND; SetNewMotion( p, &standcom[0], 0 ); } } //浮きモーション void ChUki( MAN *p ) { //FntPrint("Uki\n"); if( p->ukemi_cnt > 0 ) { //FntPrint("cnt=%d\n",p->ukemi_cnt); p->ukemi_cnt--; if( p->ukemi_cnt <= 2 ) {//受け身可能になったら p->light_flg |= LIGHT_G; } } if( p->ukemi_cnt <= 0 //) { && (p->LB_flg || p->HB_flg || p->FB_flg || p->PB_flg ) ){ p->LB_flg = p->HB_flg = p->FB_flg = p->PB_flg = 0; p->conbo_num = 0; //コンボ数初期化 p->grd_stop = 0; if( p->cont & PADLleft ) { p->g_pl.vx /= 4; p->g_pl.vx *= 3; p->g_pl.vx += 130; } else if( p->cont & PADLright ) { p->g_pl.vx /= 4; p->g_pl.vx *= 3; p->g_pl.vx -= 130; } p->g_pl.vy /= 8; if( p->cont & PADLup ) p->g_pl.vy += -120; if( p->cont & PADLdown ) p->g_pl.vy += 250; p->g_pl.vy -= 110; p->st = CH_UKEMI; SetNewMotion( p, &ukemi[0], 0 ); } //重力にしたがって移動 p->pl.vx += p->g_pl.vx; p->pl.vy += p->g_pl.vy; if( p->pl.vy < 0 ) p->g_pl.vy += (G_POINT-5); else p->g_pl.vy += (G_POINT-4); //ジャンプ中モーションが終わってもモーションは変更ぜず if( MoveNextMotion( p ) == FALSE ) { SetNewMotion( p, &uki0[0], 2 ); } //壁あたり判定(地面判定よりも先に行わないと壁判定がおかしくなる) ChkWallHit(p); //着地するとだうんモーションに移行 if( ChkGrandHit( p ) == TRUE ) { p->st = CH_DOWN0; SetNewMotion( p, &down0[0], 0 ); } } //受け身モーション void ChUkemi( MAN *p ) { //FntPrint("Ukemi\n"); //p->light_flg |= LIGHT_G; //重力にしたがって移動 p->pl.vx += p->g_pl.vx; p->pl.vy += p->g_pl.vy; p->g_pl.vy += (G_POINT-5); //受け身が終わるとジャンプ中モーション if( MoveNextMotion( p ) == FALSE ) { p->grd_stop = 0; p->st = CH_JUMP; SetNewMotion( p, &jump[0], 0 ); } //壁あたり判定(地面判定よりも先に行わないと壁判定がおかしくなる) ChkWallHit(p); //着地すると着地モーションに移行 if( ChkGrandHit( p ) == TRUE ) { p->conbo_num = 0; //コンボ数初期化 p->grd_stop = 0; p->st = CH_STAND; SetMdata( p, &standcom[0], 0 ); SetNewMotion( p, &standcom[0], 0 ); } } extern MATRIX gMat; //ダウンモーション void ChDown0( MAN *p ) { //FntPrint("down\n"); if( p->m_no == 0 && p->m_cnt == 1 ) { SetHitMark( MK_KEMURI,&p->kage.co.workm,16 ,2500);//ヒットマークのセット gMat = p->kage.co.workm; SetHitMark( MK_KEMURI,&gMat,18 ,Random(2000,1000));//ヒットマークのセット gMat.t[0] += 800; gMat.t[1] -= 50; SetHitMark( MK_KEMURI,&gMat,12 ,Random(2000,1500));//ヒットマークのセット gMat.t[0] -= 2400; gMat.t[1] += 50; SetHitMark( MK_KEMURI,&gMat,20 ,Random(2800,1500));//ヒットマークのセット gMat.t[0] += 600; gMat.t[1] -= 50; SetHitMark( MK_KEMURI,&gMat,18 ,Random(2000,500));//ヒットマークのセット } if( p->m_no == 4 && p->m_cnt == 1 ) { gMat = p->kage.co.workm; gMat.t[0] += 500; gMat.t[1] += 50; SetHitMark( MK_KEMURI,&gMat,16 ,Random(2000,1000));//ヒットマークのセット gMat.t[0] -= 1800; gMat.t[1] -= 50; SetHitMark( MK_KEMURI,&gMat,16 ,1500);//ヒットマークのセット gMat.t[0] += 600; gMat.t[1] -= 50; SetHitMark( MK_KEMURI,&gMat,18 ,Random(2500,1500));//ヒットマークのセット SetHitMark( MK_KEMURI,&p->kage.co.workm,16 ,2500);//ヒットマークのセット } //終了で立ちモーションに if( MoveNextMotion( p ) == FALSE ) { if( p->hp == 0 && p->ukemi_cnt > 999) { // end_flg = TRUE; SetNewMotion( p, &down0[0], 5 ); } else { p->ukemi_cnt = 0; //コンボ数初期化 p->st = CH_OKI; SetNewMotion( p, &oki0[0], 0 ); } p->conbo_num = 0; //コンボ数初期化 p->grd_stop = 0; } } //起き上がりモーション void ChOki( MAN *p ) { MAN *e; //FntPrint("oki\n"); if( p->m_no == 0 && p->m_cnt == 1 ) { if( p == &man[0] ) e = &man[1]; else e = &man[0]; if( p->face == RIGHT && p->pl.vx < e->pl.vx ) { p->face = LEFT; p->r.vy = 2048; } if( p->face == LEFT && p->pl.vx > e->pl.vx ) { p->face = RIGHT; p->r.vy = 2048; } } // if( p->r.vy > 0 ) p->r.vy -= 204; //振り向きキャンセル //上が押されたならジャンプに移行 SetChJump( p ); //ダッシュ入力がされたならダッシュに移行 SetChFDash( p ); //和げモーション発生判定 SetChNage(p); //攻撃モーション発生判定 SetChAttack( p ); //終了で立ちモーションに if( MoveNextMotion( p ) == FALSE ) { p->conbo_num = 0; //コンボ数初期化 p->grd_stop = 0; p->st = CH_STAND; SetNewMotion( p, &standcom[0], 0 ); } }