📄 hotblood.c
字号:
IIMAGE_SetOffset(pme->m_pIBackGround, pme->pigX, -(pme->BackGroundY) + 46 + pme->pigYLevel * 5);
IIMAGE_SetDrawSize(pme->m_pIBackGround, 23, 14);
IIMAGE_Draw(pme->m_pIBackGround, pme->pigX, pme->O_PlayerY + 46 + pme->pigYLevel * 5);
pme->pigLiveOK = FALSE;
if( pme->cheatMode == 0 || pme->cheatMode == 2 ) {
if( pme->ply[0].HP + 80 > CHO_ENERGY ) pme->ply[0].HP = CHO_ENERGY;
else pme->ply[0].HP += 80;
}else if( pme->cheatMode == 1 ) {
if( pme->ply[0].HP + 80 > CHO_CHEATED_ENERGY ) pme->ply[0].HP = CHO_CHEATED_ENERGY;
else pme->ply[0].HP += 80;
}
}
}
}
}
static void checkNextStage(IApplet * pi)
{
HotBloodApp * pme = (HotBloodApp *)pi;
if( pme->ply[0].boundaryX >= pme->m_cxWidth - 5 ) {
pme->pigLiveOK = FALSE;
pme->ply[0].playerX = 5;
//硅版 捞固瘤 秦力.
if( pme->m_pIBackGround != NULL ) {
IIMAGE_Release(pme->m_pIBackGround);
pme->m_pIBackGround = NULL;
}
//绊绊 捞固瘤 秦力.
if( pme->m_pIGoGo != NULL ) {
IIMAGE_Release(pme->m_pIGoGo);
pme->m_pIGoGo = NULL;
}
switch( pme->stage ) {
case 1:
pme->m_pIBackGround = ISHELL_LoadResImage(pme->a.m_pIShell, HOTBLOOD_RES_FILE, IDB_BACK1_2);
IDISPLAY_SetColor(pme->a.m_pIDisplay, CLR_USER_BACKGROUND, MAKE_RGB(0, 0, 0));
IDISPLAY_ClearScreen(pme->a.m_pIDisplay);
IIMAGE_SetOffset(pme->m_pIBackGround, 0, -(pme->BackGroundY));
IIMAGE_SetDrawSize(pme->m_pIBackGround, 120, 117);
IIMAGE_Draw(pme->m_pIBackGround, 0, pme->O_PlayerY);
pme->GameState = GS_PLAY;
break;
case 2:
pme->m_pIBackGround = ISHELL_LoadResImage(pme->a.m_pIShell, HOTBLOOD_RES_FILE, IDB_BACK2_2);
IDISPLAY_SetColor(pme->a.m_pIDisplay, CLR_USER_BACKGROUND, MAKE_RGB(0, 0, 0));
IDISPLAY_ClearScreen(pme->a.m_pIDisplay);
IIMAGE_SetOffset(pme->m_pIBackGround, 0, -(pme->BackGroundY));
IIMAGE_SetDrawSize(pme->m_pIBackGround, 120, 117);
IIMAGE_Draw(pme->m_pIBackGround, 0, pme->O_PlayerY);
pme->GameState = GS_PLAY;
break;
case 3:
pme->m_pIBackGround = ISHELL_LoadResImage(pme->a.m_pIShell, HOTBLOOD_RES_FILE, IDB_BACK3_2);
IDISPLAY_SetColor(pme->a.m_pIDisplay, CLR_USER_BACKGROUND, MAKE_RGB(0, 0, 0));
IDISPLAY_ClearScreen(pme->a.m_pIDisplay);
IIMAGE_SetOffset(pme->m_pIBackGround, 0, -(pme->BackGroundY));
IIMAGE_SetDrawSize(pme->m_pIBackGround, 120, 117);
IIMAGE_Draw(pme->m_pIBackGround, 0, pme->O_PlayerY);
pme->GameState = GS_PLAY;
break;
}
}
}
static void shockCheck(IApplet * pi)
{
int i;
int plyX = 0, plyY = 0;
int plyDir = 0;
int eneX = 0;
int eneDir = 0;
int range = 0;
int addRange = 0;
int reduceHP = 0;
AEEImageInfo imageInfo;
AEEImageInfo eneimgInfo;
HotBloodApp * pme = (HotBloodApp *)pi;
plyX = pme->ply[0].playerX + 14;
plyY = pme->ply[0].yLevel;
plyDir = pme->ply[0].currentDir;
IIMAGE_GetInfo(pme->m_pIPly[pme->ply[0].imgNum], &imageInfo);
if( pme->ply[0].animeBuffer == PS_DEFAULT_ATTACK_BY_SPEAR || pme->ply[0].animeBuffer == PS_DEADLY_ATTACK_BY_SPEAR ||
pme->ply[0].animeBuffer == PS_DEFAULT_ATTACK_BY_SPEAR2 || pme->ply[0].animeBuffer == PS_DEFAULT_ATTACK_BY_SPEAR3 ||
pme->ply[0].animeBuffer == PS_SPECIAL_ATTACK_BY_SPEAR || pme->ply[0].animeBuffer == PS_JUMP ) {
for( i = 1;i < 5;i++ ) {
if( pme->ply[i].liveOK /*&& pme->ply[i].PlayerState != ES_SHOCK*/ && pme->ply[i].PlayerState != ES_KNOCK_DOWN ) {
eneX = pme->ply[i].boundaryX;
IIMAGE_GetInfo(pme->m_pIPly[pme->ply[i].imgNum], &eneimgInfo);
switch( pme->ply[0].PlayerState ) {
case PS_SPECIAL_ATTACK_BY_SPEAR:
if( pme->ply[i].animeBuffer == ES_SHOCK ) break;
if( plyY == pme->ply[i].yLevel || plyY == pme->ply[i].yLevel - 1 || plyY == pme->ply[i].yLevel + 1 ) {
if( pme->ply[0].currentDir == PS_LEFT ) {
if( pme->ply[0].boundaryX - 20 <= pme->ply[i].boundaryX && pme->ply[0].specOK && pme->ply[0].boundaryX >= pme->ply[i].boundaryX ) {
pme->ply[i].specOnce = TRUE;
pme->ply[i].energyOK = TRUE;
pme->timeforEnemy = 0;
pme->ply[i].anime = 0;
pme->ply[i].PlayerState = ES_KNOCK_DOWN;
if( pme->ply[0].AP < 50 ) pme->ply[0].AP++;
HPCheck(pi, &pme->ply[i], TYPE0_SPECIAL_ATTACK_BY_SPEAR);
}
if( pme->ply[0].boundaryX_R + 20 >= pme->ply[i].boundaryX && pme->ply[0].specOK && pme->ply[0].boundaryX <= pme->ply[i].boundaryX ) {
pme->ply[i].specOnce = TRUE;
pme->ply[i].energyOK = TRUE;
pme->timeforEnemy = 0;
pme->ply[i].anime = 0;
pme->ply[i].PlayerState = ES_KNOCK_DOWN;
if( pme->ply[0].AP < 50 ) pme->ply[0].AP++;
HPCheck(pi, &pme->ply[i], TYPE0_SPECIAL_ATTACK_BY_SPEAR);
}
}else {
if( pme->ply[0].boundaryX + 20 >= pme->ply[i].boundaryX && pme->ply[0].specOK && pme->ply[0].boundaryX <= pme->ply[i].boundaryX ) {
pme->ply[i].specOnce = TRUE;
pme->ply[i].energyOK = TRUE;
pme->timeforEnemy = 0;
pme->ply[i].anime = 0;
pme->ply[i].PlayerState = ES_KNOCK_DOWN;
if( pme->ply[0].AP < 50 ) pme->ply[0].AP++;
HPCheck(pi, &pme->ply[i], TYPE0_SPECIAL_ATTACK_BY_SPEAR);
}
if( pme->ply[0].boundaryX_R - 20 <= pme->ply[i].boundaryX && pme->ply[0].specOK && pme->ply[0].boundaryX >= pme->ply[i].boundaryX ) {
pme->ply[i].specOnce = TRUE;
pme->ply[i].energyOK = TRUE;
pme->timeforEnemy = 0;
pme->ply[i].anime = 0;
pme->ply[i].PlayerState = ES_KNOCK_DOWN;
if( pme->ply[0].AP < 50 ) pme->ply[0].AP++;
HPCheck(pi, &pme->ply[i], TYPE0_SPECIAL_ATTACK_BY_SPEAR);
}
}
}
break;
case PS_DEFAULT_ATTACK_BY_SPEAR3:
case PS_DEFAULT_ATTACK_BY_SPEAR2:
case PS_DEFAULT_ATTACK_BY_SPEAR:
if( pme->ply[0].animeBuffer == pme->ply[i].preDamage ) break;
if( pme->ply[0].animeBuffer == PS_DEFAULT_ATTACK_BY_SPEAR &&
pme->ply[i].animeBuffer == ES_SHOCK ) break;
if( pme->ply[i].animeBuffer == ES_KNOCK_DOWN ) break;
if( pme->ply[i].yLevel == plyY && !pme->ply[i].fearOK ) {
if( plyX > eneX ) {
if( plyDir == PS_LEFT && pme->ply[0].oldPlayerX - TYPE0_RANGE/* - 5*/ <= pme->ply[i].boundaryX ) {
pme->ply[i].preDamage = pme->ply[0].animeBuffer;
if( pme->soundOn ) PlayMMF(pi, 3);
pme->ply[i].energyOK = TRUE;
pme->timeforEnergy = 0;
pme->ply[i].anime = 0;
pme->ply[i].PlayerState = ES_SHOCK;
//pme->comboOn = TRUE;
//DebugOut("%d", pme->ply[i].HP);
if( pme->ply[0].AP < 50 ) pme->ply[0].AP++;
switch( pme->ply[0].animeBuffer ) {
case PS_DEFAULT_ATTACK_BY_SPEAR:
HPCheck(pi, &pme->ply[i], TYPE0_ATTACK_BY_SPEAR);
break;
case PS_DEFAULT_ATTACK_BY_SPEAR2:
HPCheck(pi, &pme->ply[i], TYPE0_ATTACK_BY_SPEAR2);
break;
case PS_DEFAULT_ATTACK_BY_SPEAR3:
HPCheck(pi, &pme->ply[i], TYPE0_ATTACK_BY_SPEAR3);
break;
}
}
}else if( plyX < eneX ) {
if( plyDir == PS_RIGHT && pme->ply[0].oldPlayerX + imageInfo.cx + TYPE0_RANGE/* + 5*/ >= pme->ply[i].boundaryX ) {
pme->ply[i].preDamage = pme->ply[0].animeBuffer;
if( pme->soundOn ) PlayMMF(pi, 3);
pme->ply[i].energyOK = TRUE;
pme->timeforEnergy = 0;
pme->ply[i].anime = 0;
pme->ply[i].PlayerState = ES_SHOCK;
//pme->comboOn = TRUE;
if( pme->ply[0].AP < 50 ) pme->ply[0].AP++;
switch( pme->ply[0].animeBuffer ) {
case PS_DEFAULT_ATTACK_BY_SPEAR:
HPCheck(pi, &pme->ply[i], TYPE0_ATTACK_BY_SPEAR);
break;
case PS_DEFAULT_ATTACK_BY_SPEAR2:
HPCheck(pi, &pme->ply[i], TYPE0_ATTACK_BY_SPEAR2);
break;
case PS_DEFAULT_ATTACK_BY_SPEAR3:
HPCheck(pi, &pme->ply[i], TYPE0_ATTACK_BY_SPEAR3);
break;
}
}
}
}
break;
case PS_DEADLY_ATTACK_BY_SPEAR:
if( pme->ply[i].animeBuffer == ES_SHOCK ) break;
if( pme->ply[0].deadlySpearOK ) {
pme->ply[i].energyOK = TRUE;
pme->timeforEnemy = 0;
pme->ply[i].anime = 0;
pme->ply[i].PlayerState = ES_KNOCK_DOWN;
HPCheck(pi, &pme->ply[i], TYPE0_DEADLY_ATTACK_BY_SPEAR);
}
break;
case PS_JUMP:
if( pme->ply[i].animeBuffer == ES_SHOCK ) break;
if( pme->jumpAttack == 1 && pme->ply[i].yLevel == plyY ) {
if( plyX > eneX ) {
if( plyDir == PS_LEFT && pme->ply[0].oldPlayerX <= pme->ply[i].boundaryX ) {
if( pme->soundOn ) PlayMMF(pi, 3);
pme->ply[i].energyOK = TRUE;
pme->timeforEnergy = 0;
pme->ply[i].anime = 0;
pme->ply[i].PlayerState = ES_KNOCK_DOWN;
if( pme->ply[0].AP < 50 ) pme->ply[0].AP++;
HPCheck(pi, &pme->ply[i], TYPE0_ATTACK_BY_JUMP);
}
}else {
if( plyDir == PS_RIGHT && pme->ply[0].oldPlayerX + imageInfo.cx >= pme->ply[i].boundaryX ) {
if( pme->soundOn ) PlayMMF(pi, 3);
pme->ply[i].energyOK = TRUE;
pme->timeforEnergy = 0;
pme->ply[i].anime = 0;
pme->ply[i].PlayerState = ES_KNOCK_DOWN;
if( pme->ply[0].AP < 50 ) pme->ply[0].AP++;
HPCheck(pi, &pme->ply[i], TYPE0_ATTACK_BY_JUMP);
}
}
}
break;
}
}
}
}
for( i = 1;i < 5;i++ ) {
switch( pme->ply[i].type ) {
case 1:
range = TYPE1_RANGE;
reduceHP = TYPE1_ATTACK;
addRange = 0;
break;
case 2:
range = TYPE2_RANGE;
reduceHP = TYPE2_ATTACK;
addRange = 0;
break;
case 3:
range = TYPE3_RANGE;
reduceHP = TYPE3_ATTACK;
addRange = 9;
break;
case 4:
range = TYPE4_RANGE;
reduceHP = TYPE4_ATTACK;
addRange = 9;
break;
case 5:
range = TYPE5_RANGE;
reduceHP = TYPE5_ATTACK;
addRange = 23;
break;
case 6:
range = TYPE6_RANGE;
reduceHP = TYPE6_ATTACK;
addRange = 26;
break;
}
if( plyY != pme->ply[i].yLevel ) continue;
if( pme->ply[0].forDeath ) continue;
if( pme->ply[0].animeBuffer == PS_SHOCK || pme->ply[0].animeBuffer == PS_KNOCK_DOWN ||
pme->ply[0].animeBuffer == PS_JUMP ) continue;
if( pme->ply[0].animeBuffer == PS_DEADLY_ATTACK_BY_SPEAR ) continue;
if( pme->ply[0].animeBuffer == PS_SPECIAL_ATTACK_BY_SPEAR ) continue;
if( pme->ply[0].PlayerState == PS_DEADLY_ATTACK_BY_SPEAR ||
pme->ply[0].PlayerState == PS_SPECIAL_ATTACK_BY_SPEAR ||
pme->ply[0].PlayerState == PS_JUMP ) continue;
if( /*pme->ply[0].animeBuffer == PS_DEFAULT_ATTACK_BY_SPEAR ||
pme->ply[0].animeBuffer == PS_DEFAULT_ATTACK_BY_SPEAR2 ||*/
pme->ply[0].animeBuffer == PS_DEFAULT_ATTACK_BY_SPEAR3 ) continue;
if( pme->ply[i].animeBuffer == ES_ATTACK_BY_SPEAR || pme->ply[i].animeBuffer == ES_ATTACK_BY_BOW ||
pme->ply[i].animeBuffer == ES_ATTACK_BY_SWORD || pme->ply[i].animeBuffer == ES_ATTACK_BY_STAGE1 ||
pme->ply[i].animeBuffer == ES_ATTACK_BY_STAGE2 || pme->ply[i].animeBuffer == ES_ATTACK_BY_STAGE3 ) {
eneX = pme->ply[i].boundaryX;
eneDir = pme->ply[i].currentDir;
IIMAGE_GetInfo(pme->m_pIPly[pme->ply[i].imgNum], &imageInfo);
switch( pme->ply[i].animeBuffer ) {
case ES_ATTACK_BY_BOW:
if( plyY == pme->ply[i].yLevel ) {
if( plyX > eneX ) {
if( plyDir == PS_LEFT ) {
if( eneDir == ES_RIGHT && pme->ply[i].arrowX + 22 >= pme->ply[0].boundaryX &&
pme->ply[i].arrowX <= pme->ply[0].boundaryX_R && pme->ply[i].arrowOK ) {
pme->ply[0].anime = 0;
pme->ply[i].arrowOK = FALSE;
if( pme->soundOn ) PlayMMF(pi, 3);
pme->ply[0].PlayerState = PS_SHOCK;
pme->ply[i].anime = 4;
if( pme->ply[0].AP + 3 > 50 ) pme->ply[0].AP = 50;
else pme->ply[0].AP += 3;
HPCheck(pi, &pme->ply[0], reduceHP);
}
}else {
if( eneDir == ES_RIGHT && pme->ply[i].arrowX + 22 >= pme->ply[0].boundaryX_R &&
pme->ply[i].arrowX <= pme->ply[0].boundaryX && pme->ply[i].arrowOK ) {
pme->ply[0].anime = 0;
pme->ply[i].arrowOK = FALSE;
if( pme->soundOn ) PlayMMF(pi, 3);
pme->ply[0].PlayerState = PS_SHOCK;
pme->ply[i].anime = 4;
if( pme->ply[0].AP + 3 > 50 ) pme->ply[0].AP = 50;
else pme->ply[0].AP += 3;
HPCheck(pi, &pme->ply[0], reduceHP);
}
}
}else if( plyX < eneX ) {
if( plyDir == PS_LEFT ) {
if( eneDir == ES_LEFT && pme->ply[i].arrowX <= pme->ply[0].boundaryX_R &&
pme->ply[i].arrowX + 22 >= pme->ply[0].boundaryX && pme->ply[i].arrowOK ) {
pme->ply[0].anime = 0;
pme->ply[i].arrowOK = FALSE;
if( pme->soundOn ) PlayMMF(pi, 3);
pme->ply[0].PlayerState = PS_SHOCK;
pme->ply[i].anime = 4;
if( pme->ply[0].AP + 3 > 50 ) pme->ply[0].AP = 50;
else pme->ply[0].AP += 3;
HPCheck(pi, &pme->ply[0], reduceHP);
}
}else {
if( eneDir == ES_LEFT && pme->ply[i].arrowX <= pme->ply[0].boundaryX &&
pme->ply[i].arrowX + 22 >= pme->ply[0].boundaryX_R && pme->ply[i].arrowOK ) {
pme->ply[0].anime = 0;
pme->ply[i].arrowOK = FALSE;
if( pme->soundOn ) PlayMMF(pi, 3);
pme->ply[0].PlayerState = PS_SHOCK;
pme->ply[i].anime = 4;
if( pme->ply[0].AP + 3 > 50 ) pme->ply[0].AP = 50;
else pme->ply[0].AP += 3;
HPCheck(pi, &pme->ply[0], reduceHP);
}
}
}else {
}
}
break;
default:
if( plyY == pme->ply[i].yLevel ) {
if( plyX > eneX ) {
if( plyDir == PS_LEFT ) {
if( eneDir == ES_RIGHT && pme->ply[i].playerX + imageInfo.cx /*+ addRange*/ + range >= pme->ply[0].boundaryX ) {
if( pme->soundOn ) PlayMMF(pi, 3);
pme->ply[0].anime = 0;
pme->ply[0].PlayerState = PS_SHOCK;
if( pme->ply[i].type < 4 ) {
if( pme->ply[0].AP + 3 > 50 ) pme->ply[0].AP = 50;
else pme->ply[0].AP += 3;
}else {
if( pme->ply[0].AP + 10 > 50 ) pme->ply[0].AP = 50;
else pme->ply[0].AP += 10;
}
HPCheck(pi, &pme->ply[0], reduceHP);
}
}else {
if( eneDir == ES_RIGHT && pme->ply[i].playerX + imageInfo.cx /*+ addRange*/ + range >= pme->ply[0].boundaryX_R ) {
if( pme->soundOn ) PlayMMF(pi, 3);
pme->ply[0].anime = 0;
pme->ply[0].PlayerState = PS_SHOCK;
if( pme->ply[i].type < 4 ) {
if( pme->ply[0].AP + 3 > 50 ) pme->ply[0].AP = 50;
else pme->ply[0].AP += 3;
}else {
if( pme->ply[0].AP + 10 > 50 ) pme->ply[0].AP = 50;
else pme->ply[0].AP += 10;
}
HPCheck(pi, &pme->ply[0], reduceHP);
}
}
}else if( plyX < eneX ) {
if( plyDir == PS_LEFT ) {
if( eneDir == ES_LEFT && pme->ply[i].oldPlayerX /*- addRange*/ - range - 4 <= pme->ply[0].boundaryX_R ) {
if( pme->soundOn ) PlayMMF(pi, 3);
pme->ply[0].anime = 0;
pme->ply[0].PlayerState = PS_SHOCK;
if( pme->ply[i].type < 4 ) {
if( pme->ply[0].AP + 3 > 50 ) pme->ply[0].AP = 50;
else pme->ply[0].AP += 3;
}else {
if( pme->ply[0].AP + 10 > 50 ) pme->ply[0].AP = 50;
else pme->ply[0].AP += 10;
}
HPCheck(pi, &pme->ply[0], reduceHP);
}
}else {
if( eneDir == ES_LEFT && pme->ply[i].oldPlayerX /*- addRange*/ - range - 4 <= pme->ply[0].boundaryX ) {
if( pme->soundOn ) PlayMMF(pi, 3);
pme->ply[0].anime = 0;
pme->ply[0].PlayerState = PS_SHOCK;
if( pme->ply[i].type < 4 ) {
if( pme->ply[0].AP + 3 > 50 ) pme->ply[0].AP = 50;
else pme->ply[0].AP += 3;
}else {
if( pme->ply[0].AP + 10 > 50 ) pme->ply[0].AP = 50;
else pme->ply[0].AP += 10;
}
HPCheck(pi, &pme->ply[0], reduceHP);
}
}
}else {
}
}
break;
}
}
}
}
static void drawEffect1(IApplet * pi)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -