📄 char_data.c
字号:
ch->indexOfHaveTitle[0] = CHAR_titleindextbl[elderindex]; for( i=0 ; i<CHAR_SKILLMAXHAVE ; i++ ){ static struct addIteTbl { int itemid[2]; }additemtbl[SKILL_NUM] = { { { 17, -1} }, { { -1, -1} }, { { -1, -1} }, { { 17, -1} }, { { 17, -1} }, { { 17, -1} }, { { 17, -1} }, { { 17, -1} }, { { 17, -1} }, { { 17, -1} }, { { -1, -1} }, { { 17, -1} }, { { 601, -1} }, { { 101, -1} }, { { 201, -1} }, { { 300, -1} }, { { 400, -1} }, { { 501, -1} }, { { 17, -1} }, }; if( ch->haveSkill[i].use ){ int j; int skindex=ch->haveSkill[i].skill.data[SKILL_IDENTITY]; for( j=0 ; j<arraysizeof( additemtbl[0].itemid ); j++ ) CHAR_addItemToChar( ch, additemtbl[skindex].itemid[j] ); if( skindex == SKILL_MERCHANT ) ch->data[CHAR_GOLD] = 20; if( skindex == SKILL_MAGICIAN ) magician = TRUE; else if( skindex == SKILL_PRIEST ) priest = TRUE; } } if( magician || priest ) CHAR_addItemToChar( ch, 802 );}#if 1static int EnemyExpTbl[]={0, // 02, // 14, // 26, // 38, // 410, // 512, // 614, // 716, // 818, // 920, // 1026, // 1132, // 1238, // 1344, // 1450, // 1560, // 1670, // 1780, // 1890, // 19100, // 20115, // 21130, // 22145, // 23160, // 24175, // 25190, // 26205, // 27220, // 28235, // 29250, // 30270, // 31290, // 32310, // 33330, // 34350, // 35375, // 36400, // 37425, // 38450, // 39475, // 40500, // 41525, // 42550, // 43575, // 44600, // 45625, // 46650, // 47675, // 48700, // 49725, // 50750, // 51775, // 52800, // 53825, // 54850, // 55875, // 56900, // 57925, // 58950, // 59980, // 601010, // 611040, // 621070, // 631100, // 641130, // 651160, // 661190, // 671220, // 681250, // 691280, // 701310, // 711345, // 721380, // 731415, // 741450, // 751485, // 761520, // 771555, // 781590, // 791630, // 801670, // 811710, // 821750, // 831790, // 841830, // 851870, // 861910, // 871950, // 881990 // 89}; // 90// 酵烂读卅烦董袄煌遥int GetEnemyExp( int level ){/* int exp = 0; if( level < 5 ){ exp = 2 * level; }else if( level < 10 ){ exp = 10 * level; }else if( level < 20 ){ exp = 15 * level; }else if( level < 30 ){ exp = 30 * level; }else if( level < 40 ){ exp = 50 * level; }else if( level < 50 ){ exp =60 * level; }else if( level < 60 ){ exp =60 * level; }else{ exp =70 * level; }*/ if( level >= arraysizeof( EnemyExpTbl ) )level = arraysizeof( EnemyExpTbl )-1; return EnemyExpTbl[level];}#endifstatic int NeedLevelUpTbls[200] = { 0, 0, 2, 6, 18, 37, 67, 110, 170, 246, 344, 464, 610, 782, 986, 1221, 1491, 1798, 2146, 2534, 2968, 3448, 3978, 4558, 5194, 5885, 6635, 7446, 8322, 9262, 10272, 11352, 12506, 13734, 15042, 16429, 17899, 19454, 21098, 22830, 24656, 26576, 28594, 30710, 32930, 35253, 37683, 40222, 42874, 45638, 48520, 51520, 54642, 57886, 61258, 64757, 68387, 72150, 76050, 80086, 84264, 106110, 113412, 121149, 129352, 138044, 147256, 157019, 167366, 178334, 189958, 202282, 215348, 229205, 243901, 259495, 276041, 293606, 312258, 332071, 353126, 375511, 399318, 424655, 451631, 480370, 511007, 543686, 578571, 615838, 655680, 698312, 743971, 792917, 845443, 901868, 962554, 1027899, 1098353, 1174420, 1256663, 1345723, 1442322, 1547281, 1661531, 1786143, 1922340, 2071533, 2235351, 2415689, 2614754, 2835137, 3079892, 3352633, 3657676, 4000195, 4386445, 4824041, 5322323, 5892866, 6550125, 12326614, 15496114, 20025638, 26821885, 37698249, 56734876, 68097265, 68290815, 68487425, 68687119, 68889921, 69095855, 69304945, 69517215, 69732689, 69951391, 70173345, 70398575, 70627105, 70858959, 71244161, 71342735, 71584705, 71830095, 72078929, 72331231, 72587025, 72846335, 73109185, 73615599, 73655601, 73929215, 74206465, 74487375, 74771969, 75060271, 75352305, 75648095, 75947665, 76421039, 76563241, 76874295, 77189225, 77508055, 77830809, 78157511, 78488185, 78822855, 79161545, 79724279, 79856081, 80206975, 80561985, 80921135, 81284449, 81651951, 82023665, 82399615, 82779825, 83434319, 83558121, 83951255, 84348745, 84750615, 85156889, 85567591, 85982745, 86402375, 86826505, 87575159, 87693361, 88131135, 88573505, 89020495, 89472129, 89928431, 90389425, 90855135, 91325585, 91800799};int CHAR_GetLevelExp( int charaindex, int level){#ifdef _USER_EXP_CF if(level>getMaxLevel()){ if(level>CHAR_getInt(charaindex, CHAR_LIMITLEVEL)) return -1; }else if(level>getYBLevel()){ if (CHAR_getInt(charaindex, CHAR_WHICHTYPE)==CHAR_TYPEPET ) { if(getPettrans() != -1 ){ if(CHAR_getInt(charaindex,CHAR_TRANSMIGRATION)>=getPettrans()) return NeedLevelUpTbls[level]; }else{ if(level<=CHAR_getInt(charaindex, CHAR_LIMITLEVEL)) return NeedLevelUpTbls[level]; } return -1; }else{ if(CHAR_getInt(charaindex,CHAR_TRANSMIGRATION)<getChartrans()) return -1; } } return NeedLevelUpTbls[level];#else if( level >= arraysizeof( NeedLevelUpTbls ) ){ return -1; } return NeedLevelUpTbls[level];#endif}int CHAR_LevelUpCheck( int charaindex , int toindex){ int exp, level, nextexp, iRet = FALSE; if( CHAR_CHECKINDEX( charaindex ) == FALSE )return 0; exp = CHAR_getInt( charaindex, CHAR_EXP ); while( 1 ){ level = CHAR_getInt( charaindex, CHAR_LV ); nextexp = CHAR_GetLevelExp( charaindex, level+1); if( nextexp < 0 ) break; // Arminius 7.30 pet limit lv if (CHAR_getInt(charaindex, CHAR_WHICHTYPE)==CHAR_TYPEPET) { if (level >= CHAR_getInt(charaindex, CHAR_LIMITLEVEL) && CHAR_getInt(charaindex, CHAR_LIMITLEVEL) > 0 ) { CHAR_setInt( charaindex, CHAR_EXP , 0); break; } } if( exp >= nextexp ){ iRet ++; if( CHAR_getInt( charaindex, CHAR_WHICHTYPE ) == CHAR_TYPEPLAYER ){ CHAR_setInt( charaindex, CHAR_DUELPOINT, CHAR_getInt( charaindex, CHAR_DUELPOINT) + (level+1)*10 ); }#ifdef _PET_LIMITLEVEL else { CHAR_CheckPetDoLimitlevel( charaindex, toindex, level ); }#endif if( level >= CHAR_MAXUPLEVEL ){ }else{ if( CHAR_HandleExp( charaindex) != -1 ){ exp = CHAR_getInt( charaindex, CHAR_EXP ); CHAR_setInt( charaindex, CHAR_LV, level+1 ); } } }else{ break; } } return iRet;}#ifdef _PET_LIMITLEVELvoid CHAR_CheckPetDoLimitlevel( int petindex , int toindex, int level) { int LevelUpPoint,vital,str,tgh,dex; int j,k; char token[56];#define RAND(x,y) ((x-1)+1+ (int)( (double)(y-(x-1))*rand()/(RAND_MAX+1.0)) ) if( CHAR_getInt( petindex, CHAR_PETID) == 718 #ifdef _PET_2LIMITLEVEL || CHAR_getInt( petindex, CHAR_PETID) == 401#endif ) { LevelUpPoint = CHAR_getInt( petindex, CHAR_ALLOCPOINT ); vital = (int )(( LevelUpPoint >> 24 ) & 0xFF); str = (int)(( LevelUpPoint >> 16 ) & 0xFF); tgh = (int)(( LevelUpPoint >> 8 ) & 0xFF); dex = (int)(( LevelUpPoint >> 0 ) & 0xFF); if( strcmp( CHAR_getChar( petindex, CHAR_OWNERCDKEY), CHAR_getChar( toindex, CHAR_CDKEY) ) || strcmp( CHAR_getChar( petindex, CHAR_OWNERCHARANAME), CHAR_getChar( toindex, CHAR_NAME) )){ sprintf(token,"我不认识你呀!快把我还给我主人!"); //andy 1/11 reEdit vital -= RAND(2,10); if (vital<0) vital=0; str -= RAND(2,10); if (str<0) str=0; tgh -= RAND(2,10); if (tgh<0) tgh=0; dex -= RAND(2,10); if (dex<0) dex=0; LevelUpPoint = (vital<<24)+(str<<16)+(tgh<<8)+(dex<<0); CHAR_setInt( petindex, CHAR_ALLOCPOINT , LevelUpPoint); CHAR_talkToCli( toindex, petindex, token, CHAR_COLORWHITE); LogPetPointChange( CHAR_getChar( toindex, CHAR_NAME ), CHAR_getChar( toindex, CHAR_CDKEY ), CHAR_getChar( petindex, CHAR_NAME), petindex, 2, CHAR_getInt( petindex, CHAR_LV), "No_master(玛蕾不对主人)", CHAR_getInt( toindex,CHAR_FLOOR), CHAR_getInt( toindex,CHAR_X ), CHAR_getInt( toindex,CHAR_Y ) ); } if( ( level % 20 ) == 0 ) { for( j=0; j < 3; j++) { k = RAND( 0, 3); if( k == 0 ) vital--; if( k == 1 ) str--; if( k == 2 ) tgh--; if( k == 3 ) dex--; } if( vital < 0 ) vital =0; if( str < 0 ) str =0; if( tgh < 0 ) tgh =0; if( dex < 0 ) dex =0; LevelUpPoint = (vital<<24)+(str<<16)+(tgh<<8)+(dex<<0); CHAR_setInt( petindex, CHAR_ALLOCPOINT , LevelUpPoint); //print("\n << ( level % 20 ) == 0 >> "); LogPetPointChange( CHAR_getChar( toindex, CHAR_NAME ), CHAR_getChar( toindex, CHAR_CDKEY ), CHAR_getChar( petindex, CHAR_NAME), petindex,3, CHAR_getInt( petindex, CHAR_LV), "level%20", CHAR_getInt( toindex,CHAR_FLOOR), CHAR_getInt( toindex,CHAR_X ), CHAR_getInt( toindex,CHAR_Y ) ); } }}#endifint CHAR_PetTakeDrop( int petindex, int floor, int ox, int oy) //强制丢弃宠物升级{ int x, y, objindex; x = rand()%10; y = rand()%10; //丢下宠物 CHAR_endCharOneArray objindex = PET_dropPetAbsolute( petindex,floor,x,y, FALSE ); if( objindex == -1 ) { return -1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -