?? char_base.c
字號:
{{ 101305, 101306, 101307, 101308, 101309, 101310, 101311, 101312, 101008, 101009, 101978, 101989},0}, //小矮子 {{ 101313, 101314, 101315, 101316, 101317, 101318, 101319, 101320, 101018, 101019, 101986, 101988},0}, //賽亞人 {{ 101321, 101322, 101323, 101324, 101325, 101326, 101327, 101328, 101028, 101029, 101975, 101965},0}, //辮子男孩 {{ 101329, 101330, 101331, 101332, 101333, 101334, 101335, 101336, 101038, 101039, 101976, 101966},0}, //酷哥 {{ 101337, 101338, 101339, 101340, 101341, 101342, 101343, 101344, 101048, 101049, 101984, 101973},0}, //熊皮男 {{ 101345, 101346, 101347, 101348, 101349, 101350, 101351, 101352, 101058, 101059, 101985, 101974},0}, //大個 {{ 101353, 101354, 101355, 101356, 101357, 101358, 101359, 101360, 101068, 101069, 101977, 101967},0}, //小矮妹 {{ 101361, 101362, 101363, 101364, 101365, 101366, 101367, 101368, 101078, 101079, 101979, 101968},0}, //熊皮妹 {{ 101369, 101370, 101371, 101372, 101373, 101374, 101375, 101376, 101088, 101089, 101981, 101970},0}, //帽子妹 {{ 101377, 101378, 101379, 101380, 101381, 101382, 101383, 101384, 101098, 101099, 101980, 101969},0}, //短法發(fā)夾妹 {{ 101385, 101386, 101387, 101388, 101389, 101390, 101391, 101392, 101108, 101109, 101983, 101972},0}, //手套女 {{ 101393, 101394, 101395, 101396, 101397, 101398, 101399, 101400, 101118, 101119, 101982, 101970},0}, //辣妹};tagRidePetList RPlistMode[] = { { 100000, 0, 1 }, { 100005, 0, 1 }, { 100010, 0, 1 }, { 100015, 0, 1 }, { 100700, 0, 1 }, { 100705, 0, 1 }, //小矮子 { 100020, 1, 1 }, { 100025, 1, 1 }, { 100030, 1, 1 }, { 100035, 1, 1 }, { 100710, 1, 1 }, { 100715, 1, 1 },//賽亞人 { 100040, 2, 1 }, { 100045, 2, 1 }, { 100050, 2, 1 }, { 100055, 2, 1 }, { 100720, 2, 1 }, { 100725, 2, 1 }, //辮子男孩 { 100060, 3, 1 }, { 100065, 3, 1 }, { 100070, 3, 1 }, { 100075, 3, 1 }, { 100730, 3, 1 }, { 100735, 3, 1 }, //酷哥 { 100080, 4, 1 }, { 100085, 4, 1 }, { 100090, 4, 1 }, { 100095, 4, 1 }, { 100740, 4, 1 }, { 100745, 4, 1 }, //熊皮男 { 100100, 5, 1 }, { 100105, 5, 1 }, { 100110, 5, 1 }, { 100115, 5, 1 }, { 100750, 5, 1 }, { 100755, 5, 1 }, //大個 { 100120, 6, 2 }, { 100125, 6, 2 }, { 100130, 6, 2 }, { 100135, 6, 2 }, { 100760, 6, 2 }, { 100765, 6, 2 }, //小矮妹 { 100140, 7, 2 }, { 100145, 7, 2 }, { 100150, 7, 2 }, { 100155, 7, 2 }, { 100770, 7, 2 }, { 100775, 7, 2 }, //熊皮妹 { 100160, 8, 2 }, { 100165, 8, 2 }, { 100170, 8, 2 }, { 100175, 8, 2 }, { 100780, 8, 2 }, { 100785, 8, 2 }, //帽子妹 { 100180, 9, 2 }, { 100185, 9, 2 }, { 100190, 9, 2 }, { 100195, 9, 2 }, { 100790, 9, 2 }, { 100795, 9, 2 }, //短發(fā)夾妹 { 100200, 10, 2 }, { 100205, 10, 2 }, { 100210, 10, 2 }, { 100215, 10, 2 }, { 100800, 10, 2 }, { 100805, 10, 2 }, //手套女 { 100220, 11, 2 }, { 100225, 11, 2 }, { 100230, 11, 2 }, { 100235, 11, 2 }, { 100810, 11, 2 }, { 100815, 11, 2 }, //辣妹};int RIDEPET_getNOindex( int baseNo){ int i; for( i=0; i< sizeof(RPlistMode)/sizeof(tagRidePetList); i++ ) { if( RPlistMode[i].charNo == baseNo ) { return RPlistMode[i].Noindex; } } return -1;}int RIDEPET_getPETindex( int PetNo, int learnCode){ int i; for( i=0; i< sizeof(RideCodeMode)/sizeof(tagRideCodeMode); i++ ) { if( RideCodeMode[i].petNo == PetNo && (RideCodeMode[i].learnCode & learnCode) ) { return i; } } return -1;}int RIDEPET_getRIDEno( int index, int ti){ if( index < 0 || index >= sizeof( RideNoList)/sizeof( tagRideNoList) ) return -1; if( ti < 0 || ti >= MAXNOINDEX ) return -1; return RideNoList[index].RideNo[ti];}#endif#ifdef _EMENY_CHANCEMANint CHAR_getSexInt( int baseNo ){ int i; for( i=0; i< sizeof(RPlistMode)/sizeof(tagRidePetList); i++ ) { if( RPlistMode[i].charNo == baseNo ) { return RPlistMode[i].sex; } } return -1;}#endif#ifdef _PET_EVOLUTION#define MAXTABLE_X 29#define MAXTABLE_Y 29int PetTable[MAXTABLE_X][MAXTABLE_Y]={ //0 4 9 14 19 24 { 1, 2, 5, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 5, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5}, { 2, 5, 1, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1}, { 5, 1, 2, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2}, { 1, 2, 5, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5}, { 2, 5, 1, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1}, { 2, 1, 2, 1, 2, 2, 2, 5, 5, 1, 2, 5, 2, 1, 2, 1, 2, 5, 2, 1, 2, 1, 2, 5, 2, 5, 2, 1, 2}, { 1, 2, 5, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 1}, { 2, 5, 1, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 2}, {10, 3,10, 3,10, 8,10, 8,10, 3,10, 3,10, 8,10, 8,10, 3,10, 3,10, 8,10, 8,10, 8,10, 3,10}, { 3, 8, 3, 8, 3,10, 3,10, 8, 3, 3, 8, 3, 8, 3,10, 3,10, 3, 8, 3, 8, 3,10, 3,10, 3, 8, 3}, { 3, 8,10, 3, 8,10, 3, 8,10, 3, 8,10, 3, 8,10, 3, 8,10, 3, 8,10, 3, 8,10, 3, 8,10, 3, 8}, { 5, 1, 5, 1, 5, 2, 5, 2, 5, 1, 5, 5, 5, 1, 5, 2, 5, 2, 5, 1, 5, 1, 5, 2, 5, 2, 5, 1, 5}, { 8,10, 3, 8,10, 3, 8,10, 3, 8,10, 3, 8,10, 3, 8,10, 3, 8,10, 3, 8,10, 3, 8,10, 3, 8,10}, {10, 3, 8,10, 3, 8,10, 3, 8,10, 3, 8,10, 3, 8,10, 3, 8,10, 3, 8,10, 3, 8,10, 3, 8,10, 3}, { 3, 8,10, 3, 8,10, 3, 8,10, 3, 8,10, 3, 8,10, 3, 8,10, 3, 8,10, 3, 8,10, 3, 8,10, 3, 8}, { 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1}, { 9, 0, 9, 0, 9, 4, 9, 4, 9, 0, 9, 0, 9, 4, 9, 4, 9, 0, 9, 0, 9, 4, 9, 4, 9, 0, 9, 4, 9}, { 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2}, { 6, 0, 6, 0, 6, 9, 6, 9, 6, 0, 6, 0, 6, 9, 6, 9, 6, 0, 6, 0, 6, 9, 6, 9, 6, 0, 6, 9, 6}, { 4, 6, 4, 6, 4, 9, 4, 9, 4, 6, 4, 6, 4, 9, 4, 9, 4, 6, 4, 6, 4, 9, 4, 9, 4, 6, 4, 9, 4}, { 8, 3, 8, 3, 8,10, 8,10, 8, 3, 8, 3, 8,10, 8,10, 8, 3, 8, 3, 8,10, 8,10, 8, 3, 8,10, 8}, { 8,10, 3, 8,10, 3, 8,10,10, 3, 8,10, 3, 8,10, 3,10, 3, 8,10, 3, 8,10, 3, 8,10, 3, 8,10}, { 1, 2, 5, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5}, { 0, 4, 0, 4, 0, 6, 0, 6, 0, 4, 0, 4, 0, 6, 0, 6, 0, 4, 0, 4, 0, 6, 0, 4, 0, 6, 0, 4, 0}, { 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2, 5, 1, 2}, { 3, 8,10, 3, 8,10, 3, 8,10, 3, 8,10, 3, 8,10, 3, 8,10, 3, 8,10, 3, 8,10, 3, 8,10, 3, 8}, {10, 3, 8,10, 3, 8,10, 3, 8,10, 3, 8,10, 3, 8,10, 3, 8,10, 3, 8,10, 3, 8,10, 3, 8,10, 3}, { 2, 1, 2, 1, 5, 1, 5, 1, 2, 1, 2, 1, 5, 1, 5, 1, 2, 1, 2, 1, 5, 1, 5, 1, 2, 1, 2, 5, 1}, { 6, 9, 6, 9, 6, 0, 6, 0, 6, 9, 6, 9, 6, 0, 6, 0, 6, 9, 6, 9, 6, 0, 6, 0, 6, 9, 6, 0, 6}};int PropertyTable[4][4]={ { 0, 4, 5, 6}, { 7, 1, 8, 9}, {10,11, 2,12}, {13,14,15, 3},};#define MAXFTABLE_X 11#define MAXFTABLE_Y 16int FusionTable[MAXFTABLE_X][MAXFTABLE_Y]={ { 989, 990, 991, 992, 989, 992, 989, 990, 990, 990, 991, 991, 991, 992, 989, 992}, {1001,1002,1003,1004,1001,1001,1004,1001,1002,1002,1003,1003,1003,1004,1004,1003}, {1005,1006,1007,1008,1005,1005,1005,1006,1006,1006,1007,1006,1007,1008,1008,1008}, {1021,1025,1023,1024,1025,1021,1021,1022,1022,1022,1023,1023,1023,1021,1024,1024}, {1030,1031,1032,1033,1030,1030,1030,1031,1031,1031,1032,1031,1032,1030,1033,1033}, {1017,1018,1019,1020,1018,1017,1017,1018,1019,1018,1019,1019,1020,1017,1020,1020}, {1009,1010,1011,1012,1010,1009,1009,1010,1010,1010,1011,1011,1011,1012,1012,1011}, { 993, 994, 995, 996, 994, 993, 993, 994, 995, 994, 995, 993, 996, 993, 996, 996}, {1026,1027,1028,1029,1026,1026,1026,1026,1028,1027,1028,1028,1029,1029,1029,1029}, { 997, 998, 999, 999,1000, 997, 997,1000, 998, 998,1000, 998, 999, 999, 999, 999}, {1013,1014,1015,1016,1013,1013,1016,1013,1015,1014,1015,1015,1015,1016,1016,1016}};int EVOLUTION_getPetFusionCode( int petid){ int petarray = ENEMYTEMP_getEnemyTempArrayFromTempNo( petid); return ENEMYTEMP_getInt( petarray, E_T_FUSIONCODE);}int EVOLUTION_getPetTable( int charaindex, int petindex1, int petindex2){ int table1,table2; if( !CHAR_CHECKINDEX( petindex1) ) return -1; if( !CHAR_CHECKINDEX( petindex2) ) return -1; table2 = EVOLUTION_getPetFusionCode( CHAR_getInt( petindex1, CHAR_PETID)); table1 = EVOLUTION_getPetFusionCode( CHAR_getInt( petindex2, CHAR_PETID)); if( table1 < 0 || table1 >= MAXTABLE_X ) return -1; if( table2 < 0 || table2 >= MAXTABLE_Y ) return -1; return PetTable[table1][table2];}int EVOLUTION_getPropertyTable( int charaindex, int petindex1, int petindex2){ int i, k1=0, k2=0; int table1,table2; int Property1[4]={-1,-1,-1,-1}; int Property2[4]={-1,-1,-1,-1}; if( !CHAR_CHECKINDEX( petindex1) ) return -1; if( !CHAR_CHECKINDEX( petindex2) ) return -1; for( i=0; i<4; i++) { if( CHAR_getInt( petindex1, CHAR_EARTHAT+i) > 0 ){ Property1[k1] = i; k1++; } if( CHAR_getInt( petindex2, CHAR_EARTHAT+i) > 0 ){ Property2[k2] = i; k2++; } } if( k1 == 0 || k2 == 0 ) return -1; if( k1 <= 1 ) { table1 = Property1[ 0]; }else{ table1 = Property1[ (rand()%(k1-1)) ]; } if( k2 <= 1 ) { table2 = Property2[ 0]; }else { table2 = Property2[ (rand()%(k2-1)) ]; } if( table1 < 0 || table1 >= 4 ) return -1; if( table2 < 0 || table2 >= 4 ) return -1; return PropertyTable[table1][table2];}int EVOLUTION_getFusionTable( int charaindex, int px, int py){ if( px >= MAXFTABLE_X || px < 0 ) return -1; if( py >= MAXFTABLE_Y || py < 0 ) return -1; return FusionTable[px][py];}#endif#ifdef _CHAR_FIXDATADEF/*typedef struct _tagPetSetIntData{ char com[256]; int type;}PetSetIntData;PetSetIntData PET_SetIntData[ ]={};*/#endifstatic char* CHAR_setintdata[CHAR_DATAINTNUM]={ /* dci , PLAYER, */ "pn", /* CHAR_DATAPLACENUMBER */ "bi", /* CHAR_BASEIMAGENUMBER */ "bbi", /* CHAR_BASEBASEIMAGENUMBER */ "fb", /* CHAR_FACEIMAGENUMBER */ "fl", /* CHAR_FLOOR */ "x", /* CHAR_X */ "y", /* CHAR_Y */ "dir", /* CHAR_DIR 12凜毛0卞凜煌璃曰卞 */ "lv", /* CHAR_LV */ "gld", /* CHAR_GOLD */ "hp", /* CHAR_HP */ "mp", /* CHAR_MP */ "mmp", /* CHAR_MAXMP */ "vi", /* CHAR_VITAL */ "str", /* CHAR_STR */ "tou", /* CHAR_TOUGH */ "dx", /* CHAR_DEX */ "chr", /* CHAR_CHARM */ "luc", /* CHAR_LUCK */ "aea", /* 嘩簞嶺 */ "awa", /* 簞嶺 */ "afi", /* 紹簞嶺 */ "awi", /* 氘簞嶺 */ "slt", /* CHAR_SLOT */ "cr", /* CHAR_CRITIAL */ "cou", /* CHAR_COUNTER */ "rar", /* CHAR_RARE */ "rst", /* CHAR_RADARSTRLENGTH */ "cvo", /* CHAR_CHATVOLUME */ "ml", /* CHAR_MERCHANTLEVEL */ "hl", /* CHAR_HEALERLEVEL */ "di", /* CHAR_DETERMINEITEM */ "ieqt", /* CHAR_INDEXOFEQTITLE */ "poi", /* CHAR_POISON */ "par", /* CHAR_PARALYSIS */ "sil", /* CHAR_SILENCE */ "sto", /* CHAR_STONE */ "dar", /* CHAR_DARKNESS */ "con", /* CHAR_CONFUSION */ "loc", /* CHAR_LOGINCOUNT */ "dc", /* CHAR_DEADCOUNT */ "wc", /* CHAR_WALKCOUNT */ "tc", /* CHAR_TALKCOUNT */ "dmc", /* CHAR_DAMAGECOUNT */ "gpc", /* CHAR_GETPETCOUNT */ "kpc", /* CHAR_KILLPETCOUNT */ "dpc", /* CHAR_DEADPETCOUNT */ "smc", /* CHAR_SENDMAILCOUNT */ "mic", /* CHAR_MERGEITEMCOUNT */ "dbc", /* CHAR_DUELBATTLECOUNT */ "dwc", /* CHAR_DUELWINCOUNT */ "dlc", /* CHAR_DUELLOSECOUNT */ "dswc", /* CHAR_DUELSTWINCOUNT */ "dmswc", /* CHAR_DUELMAXSTWINCOUNT */ "wht", /* CHAR_WHICHTYPE */ "wint", /* CHAR_WALKNTERVAL */ "lint", /* CHAR_LOOPINTERVAL */#ifdef _NEWOPEN_MAXEXP "exp", /* CHAR_OLDEXP */ "nexp", /* CHAR_EXP */#else "exp", /* CHAR_EXP */#endif "lte", /* CHAR_LASTTALKELDER */ "skup", /* CHAR_SKILLUPPOINT */ "lvup", /* CHAR_LEVELUPPOINT */ "ity", /* CHAR_IMAGETYPE */ "nc", /* CHAR_NAMECOLOR */ "pnc", /* CHAR_POPUPNAMECOLOR */ "llt", /* CHAR_LASTTIMESETLUCK */ "duel", /* CHAR_DUELPOINT */ "evt", /* CHAR_EVENT */ "evt2", /* CHAR_EVENT2 */ "evt3", /* CHAR_EVENT3 */#ifdef _NEWEVENT "evt4", /* CHAR_EVENT4 */ "evt5", /* CHAR_EVENT5 */ "evt6", /* CHAR_EVENT6 */#endif#ifdef _ADD_NEWEVENT // WON 多增任務旗標 "evt7", /* CHAR_EVENT7 */ "evt8", // CHAR_ENDEVENT8, 224~255 精靈召喚專用#endif "nev", /* CHAR_NOWEVENT */ "nev2", /* CHAR_NOWEVENT2 */ "nev3", /* CHAR_NOWEVENT3 */#ifdef _NEWEVENT "nev4", /* CHAR_NOWEVENT4 */ "nev5", /* CHAR_NOWEVENT5 */ "nev6", /* CHAR_NOWEVENT6 */#endif#ifdef _ADD_NEWEVENT // WON 多增任務旗標 "nev7", /* CHAR_NOWEVENT7 */ "nev8", // CHAR_NOWEVENT8, 224~255 精靈召喚專用#endif "trn", /* CHAR_TRANSMIGRATION */ "teq", /* CHAR_TRANSEQUATION */ "ini", /* CHAR_INITDATA */ "silent", /* CHAR_SILENT */ "fmi", // CoolFish: Family 2001/5/24 家族 index "fmlf", // CoolFish: Family 2001/5/24 是否為家族族長 "fmspr", // CoolFish: Family 2001/7/13 家族守護精靈 "bankgld", /* CHAR_BANKGOLD */ "ridepet", /* CHAR_RIDEPET */ "learnride", /* CHAR_LEARNRIDE */#ifdef _NEW_RIDEPETS "lowridepet", //CHAR_LOWRIDEPETS#endif "limitlv", // Arminius 7.30 pet limit level#ifdef _PET_FUSION "fusioncode", //CHAR_FUSIONCODE "fusionindex", //CHAR_FUSIONINDEX "fusionraise", //CHAR_FUSIONRAISE "fusionbe", //CHAR_FUSIONBEIT "futimelimit", //CHAR_FUSIONTIMELIMIT#endif#ifdef _DEATH_CONTEND "pkltnum", //CHAR_PKLISTTEAMNUM, "pkleader", //CHAR_PKLISTLEADER,#endif#ifdef _PERSONAL_FAME // Arminius 8.30: 家族個人聲望 "fame",#endif#ifdef _NEWSAVE "sindex", /* CHAR_SAVEINDEXNUMBER */#endif#ifdef __ATTACK_MAGIC "earth_exp", // 玩家的地魔法熟練度 "water_exp", // 玩家的水魔法熟練度 "fire_exp", // 玩家的火魔法熟練度 "wind_exp", // 玩家的風魔法熟練度 "earth_resist", // 玩家的地魔法抗性 "water_resist", // 玩家的水魔法抗性 "fire_resist", // 玩家的火魔法抗性 "wind_resist", // 玩家的風魔法抗性 "earth_attmagic_exp", // 玩家的地魔法熟練度經(jīng)驗值 "water_attmagic_exp", // 玩家的水魔法熟練度經(jīng)驗值 "fire_attmagic_exp", // 玩家的火魔法熟練度經(jīng)驗值 "wind_attmagic_exp", // 玩家的風魔法熟練度經(jīng)驗值 "earth_defmagic_exp", // 玩家的地魔法抗性經(jīng)驗值 "water_defmagic_exp", // 玩家的水魔法抗性經(jīng)驗值 "fire_defmagic_exp", // 玩家的火魔法抗性經(jīng)驗值 "wind_defmagic_exp", // 玩家的風魔法抗性經(jīng)驗值#endif#ifdef _GAMBLE_BANK //個人銀行 "personaglod", //CHAR_PERSONAGOLD,#endif#ifdef _DROPSTAKENEW "gamblenums", //CHAR_GAMBLENUM#endif#ifdef _ADD_ACTION //npc動作 "actsty", //CHAR_ACTIONSTYLE#endif#ifdef _AUCTIONEER "aucgold", // CHAR_AUCGOLD 拍賣所得#endif#ifdef _PET_EVOLUTION "evbasevtl",// CHAR_EVOLUTIONBASE, "evbasestr",// CHAR_EVOLUTIONBASE, "evbasetgh",// CHAR_EVOLUTIONBASE, "evbasedex",// CHAR_EVOLUTIONBASE, #endif#ifdef _ACTION_BULLSCR "abullstart", //CHAR_ABULLSTART "abullscore", //CHAR_ABULLSCORE, "abulltime", //CHAR_ABULLTIME, "abullstarttime", //CHAR_ABULLSTARTTIME#endif#ifdef _ACTION_GMQUE "gmqueflg", //CHAR_GMQUEFLG, "gmquenum", //CHAR_GMQUENUMS,#endif#ifdef _FAMILYBANKSTONELOG "fmbankgold", //家族銀行存款#endif#ifdef _FM_JOINLIMIT "fmtimelimit", // CHAR_FMTIMELIMIT,#endif#ifdef _CHAR_PROFESSION // WON ADD 人物職業(yè) "profession_class", "profession_level",// "profession_exp", "profession_skill_point", "attachpile", "profession_fire_p", "profession_ice_p", "profession_thunder_p", "profession_fire_r", "profession_ice_r",
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -