Exemplo n.º 1
0
void ITEM_useFirecracker_Battle( charaindex, toindex, haveitemindex)
{
	int itemindex, battleindex, masteridx=-1, index2;
	
	char szWork[128];
#ifdef _FIX_FIRECRACKER
	int petid=-1, i=1;
	BOOL FINDPET=FALSE;
	char *buff1;
	char token[256], buf1[256];
#else
	int PetEscape = 0;
#endif

	itemindex = CHAR_getItemIndex(charaindex,haveitemindex);
	// Àˬdª««~
	if(!ITEM_CHECKINDEX(itemindex)) return;

	battleindex = CHAR_getWorkInt(charaindex,CHAR_WORKBATTLEINDEX);
#ifdef _FIX_FIRECRACKER
	index2 = BATTLE_No2Index( battleindex, toindex);
	if( !CHAR_CHECKINDEX( index2) ) return;
	{
		int attackNo = BATTLE_Index2No( battleindex, charaindex );
		int safeSide = 0;
		int MySide_start, MySide_end;
		if( attackNo >= 10 )
			safeSide = 1;

		MySide_start = safeSide*SIDE_OFFSET;
		MySide_end = ((safeSide*SIDE_OFFSET) + SIDE_OFFSET);

		if( (toindex >= MySide_start) && (toindex<MySide_end) ){	//¦PÃä
			return;
		}
	}

	if( BATTLE_Index2No( battleindex, charaindex ) == toindex ){
		BATTLE_ItemUseDelete(charaindex,haveitemindex);//¥Î¦b¦Û¨­
		return;
	}

	if( CHAR_getInt( index2, CHAR_WHICHTYPE) == CHAR_TYPEPLAYER ) {
		petid = -1;//§@¥Î¦b¤Hª«
	}else if( CHAR_getInt( index2, CHAR_WHICHTYPE) == CHAR_TYPEPET ) {
		masteridx = BATTLE_No2Index(battleindex,toindex-5);//§@¥Î¦bÃdª«

		if( !CHAR_CHECKINDEX( masteridx) ) return;

		petid = CHAR_getInt(index2,CHAR_PETID);//Ãdª«id
	}else if( CHAR_getInt( index2, CHAR_WHICHTYPE) == CHAR_TYPEENEMY ) {
		petid = CHAR_getInt(index2,CHAR_PETID);
	}

	if( (buff1 = ITEM_getChar( itemindex, ITEM_ARGUMENT)) == NULL ) return;

	memset( token, 0, sizeof( token));
	if( NPC_Util_GetStrFromStrWithDelim( buff1, "KPET", token, sizeof( token) ) == NULL) {
		print( "Can't get KPET: %s!!\n", buff1);
		return;
	}

	// won fix
	while( getStringFromIndexWithDelim( token,"_", i, buf1, sizeof( buf1)) != FALSE )	{
	//while( getStringFromIndexWithDelim( token,"|", i, buf1, sizeof( buf1)) != FALSE )	{
		i++;
		if( petid == atoi( buf1) ){//¦~Ã~§P§O
			FINDPET = TRUE;
			break;
		}
	}

	sprintf(szWork,"BB|a%X|w3|r%X|f0|d0|p0|FF|",BATTLE_Index2No(battleindex,charaindex),toindex);
	BATTLESTR_ADD(szWork);//¥á¥XÃ@¬¶ªº°Êµe
//°e°T®§¦Üª±®a
	if( FINDPET == TRUE )	{//­Y¬°¦~Ã~
		char buf4[255];
		sprintf( buf4, "%s³QÀ~¶]¤F¡I", CHAR_getChar( index2, CHAR_NAME));

		BATTLE_Exit(index2,battleindex);//Â÷¶}¾Ô°«
		if( CHAR_CHECKINDEX( masteridx) ){
			CHAR_setInt(masteridx,CHAR_DEFAULTPET,-1);//µL°Ñ¾ÔÃd
			CHAR_talkToCli( masteridx,-1, buf4, CHAR_COLORYELLOW);
		}

		sprintf(szWork,"BQ|e%X|",toindex);//°k¶]°Êµe
		BATTLESTR_ADD(szWork);
		CHAR_talkToCli( charaindex,-1, buf4, CHAR_COLORYELLOW);
	}else	{
		CHAR_talkToCli( charaindex, -1, "¤°»ò¨Æ³£¨Sµo¥Í¡C", CHAR_COLORYELLOW);
	}
	BATTLE_ItemUseDelete( charaindex, haveitemindex);//§R°£Ã@¬¶
#else

	index2 = BATTLE_No2Index(battleindex,toindex);
	// ³Q¬µ¨ìªº¬O§_¬°Ãdª«
	if(CHAR_getInt(index2,CHAR_WHICHTYPE) == CHAR_TYPEPET) {
		// ¦pªG³Q¬µªº¬O¦~Ã~
		if(CHAR_getInt(index2,CHAR_PETID) >= 901 && CHAR_getInt(index2,CHAR_PETID) <= 904){
			// ¨ú±o¥Ø¼Ðªº¥¿«á¤èªº¨¤¦âªºindex
			masteridx = BATTLE_No2Index(battleindex,toindex-5);
			// ¦pªG¹ï¾Ôªº¬Oª±®a
			if(CHAR_getInt(masteridx,CHAR_WHICHTYPE) == CHAR_TYPEPLAYER) PetEscape = 1;
			else																									       print("\n¦~Ã~¦b¹J¼Ä®É¥X²{");
		}
	}
	
	// ¦pªG¤£¬O¬µ¦Û¤v
	if(BATTLE_Index2No(battleindex,charaindex) != toindex)
	{
		sprintf(szWork,"BB|a%X|w3|r%X|f0|d0|p0|FF|",BATTLE_Index2No(battleindex,charaindex),toindex);
		BATTLESTR_ADD(szWork);
		if(PetEscape)
		{
			BATTLE_Exit(index2,battleindex);
			CHAR_setInt(masteridx,CHAR_DEFAULTPET,-1);
			sprintf(szWork,"BQ|e%X|",toindex);
			BATTLESTR_ADD(szWork);
			CHAR_talkToCli(masteridx,-1,"¦~Ã~³QÀ~¶]¤F¡I",CHAR_COLORWHITE);
			CHAR_talkToCli(charaindex,-1,"¦~Ã~³QÀ~¶]¤F¡I",CHAR_COLORWHITE);
		}
	}
	CHAR_talkToCli(charaindex,-1,"¤°»ò¨Æ³£¨Sµo¥Í¡C",CHAR_COLORWHITE);
	CHAR_talkToCli(charaindex,-1,"¹D¨ã®ø¥¢¤F¡C",CHAR_COLORWHITE);
	// ¨Ï¥Î«á¹D¨ã®ø¥¢
	BATTLE_ItemUseDelete(charaindex,haveitemindex);
#endif
}
Exemplo n.º 2
0
int	MAGIC_Nocast( int charaindex, int toindex, int marray, int mp )
{

	int battlemode;
	int i,turn,perStatus;
	int ToList[SIDE_OFFSET*2+1];
	char *magicarg;
	int  attackNo=0;
	int battleindex,Success = 0;
	char szTurn[] = "turn";
	char szSuccess[] = "成";
	char *pszP;

	//check index
	if( CHAR_CHECKINDEX( charaindex ) == FALSE )return FALSE;

	battlemode = CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEMODE );

	// 爵  釩銨凜反  骰允月//??
	if( battlemode == BATTLE_CHARMODE_INIT ){
		return FALSE;
	}

	//mp不足
	if( CHAR_getInt( charaindex, CHAR_MP ) < mp )return FALSE; 
	//消耗mp
	CHAR_setInt( charaindex, CHAR_MP,
		CHAR_getInt( charaindex, CHAR_MP ) - mp );
    //魔法名稱
	magicarg = MAGIC_getChar( marray, MAGIC_OPTION );
	if( magicarg == NULL )	{
		print("\n magicarg == NULL ");
		return FALSE;
	}
	pszP = magicarg;

    //讀取作用回合數
	if( ( pszP = strstr( pszP, szTurn ) ) != NULL){
		pszP += sizeof( szTurn );
		sscanf( pszP, "%d", &turn );
	}
	// 岳    澀爛//命中率
	if( ( pszP = strstr( pszP, szSuccess ) ) != NULL){
		pszP += sizeof( szSuccess );
		sscanf( pszP, "%d", &Success );
	}
//               print("\nvincent-->MAGIC_Nocast use");
	battleindex = CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEINDEX );
	attackNo =  BATTLE_Index2No( battleindex, charaindex );
	BATTLE_MultiList( battleindex, toindex, ToList );
//施魔法動畫效果
	BATTLE_MagicEffect(battleindex, attackNo, ToList, MAGIC_EFFECT_USER, SPR_hoshi);
	charaindex = BATTLE_No2Index( battleindex, attackNo );
	//check是否戰鬥中
	if( IsBATTLING( charaindex ) == TRUE )
	{

		 for( i = 0; ToList[i] != -1; i ++ )
		{
		toindex = BATTLE_No2Index( battleindex, ToList[i] );
		    if( BATTLE_StatusAttackCheck( charaindex,toindex, BATTLE_ST_NOCAST, Success, 30, 1.0, &perStatus ) == TRUE 
				&& CHAR_getInt( toindex, CHAR_WHICHTYPE) != CHAR_TYPEPET)
			{
		       CHAR_setWorkInt( toindex, CHAR_WORKNOCAST, turn );
//無法展開咒術頁
	           lssproto_NC_send( getfdFromCharaIndex( toindex ), 1);
               //print("\nvincent-->NOCASTING2");
//		       BATTLE_BadStatusString( ToList[i], BATTLE_ST_NOCAST );
			}
		}
		return TRUE;
	}else{
		return FALSE;
	}
}
Exemplo n.º 3
0
void ITEM_useRefresh_Effect( charaindex, toindex, haveitemindex)
{
	int i,itemindex,ReceveEffect;
	char  *arg;
//	char szBuffer[128]="";
	int status = -1,attackNo,index2;
	int battleindex;
	char *pszP;

//print("\nvincent--ITEM_useRefresh_Effect");
	// Àˬdª««~
	itemindex = CHAR_getItemIndex(charaindex,haveitemindex);
	if(!ITEM_CHECKINDEX(itemindex)) return;
	arg = ITEM_getChar(itemindex, ITEM_ARGUMENT );
	pszP = arg;
	// ¸ú²Ì¤ò¼è  
	for( ;status == -1 && pszP[0] != 0; pszP++ ){
		// £±¤«¤é¸¡º÷
		for( i = 1; i < BATTLE_ST_END; i ++ ){
			// ¸ú²Ì¥Ô¥Ã¥¿¥ê¤«¡ª
			if( strncmp( pszP, aszStatus[i], 2 ) == 0 ){
				status = i;
				pszP +=2;
				break;
			}
		}
	}
//print("\nvincent-->status:%d",status);
	// ¸ú²Ì¤Ê¤¤¤Î¤Ç¼º  
	if( status == -1 ) return;

	// ¥Ð¥È¥ë  ¹æ
	battleindex = CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEINDEX );
	index2 = BATTLE_No2Index( battleindex, toindex);//³QÀ»¤¤¥Ø¼Ð¤§index
	attackNo = BATTLE_Index2No( battleindex, charaindex );
//    defNo = BATTLE_Index2No( battleindex, index2 );
//print("\nvincent-->charaindex:%d,attackNo:%d,index2:%d,defNo:%d,",charaindex,attackNo,index2,defNo);

    /* ¥­¥ã¥é¥¯¥¿¡¼¤Î½ê    ¥ê¥¹¥È¤«¤é¾Ãµî */
    CHAR_setItemIndex(charaindex, haveitemindex ,-1);
	CHAR_sendItemDataOne( charaindex, haveitemindex);/* ¥¢¥¤  ¥à¹¹¿· */
//	if( CHAR_getWorkInt( charaindex, StatusTbl[status] ) > 0 ){
//		ReceveEffect = SPR_tyusya;
//	}else{
//		ReceveEffect = SPR_hoshi;
//	}
	ReceveEffect = SPR_tyusya;//¥´°w
	BATTLE_MultiStatusRecovery( battleindex, attackNo, toindex,
		status, MAGIC_EFFECT_USER, ReceveEffect );
	/* ¾Ã¤¹ */
	ITEM_endExistItemsOne( itemindex );
//////////////////////////
//	BATTLE_MultiList( battleindex, defNo, ToList );
//		 for( i = 0; ToList[i] != -1; i ++ ){
//		toindex = BATTLE_No2Index( battleindex, ToList[i] );
//
//			}

		

////////////////////////////
}
Exemplo n.º 4
0
int MAGIC_Metamo( int charaindex, int toindex, int marray, int mp )
{
	int battlemode, haveindex, power, i;
	char msg[128];
	
	if( CHAR_CHECKINDEX( charaindex ) == FALSE ) return FALSE;
	
	battlemode = CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEMODE );
	// 爵  釩銨凜反  骰允月
	if( battlemode == BATTLE_CHARMODE_INIT ){
		return FALSE;
	}
	// 爵    分勻凶日
	if( IsBATTLING( charaindex ) == TRUE ){
		//MAGIC_Recovery_Battle( charaindex, toindex, marray, mp );
		//return FALSE;
		toindex = BATTLE_No2Index(
				CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEINDEX ), toindex );
		//print(" battle_metamo:%d ", toindex);
	}

	if( CHAR_CHECKINDEX( toindex ) == FALSE ) return FALSE;

	if( CHAR_getInt( charaindex, CHAR_RIDEPET ) != -1 ){
		CHAR_talkToCli( charaindex, -1, "無法變身,騎乘中不能變身!", CHAR_COLORWHITE );
		return FALSE;
	}
#ifdef _FIX_METAMORIDE
	if( CHAR_CHECKJOINENEMY( charaindex) == TRUE ){
		CHAR_talkToCli( charaindex, -1, "無法變身,搭乘中不能變身!", CHAR_COLORYELLOW );
		return FALSE;
	}
#else
	if( CHAR_getInt( charaindex, CHAR_BASEIMAGENUMBER) == 100259 ){
		CHAR_talkToCli( charaindex, -1, "無法變身,搭乘中不能變身!", CHAR_COLORWHITE );
		return FALSE;
	}
#endif
#ifdef _FIXBUG_ATTACKBOW
	{
		int armindex = CHAR_getItemIndex( charaindex, CHAR_ARM);
		if( ITEM_CHECKINDEX( armindex) == TRUE )	{
			int armtype = BATTLE_GetWepon( charaindex);
			if( armtype == ITEM_BOW || armtype == ITEM_BOUNDTHROW ||
				armtype == ITEM_BREAKTHROW || armtype == ITEM_BOOMERANG)	{
				CHAR_talkToCli( charaindex, -1, "使用遠距離武器無法變身!", CHAR_COLORYELLOW );
				return FALSE;
			}
		}
	}
#endif
	haveindex = -1;	
	for( i = 0; i < 5; i++ )
	{
		if( CHAR_getCharPet( charaindex, i) == toindex ) {
			haveindex = i;
			break;
		}
	}
	if( haveindex == -1 && charaindex != toindex )
	{
		CHAR_talkToCli( charaindex, -1, "無法變身,只能變成自己的寵物!", CHAR_COLORWHITE );
		return FALSE;
	}

	if( CHAR_getInt( toindex, CHAR_BASEIMAGENUMBER) == 100259 ){
		CHAR_talkToCli( charaindex, -1, "不能變身成加美!", CHAR_COLORWHITE );
		return FALSE;
	}

	power = atoi(MAGIC_getChar( marray, MAGIC_OPTION ));

	if( CHAR_getInt( charaindex, CHAR_MP ) < mp )return FALSE;
	CHAR_setInt( charaindex, CHAR_MP,
		CHAR_getInt( charaindex, CHAR_MP ) - mp );
	CHAR_send_P_StatusString( charaindex , CHAR_P_STRING_MP);

	if( toindex != charaindex ) {
		CHAR_setWorkInt( charaindex, CHAR_WORKITEMMETAMO, NowTime.tv_sec +power);
		sprintf( msg, "變身成%s!", CHAR_getChar( toindex, CHAR_NAME) );
	}
	else {
		CHAR_setWorkInt( charaindex, CHAR_WORKITEMMETAMO, 0);
		sprintf( msg, "變回自己!");
	}
	CHAR_talkToCli( charaindex, -1, msg, CHAR_COLORWHITE );

	CHAR_setInt( charaindex, CHAR_BASEIMAGENUMBER,
					CHAR_getInt( toindex, CHAR_BASEBASEIMAGENUMBER) );
	CHAR_complianceParameter( charaindex);
	CHAR_sendCToArroundCharacter( CHAR_getWorkInt( charaindex , CHAR_WORKOBJINDEX ));
	CHAR_send_P_StatusString( charaindex , CHAR_P_STRING_BASEBASEIMAGENUMBER);
//#endif

	return TRUE;
}
Exemplo n.º 5
0
void ITEM_useFirecracker_Battle( charaindex, toindex, haveitemindex)
{
	int itemindex, battleindex, masteridx=-1, index2;

	char szWork[128];
#ifdef _FIX_FIRECRACKER
	int petid=-1, i=1;
	BOOL FINDPET=FALSE;
	char *buff1;
	char token[256], buf1[256];
#else
	int PetEscape = 0;
#endif

	itemindex = CHAR_getItemIndex(charaindex,haveitemindex);
	// �����Ʒ
	if(!ITEM_CHECKINDEX(itemindex)) return;

	battleindex = CHAR_getWorkInt(charaindex,CHAR_WORKBATTLEINDEX);
#ifdef _FIX_FIRECRACKER
	index2 = BATTLE_No2Index( battleindex, toindex);
	if( !CHAR_CHECKINDEX( index2) ) return;
	{
		int attackNo = BATTLE_Index2No( battleindex, charaindex );
		int safeSide = 0;
		int MySide_start, MySide_end;
		if( attackNo >= 10 )
			safeSide = 1;

		MySide_start = safeSide*SIDE_OFFSET;
		MySide_end = ((safeSide*SIDE_OFFSET) + SIDE_OFFSET);

		if( (toindex >= MySide_start) && (toindex<MySide_end) ){	//ͬ��
			return;
		}
	}

	if( BATTLE_Index2No( battleindex, charaindex ) == toindex ){
		BATTLE_ItemUseDelete(charaindex,haveitemindex);//��������
		return;
	}

	if( CHAR_getInt( index2, CHAR_WHICHTYPE) == CHAR_TYPEPLAYER ) {
		petid = -1;//����������
	}else if( CHAR_getInt( index2, CHAR_WHICHTYPE) == CHAR_TYPEPET ) {
		masteridx = BATTLE_No2Index(battleindex,toindex-5);//�����ڳ���

		if( !CHAR_CHECKINDEX( masteridx) ) return;

		petid = CHAR_getInt(index2,CHAR_PETID);//����id
	}else if( CHAR_getInt( index2, CHAR_WHICHTYPE) == CHAR_TYPEENEMY ) {
		petid = CHAR_getInt(index2,CHAR_PETID);
	}

	if( (buff1 = ITEM_getChar( itemindex, ITEM_ARGUMENT)) == NULL ) return;

	memset( token, 0, sizeof( token));
	if( NPC_Util_GetStrFromStrWithDelim( buff1, "KPET", token, sizeof( token) ) == NULL) {
		print( "Can't get KPET: %s!!\n", buff1);
		return;
	}

	// won fix
	while( getStringFromIndexWithDelim( token,"_", i, buf1, sizeof( buf1)) != FALSE )	{
	//while( getStringFromIndexWithDelim( token,"|", i, buf1, sizeof( buf1)) != FALSE )	{
		i++;
		if( petid == atoi( buf1) ){//�����б�
			FINDPET = TRUE;
			break;
		}
	}

	sprintf(szWork,"BB|a%X|w3|r%X|f0|d0|p0|FF|",BATTLE_Index2No(battleindex,charaindex),toindex);
	BATTLESTR_ADD(szWork);//�������ڵĶ���
//��ѶϢ�����
	if( FINDPET == TRUE )	{//������
		char buf4[255];
		sprintf( buf4, "%s�������ˣ�", CHAR_getChar( index2, CHAR_NAME));

		BATTLE_Exit(index2,battleindex);//�뿪ս��
		if( CHAR_CHECKINDEX( masteridx) ){
			CHAR_setInt(masteridx,CHAR_DEFAULTPET,-1);//�޲�ս��
			CHAR_talkToCli( masteridx,-1, buf4, CHAR_COLORYELLOW);
		}

		sprintf(szWork,"BQ|e%X|",toindex);//���ܶ���
		BATTLESTR_ADD(szWork);
		CHAR_talkToCli( charaindex,-1, buf4, CHAR_COLORYELLOW);
	}else	{
		CHAR_talkToCli( charaindex, -1, "ʲ���¶�û������", CHAR_COLORYELLOW);
	}
	BATTLE_ItemUseDelete( charaindex, haveitemindex);//ɾ������
#else

	index2 = BATTLE_No2Index(battleindex,toindex);
	// ��ը�����Ƿ�Ϊ����
	if(CHAR_getInt(index2,CHAR_WHICHTYPE) == CHAR_TYPEPET) {
		// �����ը��������
		if(CHAR_getInt(index2,CHAR_PETID) >= 901 && CHAR_getInt(index2,CHAR_PETID) <= 904){
			// ȡ��Ŀ������᷽�Ľ�ɫ��index
			masteridx = BATTLE_No2Index(battleindex,toindex-5);
			// �����ս�������
			if(CHAR_getInt(masteridx,CHAR_WHICHTYPE) == CHAR_TYPEPLAYER) PetEscape = 1;
			else																									       print("\n����������ʱ����");
		}
	}

	// �������ը�Լ�
	if(BATTLE_Index2No(battleindex,charaindex) != toindex)
	{
		sprintf(szWork,"BB|a%X|w3|r%X|f0|d0|p0|FF|",BATTLE_Index2No(battleindex,charaindex),toindex);
		BATTLESTR_ADD(szWork);
		if(PetEscape)
		{
			BATTLE_Exit(index2,battleindex);
			CHAR_setInt(masteridx,CHAR_DEFAULTPET,-1);
			sprintf(szWork,"BQ|e%X|",toindex);
			BATTLESTR_ADD(szWork);
			CHAR_talkToCli(masteridx,-1,"���ޱ������ˣ�",CHAR_COLORWHITE);
			CHAR_talkToCli(charaindex,-1,"���ޱ������ˣ�",CHAR_COLORWHITE);
		}
	}
	CHAR_talkToCli(charaindex,-1,"ʲ���¶�û������",CHAR_COLORWHITE);
	CHAR_talkToCli(charaindex,-1,"������ʧ�ˡ�",CHAR_COLORWHITE);
	// ʹ���������ʧ
	BATTLE_ItemUseDelete(charaindex,haveitemindex);
#endif
}
Exemplo n.º 6
0
void ITEM_useRefresh_Effect( charaindex, toindex, haveitemindex)
{
	int i,itemindex,ReceveEffect;
	char  *arg;
//	char szBuffer[128]="";
	int status = -1,attackNo,index2;
	int battleindex;
	char *pszP;

//print("\nvincent--ITEM_useRefresh_Effect");
	// �����Ʒ
	itemindex = CHAR_getItemIndex(charaindex,haveitemindex);
	if(!ITEM_CHECKINDEX(itemindex)) return;
	arg = ITEM_getChar(itemindex, ITEM_ARGUMENT );
	pszP = arg;
	// ����
	for( ;status == -1 && pszP[0] != 0; pszP++ ){
		// �ྮ�ո���
		for( i = 1; i < BATTLE_ST_END; i ++ ){
			// ���������������
			if( strncmp( pszP, aszStatus[i], 2 ) == 0 ){
				status = i;
				pszP +=2;
				break;
			}
		}
	}
//print("\nvincent-->status:%d",status);
	// ���ئ�м�ƥ��
	if( status == -1 ) return;

	// ������  į
	battleindex = CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEINDEX );
	index2 = BATTLE_No2Index( battleindex, toindex);//������Ŀ��֮index
	attackNo = BATTLE_Index2No( battleindex, charaindex );
