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

📄 magic.c

📁 石器时代2.0完整版源代码.已经加入新功能. 在REDHAT9下GCC3.4编译成功.
💻 C
📖 第 1 页 / 共 2 页
字号:
	//     壅  民尼永弁	if( CHAR_getInt( charaindex, CHAR_MP ) < mp )return FALSE; //   井匀凶日母丢	// 仇及  芊反  骚卞    壅  仄化  中[穴奶瓜旦卞卅月仇午反  中	CHAR_setInt( charaindex, CHAR_MP,		CHAR_getInt( charaindex, CHAR_MP ) - mp );	// 爵    分匀凶日	if( IsBATTLING( charaindex ) == TRUE ){		return MAGIC_ResAndDef_Battle( charaindex, toindex, marray, mp );	}else{	// 爵    匹卅井匀凶日		return FALSE;	}}#ifdef _ATTACK_MAGICint MAGIC_AttMagic( int charaindex , int toindex , int marray , int mp ){   int battlemode;      if( FALSE == CHAR_CHECKINDEX( charaindex ) )   	return FALSE;   	   battlemode = CHAR_getWorkInt( charaindex , CHAR_WORKBATTLEMODE );   if( BATTLE_CHARMODE_INIT == battlemode )   	return FALSE;	 // 若是宠物魔法,不扣mp   if(CHAR_getInt(charaindex,CHAR_WHICHTYPE) == CHAR_TYPEPLAYER)	 {     if( CHAR_getInt( charaindex , CHAR_MP ) < mp )   	  return FALSE;        CHAR_setInt( charaindex , CHAR_MP , CHAR_getInt( charaindex , CHAR_MP ) - mp );	 }   if( TRUE == IsBATTLING( charaindex ) )   	 return MAGIC_AttMagic_Battle( charaindex , toindex , marray , mp );   	   return FALSE;   }#endif#ifdef _ITEM_METAMOint 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;}#endif#ifdef _ITEM_ATTSKILLMAGICint MAGIC_AttSkill( int charaindex, int toindex,int marray, int mp ){	int battlemode;	int battleindex=-1;	char *magicarg, funName[256];	int skillID=-1;	PETSKILL_CALLFUNC func;	if( CHAR_CHECKINDEX( charaindex ) == FALSE ) return FALSE;	if( IsBATTLING( charaindex ) == FALSE ) return FALSE;	battleindex = CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEINDEX );	if( BATTLE_CHECKINDEX( battleindex ) == FALSE ) return FALSE;	battlemode = CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEMODE );	if( battlemode == BATTLE_CHARMODE_INIT ) return FALSE;	if( toindex < 0 || toindex > 19 ) return FALSE;	if( CHAR_getInt( charaindex, CHAR_MP ) < mp ) return FALSE;	memset( funName, 0, sizeof( char)*256 );	//MAGIC_Recovery_Battle( charaindex, toindex, marray, mp );	magicarg = MAGIC_getChar( marray, MAGIC_OPTION );	if ( magicarg == "\0") return FALSE;	if( strstr( magicarg, ";" ) != NULL )	{		char buff1[256];		if( getStringFromIndexWithDelim( magicarg, ";", 1, buff1, sizeof( buff1)) == FALSE )			return FALSE;		snprintf( funName, sizeof(funName), buff1);		if( getStringFromIndexWithDelim( magicarg, ";", 2, buff1, sizeof( buff1)) == FALSE )			return FALSE;		skillID = atoi( buff1);	}else		return FALSE;	func = PETSKILL_getPetskillFuncPointer( funName);	if( !func ){		print("\n *func not FOUND !!");		return FALSE;	}	if( func( charaindex,  toindex,  skillID, "MAGICSKILL" ) == FALSE ) return FALSE;	CHAR_setInt( charaindex, CHAR_MP, CHAR_getInt( charaindex, CHAR_MP ) - mp );	return TRUE;}#endif#ifdef _MAGIC_BARRIER// vincent  精灵:魔障int	MAGIC_Barrier( 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 );	}	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_BARRIER, Success, 30, 1.0, &perStatus ) == TRUE )			{		       CHAR_setWorkInt( toindex, CHAR_WORKBARRIER, turn+1 );//		       BATTLE_BadStatusString( ToList[i], BATTLE_ST_BARRIER );			}		}		return TRUE;	}else{		return FALSE;	}}#endif#ifdef _MAGIC_NOCAST// vincent  精灵:沉默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;	}}#endif#ifdef _MAGIC_WEAKEN// vincent  精灵:虚弱int	MAGIC_Weaken( int charaindex, int toindex, int marray, int mp ){	int battlemode;	//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 );	//check是否战斗中	if( IsBATTLING( charaindex ) == TRUE ){		return MAGIC_ParamChange_Turn_Battle( charaindex, toindex, marray, mp );	}else{		return FALSE;	}}#endif#ifdef _MAGIC_TOCALLint MAGIC_ToCallDragon( int charaindex, int toindex,int marray, int mp ){	int battlemode;   	//print("MAGIC_ToCallDragon in .................\n");	if( FALSE == CHAR_CHECKINDEX( charaindex ) )		return FALSE;   		battlemode = CHAR_getWorkInt( charaindex , CHAR_WORKBATTLEMODE );	if( BATTLE_CHARMODE_INIT == battlemode )		return FALSE;	if( CHAR_getInt( charaindex , CHAR_MP ) < mp )		return FALSE;   	CHAR_setInt( charaindex , CHAR_MP , CHAR_getInt( charaindex , CHAR_MP ) - mp );	if( TRUE == IsBATTLING( charaindex ) )		return MAGIC_ToCallDragon_Battle( charaindex , toindex , marray , mp );   		return FALSE;   }#endif

⌨️ 快捷键说明

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