-+-+-+-+-+-+-+-+ START OF PART 40 -+-+-+-+-+-+-+-+ X`7B"Earth Elemental"`09 ,0x001E000AL,0x00000000L,0x1200, 375, 90, X 10, 60, 10, 'E', `7B30,8`7D , `7B22,22,0,0`7D`09`09, 34`7D, X`7B"Young Black Dragon"`09 ,0x1F00000AL,0x0020100BL,0x6005, 600, 50, X 20, 55, 11, 'd', `7B32,8`7D , `7B53,53,29,0`7D`09`09, 35`7D, X`7B"Young Red Dragon"`09 ,0x1F00000AL,0x0080100AL,0x6015, 650, 50, X 20, 60, 11, 'd', `7B36,8`7D , `7B54,54,37,0`7D`09`09, 35`7D, X`7B"Necromancer"`09`09 ,0x13020002L,0x00005763L,0x6030, 600, 10, X 20, 40, 11, 'p', `7B17,8`7D , `7B15,0,0,0`7D`09`09, 35`7D, X`7B"Mummified Troll"`09 ,0x0F020002L,0x00000000L,0x502C, 400, 50, X 20, 38, 11, 'M', `7B18,8`7D , `7B15,15,0,0`7D`09`09, 35`7D, X`7B"Giant Red Ant Lion"`09 ,0x0008000AL,0x00000000L,0x2012, 350, 40, X 14, 48, 11, 'A', `7B23,8`7D , `7B107,0,0,0`7D`09`09, 35`7D, X`7B"Mature White Dragon"`09 ,0x2F00000AL,0x0040100AL,0x4025, 1000, 70, X 20, 65, 11, 'd', `7B48,8`7D , `7B54,54,37,0`7D`09`09, 35`7D, X`7B"Xorn"`09`09`09 ,0x00160002L,0x00000000L,0x4200, 650, 10, X 20, 80, 11, 'X', `7B20,8`7D , `7B5,5,5,0`7D`09`09`09, 36`7D, X`7B"Giant Mottled Ant Lion" ,0x0008000AL,0x00000000L,0x0032, 350, 40, X 14, 50, 12, 'A', `7B24,8`7D , `7B38,0,0,0`7D`09`09, 36`7D, X`7B"Grey Wraith"`09`09 ,0x0F02000AL,0x00001308L,0x512C, 700, 10, X 20, 50, 11, 'W', `7B23,8`7D , `7B9,9,196,0`7D`09`09, 36`7D, X`7B"Young Multi-Hued Dragon" ,0x4F00000AL,0x00F81005L,0x6005, 1250, 50, X 20, 55, 11, 'd', `7B40,8`7D , `7B55,55,38,0`7D`09`09, 36`7D, X`7B"Mature Blue Dragon"`09 ,0x2F00000AL,0x00081009L,0x6005, 1200, 70, X 20, 75, 11, 'd', `7B48,8`7D , `7B54,54,38,0`7D`09`09, 36`7D, X`7B"Mature Green Dragon"`09 ,0x2F00000AL,0x0010100AL,0x6005, 1100, 70, X 20, 70, 11, 'd', `7B48,8`7D , `7B52,52,29,0`7D`09`09, 36`7D, X`7B"Iridescent Beetle"`09 ,0x0000000AL,0x00000000L,0x0002, 850, 30, X 16, 60, 11, 'K', `7B32,8`7D , `7B45,10,146,0`7D`09`09, 37`7D, X`7B"King Vampire"`09`09 ,0x17020002L,0x00001307L,0x512C, 1000, 10, X 20, 65, 11, 'V', `7B38,8`7D , `7B5,5,198,0`7D`09`09, 37`7D, X`7B"King Lich"`09`09 ,0x1F020002L,0x00019F73L,0x510C, 1400, 50, X 20, 65, 11, 'L', `7B52,8`7D , `7B180,197,214,0`7D`09`09, 37`7D, X`7B"Mature Red Dragon"`09 ,0x2F00000AL,0x00801808L,0x6015, 1400, 30, X 20, 80, 11, 'd', `7B60,8`7D , `7B56,56,39,0`7D`09`09, 37`7D, X`7B"Mature Black Dragon"`09 ,0x2F00000AL,0x00201009L,0x6005, 1350, 30, X 20, 55, 11, 'd', `7B58,8`7D , `7B54,54,38,0`7D`09`09, 37`7D, X`7B"Mature Multi-Hued Dragon" ,0x6F00000AL,0x00F81A05L,0x6005, 1650, 50, X 20, 65, 11, 'd', `7B80,8`7D , `7B56,56,39,0`7D`09`09, 38`7D, X`7B"Ancient White Dragon"`09 ,0x4F000002L,0x00401A09L,0x4025, 1500, 80, X 20, 80, 12, 'D', `7B88,8`7D , `7B54,54,37,0`7D`09`09, 38`7D, X`7B"Emperor Wight"`09 ,0x1B02000AL,0x00001306L,0x512C, 1600, 10, X 20, 40, 12, 'W', `7B48,8`7D , `7B10,10,199,0`7D`09`09, 38`7D, X`7B"Black Wraith"`09`09 ,0x1F02000AL,0x00001307L,0x512C, 1700, 10, X 20, 55, 11, 'W', `7B50,8`7D , `7B10,10,200,0`7D`09`09, 38`7D, X`7B"Nether Wraith"`09 ,0x1F07000AL,0x00005316L,0x512C, 2100, 10, X 20, 55, 11, 'W', `7B58,8`7D , `7B10,10,202,0`7D`09`09, 39`7D, X`7B"Sorcerer"`09`09 ,0x1F020002L,0x0000FF73L,0x6030, 2150, 10, X 20, 50, 12, 'p', `7B30,8`7D , `7B16,0,0,0`7D`09`09, 39`7D, X`7B"Ancient Blue Dragon"`09 ,0x4F000002L,0x00081A08L,0x6005, 2500, 80, X 20, 90, 12, 'D', `7B87,8`7D , `7B55,55,39,0`7D`09`09, 39`7D, X`7B"Ancient Green Dragon"`09 ,0x4F000002L,0x00101A09L,0x6005, 2400, 80, X 20, 85, 12, 'D', `7B90,8`7D , `7B54,54,38,0`7D`09`09, 39`7D, X`7B"Ancient Black Dragon"`09 ,0x4F000002L,0x00201A07L,0x6005, 2500, 70, X 20, 90, 12, 'D', `7B90,8`7D , `7B55,55,38,0`7D`09`09, 39`7D, X`7B"Crystal Ooze"`09`09 ,0x073B000AL,0x00000000L,0x10A0, 8, 1, X 10, 30, 9, 'O', `7B12,8`7D , `7B128,0,0,0`7D`09`09, 40`7D, X`7B"Disenchanter Worm"`09 ,0x00200022L,0x00000000L,0x01B2, 30, 10, X 7,`095, 10, 'w', `7B10,8`7D , `7B208,0,0,0`7D`09`09, 40`7D, X`7B"Rotting Quylthulg"`09 ,0x00010004L,0x00004014L,0x5000, 1000, 0, X 20,`091, 12, 'Q', `7B12,8`7D , `7B0,0,0,0`7D`09`09`09, 40`7D, X`7B"Ancient Red Dragon"`09 ,0x6F000002L,0x00801E06L,0x6015, 2750, 70, X 20, 100, 12, 'D', `7B105,8`7D , `7B56,56,40,0`7D`09`09, 40`7D, X`7B"Death Quasit"`09`09 ,0x1103000AL,0x000010FAL,0x1004, 1000, 0, X 20, 80, 13, 'q', `7B55,8`7D , `7B177,58,58,0`7D`09`09, 40`7D, X`7B"Emperor Lich"`09`09 ,0x2F020002L,0x00019F72L,0x510C,10000, 50, X 20, 75, 12, 'L', `7B38,40`7D , `7B181,201,214,0`7D`09`09, 40`7D, X`7B"Ancient Multi-Hued Dragon",0x7F000002L,0x00F89E05L,0x6005,12000, 70, X 20, 100, 12, 'D', `7B52,40`7D , `7B57,57,42,0`7D`09`09, 40`7D, X`09/* Winning creatures should follow here.`09`09`09 */ X`09/* Winning creatures are denoted by the 32 bit in CMOVE`09`09 */ X`09/* Iggy is not a win creature, just a royal pain in the ass.`09 */ X`7B"Evil Iggy"`09`09 ,0x7F130002L,0x0001D713L,0x5004,18000, 0, X 30, 80, 12, 'p', `7B60,40`7D , `7B81,150,0,0`7D`09`09, 50`7D, X`09/* Here is the only actual win creature.`09`09`09 */ X`7B"Balrog"`09`09 ,0xFF1F0002L,0x0081C743L,0x5004,55000L, 0, X 40, 125, 13, 'B', `7B75,40`7D , `7B104,78,214,0`7D`09`09, 100`7D X`7D; X#endif X X/* ERROR: attack #35 is no longer used */ Xstruct m_attack_type monster_attacks`5BN_MONS_ATTS`5D = `7B X/* 0 */`09`7B0, 0, 0, 0`7D,`09`7B1, 1, 1, 2`7D,`09`7B1, 1, 1, 3`7D,`09`7B1, V 1, 1, 4`7D, X`09`7B1, 1, 1, 5`7D,`09`7B1, 1, 1, 6`7D,`09`7B1, 1, 1, 7`7D,`09`7B1, 1, 1, 8 V`7D, X`09`7B1, 1, 1, 9`7D,`09`7B1, 1, 1, 10`7D,`09`7B1, 1, 1, 12`7D,`09`7B1, 1, 2, V 2`7D, X`09`7B1, 1, 2, 3`7D,`09`7B1, 1, 2, 4`7D,`09`7B1, 1, 2, 5`7D,`09`7B1, 1, 2, 6 V`7D, X`09`7B1, 1, 2, 8`7D,`09`7B1, 1, 3, 4`7D,`09`7B1, 1, 3, 5`7D,`09`7B1, 1, 3, 6 V`7D, X/* 20 */`7B1, 1, 3, 8`7D,`09`7B1, 1, 4, 3`7D,`09`7B1, 1, 4, 6`7D,`09`7B1, 1, V 5, 5`7D, X`09`7B1, 2, 1, 1`7D,`09`7B1, 2, 1, 2`7D,`09`7B1, 2, 1, 3`7D,`09`7B1, 2, 1, 4 V`7D, X`09`7B1, 2, 1, 5`7D,`09`7B1, 2, 1, 6`7D,`09`7B1, 2, 1, 7`7D,`09`7B1, 2, 1, 8 V`7D, X`09`7B1, 2, 1, 10`7D,`09`7B1, 2, 2, 3`7D,`09`7B1, 2, 2, 4`7D,`09`7B1, 2, 2, V 5`7D, X`09`7B1, 2, 2, 6`7D,`09`7B1, 2, 2, 8`7D,`09`7B1, 2, 2, 10`7D,`09`7B1, 2, 2, V 12`7D, X/* 40 */`7B1, 2, 2, 14`7D,`09`7B1, 2, 3, 4`7D,`09`7B1, 2, 3, 12`7D,`09`7B1, V 2, 4, 4`7D, X`09`7B1, 2, 4, 5`7D,`09`7B1, 2, 4, 6`7D,`09`7B1, 2, 4, 8`7D,`09`7B1, 2, 5, 4 V`7D, X`09`7B1, 2, 5, 8`7D,`09`7B1, 3, 1, 1`7D,`09`7B1, 3, 1, 2`7D,`09`7B1, 3, 1, 3 V`7D, X`09`7B1, 3, 1, 4`7D,`09`7B1, 3, 1, 5`7D,`09`7B1, 3, 1, 8`7D,`09`7B1, 3, 1, 9 V`7D, X`09`7B1, 3, 1, 10`7D,`09`7B1, 3, 1, 12`7D,`09`7B1, 3, 3, 3`7D,`09`7B1, 4, 1, V 2`7D, X/* 60 */`7B1, 4, 1, 3`7D,`09`7B1, 4, 1, 4`7D,`09`7B1, 4, 2, 4`7D,`09`7B1, 5, V 1, 2`7D, X`09`7B1, 5, 1, 3`7D,`09`7B1, 5, 1, 4`7D,`09`7B1, 5, 1, 5`7D,`09`7B1, 10, 5, V 6`7D, X`09`7B1, 12, 1, 1`7D,`09`7B1, 12, 1, 2`7D,`09`7B1, 13, 1, 1`7D,`09`7B1, 13, V 1, 3`7D, X`09`7B1, 14, 0, 0`7D,`09`7B1, 16, 1, 4`7D,`09`7B1, 16, 1, 6`7D,`09`7B1, 16, V 1, 8`7D, X`09`7B1, 16, 1, 10`7D,`09`7B1, 16, 2, 8`7D,`09`7B1, 17, 8, 12`7D,`09`7B1, 18 V, 0, 0`7D, X/* 80 */`7B2, 1, 3, 4`7D,`09`7B2, 1, 4, 6`7D,`09`7B2, 2, 1, 4`7D,`09`7B2, 2, V 2, 4`7D, X`09`7B2, 2, 4, 4`7D,`09`7B2, 4, 1, 4`7D,`09`7B2, 4, 1, 7`7D,`09`7B2, 5, 1, 5 V`7D, X`09`7B2, 7, 1, 6`7D,`09`7B3, 1, 1, 4`7D,`09`7B3, 5, 1, 8`7D,`09`7B3, 13, 1, V 4`7D, X`09`7B3, 7, 0, 0`7D,`09`7B4, 1, 1, 1`7D,`09`7B4, 1, 1, 4`7D,`09`7B4, 2, 1, 2 V`7D, X`09`7B4, 2, 1, 6`7D,`09`7B4, 5, 0, 0`7D,`09`7B4, 7, 0, 0`7D,`09`7B4, 10, 0, V 0`7D, X/*100 */`7B4, 13, 1, 6`7D,`09`7B5, 1, 2, 6`7D,`09`7B5, 1, 3, 7`7D,`09`7B5, 1 V, 4, 6`7D, X`09`7B5, 1, 10, 12`7D,`09`7B5, 2, 1, 3`7D,`09`7B5, 2, 3, 6`7D,`09`7B5, 2, 3, V 12`7D, X`09`7B5, 5, 4, 4`7D,`09`7B5, 9, 3, 7`7D,`09`7B5, 9, 4, 5`7D,`09`7B5, 12, 1, V 6`7D, X`09`7B6, 2, 1, 3`7D,`09`7B6, 2, 2, 8`7D,`09`7B6, 2, 4, 4`7D,`09`7B6, 5, 1, 1 V0`7D, X`09`7B6, 5, 2, 3`7D,`09`7B6, 8, 1, 5`7D,`09`7B6, 9, 2, 6`7D,`09`7B6, 9, 3, 6 V`7D, X/*120 */`7B7, 1, 3, 6`7D,`09`7B7, 2, 1, 3`7D,`09`7B7, 2, 1, 6`7D,`09`7B7, 2, V 3, 6`7D, X`09`7B7, 2, 3, 10`7D,`09`7B7, 5, 1, 6`7D,`09`7B7, 5, 2, 3`7D,`09`7B7, 5, 2, V 6`7D, X`09`7B7, 5, 4, 4`7D,`09`7B7, 12, 1, 4`7D,`09`7B8, 1, 3, 8`7D,`09`7B8, 2, 1, V 3`7D, X`09`7B8, 2, 2, 6`7D,`09`7B8, 2, 3, 8`7D,`09`7B8, 2, 5, 5`7D,`09`7B8, 5, 5, 4 V`7D, X`09`7B9, 5, 1, 2`7D,`09`7B9, 5, 2, 5`7D,`09`7B9, 5, 2, 6`7D,`09`7B9, 8, 2, 4 V`7D, X/*140 */`7B9, 12, 1, 3`7D,`09`7B10, 2, 1, 6`7D,`09`7B10, 4, 1, 1`7D,`09`7B10 V, 7, 2, 6`7D, X`09`7B10, 9, 1, 2`7D,`09`7B11, 1, 1, 2`7D,`09`7B11, 7, 0, 0`7D,`09`7B11, 13, V 2, 4`7D, X`09`7B12, 5, 0, 0`7D,`09`7B13, 5, 0, 0`7D,`09`7B13, 19, 0, 0`7D,`09`7B14, 1, V 1, 3`7D, X`09`7B14, 1, 3, 4`7D,`09`7B14, 2, 1, 3`7D,`09`7B14, 2, 1, 4`7D,`09`7B14, 2, V 1, 5`7D, X`09`7B14, 2, 1, 6`7D,`09`7B14, 2, 1, 10`7D,`09`7B14, 2, 2, 4`7D,`09`7B14, 2, V 2, 5`7D, X/*160 */`7B14, 2, 2, 6`7D,`09`7B14, 2, 3, 4`7D,`09`7B14, 2, 3, 9`7D,`09`7B14 V, 2, 4, 4`7D, X`09`7B14, 4, 1, 2`7D,`09`7B14, 4, 1, 4`7D,`09`7B14, 4, 1, 8`7D,`09`7B14, 4, V 2, 5`7D, X`09`7B14, 5, 1, 2`7D,`09`7B14, 5, 1, 3`7D,`09`7B14, 5, 2, 4`7D,`09`7B14, 5, V 2, 6`7D, X`09`7B14, 5, 3, 5`7D,`09`7B14, 12, 1, 2`7D,`09`7B14, 12, 1, 4`7D,`09`7B14, 1 V3, 2, 4`7D, X`09`7B15, 2, 1, 6`7D,`09`7B15, 2, 3, 6`7D,`09`7B15, 5, 1, 8`7D,`09`7B15, 5, V 2, 8`7D, X/*180 */`7B15, 5, 2, 10`7D,`09`7B15, 5, 2, 12`7D,`09`7B15, 12, 1, 3`7D,`09`7 VB16, 13, 1, 2`7D, X`09`7B17, 3, 1, 10`7D,`09`7B18, 5, 0, 0`7D,`09`7B19, 5, 5, 8`7D,`09`7B19, 5, V 12, 8`7D, X`09`7B19, 5, 14, 8`7D,`09`7B19, 5, 15, 8`7D,`09`7B19, 5, 18, 8`7D,`09`7B19, V 5, 20, 8`7D, X`09`7B19, 5, 22, 8`7D,`09`7B19, 5, 26, 8`7D,`09`7B19, 5, 30, 8`7D,`09`7B19, V 5, 32, 8`7D, X`09`7B19, 5, 34, 8`7D,`09`7B19, 5, 36, 8`7D,`09`7B19, 5, 38, 8`7D,`09`7B19, V 5, 42, 8`7D, X/*200 */`7B19, 5, 44, 8`7D,`09`7B19, 5, 46, 8`7D,`09`7B19, 5, 52, 8`7D,`09`7 VB20, 10, 0, 0`7D, X`09`7B21, 1, 0, 0`7D,`09`7B21, 5, 0, 0`7D,`09`7B21, 5, 1, 6`7D,`09`7B21, 7, V 0, 0`7D, X`09`7B21, 12, 1, 4`7D,`09`7B22, 5, 2, 3`7D,`09`7B22, 12, 0, 0`7D,`09`7B22, 1 V5, 1, 1`7D, X/*212 */`7B23, 1, 1, 1`7D,`09`7B23, 5, 1, 3`7D,`09`7B24, 5, 0, 0`7D X`7D; X X Xmonster_type m_list`5BMAX_MALLOC`5D; Xint16 m_level`5BMAX_MONS_LEVEL+1`5D; X X/* Blank monster values`09*/ Xmonster_type blank_monster = `7B0,0,0,0,0,0,0,FALSE,0,FALSE`7D; Xint16 mfptr;`09`09`09/* Cur free monster ptr`09*/ Xint16 mon_tot_mult;`09`09/* # of repro's of creature`09*/ $ CALL UNPACK MONSTERS.C;1 1180644753 $ create 'f' XMAIN.OBJ, - XCREATE.OBJ, - XCREATURE.OBJ, - XDEATH.OBJ, - XDESC.OBJ, - XDUNGEON.OBJ, - XEAT.OBJ, - XFILES.OBJ, - XGENERATE.OBJ, - XGETCH.OBJ, - XHELP.OBJ, - XIO.OBJ, - XMAGIC.OBJ, - XMISC1.OBJ, - XMISC2.OBJ, - XMISC3.OBJ, - XMISC4.OBJ, - XMONSTERS.OBJ, - XMORIA1.OBJ, - XMORIA2.OBJ, - XMORIA3.OBJ, - XMORIA4.OBJ, - XPLAYER.OBJ, - XPOTIONS.OBJ, - XPRAYER.OBJ, - XRECALL.OBJ, - XRND.OBJ, - XSAVE.OBJ, - XSCROLLS.OBJ, - XSETS.OBJ, - XSIGNALS.OBJ, - XSPELLS.OBJ, - XSTAFFS.OBJ, - XSTORE1.OBJ, - XSTORE2.OBJ, - XTABLES.OBJ, - XTREASURE.OBJ, - XUEXIT.OBJ, - XVARIABLE.OBJ, - XWANDS.OBJ, - XWIZARD.OBJ, - XSYS$LIBRARY:VAXCRTl/share X! `5E char input X! `5E small stubs for cbreak(), nocbreak() X! `5E small stub for exit() call X! `5E links us with the RTLibrary $ CALL UNPACK MORIA.OPT;1 1329232807 $ create 'f' X/* source/moria1.c: misc code, mainly handles player movement, inventory, et Vc X X Copyright (c) 1989-92 James E. Wilson, Robert A. Koeneke X X This software may be copied and distributed for educational, research, an Vd X not for profit purposes provided that this copyright and statement are X included in all such copies. */ X X#ifdef __TURBOC__ X#include`09 X#endif X X#include X#include X X#include "config.h" X#include "constant.h" X#include "types.h" X#include "externs.h" X X#ifdef USG X#ifndef ATARIST_MWC X#include X#else Xchar *strcat(); Xint strlen(); X#endif X#else X#include X#endif X X#if defined(LINT_ARGS) Xstatic void inven_screen(int); Xstatic char map_roguedir(char); Xstatic void sub1_move_light(int, int, int, int); Xstatic void sub3_move_light(int, int, int, int); X#endif X X#ifdef ATARIST_TC X/* Include this to get prototypes for standard library functions. */ X#include X#endif X X/* Changes speed of monsters relative to player`09`09-RAK-`09*/ X/* Note: When the player is sped up or slowed down, I simply`09 */ X/*`09 change the speed of all the monsters.`09This greatly`09 */ X/*`09 simplified the logic.`09`09`09`09 */ Xvoid change_speed(num) Xregister int num; X`7B X register int i; X#ifdef ATARIST_MWC X int32u holder; X#endif X X py.flags.speed += num; X#ifdef ATARIST_MWC X py.flags.status `7C= (holder = PY_SPEED); X#else X py.flags.status `7C= PY_SPEED; X#endif X for (i = mfptr - 1; i >= MIN_MONIX; i--) X m_list`5Bi`5D.cspeed += num; X`7D X X X/* Player bonuses`09`09`09`09`09-RAK-`09*/ X/* When an item is worn or taken off, this re-adjusts the player */ X/* bonuses. Factor=1 : wear; Factor=-1 : removed`09`09 */ X/* Only calculates properties with cumulative effect. Properties that X depend on everything being worn are recalculated by calc_bonuses() -CJS- V */ Xvoid py_bonuses(t_ptr, factor) Xregister inven_type *t_ptr; Xregister int factor; X`7B X register int i, amount; X#ifdef ATARIST_MWC X int32u holder; X#endif X X amount = t_ptr->p1 * factor; X if (t_ptr->flags & TR_STATS) X `7B X for(i = 0; i < 6; i++) X`09if ((1 << i) & t_ptr->flags) X`09 bst_stat(i, amount); X `7D X if (TR_SEARCH & t_ptr->flags) X `7B X py.misc.srh += amount; X py.misc.fos -= amount; X `7D X if (TR_STEALTH & t_ptr->flags) X py.misc.stl += amount; X if (TR_SPEED & t_ptr->flags) X change_speed(-amount); X#ifdef ATARIST_MWC X if (((holder = TR_BLIND) & t_ptr->flags) && (factor > 0)) X py.flags.blind += 1000; X if (((holder = TR_TIMID) & t_ptr->flags) && (factor > 0)) X py.flags.afraid += 50; X if ((holder = TR_INFRA) & t_ptr->flags) X py.flags.see_infra += amount; X#else X if ((TR_BLIND & t_ptr->flags) && (factor > 0)) X py.flags.blind += 1000; X if ((TR_TIMID & t_ptr->flags) && (factor > 0)) X py.flags.afraid += 50; X if (TR_INFRA & t_ptr->flags) X py.flags.see_infra += amount; X#endif X`7D X X/* Recalculate the effect of all the stuff we use.`09`09 -CJS- */ Xvoid calc_bonuses() X`7B +-+-+-+-+-+-+-+- END OF PART 40 +-+-+-+-+-+-+-+-