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

📄 battle.c.bak

📁 石器时代8.0服务端完整源代码。可以直接编译
💻 BAK
📖 第 1 页 / 共 5 页
字号:
		}		ToList[j] = -1;		cnt       = j;	}	else if( toNo == TARGET_SIDE_1 )	{		for( j = 0, i = SIDE_OFFSET; i < SIDE_OFFSET*2; i ++ )		{			if( BATTLE_TargetCheck( battleindex, i ) == TRUE )			{				ToList[j] = i;				j ++ ;			}		}		ToList[j] = -1;		cnt       = j;	}	else if( toNo == TARGET_ALL ){		for( j = 0, i = 0; i < SIDE_OFFSET*2; i ++, j ++ ){			if( BATTLE_TargetCheck( battleindex, i ) == TRUE ){				ToList[j] = i;				j ++ ;			}		}		ToList[i] = -1;		cnt       = j;	}	else	{		ToList[0] = toNo;		ToList[1] = -1;		cnt       = 1;	}	return 1;#endif}void BATTLE_MultiListDead( int battleindex, int toNo, int ToList[] ){	int j, i;	if( 0 <= toNo && toNo <= 19 ){		if( BATTLE_TargetCheckDead( battleindex, toNo ) == TRUE ){			ToList[0] = toNo;			ToList[1] = -1;		}else{			ToList[0] = -1;			ToList[1] = -1;		}	}else	if( toNo == TARGET_SIDE_0 ){		for( j = 0, i = 0; i < SIDE_OFFSET; i ++){			if( BATTLE_TargetCheckDead( battleindex, i ) == TRUE ){				ToList[j] = i;				j ++ ;			}		}		ToList[j] = -1;	}else		if( toNo == TARGET_SIDE_1 ){			for( j = 0, i = SIDE_OFFSET; i < SIDE_OFFSET*2; i ++ ){				if( BATTLE_TargetCheckDead( battleindex, i ) == TRUE ){					ToList[j] = i;					j ++ ;				}			}			ToList[j] = -1;		}else{			if( toNo == TARGET_ALL ){#ifdef _FIX_ARRAYBUG				for( j = 0, i = 0; i < SIDE_OFFSET*2; i ++){#else				for( j = 0, i = 0; i < SIDE_OFFSET*2; i ++, j ++ ){#endif					if( BATTLE_TargetCheckDead( battleindex, i ) == TRUE ){						ToList[j] = i;						j ++ ;					}				}#ifdef _FIX_ITEMRELIFE      // WON ADD 修正替身娃娃问题				ToList[j] = -1;#else				ToList[i] = -1;#endif			}else{				ToList[0] = toNo;				ToList[1] = -1;			}		}}BOOL BATTLE_IsThrowWepon( int itemindex){	int itemtype;	if( ITEM_CHECKINDEX( itemindex ) == FALSE ){		return FALSE;	}	itemtype = ITEM_getInt( itemindex, ITEM_TYPE );	if( itemtype == ITEM_BOOMERANG		||	itemtype == ITEM_BOW		||	itemtype == ITEM_BREAKTHROW		||	itemtype == ITEM_BOUNDTHROW	){		return TRUE;	}else{		return FALSE;	}}int BATTLE_ClearGetExp( int charaindex ){	int i, pindex;	if( CHAR_CHECKINDEX( charaindex ) == FALSE ){		return BATTLE_ERR_CHARAINDEX;	}	CHAR_setWorkInt( charaindex, CHAR_WORKGETEXP, 0 );	for( i = 0; i < CHAR_MAXPETHAVE; i ++ ){		pindex = CHAR_getCharPet( charaindex, i );		if( CHAR_CHECKINDEX( pindex ) == FALSE )continue;		CHAR_setWorkInt( pindex, CHAR_WORKGETEXP, 0 );	}	return 0;}INLINE void _BATTLE_ExitAll( char *file, int line, int battleindex){	int j,i, charaindex;	for( j = 0; j < 2; j ++ ){		for( i = 0; i < BATTLE_ENTRY_MAX; i ++ ){			charaindex = BattleArray[battleindex].Side[j].Entry[i].charaindex;			if( CHAR_CHECKINDEX( charaindex ) == FALSE )continue;			BATTLE_Exit( charaindex, battleindex );			CHAR_setWorkInt( charaindex, CHAR_WORKBATTLEMODE,				BATTLE_CHARMODE_NONE );		}	}}void BATTLE_AllCharaFinishSet( int battleindex ){	int j,i, charaindex;	for( j = 0; j < 2; j ++ ){		for( i = 0; i < BATTLE_ENTRY_MAX; i ++ ){			charaindex = BattleArray[battleindex].Side[j].Entry[i].charaindex;			if( CHAR_CHECKINDEX( charaindex ) == FALSE )continue;			CHAR_setWorkInt( charaindex, CHAR_WORKBATTLEMODE,				BATTLE_CHARMODE_FINAL );		}	}}BOOL BATTLE_IsCharge( int charaindex ){	int com;	com = CHAR_getWorkInt( charaindex, CHAR_WORKBATTLECOM1 );	if( com == BATTLE_COM_S_CHARGE		||  com == BATTLE_COM_S_EARTHROUND1		||  com == BATTLE_COM_S_EARTHROUND0 #ifdef _PROFESSION_ADDSKILL		|| CHAR_getWorkInt( charaindex, CHAR_DOOMTIME ) > 0#endif		){		return TRUE;	}	return FALSE;}void BATTLE_AllCharaCWaitSet( int battleindex ){	int j,i, charaindex;	for( j = 0; j < 2; j ++ ){		for( i = 0; i < BATTLE_ENTRY_MAX; i ++ ){			charaindex = BattleArray[battleindex].Side[j].Entry[i].charaindex;			if( CHAR_CHECKINDEX( charaindex ) == FALSE )continue;			if( BATTLE_IsCharge( charaindex ) == TRUE ){			}else{				CHAR_setWorkInt( charaindex, CHAR_WORKBATTLECOM1,					BATTLE_COM_NONE );			}			CHAR_setWorkInt( charaindex, CHAR_WORKBATTLEMODE,				BATTLE_CHARMODE_C_WAIT );		}	}}void BATTLE_AllCharaWatchWaitSet( int battleindex ){	int i, charaindex;	for( i = 0; i < BATTLE_ENTRY_MAX; i ++ ){		charaindex = BattleArray[battleindex].Side[0].Entry[i].charaindex;		if( CHAR_CHECKINDEX( charaindex ) == FALSE )continue;		if( CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEMODE )		!= BATTLE_CHARMODE_WATCHINIT		){			CHAR_setWorkInt( charaindex, CHAR_WORKBATTLEMODE,				BATTLE_CHARMODE_C_WAIT );		}	}}void BATTLE_SurpriseSet(	int battleindex,	int side){	BATTLE_ENTRY *pEntry;	int i, charaindex;	pEntry = BattleArray[battleindex].Side[side].Entry;	for( i = 0; i < BATTLE_ENTRY_MAX; i ++ ){		charaindex = pEntry[i].charaindex;		if( CHAR_CHECKINDEX( charaindex ) == FALSE )continue;		if( CHAR_getInt( charaindex, CHAR_WHICHTYPE ) == CHAR_TYPEPET ){			CHAR_setWorkInt( charaindex, CHAR_WORKBATTLECOM1, BATTLE_COM_NONE );			CHAR_setWorkInt( charaindex, CHAR_WORKBATTLEMODE, BATTLE_CHARMODE_C_OK );		}	}}BOOL BATTLE_initBattleArray(	int battlenum){    int     i;	BATTLE_battlenum = battlenum;    BattleArray = allocateMemory( sizeof( BATTLE ) * BATTLE_battlenum );    if( BattleArray == NULL ) return FALSE;    for( i = 0 ; i < BATTLE_battlenum ; i ++ ){        memset( &BattleArray[i], 0 , sizeof( BATTLE ));	}    return TRUE;}static void EntryInit( BATTLE_ENTRY *pEntry ){	int i;	pEntry->charaindex = -1;	pEntry->bid = -1;	pEntry->escape = 0;	for( i = 0; i < GETITEM_MAX; i ++ ){		pEntry->getitem[i] = -1;	}}int BATTLE_CreateBattle( void ){	int battleindex, i, j;	BATTLE *pBattle;	battleindex = BATTLE_SearchTask( );	// NUKE 0701	if( battleindex < 0 )return -1;	pBattle = &BattleArray[battleindex];	// NUKE 0701	if (pBattle==NULL) return -1;	pBattle->use = TRUE;	pBattle->mode = BATTLE_MODE_INIT;	pBattle->turn = 0;	pBattle->dpbattle = 0;	pBattle->norisk = 0;	pBattle->flg = 0;	pBattle->field_att = BATTLE_ATTR_NONE;	pBattle->att_count = 0;	for( j = 0; j < 2; j ++ ){		for( i = 0; i < BATTLE_ENTRY_MAX; i ++ ){			EntryInit( &pBattle->Side[j].Entry[i] );		}	}	for( i = 0; i < BATTLE_ENTRY_MAX*2; i ++ ){		pBattle->iEntryBack[i] = -1;		pBattle->iEntryBack2[i] = -1;	}	pBattle->WinFunc = NULL;#ifdef _DEATH_CONTEND//计算胜败func	pBattle->PkFunc = NULL;	pBattle->battlemap = -1;#endif	pBattle->pNext = NULL;	pBattle->pBefore = NULL;	pBattle->battleindex = battleindex;	Total_BattleNum ++;#ifdef _BATTLECOMMAND_TIME	pBattle->PartTime = 0;#endif#ifdef _PROFESSION_ADDSKILL	//冰爆术存放/*	pBattle->ice_count = 0;	for( i = 0; i < 20; i ++ ){		pBattle->ice_bout[i]=0;		pBattle->ice_use[i]=FALSE;		pBattle->ice_toNo[i]=0;		pBattle->ice_level[i]=0;		pBattle->ice_array[i]=0;		pBattle->ice_attackNo[i]=0;		pBattle->ice_charaindex[i]=-1;	}*/#endif	return battleindex;}static int BATTLE_SearchTask( void ){	int i, j;	i = BATTLE_searchCnt;	for( j = 0; j < BATTLE_battlenum; j ++ ){		if( i >= BATTLE_battlenum ) i = 0;		if( BattleArray[i].use == FALSE ){			BATTLE_searchCnt = i + 1;			return i;		}		i ++;	}	return -1;}void BATTLE_DeleteItem( int battleindex ){	int i, j, k;	BATTLE_ENTRY *pEntry;	for( j = 0; j < 2; j ++ ){		for( i = 0; i < BATTLE_ENTRY_MAX; i ++ ){			pEntry = &BattleArray[battleindex].Side[j].Entry[i];			for( k = 0; k < GETITEM_MAX; k ++ ){				if( pEntry->getitem[k] >= 0 ){					print( "// 找寻(消去)道具(%d),(%s)\n",						pEntry->getitem[k],						ITEM_getAppropriateName(pEntry->getitem[k]) );					ITEM_endExistItemsOne( pEntry->getitem[k] );				}			}		}	}}int BATTLE_DeleteBattle(	int battleindex){	int i, j;	BATTLE *pBattle;	if( BATTLE_CHECKINDEX( battleindex ) == FALSE ){		fprint( "err:battle index error\n" );		return BATTLE_ERR_BATTLEINDEX;	}	if( BATTLE_WatchUnLink( battleindex ) == FALSE ){		fprint( "err:battle link 不脱离\n" );	}	pBattle = &BattleArray[battleindex];	pBattle->use = FALSE;	pBattle->mode = BATTLE_MODE_NONE;	BATTLE_DeleteItem( battleindex );	for( j = 0; j < 2; j ++ ){		for( i = 0; i < BATTLE_ENTRY_MAX; i ++ ){			EntryInit( &pBattle->Side[j].Entry[i] );		}	}	Total_BattleNum--;	return 0;}int BATTLE_No2Index(	int battleindex,	int bid){	BATTLE_ENTRY *pEntry;	if( BATTLE_CHECKINDEX( battleindex ) == FALSE )return -1;	if( BATTLE_CHECKNO( bid ) == FALSE )return -1;	if( bid >= 10 ){		pEntry = BattleArray[battleindex].Side[1].Entry;		bid -= SIDE_OFFSET;	}else{		pEntry = BattleArray[battleindex].Side[0].Entry;	}	if( CHAR_CHECKINDEX( pEntry[bid].charaindex ) == FALSE )return -1;	return pEntry[bid].charaindex;}#ifdef _Item_ReLifeActint BATTLE_getBattleDieIndex( int battleindex, int bid ){	BATTLE_ENTRY *pEntry;	if( BATTLE_CHECKINDEX( battleindex ) == FALSE )return -1;	if( BATTLE_CHECKNO( bid ) == FALSE )return -1;	if( bid >= 10 ){		pEntry = BattleArray[battleindex].Side[1].Entry;		bid -= SIDE_OFFSET;	}else{		pEntry = BattleArray[battleindex].Side[0].Entry;	}	if( CHAR_CHECKINDEX( pEntry[bid].charaindex ) == FALSE )return -1;	if( pEntry[bid].flg & BENT_FLG_ULTIMATE ) return -1;	return pEntry[bid].charaindex;}#endif#ifdef _PROFESSION_ADDSKILLBOOL BATTLE_BattleUltimate( int battleindex, int bid ) //检查此位  上是否被打飞{	BATTLE_ENTRY *pEntry;	if( BATTLE_CHECKINDEX( battleindex ) == FALSE )return FALSE;	if( BATTLE_CHECKNO( bid ) == FALSE )return FALSE;	if( bid >= 10 ){		pEntry = BattleArray[battleindex].Side[1].Entry;		bid -= SIDE_OFFSET;	}else{		pEntry = BattleArray[battleindex].Side[0].Entry;	}	if( pEntry[bid].flg & BENT_FLG_ULTIMATE ) return TRUE;	else return TRUE;}#endifint BATTLE_Index2No(	int battleindex,	int charaindex){	BATTLE_ENTRY *pEntry;	int  i, j;	if( BATTLE_CHECKINDEX( battleindex ) == FALSE )return -1;	if( CHAR_CHECKINDEX( charaindex ) == FALSE )return -1;	for( j = 0; j < 2; j ++ ){		pEntry = BattleArray[battleindex].Side[j].Entry;		for( i = 0; i < BATTLE_ENTRY_MAX; i ++ ){			if( pEntry[i].charaindex == charaindex ){				return i + j * SIDE_OFFSET;			}		}	}	return -1;}char *BATTLE_CharTitle( int charaindex ){	char *pName;	static char Len0Buff[2] = "";	if( CHAR_getInt( charaindex, CHAR_WHICHTYPE ) == CHAR_TYPEPET ){		pName = Len0Buff;	}else{		pName = CHAR_getChar( charaindex, CHAR_OWNTITLE );		if( pName[0] == 0 ){			pName = Len0Buff;		}	}	return pName;}int BATTLE_CharaBackUp( int battleindex ){	int i, j, k, charaindex;	BATTLE *pBattle;	if( BATTLE_CHECKINDEX( battleindex ) == FALSE ){		return BATTLE_ERR_BATTLEINDEX;	}	pBattle = &BattleArray[battleindex];	k = 0;	for( j = 0; j < 2; j ++ ){		k = j * SIDE_OFFSET;		for( i = 0; i < BATTLE_ENTRY_MAX/2; i ++ ){			charaindex = pBattle->Side[j].Entry[i].charaindex;			if( CHAR_CHECKINDEX( charaindex ) == TRUE			&&  CHAR_getInt( charaindex, CHAR_WHICHTYPE ) == CHAR_TYPEPLAYER			){				pBattle->iEntryBack[k] = pBattle->Side[j].Entry[i].charaindex;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -