📄 enemy.c
字号:
if( i < ENEMY_DATAINTNUM+ENEMY_STARTINTNUM ) continue; for( i = 0; i < ENEMYTEMP_enemynum; i ++ ) { if( ENEMYTEMP_getInt( i, E_T_TEMPNO)== ENEMY_getInt( enemy_readlen, ENEMY_TEMPNO)){ break; } } if( i == ENEMYTEMP_enemynum) { fprint("文件语法错误:%s 第%d行\n",filename,linenum); continue; } ENEMY_enemy[enemy_readlen].enemytemparray = i;{ int lv_min, lv_max; lv_min = ENEMY_getInt( enemy_readlen, ENEMY_LV_MIN); lv_max = ENEMY_getInt( enemy_readlen, ENEMY_LV_MAX); if( lv_min == 0 ) lv_min = lv_max; ENEMY_setInt( enemy_readlen, ENEMY_LV_MIN, min( lv_min, lv_max)); ENEMY_setInt( enemy_readlen, ENEMY_LV_MAX, max( lv_min, lv_max));} enemy_readlen ++;} } fclose(f); ENEMY_enemynum = enemy_readlen; print( "有效宠物数是 %d..", ENEMY_enemynum ); return TRUE;}/*------------------------------------------------------------------------ * ENEMY_enemy及涩烂白央奶伙 心 仄 *-----------------------------------------------------------------------*/BOOL ENEMY_reinitEnemy( void ){ freeMemory( ENEMY_enemy); return( ENEMY_initEnemy( getEnemyfile()));}/*------------------------------------------------------------------------ ENEMY_Enemy及骄侬毛襞月 *-----------------------------------------------------------------------*/int ENEMY_getEnemyArrayFromIndex( int groupindex, int index){ if( !GROUP_CHECKINDEX( groupindex)) return -1; if( index < 0 || index >= CREATEPROB1 - ENEMY_ID1) return -1; return GROUP_group[groupindex].enemyarray[index];}/*------------------------------------------------------------------------ * ENEMY_ID 井日ENEMY_Enemy及骄侬毛襞月 *-----------------------------------------------------------------------*/int ENEMY_getEnemyArrayFromId( int EnemyId){ int i; for( i = 0; i < ENEMY_enemynum; i ++ ) { if( ENEMY_getInt( i, ENEMY_ID) == EnemyId) { return i; } } return -1;}int ENEMY_getEnemyArrayFromTempNo( int EnemyTempNo){ int i; for( i = 0; i < ENEMY_enemynum; i ++ ) { if( ENEMY_getInt( i, ENEMY_TEMPNO) == EnemyTempNo) { return i; } } return -1;}int ENEMY_getEnemyIdFromTempNo( int EnemyTempNo){ int i; for( i = 0; i < ENEMY_enemynum; i ++ ) { if( ENEMY_getInt( i, ENEMY_TEMPNO) == EnemyTempNo) { return ENEMY_getInt( i, ENEMY_ID); } } return -1;}int ENEMY_getEnemyTempNoFromId( int EnemyId){ int i; for( i = 0; i < ENEMY_enemynum; i ++ ) { if( ENEMY_getInt( i, ENEMY_ID) == EnemyId) { return ENEMY_getInt( i, ENEMY_TEMPNO); } } return -1;}/*------------------------------------------------------------------------ * 弘伙□皿涩烂白央奶伙毛 戈 *-----------------------------------------------------------------------*/BOOL GROUP_initGroup( char* filename ){ FILE* f; char line[256]; int linenum=0; int group_readlen=0; int i,j; f = fopen(filename,"r"); if( f == NULL ){ print( "文件打开失败\n"); return FALSE; } GROUP_groupnum=0; /* 引内 躲卅垫互窒垫丐月井升丹井譬屯月 */ while( fgets( line, sizeof( line ), f ) ){ linenum ++; if( line[0] == '#' )continue; /* comment */ if( line[0] == '\n' )continue; /* none */ chomp( line ); GROUP_groupnum++; } if( fseek( f, 0, SEEK_SET ) == -1 ){ fprint( "寻找失败\n" ); fclose(f); return FALSE; } GROUP_group = allocateMemory( sizeof(struct tagGROUP_Table) * GROUP_groupnum ); if( GROUP_group == NULL ){ fprint( "无法分配内存 %d\n" , sizeof(struct tagGROUP_Table)*GROUP_groupnum); fclose( f ); return FALSE; } /* 赓渝祭 */ for( i = 0; i < GROUP_groupnum; i ++ ) { for( j = 0; j < GROUP_DATAINTNUM; j ++ ) { GROUP_setInt( i,j,-1); } for( j = 0; j < CREATEPROB1 - ENEMY_ID1; j ++ ) { GROUP_group[i].enemyarray[j] = -1; } } /* 引凶 心 允 */ linenum = 0; while( fgets( line, sizeof( line ), f ) ){ linenum ++; if( line[0] == '#' )continue; /* comment */ if( line[0] == '\n' )continue; /* none */ chomp( line ); /* 垫毛帮溥允月 */ /* 引内 tab 毛 " " 卞 五晶尹月 */ replaceString( line, '\t' , ' ' ); /* 燮 及旦矢□旦毛潸月[*/{ char buf[256]; for( i = 0; i < strlen( line); i ++) { if( line[i] != ' ' ) { break; } strcpy( buf, &line[i]); } if( i != 0 ) { strcpy( line, buf); }}{ char token[256]; int ret; int loop; /* 手仄手ㄡ蘸户及伙□皿卞 匀凶凛及凶户卞赓渝祭仄化云仁 */ for( j = 0; j < GROUP_DATAINTNUM; j ++ ) { GROUP_setInt( group_readlen,j,-1); } for( j = 0; j < CREATEPROB1 - ENEMY_ID1; j ++ ) { GROUP_group[group_readlen].enemyarray[j] = -1; } /* 夫午勾户及玄□弁件毛苇月 */ ret = getStringFromIndexWithDelim( line,",",1,token, sizeof(token)); if( ret==FALSE ){ fprint("文件语法错误:%s 第%d行\n",filename,linenum); continue; } GROUP_setChar( group_readlen, GROUP_NAME, token); /* 2勾 动嫦反醒袄犯□正 */#define GROUP_STARTINTNUM 2 for( i = GROUP_STARTINTNUM; i < GROUP_DATAINTNUM+GROUP_STARTINTNUM; i ++ ) { ret = getStringFromIndexWithDelim( line,",",i,token, sizeof(token)); if( ret==FALSE ){ fprint("文件语法错误:%s 第%d行\n",filename,linenum); break; } if( strlen( token) != 0 ) { GROUP_setInt( group_readlen, i - GROUP_STARTINTNUM, atoi( token)); } } if( i < GROUP_DATAINTNUM+GROUP_STARTINTNUM ) continue; { int enemycnt = 0; for( loop = ENEMY_ID1; loop < CREATEPROB1; loop ++ ) { if( GROUP_getInt( group_readlen, loop) != -1 ) { for( i = 0; i < ENEMY_enemynum; i ++ ) { if( ENEMY_getInt( i, ENEMY_ID) == GROUP_getInt( group_readlen, loop)) { break; } } if( i == ENEMY_enemynum) { i = -1; GROUP_setInt( group_readlen, loop, -1); } else { enemycnt ++; } GROUP_group[group_readlen].enemyarray[loop - ENEMY_ID1] = i; } } if( enemycnt == 0 ) { fprint("团队设定中敌人尚未设定 文件:%s 第%d行\n",filename,linenum); continue;; } if( checkRedundancy( &GROUP_group[group_readlen].intdata[ENEMY_ID1], CREATEPROB1 - ENEMY_ID1)) { fprint("团队设定中敌人重复设定 文件:%s 第%d行\n",filename,linenum); continue;; } } group_readlen ++;} } fclose(f); GROUP_groupnum = group_readlen; print( "有效遇敌组群数是 %d...", GROUP_groupnum ); return TRUE;}/*------------------------------------------------------------------------ * 弘伙□皿及涩烂白央奶伙 心 仄 *-----------------------------------------------------------------------*/BOOL GROUP_reinitGroup( void ){ freeMemory( GROUP_group); return( GROUP_initGroup( getGroupfile()));}/*------------------------------------------------------------------------ * GROUP_ID 井日GROUP_Group及骄侬毛襞月 *-----------------------------------------------------------------------*/int GROUP_getGroupArray( int groupid){ int i; for( i = 0; i < GROUP_groupnum; i ++ ) { if( GROUP_getInt( i, GROUP_ID) == groupid) { return i; } } return -1;}/*------------------------------------------------------------------------ * 潸 烦董袄毛综岳允月[ *-----------------------------------------------------------------------*/static int ENEMY_getExp( int array,int tarray, int level, int rank ){ int ret; int *p; int *tp; float ranknum = 0.0; float alpha; struct { int num; float rank; }ranktbl[] = { { 100, 2.5}, { 95, 2.0}, { 90, 1.5}, { 85, 1.0}, { 80, 0.5}, { 0, 0.0}, }; level --; if( level < 0 || level >= arraysizeof( enemybaseexptbl)) return 0; p = ENEMY_enemy[array].intdata; tp = ENEMYTEMP_enemy[tarray].intdata; // 仿件弁井日 毛潸 if( rank < 0 || rank > 5 ) rank = 0; ranknum = ranktbl[rank].rank; alpha = ( *( tp + E_T_CRITICAL) + *( tp + E_T_COUNTER) + *(tp + E_T_GET) + *( tp + E_T_POISON) + *( tp + E_T_PARALYSIS) + *(tp + E_T_SLEEP) + *( tp + E_T_STONE) + *( tp + E_T_DRUNK) + *(tp + E_T_CONFUSION) ) / 100.0 + *( tp + E_T_RARE); /* EXP>湘 EXP≈- 仿件弁≈汐 ←伊矛伙×*/ //return enemybaseexptbl[*(p+ENEMY_LV)] + (ranknum + alpha)*(*(tp+ENEMY_LV)); ret = enemybaseexptbl[level] + (ranknum + alpha)*(level+1); return ( ret < 1 ) ? 1 : ret;}int ENEMY_getRank( int array, int tarray ){ int *p; int *tp; int paramsum; int i; int ranknum; struct { int num; float rank; }ranktbl[] = { { 100, 2.5}, //总成长率 >= 100 petrank=0 { 95, 2.0}, { 90, 1.5}, { 85, 1.0}, { 80, 0.5}, { 0, 0.0}, }; p = ENEMY_enemy[array].intdata; tp = ENEMYTEMP_enemy[tarray].intdata; /* 仿件弁毛煌遥允月 */ /* 仇及 及酷 反酷 踏毛辅哔及仪[ */ paramsum = *( tp + E_T_BASEVITAL) + *( tp + E_T_BASESTR) + *( tp + E_T_BASETGH) + *( tp + E_T_BASEDEX); ranknum = 0; // 犯白巧伙玄反ㄟ for( i = 0; i < arraysizeof( ranktbl); i ++ ) { if( paramsum >= ranktbl[i].num ) { ranknum = i; break; } } return ranknum;}//*********************************************************// 仿件母丞卅 //*********************************************************static int EnemyGymSkill[] = { PETSKILL_GUARDBREAK, // ㄢ“布□玉旰仄(3) PETSKILL_CONTINUATIONATTACK1, // ㄠㄟ“ 粮 猾(10) PETSKILL_CONTINUATIONATTACK2, // ㄠㄠ“ 粮 猾(11) PETSKILL_CONTINUATIONATTACK3, // ㄠㄡ“ 粮 猾(12) PETSKILL_CHARGE1, // ㄢㄟ“民乓□斥ㄠ(30) PETSKILL_CHARGE2, // ㄢㄠ“民乓□斥ㄡ(31) PETSKILL_MIGHTY1, // ㄣㄟ“域猾 诮(40) PETSKILL_MIGHTY2, // ㄣㄠ“域猾 诮(41) PETSKILL_POWERBALANCE1, // ㄤㄟ“ 及讽ㄠ(50) PETSKILL_POWERBALANCE2, // ㄤㄠ“ 及讽ㄡ(51) PETSKILL_POWERBALANCE3, // ㄤㄡ“ 及讽ㄢ(52) PETSKILL_POISON_ATTACK1, // ㄥㄟ“ 猾(60) PETSKILL_POISON_ATTACK2, // ㄥㄠ“ 猾(61) PETSKILL_STONE, // ㄧㄟ“檗祭 猾(80) PETSKILL_CONFUSION_ATTACK, // ㄨㄟ“渔刭 猾(90) PETSKILL_DRUNK_ATTACK, // ㄠㄟㄟ“听办 猾(100) PETSKILL_SLEEP_ATTACK, // ㄠㄠㄟ“戽曰 猾(110) PETSKILL_NOGUARD1, // ㄠㄤㄟ“用□布□玉ㄠ(150) PETSKILL_NOGUARD2, // ㄠㄤㄠ“用□布□玉ㄡ(151) PETSKILL_NOGUARD3, // ㄠㄤㄡ“用□布□玉ㄢ(152)#ifdef _PSKILL_FALLGROUND PETSKILL_FALLGROUND, //落马术#endif#ifdef _SKILL_DAMAGETOHP PETSKILL_DAMAGETOHP, //嗜血技#endif#ifdef _Skill_MPDAMAGE PETSKILL_MPDAMAGE, //MP伤害#endif#ifdef _SKILL_WILDVIOLENT_ATT PETSKILL_WILDVIOLENTATTACK, //(540)狂暴攻击 vincent add 2002/05/16#endif#ifdef _SKILL_SPEEDY_ATT PETSKILL_SPEEDYATTACK, //(541)疾速攻击 vincent add 2002/05/16#endif#ifdef _SKILL_GUARDBREAK2 PETSKILL_GUARDBREAK2, //(542)破除防御2 vincent add 2002/05/20#endif#ifdef _SKILL_SACRIFICE PETSKILL_SACRIFICE, //(543)救援 vincent add 2002/05/30#endif#ifdef _SKILL_WEAKEN PETSKILL_WEAKEN, //(544)救援 vincent add 2002/07/11#endif#ifdef _SKILL_DEEPPOISON PETSKILL_DEEPPOISON, //(545)救援 vincent add 2002/07/16#endif#ifdef _SKILL_BARRIER PETSKILL_BARRIER, //(546)魔障 vincent add 2002/07/16#endif#ifdef _SKILL_ROAR PETSKILL_ROAR, //(548)大吼 vincent add 2002/07/11#endif#ifdef _SKILL_REFRESH PETSKILL_REFRESH, //(550)救援 vincent add 2002/08/08#endif#ifdef _VARY_WOLF PETSKILL_VARY,#endif#ifdef _PETSKILL_SETDUCK PETSKILL_SETDUCK,#endif#ifdef _MAGICPET_SKILL PETSKILL_SETMAGICPET,#endif#ifdef _PETSKILL_BECOMEPIG PETSKILL_BECOMEPIG,#endif#ifdef _PETSKILL_BATTLE_MODEL PETSKILL_BATTLE_MODEL,#endif};static int gymbody[] = { SPR_001em,SPR_011em,SPR_021em,SPR_031em,SPR_041em,SPR_051em, SPR_061em,SPR_071em,SPR_081em,SPR_091em,SPR_101em,SPR_111em,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -