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

📄 pet_skill.c

📁 石器时代2.0完整版源代码.已经加入新功能. 在REDHAT9下GCC3.4编译成功.
💻 C
📖 第 1 页 / 共 5 页
字号:
#ifdef _SKILL_WILDVIOLENT_ATTint PETSKILL_WildViolentAttack(	int charaindex,	int toindex,	int array,	char *data){	char *pszOption="\0", *pszP;	float fPer = 0.01;	int strdef=0;	int iDuck = 0;	CHAR_setWorkInt( charaindex, CHAR_WORKBATTLECOM1, BATTLE_COM_S_WILDVIOLENTATTACK);	CHAR_setWorkInt( charaindex, CHAR_WORKBATTLECOM2, toindex );	CHAR_setWorkInt( charaindex, CHAR_WORKBATTLEMODE, BATTLE_CHARMODE_C_OK );	pszOption = PETSKILL_getChar( array, PETSKILL_OPTION );	if( pszOption == "\0" )	{		print("\n pszOption == NULL ");		return FALSE;	}	//读取攻值	if( (pszP = strstr( pszOption, "攻%" ) ) != NULL ){		sscanf( pszP+3, "%f", &fPer );		fPer=(fPer/100);		//设定修正值		strdef=CHAR_getWorkInt(charaindex,CHAR_WORKFIXSTR);		strdef=(int)(strdef * fPer);		CHAR_setWorkInt(charaindex,CHAR_WORKATTACKPOWER,(CHAR_getWorkInt(charaindex,CHAR_WORKFIXSTR)+strdef));	}    //读取防值	if( (pszP = strstr( pszOption, "防%" ) ) != NULL ){		sscanf( pszP+3, "%f", &fPer );		fPer=(fPer/100);		//设定修正值		strdef=CHAR_getWorkInt(charaindex,CHAR_WORKFIXTOUGH);		strdef=(int)(strdef * fPer);		CHAR_setWorkInt(charaindex,CHAR_WORKDEFENCEPOWER,(CHAR_getWorkInt(charaindex,CHAR_WORKFIXTOUGH)+strdef));	}    //读取避值	if( ( pszP = strstr( pszOption, "避" ) ) != NULL){		sscanf(	 pszP+2, "%d", &iDuck );	}	//       膜恳毛忡绣	CHAR_SETWORKINT_HIGH( charaindex, CHAR_WORKBATTLECOM3, iDuck );	return TRUE;}#endif#ifdef _SKILL_SACRIFICEint PETSKILL_Sacrifice(	int charaindex,	int toindex,	int array,	char *data){	char buf[256];      if(CHAR_getInt(charaindex,CHAR_HP) > CHAR_getWorkInt(charaindex,CHAR_WORKMAXHP)*0.2 )		{			CHAR_setWorkInt( charaindex, CHAR_WORKBATTLECOM1, BATTLE_COM_S_SACRIFICE);			CHAR_setWorkInt( charaindex, CHAR_WORKBATTLECOM2, toindex );			CHAR_setWorkInt( charaindex, CHAR_WORKBATTLEMODE, BATTLE_CHARMODE_C_OK );		}	  else		{		        			sprintf(buf, "%s自身耐久力不足 救援失败!!", CHAR_getChar( charaindex, CHAR_NAME ));			CHAR_talkToCli( CHAR_getWorkInt(charaindex, CHAR_WORKPLAYERINDEX), -1, buf, CHAR_COLORYELLOW);				return FALSE;		}				return TRUE;}#endif#ifdef _SKILL_REFRESHint PETSKILL_Refresh(	int charaindex,	int toindex,	int array,	char *data){			CHAR_setWorkInt( charaindex, CHAR_WORKBATTLECOM1, BATTLE_COM_S_REFRESH);			CHAR_setWorkInt( charaindex, CHAR_WORKBATTLECOM2, toindex );			CHAR_setWorkInt( charaindex, CHAR_WORKBATTLEMODE, BATTLE_CHARMODE_C_OK );			CHAR_SETWORKINT_LOW( charaindex, CHAR_WORKBATTLECOM3, array);				return TRUE;}#endif#ifdef _SKILL_WEAKEN  //vincent宠技:虚弱int PETSKILL_Weaken(	int charaindex,	int toindex,	int array,	char *data){			CHAR_setWorkInt( charaindex, CHAR_WORKBATTLECOM1, BATTLE_COM_S_WEAKEN);			CHAR_setWorkInt( charaindex, CHAR_WORKBATTLECOM2, toindex );			CHAR_setWorkInt( charaindex, CHAR_WORKBATTLEMODE, BATTLE_CHARMODE_C_OK );			CHAR_SETWORKINT_LOW( charaindex, CHAR_WORKBATTLECOM3, array);				return TRUE;}#endif#ifdef _SKILL_DEEPPOISON  //vincent宠技:剧毒 int PETSKILL_Deeppoison(	int charaindex,	int toindex,	int array,	char *data){			CHAR_setWorkInt( charaindex, CHAR_WORKBATTLECOM1, BATTLE_COM_S_DEEPPOISON);			CHAR_setWorkInt( charaindex, CHAR_WORKBATTLECOM2, toindex );			CHAR_setWorkInt( charaindex, CHAR_WORKBATTLEMODE, BATTLE_CHARMODE_C_OK );			CHAR_SETWORKINT_LOW( charaindex, CHAR_WORKBATTLECOM3, array);				return TRUE;}#endif#ifdef _SKILL_BARRIER  //vincent宠技:魔障int PETSKILL_Barrier(	int charaindex,	int toindex,	int array,	char *data){			CHAR_setWorkInt( charaindex, CHAR_WORKBATTLECOM1, BATTLE_COM_S_BARRIER);			CHAR_setWorkInt( charaindex, CHAR_WORKBATTLECOM2, toindex );			CHAR_setWorkInt( charaindex, CHAR_WORKBATTLEMODE, BATTLE_CHARMODE_C_OK );			CHAR_SETWORKINT_LOW( charaindex, CHAR_WORKBATTLECOM3, array);				return TRUE;}#endif#ifdef _SKILL_ROAR //vincent宠技:大吼int PETSKILL_Roar(	int charaindex,	int toindex,	int array,	char *data){			CHAR_setWorkInt( charaindex, CHAR_WORKBATTLECOM1, BATTLE_COM_S_ROAR);			CHAR_setWorkInt( charaindex, CHAR_WORKBATTLECOM2, toindex );			CHAR_setWorkInt( charaindex, CHAR_WORKBATTLEMODE, BATTLE_CHARMODE_C_OK );			CHAR_SETWORKINT_LOW( charaindex, CHAR_WORKBATTLECOM3, array);				return TRUE;}#endif#ifdef _SKILL_GUARDBREAK2//破除防御2 vincent add 2002/05/20int PETSKILL_GuardBreak2(	int charaindex,	int toNo,	int array,	char *data){	CHAR_setWorkInt( charaindex, CHAR_WORKBATTLECOM1, BATTLE_COM_S_GBREAK2 );	CHAR_setWorkInt( charaindex, CHAR_WORKBATTLECOM2, toNo );	CHAR_setWorkInt( charaindex, CHAR_WORKBATTLEMODE, BATTLE_CHARMODE_C_OK );	return TRUE;}#endif //*******************************************************int PETSKILL_NormalAttack(	int charaindex,	int toindex,	int array,	char *data){	CHAR_setWorkInt( charaindex, CHAR_WORKBATTLECOM1, BATTLE_COM_ATTACK );	CHAR_setWorkInt( charaindex, CHAR_WORKBATTLECOM2, toindex );	CHAR_setWorkInt( charaindex, CHAR_WORKBATTLEMODE, BATTLE_CHARMODE_C_OK );	return TRUE;}int PETSKILL_NormalGuard(	int charaindex,	int toindex,	int array,	char *data){	CHAR_setWorkInt( charaindex, CHAR_WORKBATTLECOM1, BATTLE_COM_GUARD );	CHAR_setWorkInt( charaindex, CHAR_WORKBATTLECOM2, toindex );	CHAR_setWorkInt( charaindex, CHAR_WORKBATTLEMODE, BATTLE_CHARMODE_C_OK );	return TRUE;}int PETSKILL_None(	int charaindex,	int toindex,	int array,	char *data){	CHAR_setWorkInt( charaindex, CHAR_WORKBATTLECOM1, BATTLE_COM_NONE );	CHAR_setWorkInt( charaindex, CHAR_WORKBATTLECOM2, toindex );	CHAR_setWorkInt( charaindex, CHAR_WORKBATTLEMODE, BATTLE_CHARMODE_C_OK );	return TRUE;}int PETSKILL_EarthRound(	int charaindex,	int toNo,	int array,	char *data){	char *pszOption, *pszP;	float fPer = 0.01;	CHAR_setWorkInt( charaindex, CHAR_WORKBATTLECOM1, BATTLE_COM_S_EARTHROUND1 );	CHAR_setWorkInt( charaindex, CHAR_WORKBATTLECOM2, toNo );	CHAR_setWorkInt( charaindex, CHAR_WORKBATTLEMODE, BATTLE_CHARMODE_C_OK );	pszOption = PETSKILL_getChar( array, PETSKILL_OPTION );	if( (pszP = strstr( pszOption, "攻%" ) ) != NULL ){		sscanf( pszP+3, "%f", &fPer );		CHAR_setWorkInt(charaindex,CHAR_WORKBATTLECOM3, (int)fPer );	}	return TRUE;}int PETSKILL_GuardBreak(	int charaindex,	int toNo,	int array,	char *data){	char *pszOption, *pszP;	float fPer = 0.01;	int strdef;	CHAR_setWorkInt( charaindex, CHAR_WORKBATTLECOM1, BATTLE_COM_S_GBREAK );	CHAR_setWorkInt( charaindex, CHAR_WORKBATTLECOM2, toNo );	CHAR_setWorkInt( charaindex, CHAR_WORKBATTLEMODE, BATTLE_CHARMODE_C_OK );	pszOption = PETSKILL_getChar( array, PETSKILL_OPTION );	if( (pszP = strstr( pszOption, "攻%" ) ) != NULL ){		sscanf( pszP+3, "%f", &fPer );		fPer=(fPer/100);		strdef=CHAR_getWorkInt(charaindex,CHAR_WORKFIXSTR);		strdef=(int)(strdef * fPer);		CHAR_setWorkInt(charaindex,CHAR_WORKATTACKPOWER,(CHAR_getWorkInt(charaindex,CHAR_WORKFIXSTR)+strdef));	}	return TRUE;}#ifdef _SKILL_SPEEDY_ATT//疾速攻击 vincent add 2002/05/20int PETSKILL_SpeedyAttack(	int charaindex,	int toNo,	int array,	char *data){	char *pszOption="\0", *pszP;	float fPer = 0.01;	int strdef=0;	CHAR_setWorkInt( charaindex, CHAR_WORKBATTLECOM1, BATTLE_COM_S_SPEEDYATTACK );	CHAR_setWorkInt( charaindex, CHAR_WORKBATTLECOM2, toNo );	CHAR_setWorkInt( charaindex, CHAR_WORKBATTLEMODE, BATTLE_CHARMODE_C_OK );	pszOption = PETSKILL_getChar( array, PETSKILL_OPTION );	if( pszOption == "\0" )	{		print("\n pszOption == NULL ");		return FALSE;	}    //读取防值	if( (pszP = strstr( pszOption, "防%" ) ) != NULL ){		sscanf( pszP+3, "%f", &fPer );		fPer=(fPer/100);		//设定修正值		strdef=CHAR_getWorkInt(charaindex,CHAR_WORKFIXTOUGH);		strdef=(int)(strdef * fPer);		CHAR_setWorkInt(charaindex,CHAR_WORKDEFENCEPOWER,(CHAR_getWorkInt(charaindex,CHAR_WORKFIXTOUGH)+strdef));	}	return TRUE;}#endif int PETSKILL_Abduct(	int charaindex,	int toNo,	int array,	char *data){	CHAR_setWorkInt( charaindex, CHAR_WORKBATTLECOM1, BATTLE_COM_S_ABDUCT );	CHAR_setWorkInt( charaindex, CHAR_WORKBATTLECOM2, toNo );	CHAR_setWorkInt( charaindex, CHAR_WORKBATTLEMODE, BATTLE_CHARMODE_C_OK );	CHAR_SETWORKINT_LOW( charaindex, CHAR_WORKBATTLECOM3, array);	return TRUE;}int PETSKILL_Steal(	int charaindex,	int toNo,	int array,	char *data){	CHAR_setWorkInt( charaindex, CHAR_WORKBATTLECOM1, BATTLE_COM_S_STEAL );	CHAR_setWorkInt( charaindex, CHAR_WORKBATTLECOM2, toNo );	CHAR_setWorkInt( charaindex, CHAR_WORKBATTLEMODE, BATTLE_CHARMODE_C_OK );	return TRUE;}#ifdef _BATTLESTEAL_FIXint PETSKILL_StealMoney( int charaindex, int toNo, int array, char *data){	CHAR_setWorkInt( charaindex, CHAR_WORKBATTLECOM1, BATTLE_COM_S_STEALMONEY );	CHAR_setWorkInt( charaindex, CHAR_WORKBATTLECOM2, toNo );	CHAR_setWorkInt( charaindex, CHAR_WORKBATTLEMODE, BATTLE_CHARMODE_C_OK );	return TRUE;}#endif//*******************************************************// 檗  -- 失奶  丞宁岳//int PETSKILL_Merge(	int charaindex,	int toNo,	int array,	char *data){	int ret, ownerindex;		// Robin 0521 debug	ownerindex = CHAR_getWorkInt( charaindex, CHAR_WORKPLAYERINDEX);		if( CHAR_getWorkInt( ownerindex, CHAR_WORKBATTLEMODE ) != BATTLE_CHARMODE_NONE ){		print(" Merge_ErrB:fd=%d ", ownerindex);		return FALSE;	}	ret = ITEM_mergeItem_merge( CHAR_getWorkInt( charaindex, CHAR_WORKPLAYERINDEX),							CHAR_getInt( charaindex, CHAR_PETID), data, charaindex, 0);	return ret;}int PETSKILL_NoGuard(	int charaindex,	int toNo,	int array,	char *data){	char *pszOption, *pszP;	int Duck = 0, Counter = 0, Critical = 0;	CHAR_setWorkInt( charaindex, CHAR_WORKBATTLECOM1, BATTLE_COM_S_NOGUARD );	CHAR_setWorkInt( charaindex, CHAR_WORKBATTLECOM2, toNo );	CHAR_setWorkInt( charaindex, CHAR_WORKBATTLEMODE, BATTLE_CHARMODE_C_OK );	pszOption = PETSKILL_getChar( array, PETSKILL_OPTION );	if( (pszP = strstr( pszOption, "避%" ) ) != NULL ){		sscanf( pszP+3, "%d", &Duck );		CHAR_SETWORKINT_HIGH( charaindex, CHAR_WORKBATTLECOM3, Duck );	}	if( (pszP = strstr( pszOption, "击%" ) ) != NULL ){		sscanf( pszP+3, "%d", &Counter );	}	if( (pszP = strstr( pszOption, "心%" ) ) != NULL ){		sscanf( pszP+3, "%d", &Critical );	}	CHAR_SETWORKINT_LOW( charaindex, CHAR_WORKBATTLECOM3,		(Counter << 8) + Critical );	return TRUE;}#ifdef _ATTACK_MAGICint PETSKILL_AttackMagic(	int charaindex,	int toindex,	int array,	char *data){	char *pszP;	char szMagic[] = "magic";	char szItem[] = "item";	int magic = 313;	// magic id预设为火魔法等级一,item index预设为19659

⌨️ 快捷键说明

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