?? magic.c
字號:
return MAGIC_AttReverse_Battle( charaindex, toindex, marray, mp ); }else{ // 爵 匹卅井勻兇日 return FALSE; }}// 竣濮井日汊唾≈ 芊 豢int MAGIC_ResAndDef( int charaindex, int toindex, int marray, int mp ){ int battlemode; // INDEX民尼永弁 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 ){ 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) 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 == 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 ); } 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 == 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; }}#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 + -