📄 pet_skill.c
字号:
#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 + -