⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hotblood.c

📁 <B>韩国游戏《热血》</B>
💻 C
📖 第 1 页 / 共 5 页
字号:
				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 + -