//    defNo = BATTLE_Index2No( battleindex, index2 );
//print("\nvincent-->charaindex:%d,attackNo:%d,index2:%d,defNo:%d,",charaindex,attackNo,index2,defNo);

    /* ƽ�ҷ�����������    �����������ջ� */
    CHAR_setItemIndex(charaindex, haveitemindex ,-1);
	CHAR_sendItemDataOne( charaindex, haveitemindex);/* ʧ��  ة��ޥ */
//	if( CHAR_getWorkInt( charaindex, StatusTbl[status] ) > 0 ){
//		ReceveEffect = SPR_tyusya;
//	}else{
//		ReceveEffect = SPR_hoshi;
//	}
	ReceveEffect = SPR_tyusya;//����
	BATTLE_MultiStatusRecovery( battleindex, attackNo, toindex,
		status, MAGIC_EFFECT_USER, ReceveEffect );
	/* ���� */
	ITEM_endExistItemsOne( itemindex );
//////////////////////////
//	BATTLE_MultiList( battleindex, defNo, ToList );
//		 for( i = 0; ToList[i] != -1; i ++ ){
//		toindex = BATTLE_No2Index( battleindex, ToList[i] );
//
//			}



////////////////////////////
}
Exemplo n.º 7
0
int	MAGIC_Nocast( int charaindex, int toindex, int marray, int mp )
{

    int battlemode;
    int i,turn,perStatus;
    int ToList[SIDE_OFFSET*2+1];
    char *magicarg;
    int  attackNo=0;
    int battleindex,Success = 0;
    char szTurn[] = "turn";
    char szSuccess[] = "³É";
    char *pszP;

    //check index
    if( CHAR_CHECKINDEX( charaindex ) == FALSE )return FALSE;

    battlemode = CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEMODE );

    // ¾ô  ·°ï§ÁÝ·´  ÷»ÔÊÔÂ//??
    if( battlemode == BATTLE_CHARMODE_INIT ) {
        return FALSE;
    }

    //mp²»×ã
    if( CHAR_getInt( charaindex, CHAR_MP ) < mp )return FALSE;
    //ÏûºÄmp
    CHAR_setInt( charaindex, CHAR_MP,
                 CHAR_getInt( charaindex, CHAR_MP ) - mp );
    //ħ·¨Ãû³Æ
    magicarg = MAGIC_getChar( marray, MAGIC_OPTION );
    if( magicarg == "\0" )	{
        print("\n magicarg == NULL ");
        return FALSE;
    }
    pszP = magicarg;

    //¶ÁÈ¡×÷ÓûغÏÊý
    if( ( pszP = strstr( pszP, szTurn ) ) != NULL) {
        pszP += sizeof( szTurn );
        sscanf( pszP, "%d", &turn );
    }
    // ÔÀ    ɬÀÃ//ÃüÖÐÂÊ
    if( ( pszP = strstr( pszP, szSuccess ) ) != NULL) {
        pszP += sizeof( szSuccess );
        sscanf( pszP, "%d", &Success );
    }
//               print("\nvincent-->MAGIC_Nocast use");
    battleindex = CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEINDEX );
    attackNo =  BATTLE_Index2No( battleindex, charaindex );
    BATTLE_MultiList( battleindex, toindex, ToList );
//ʩħ·¨¶¯»­Ð§¹û
    BATTLE_MagicEffect(battleindex, attackNo, ToList, MAGIC_EFFECT_USER, SPR_hoshi);
    charaindex = BATTLE_No2Index( battleindex, attackNo );
    //checkÊÇ·ñÕ½¶·ÖÐ
    if( IsBATTLING( charaindex ) == TRUE )
    {

        for( i = 0; ToList[i] != -1; i ++ )
        {
            toindex = BATTLE_No2Index( battleindex, ToList[i] );
            if( BATTLE_StatusAttackCheck( charaindex,toindex, BATTLE_ST_NOCAST, Success, 30, 1.0, &perStatus ) == TRUE
                    && CHAR_getInt( toindex, CHAR_WHICHTYPE) != CHAR_TYPEPET)
            {
                CHAR_setWorkInt( toindex, CHAR_WORKNOCAST, turn );
//ÎÞ·¨Õ¹¿ªÖäÊõÒ³
                lssproto_NC_send( getfdFromCharaIndex( toindex ), 1);
                //print("\nvincent-->NOCASTING2");
//		       BATTLE_BadStatusString( ToList[i], BATTLE_ST_NOCAST );
            }
        }
        return TRUE;
    } else {
        return FALSE;
    }
}
Exemplo n.º 8
0
int MAGIC_Metamo( int charaindex, int toindex, int marray, int mp )
{
    int battlemode, haveindex, power, i;
    char msg[128];

    if( CHAR_CHECKINDEX( charaindex ) == FALSE ) return FALSE;

    battlemode = CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEMODE );
    // ¾ô  ·°ï§ÁÝ·´  ÷»ÔÊÔÂ
    if( battlemode == BATTLE_CHARMODE_INIT ) {
        return FALSE;
    }
    // ¾ô    ·ÖÔÈÐ×ÈÕ
    if( IsBATTLING( charaindex ) == TRUE ) {
        //MAGIC_Recovery_Battle( charaindex, toindex, marray, mp );
        //return FALSE;
        toindex = BATTLE_No2Index(
                      CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEINDEX ), toindex );
        //print(" battle_metamo:%d ", toindex);
    }

    if( CHAR_CHECKINDEX( toindex ) == FALSE ) return FALSE;

    if( CHAR_getInt( charaindex, CHAR_RIDEPET ) != -1 ) {
        CHAR_talkToCli( charaindex, -1, "ÎÞ·¨±äÉí£¬Æï³ËÖв»ÄܱäÉí£¡", CHAR_COLORWHITE );
        return FALSE;
    }
