int MAGIC_MagicDef( int charaindex, int toindex, int marray, int mp ) { int battlemode; if( CHAR_CHECKINDEX( charaindex ) == FALSE )return FALSE; battlemode = CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEMODE ); if( battlemode == BATTLE_CHARMODE_INIT ){ return FALSE; } if( CHAR_getInt( charaindex, CHAR_MP ) < mp )return FALSE; CHAR_setInt( charaindex, CHAR_MP, CHAR_getInt( charaindex, CHAR_MP ) - mp ); if( IsBATTLING( charaindex ) == TRUE ){ #ifdef _PREVENT_TEAMATTACK //光鏡守..不得使用敵方 int battleindex = CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEINDEX ); if( CHAR_getInt( charaindex, CHAR_WHICHTYPE ) == CHAR_TYPEPLAYER /*&& BattleArray[battleindex].type != BATTLE_TYPE_P_vs_P*/ ){ if( BATTLE_CheckSameSide( charaindex, toindex) == 0 ){//不同邊 int battleindex = CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEINDEX ); BATTLE_NoAction( battleindex, BATTLE_Index2No( battleindex, charaindex) ); CHAR_talkToCli( charaindex, -1, "光鏡守..不得施予敵方。", CHAR_COLORYELLOW); return FALSE; } } #endif return MAGIC_MagicDef_Battle( charaindex, toindex, marray, mp ); }else{ return FALSE; } }
int MAGIC_OtherRecovery( int charaindex, int toindex, int marray, int mp ) { int battlemode; if( CHAR_CHECKINDEX( charaindex ) == FALSE )return FALSE; //{撩 battlemode = CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEMODE ); if( battlemode == BATTLE_CHARMODE_INIT ){ return FALSE; } if( CHAR_getInt( charaindex, CHAR_MP ) < mp )return FALSE; // 井勻凶日母丟 CHAR_setInt( charaindex, CHAR_MP, CHAR_getInt( charaindex, CHAR_MP ) - mp ); if( IsBATTLING( charaindex ) == TRUE ){ #ifdef _PREVENT_TEAMATTACK //滋潤 不得使用敵方 int battleindex = CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEINDEX ); if( CHAR_getInt( charaindex, CHAR_WHICHTYPE ) == CHAR_TYPEPLAYER && BattleArray[battleindex].type != BATTLE_TYPE_P_vs_P ){ if( BATTLE_CheckSameSide( charaindex, toindex) == 0 ){//不同邊 int battleindex = CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEINDEX ); BATTLE_NoAction( battleindex, BATTLE_Index2No( battleindex, charaindex) ); CHAR_talkToCli( charaindex, -1, "滋潤精靈..不得施予非玩家敵方。", CHAR_COLORYELLOW); return FALSE; } } #endif MAGIC_Recovery_Battle( charaindex, toindex, marray, mp ); }else{ if( CHAR_CHECKINDEX( toindex ) == FALSE )return FALSE; //{撩 MAGIC_OtherRecovery_Field( charaindex, toindex, marray); } return TRUE; }
int MAGIC_StatusChange( int charaindex, int toindex, int marray, int mp ) { int battlemode; if( CHAR_CHECKINDEX( charaindex ) == FALSE )return FALSE; battlemode = CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEMODE ); if( battlemode == BATTLE_CHARMODE_INIT ) { return FALSE; } if( CHAR_getInt( charaindex, CHAR_MP ) < mp )return FALSE; CHAR_setInt( charaindex, CHAR_MP, CHAR_getInt( charaindex, CHAR_MP ) - mp ); if( IsBATTLING( charaindex ) == TRUE ) { #ifdef _PREVENT_TEAMATTACK //Ò쳣״̬²»µÃʹÓÃÓÑ·½ int battleindex = CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEINDEX ); if( CHAR_getInt( charaindex, CHAR_WHICHTYPE ) == CHAR_TYPEPLAYER && BattleArray[battleindex].type != BATTLE_TYPE_P_vs_P ) { if( BATTLE_CheckSameSide( charaindex, toindex) == 1 ) { //ͬ±ß int battleindex = CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEINDEX ); BATTLE_NoAction( battleindex, BATTLE_Index2No( battleindex, charaindex) ); CHAR_talkToCli( charaindex, -1, "Ò쳣״̬..²»µÃÊ©ÓèÓÑ·½¡£", CHAR_COLORYELLOW); return FALSE; } } #endif return MAGIC_StatusChange_Battle( charaindex, toindex, marray, mp ); } else { return FALSE; } }
int MAGIC_OtherRecovery( int charaindex, int toindex, int marray, int mp ) { int battlemode; if( CHAR_CHECKINDEX( charaindex ) == FALSE )return FALSE; //£ûÁà battlemode = CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEMODE ); if( battlemode == BATTLE_CHARMODE_INIT ) { return FALSE; } if( CHAR_getInt( charaindex, CHAR_MP ) < mp )return FALSE; // ¾®ÔÈÐ×ÈÕĸ¶ª CHAR_setInt( charaindex, CHAR_MP, CHAR_getInt( charaindex, CHAR_MP ) - mp ); if( IsBATTLING( charaindex ) == TRUE ) { #ifdef _PREVENT_TEAMATTACK //×ÌÈó ²»µÃʹÓõз½ int battleindex = CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEINDEX ); if( CHAR_getInt( charaindex, CHAR_WHICHTYPE ) == CHAR_TYPEPLAYER && BattleArray[battleindex].type != BATTLE_TYPE_P_vs_P ) { if( BATTLE_CheckSameSide( charaindex, toindex) == 0 ) { //²»Í¬±ß int battleindex = CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEINDEX ); BATTLE_NoAction( battleindex, BATTLE_Index2No( battleindex, charaindex) ); CHAR_talkToCli( charaindex, -1, "×ÌÈó¾«Áé..²»µÃÊ©Óè·ÇÍæ¼ÒµÐ·½¡£", CHAR_COLORYELLOW); return FALSE; } } #endif MAGIC_Recovery_Battle( charaindex, toindex, marray, mp ); } else { if( CHAR_CHECKINDEX( toindex ) == FALSE )return FALSE; //£ûÁà MAGIC_OtherRecovery_Field( charaindex, toindex, marray); } return TRUE; }
int MAGIC_Recovery( int charaindex, int toindex, int marray, int mp ) { int battlemode; if( CHAR_CHECKINDEX( charaindex ) == FALSE )return FALSE; battlemode = CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEMODE ); if( battlemode == BATTLE_CHARMODE_INIT ) { return FALSE; } if( CHAR_getInt( charaindex, CHAR_MP ) < mp )return FALSE; CHAR_setInt( charaindex, CHAR_MP, CHAR_getInt( charaindex, CHAR_MP ) - mp ); if( IsBATTLING( charaindex ) == TRUE ) { #ifdef _PREVENT_TEAMATTACK //¶÷»Ý²»µÃ ʹÓõз½ int battleindex = CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEINDEX ); if( CHAR_getInt( charaindex, CHAR_WHICHTYPE ) == CHAR_TYPEPLAYER && BattleArray[battleindex].type != BATTLE_TYPE_P_vs_P ) { if( BATTLE_CheckSameSide( charaindex, toindex) == 0 ) { //²»Í¬±ß int battleindex = CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEINDEX ); BATTLE_NoAction( battleindex, BATTLE_Index2No( battleindex, charaindex) ); CHAR_talkToCli( charaindex, -1, "¶÷»Ý¾«Áé..²»µÃÊ©Óè·ÇÍæ¼ÒµÐ·½¡£", CHAR_COLORYELLOW); return FALSE; } } #endif if (toindex==22) { print("jinchao err\n"); // shan(¶ÔÈ«ÌåʹÓÃħ·¨µÄbug)£¬ÐÞ¸ÄÕßjinchao+2001/12/07 return FALSE; } MAGIC_Recovery_Battle( charaindex, toindex, marray, mp ); } else { if( CHAR_CHECKINDEX( toindex ) == FALSE )return FALSE; // shan(¶ÔÈ«ÌåʹÓÃħ·¨µÄbug)£¬ÐÞ¸ÄÕßjinchao+2001/12/07 MAGIC_Recovery_Field( charaindex, marray); } return TRUE; }
int MAGIC_Recovery( int charaindex, int toindex, int marray, int mp ) { int battlemode; if( CHAR_CHECKINDEX( charaindex ) == FALSE )return FALSE; battlemode = CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEMODE ); if( battlemode == BATTLE_CHARMODE_INIT ){ return FALSE; } if( CHAR_getInt( charaindex, CHAR_MP ) < mp )return FALSE; CHAR_setInt( charaindex, CHAR_MP, CHAR_getInt( charaindex, CHAR_MP ) - mp ); if( IsBATTLING( charaindex ) == TRUE ){ #ifdef _PREVENT_TEAMATTACK //恩惠不得 使用敵方 int battleindex = CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEINDEX ); if( CHAR_getInt( charaindex, CHAR_WHICHTYPE ) == CHAR_TYPEPLAYER && BattleArray[battleindex].type != BATTLE_TYPE_P_vs_P ){ if( BATTLE_CheckSameSide( charaindex, toindex) == 0 ){//不同邊 int battleindex = CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEINDEX ); BATTLE_NoAction( battleindex, BATTLE_Index2No( battleindex, charaindex) ); CHAR_talkToCli( charaindex, -1, "恩惠精靈..不得施予非玩家敵方。", CHAR_COLORYELLOW); return FALSE; } } #endif if (toindex==22){print("jinchao err\n");return FALSE;} // shan(對全體使用魔法的bug),修改者jinchao+2001/12/07 MAGIC_Recovery_Battle( charaindex, toindex, marray, mp ); }else{ if( CHAR_CHECKINDEX( toindex ) == FALSE )return FALSE; // shan(對全體使用魔法的bug),修改者jinchao+2001/12/07 MAGIC_Recovery_Field( charaindex, marray); } return TRUE; }
void ITEM_useMRecovery_Battle( int charaindex, int toNo, int haveitemindex ) { int battleindex, attackNo, itemindex; int turn=0, magicid, marray; char buf1[256]; char *arg=NULL; battleindex = CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEINDEX ); if( BATTLE_CHECKINDEX( battleindex ) == FALSE ) return; if( (attackNo = BATTLE_Index2No( battleindex, charaindex )) == -1 ) return; itemindex = CHAR_getItemIndex( charaindex, haveitemindex); if(!ITEM_CHECKINDEX(itemindex)) return; arg = ITEM_getChar( itemindex, ITEM_ARGUMENT ); if( getStringFromIndexWithDelim( arg, ":", 2, buf1, sizeof(buf1)) ==FALSE ) return; turn = atoi( buf1); if( getStringFromIndexWithDelim( arg, ":", 1, buf1, sizeof(buf1)) ==FALSE ) return; if( strstr( buf1, "¥þ" ) != NULL ){ }else{ } magicid = ITEM_getInt( itemindex, ITEM_MAGICID); marray = MAGIC_getMagicArray( magicid); if( marray == -1 ) return; if( IsBATTLING( charaindex ) == TRUE ){ int i, status=-1; char *magicarg=NULL, *pszP=NULL; #ifdef _PREVENT_TEAMATTACK //¥úÃè¦u..¤£±o¨Ï¥Î¼Ä¤è int battleindex = CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEINDEX ); if( CHAR_getInt( charaindex, CHAR_WHICHTYPE ) == CHAR_TYPEPLAYER //&& BattleArray[battleindex].type != BATTLE_TYPE_P_vs_P ){ if( BATTLE_CheckSameSide( charaindex, toNo) == 0 ){//¤£¦PÃä int battleindex = CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEINDEX ); BATTLE_NoAction( battleindex, BATTLE_Index2No( battleindex, charaindex) ); CHAR_talkToCli( charaindex, -1, "¥úÃè¦u..¤£±o¬I¤©«Dª±®a¼Ä¤è¡C", CHAR_COLORYELLOW); return; } } #endif magicarg = MAGIC_getChar( marray, MAGIC_OPTION ); pszP = magicarg; for( ;status == -1 && pszP[0] != 0; pszP++ ){ for( i = 1; i < BATTLE_MD_END; i ++ ){ if( strncmp( pszP, aszMagicDef[i], 2 ) == 0 ){ status = i; pszP +=2; break; } } } if( status == -1 ) return; BATTLE_MultiMagicDef( battleindex, attackNo, toNo, status, turn, MAGIC_EFFECT_USER, SPR_difence ); LogItem( CHAR_getChar( charaindex, CHAR_NAME ), CHAR_getChar( charaindex, CHAR_CDKEY ), #ifdef _add_item_log_name // WON ADD ¦bitemªºlog¤¤¼W¥[item¦WºÙ itemindex, #else ITEM_getInt( itemindex, ITEM_ID ), #endif "BattleUse(¾Ô°«¤¤¨Ï¥Î±¼ªº¹D¨ã)", CHAR_getInt( charaindex,CHAR_FLOOR), CHAR_getInt( charaindex,CHAR_X ), CHAR_getInt( charaindex,CHAR_Y ), ITEM_getChar( itemindex, ITEM_UNIQUECODE), ITEM_getChar( itemindex, ITEM_NAME), ITEM_getInt( itemindex, ITEM_ID) ); } CHAR_DelItemMess( charaindex, haveitemindex, 0); }
void ITEM_ResAndDef( int charaindex, int toindex, int haveitemindex ) { int itemindex, battleindex, attackNo, par = 0, pow = 0, ReceveEffect; char *buffer = NULL; char *magicarg = NULL; char *magicarg2 = NULL; char *magicarg3 = NULL; char magicarg4[200]; char *pszP = NULL; char delim[] = " ";//¨ó§U¤À¸Ñ¦r¦êªº°Ï¹j¦r¤¸ int status = -1, i, turn = 3; char szTurn[] = "turn"; // ¥¢¥¤ ¥à¤¬¤¢¤ë¤«¤É¤¦¤« itemindex = CHAR_getItemIndex( charaindex, haveitemindex); if(!ITEM_CHECKINDEX(itemindex)) return; buffer = ITEM_getChar(itemindex, ITEM_ARGUMENT );//¾ã¦ê¦r¦ê pszP = strtok(buffer, delim);//²Ä¤@Ó°Ñ¼Æ magicarg = strtok(NULL, delim);//²Ä¤GÓ°Ñ¼Æ magicarg2 = strtok(NULL, delim);//²Ä¤TÓ°Ñ¼Æ magicarg3 = strtok(NULL, delim);//²Ä¥|Ó°Ñ¼Æ sprintf(magicarg4,"%s %s %s",magicarg,magicarg2,magicarg3); magicarg = (char*)magicarg4; //¥úÃè¦u..¤£±o¨Ï¥Î¼Ä¤è battleindex = CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEINDEX ); if( CHAR_getInt( charaindex, CHAR_WHICHTYPE ) == CHAR_TYPEPLAYER //&& BattleArray[battleindex].type != BATTLE_TYPE_P_vs_P ){ if( BATTLE_CheckSameSide( charaindex, toindex) == 0 ){//¤£¦PÃä battleindex = CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEINDEX ); BATTLE_NoAction( battleindex, BATTLE_Index2No( battleindex, charaindex) ); CHAR_talkToCli( charaindex, -1, "¥úÃè¦u..¤£±o¬I¤©«Dª±®a¼Ä¤è¡C", CHAR_COLORYELLOW); return; } } //¦b®ðµ´ª¬ºA¦^´_@¤O if( strstr( pszP, "%" ) ){ par = 1; } if( sscanf( pszP, "%d", &pow ) != 1 ){ pow = 0; } attackNo = BATTLE_Index2No( battleindex, charaindex ); //¿ï¾Ü¥Nªíªº¯S®Ä if( pow <= 0 ){ ReceveEffect = SPR_fukkatu3; }else if( pow <= 100 ){ ReceveEffect = SPR_fukkatu1; }else if( pow <= 300 ){ ReceveEffect = SPR_fukkatu2; }else{ ReceveEffect = SPR_fukkatu3; } BATTLE_MultiRessurect( battleindex, attackNo, toindex, pow, par, SPR_item3, ReceveEffect ); //(¥ú,Ãè,¦u)ºëÆF // ¸ú²Ì¤ò¼è for( ;status == -1 && magicarg[0] != 0; magicarg++ ){ for( i = 1; i < BATTLE_MD_END; i ++ ){ // ¸ú²Ì¥Ô¥Ã¥¿¥ê¤«¡ª if( strncmp( magicarg, aszMagicDef[i], 2 ) == 0 ){ status = i; pszP +=2; break; } } } // ¸ú²Ì¤Ê¤¤¤Î¤Ç¼º if( status == -1 ) return; // ²¿²ó ¹¹¤µ¤»¤ë¤«¡ª if( ( magicarg = strstr( magicarg, szTurn ) ) != NULL){ magicarg += sizeof( szTurn ); sscanf( magicarg, "%d", &turn ); } //print("¦¸¼Æ:%d",turn); // ¥Ð¥È¥ë ¹æ battleindex = CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEINDEX ); attackNo = BATTLE_Index2No( battleindex, charaindex ); // Á´°÷ BATTLE_MultiMagicDef( battleindex, attackNo, toindex, status, turn, MAGIC_EFFECT_USER, SPR_difence ); BATTLE_ItemUseDelete( charaindex, haveitemindex ); }