BOOL NPC_NPCEnemy_BattleIn( int meindex, int charaindex) { int gym; int ret; char buf[256]; char argstr[NPC_UTIL_GETARGSTR_BUFSIZE]; memset( argstr, 0, sizeof( argstr)); NPC_Util_GetArgStr( meindex, argstr, sizeof( argstr)); gym = NPC_Util_GetNumFromStrWithDelim( argstr, "gym"); if( gym > 0 ){ ret = BATTLE_CreateVsEnemy( charaindex, 2, meindex); }else{ ret = BATTLE_CreateVsEnemy( charaindex, 1, meindex); } if( ret == 0 ) { BattleArray[CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEINDEX)].WinFunc = NPC_NPCEnemy_Dying; if( NPC_Util_GetStrFromStrWithDelim( argstr, "startmsg", buf, sizeof( buf)) != NULL ){ CHAR_talkToCliAndParty( charaindex, meindex ,buf , CHAR_COLORYELLOW ); } if( NPC_Util_GetStrFromStrWithDelim( argstr, "steal", buf, sizeof( buf))!= NULL ){ if( atoi( buf) == 0 ) { NPC_NPCEnemy_StealItem( argstr, meindex, charaindex); } } } return ( ret == 0 ) ?TRUE:FALSE ; }
BOOL NPC_NPCEnemy_BattleIn( int meindex, int charaindex) { int gym; int ret; char buf[256]; char argstr1[NPC_UTIL_GETARGSTR_BUFSIZE]; char *argstr; //memset( argstr, 0, sizeof( argstr)); argstr = NPC_Util_GetArgStr( meindex, argstr1, sizeof( argstr1)); gym = NPC_Util_GetNumFromStrWithDelim( argstr, "gym"); #ifdef _EMENY_CHANCEMAN { int masterindex=-1; masterindex = NPC_EmenyChanceCheck( meindex, charaindex, argstr); if( CHAR_CHECKINDEX( masterindex)){ charaindex = masterindex; }else { return TRUE; } } #endif if( gym > 0 ){ ret = BATTLE_CreateVsEnemy( charaindex, 2, meindex); }else{ ret = BATTLE_CreateVsEnemy( charaindex, 1, meindex); } if( ret == 0 ) { BattleArray[CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEINDEX)].WinFunc = NPC_NPCEnemy_Dying; if( NPC_Util_GetStrFromStrWithDelim( argstr, "startmsg", buf, sizeof( buf)) != NULL ){ CHAR_talkToCliAndParty( charaindex, meindex ,buf , CHAR_COLORYELLOW ); } if( NPC_Util_GetStrFromStrWithDelim( argstr, "steal", buf, sizeof( buf))!= NULL ){ if( atoi( buf) == 0 ) { NPC_NPCEnemy_StealItem( argstr, meindex, charaindex); } } } return ( ret == 0 ) ?TRUE:FALSE ; }
int NPC_NPCEnemy_Dying( int battleindex, int meindex ) { char argstr1[NPC_UTIL_GETARGSTR_BUFSIZE]; char *argstr; char buf[64]; int i,toindex=-1; int tmp=-1; if( !CHAR_CHECKINDEX( meindex)) { return FALSE; } argstr = NPC_Util_GetArgStr( meindex, argstr1, sizeof( argstr1)); #ifdef _NEW_WARPMAN if( strstr( argstr, "NEWNPCENEMY") ) { }else { #endif /* 蠅 及陲太 */ if( NPC_Util_GetStrFromStrWithDelim( argstr, "endmsg", buf, sizeof( buf)) != NULL ) { for( i = 0; i < 5; i ++ ) { /* 爵 卞輔笛仄化中月蟈夠卞丟永本□斥 */ int toindex = BattleArray[battleindex].Side[0].Entry[i].charaindex; if( CHAR_CHECKINDEX( toindex) ) { CHAR_talkToCli( toindex, meindex ,buf , CHAR_COLORYELLOW ); } } } #ifdef _NEW_WARPMAN } #endif if( NPC_Util_GetStrFromStrWithDelim( argstr, "steal", buf, sizeof( buf)) != NULL ) { print("\n steal TRUE !!"); if( atoi( buf) == 1 ) { int charaindex = BattleArray[battleindex].Side[0].Entry[0].charaindex; NPC_NPCEnemy_StealItem( argstr, meindex, charaindex); } } #ifdef _ALLDOMAN // (不可開) Syu ADD 排行榜NPC if( NPC_Util_GetStrFromStrWithDelim( argstr, "herobattlefield", buf, sizeof( buf)) != NULL ) { int charaindex = BattleArray[battleindex].Side[0].Entry[0].charaindex; CHAR_setWorkInt ( charaindex , CHAR_WORKHEROFLOOR , atoi ( buf ) ) ; // Syu ADD if ( atoi ( buf ) > CHAR_getInt ( charaindex , CHAR_HEROFLOOR ) ) CHAR_setInt ( charaindex , CHAR_HEROFLOOR , atoi( buf ) ) ; } #endif tmp = NPC_Util_GetNumFromStrWithDelim( argstr, "dieact"); if( tmp != 1 ) tmp = 0; CHAR_setWorkInt( meindex, CHAR_WORK_DIEACT, tmp); if( CHAR_getWorkInt( meindex, CHAR_WORK_DIEACT) == 0 ) { Char *ch; CHAR_setInt( meindex, CHAR_BASEIMAGENUMBER, 0); print("bbi---->bi10"); CHAR_sendCToArroundCharacter( CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX)); CHAR_setWorkInt( meindex, CHAR_WORKEVENTTYPE, CHAR_EVENT_ALTERRATIVE); MAP_sendAroundMapdata( CHAR_getInt( meindex, CHAR_FLOOR), CHAR_getInt( meindex, CHAR_X), CHAR_getInt( meindex, CHAR_Y)); ch = CHAR_getCharPointer( meindex); if( ch != NULL ) { strcpysafe( ch->charfunctable[CHAR_LOOPFUNC].string, sizeof( ch->charfunctable[CHAR_LOOPFUNC]), "NPCEnemyLoop"); CHAR_constructFunctable( meindex); CHAR_setInt( meindex, CHAR_LOOPINTERVAL, 5000); CHAR_setWorkInt( meindex, CHAR_WORK_DIETIME, NowTime.tv_sec); }else { print( "NPCENEMY:err\n"); } }else { for( i = 0; i < 5; i ++ ) { toindex = BattleArray[battleindex].Side[0].Entry[i].charaindex; if( CHAR_CHECKINDEX( toindex) ) { #ifdef _NEW_WARPMAN if( strstr( argstr, "NEWNPCENEMY") ) { BOOL Party=TRUE; if( NPC_NPCEnemy_CheckFree( meindex, toindex , &Party) == FALSE ) { continue; } if( Party == TRUE ) { }else { if( CHAR_getWorkInt( toindex, CHAR_WORKPARTYMODE ) == CHAR_PARTY_LEADER ) { if( NPC_WarpAllMsg( meindex, toindex ) == TRUE ) { return TRUE; } } continue; } } CHAR_DischargeParty( toindex, 0); // 拆隊 CHAR_warpToSpecificPoint( toindex, CHAR_getWorkInt( meindex, CHAR_WORK_WARP_FLOOR), CHAR_getWorkInt( meindex, CHAR_WORK_WARP_X), CHAR_getWorkInt( meindex, CHAR_WORK_WARP_Y) ); #else CHAR_warpToSpecificPoint( toindex, CHAR_getWorkInt( meindex, CHAR_WORK_WARP_FLOOR), CHAR_getWorkInt( meindex, CHAR_WORK_WARP_X), CHAR_getWorkInt( meindex, CHAR_WORK_WARP_Y) ); #endif #ifdef _NPC_REPLACEMENT Check_EnemyWarpMe( meindex, argstr); #endif } } } return TRUE; }