#ifdef _FIX_METAMORIDE
    if( CHAR_CHECKJOINENEMY( charaindex) == TRUE ) {
        CHAR_talkToCli( charaindex, -1, "ÎÞ·¨±äÉí£¬´î³ËÖв»ÄܱäÉí£¡", CHAR_COLORYELLOW );
        return FALSE;
    }
#else
    if( CHAR_getInt( charaindex, CHAR_BASEIMAGENUMBER) == 100259 ) {
        CHAR_talkToCli( charaindex, -1, "ÎÞ·¨±äÉí£¬´î³ËÖв»ÄܱäÉí£¡", CHAR_COLORWHITE );
        return FALSE;
    }
#endif
#ifdef _FIXBUG_ATTACKBOW
    {
        int armindex = CHAR_getItemIndex( charaindex, CHAR_ARM);
        if( ITEM_CHECKINDEX( armindex) == TRUE )	{
            int armtype = BATTLE_GetWepon( charaindex);
            if( armtype == ITEM_BOW || armtype == ITEM_BOUNDTHROW ||
                    armtype == ITEM_BREAKTHROW || armtype == ITEM_BOOMERANG)	{
                CHAR_talkToCli( charaindex, -1, "ʹÓÃÔ¶¾àÀëÎäÆ÷ÎÞ·¨±äÉí£¡", CHAR_COLORYELLOW );
                return FALSE;
            }
        }
    }
#endif
    haveindex = -1;
    for( i = 0; i < 5; i++ )
    {
        if( CHAR_getCharPet( charaindex, i) == toindex ) {
            haveindex = i;
            break;
        }
    }
    if( haveindex == -1 && charaindex != toindex )
    {
        CHAR_talkToCli( charaindex, -1, "ÎÞ·¨±äÉí£¬Ö»Äܱä³É×Ô¼ºµÄ³èÎ", CHAR_COLORWHITE );
        return FALSE;
    }

    if( CHAR_getInt( toindex, CHAR_BASEIMAGENUMBER) == 100259 ) {
        CHAR_talkToCli( charaindex, -1, "²»ÄܱäÉí³É¼ÓÃÀ£¡", CHAR_COLORWHITE );
        return FALSE;
    }

    power = atoi(MAGIC_getChar( marray, MAGIC_OPTION ));

    if( CHAR_getInt( charaindex, CHAR_MP ) < mp )return FALSE;
    CHAR_setInt( charaindex, CHAR_MP,
                 CHAR_getInt( charaindex, CHAR_MP ) - mp );
    CHAR_send_P_StatusString( charaindex , CHAR_P_STRING_MP);

    if( toindex != charaindex ) {
        CHAR_setWorkInt( charaindex, CHAR_WORKITEMMETAMO, NowTime.tv_sec +power);
        sprintf( msg, "±äÉí³É%s£¡", CHAR_getChar( toindex, CHAR_NAME) );
    }
    else {
        CHAR_setWorkInt( charaindex, CHAR_WORKITEMMETAMO, 0);
        sprintf( msg, "±ä»Ø×Ô¼º£¡");
    }
    CHAR_talkToCli( charaindex, -1, msg, CHAR_COLORWHITE );

    CHAR_setInt( charaindex, CHAR_BASEIMAGENUMBER,
                 CHAR_getInt( toindex, CHAR_BASEBASEIMAGENUMBER) );
    CHAR_complianceParameter( charaindex);
    CHAR_sendCToArroundCharacter( CHAR_getWorkInt( charaindex , CHAR_WORKOBJINDEX ));
    CHAR_send_P_StatusString( charaindex , CHAR_P_STRING_BASEBASEIMAGENUMBER);
//#endif

    return TRUE;
}