-+-+-+-+-+-+-+-+ START OF PART 31 -+-+-+-+-+-+-+-+ X if (stand_dev > max_std) then stand_dev := max_std; X x := trunc(abs(randnor(0,stand_dev))/10.0) + base; X if (x < base) then X m_bonus := base X else X m_bonus := x; X end; X`20 X begin X chance := obj_base_magic + level; X if (chance > obj_base_max) then chance := obj_base_max; X special := trunc(chance/obj_div_special); X cursed := trunc(chance/obj_div_cursed); X with t_list`5Bx`5D do X`7B Depending on treasure type, it can have certain magical properties`7D X case tval of X 34,35,36: begin `7B Armor and shields`7D X if (magik(chance)) then X begin X toac := m_bonus(1,30,level); X if (magik(special)) then X case randint(9) of X 1 : begin X flags := uor(flags,%X'02380000'); X name := name + ' (R)'; X toac := toac + 5; X cost := cost + 2500; X end; X 2 : begin `7B Resist Acid `7D X flags := uor(flags,%X'00100000'); X name := name + ' (RA)'; X cost := cost + 1000; X end; X 3,4 : begin `7B Resist Fire `7D X flags := uor(flags,%X'00080000'); X name := name + ' (RF)'; X cost := cost + 600; X end; X 5,6 : begin `7B Resist Cold `7D X flags := uor(flags,%X'00200000'); X name := name + ' (RC)'; X cost := cost + 600; X end; X 7,8,9 : begin `7B Resist Lightning`7D X flags := uor(flags,%X'02000000'); X name := name + ' (RL)'; X cost := cost + 500; X end; X end X end X else if (magik(cursed)) then X begin X toac := -m_bonus(1,40,level); X cost := 0; X flags := uor(%X'80000000',flags); X end X end; X 21,22,23: begin `7B Weapons `7D X if (magik(chance)) then X begin X tohit := m_bonus(0,40,level); X todam := m_bonus(0,40,level); X if (magik(special)) then X case randint(16) of X 1 : begin `7B Holy Avenger `7D X flags := uor(flags,%X'01418001'); X tohit := tohit + 5; X todam := todam + 5; X toac := randint(4); X p1 := 1 + randint(4); X name := name + ' (HA)'; X cost := cost + p1*500; X cost := cost + 10000; X end; X 2 : begin `7B Defender `7D X flags := uor(flags,%X'07B80900'); X tohit := tohit + 3; X todam := todam + 3; X toac := 5 + randint(5); X name := name + ' `5B%P4`5D (DF)'; X p1 := randint(3); X cost := cost + p1*500; X cost := cost + 7500; X end; X 3,4 : begin `7B Slay Monster `7D X flags := uor(flags,%X'01004000'); X tohit := tohit + 3; X todam := todam + 3; X name := name + ' (SM)'; X cost := cost + 5000; X end; X 5,6 : begin `7B Slay Dragon `7D X flags := uor(flags,%X'00002000'); X tohit := tohit + 3; X todam := todam + 3; X name := name + ' (SD)'; X cost := cost + 4000; X end; X 7,8 : begin `7B Slay Evil `7D X flags := uor(flags,%X'00008000'); X tohit := tohit + 3; X todam := todam + 3; X name := name + ' (SE)'; X cost := cost + 4000; X end; X 9,10 : begin `7B Slay Undead `7D X flags := uor(flags,%X'00010000'); X tohit := tohit + 2; X todam := todam + 2; X name := name + ' (SU)'; X cost := cost + 3000; X end; X 11,12,13 : begin `7B Flame Tongue `7D X flags := uor(flags,%X'00040000'); X tohit := tohit + 1; X todam := todam + 3; X name := name + ' (FT)'; X cost := cost + 2000; X end; X 14,15,16 : begin `7B Frost Brand `7D X flags := uor(flags,%X'00020000'); X tohit := tohit + 1; X todam := todam + 1; X name := name + ' (FB)'; X cost := cost + 1200; X end; X end; X end X else if (magik(cursed)) then X begin X tohit := -m_bonus(1,55,level); X todam := -m_bonus(1,55,level); X flags := uor(%X'80000000',flags); X cost := 0; X end X end; X 20 : begin `7B Bows, crossbows, and slings `7D X if (magik(chance)) then X tohit := m_bonus(1,30,level) X else if (magik(cursed)) then X begin X tohit := -m_bonus(1,50,level); X flags := uor(%X'80000000',flags); X cost := 0; X end; X end; X 25 : begin `7B Digging tools `7D X if (magik(chance)) then X case randint(3) of X 1,2:begin X p1 := m_bonus(2,25,level); X cost := cost + p1*100; X end; X 3 : begin X p1 := -m_bonus(1,30,level); X cost := 0; X flags := uor(%X'80000000',flags); X end; X end; X end; X 31 : begin `7B Gloves and Gauntlets `7D X if (magik(chance)) then X begin X toac := m_bonus(1,20,level); X if (magik(special)) then X case randint(2) of X 1 :begin X flags := uor(%X'00800000',flags); X name := name + ' of Free Action'; X cost := cost + 1000; X end; X 2 :begin X tohit := 1 + randint(3); X todam := 1 + randint(3); X name := name + ' of Slaying'; X cost := cost + (tohit+todam)*250; X end; X end; X end X else if (magik(cursed)) then X begin X if (magik(special)) then X case randint(2) of X 1 : begin X flags := uor(%X'80000002',flags); X name := name + ' of Clumsiness'; X p1 := 1; X end; X 2 : begin X flags := uor(%X'80000001',flags); X name := name + ' of Weakness'; X p1 := 1; X end; X end; X toac := -m_bonus(1,40,level); X p1 := -m_bonus(1,10,level); X flags := uor(%X'80000000',flags); X cost := 0; X end X end; X 30 : begin `7B Boots `7D X if (magik(chance)) then X begin X toac := m_bonus(1,20,level); X if (magik(special)) then X case randint(12) of X 1 : begin X flags := uor(%X'00001000',flags); X name := name + ' of Speed'; X p1 := 1; X cost := cost + 5000; X end; X 2,3,4,5 : begin X flags := uor(%X'00000100',flags); X name := name + ' of Stealth'; X cost := cost + 500; X end; X otherwise begin X flags := uor(%X'04000000',flags); X name := name + ' of Slow decent'; X cost := cost + 250; X end X end X end X else if (magik(cursed)) then X begin X case randint(3) of X 1 : begin X flags := uor(%X'80001000',flags); X name := name + ' of Slowness'; X p1 := -1; X end; X 2 : begin X flags := uor(%X'80000200',flags); X name := name + ' of Noise'; X end; X 3 : begin X flags := uor(%X'80000000',flags); X name := name + ' of Great Mass'; X weight := weight*5; X end; X end; X cost := 0; X ac := -m_bonus(2,45,level); X end; X end; X 33 : begin `7B Helms `7D X if (magik(chance)) then X begin X toac := m_bonus(1,20,level); X if (magik(special)) then X case subval of X 1,2,3,4,5 : case randint(3) of X 1 : begin X p1 := randint(2); X flags := uor(%X'00000008',flags); X name := name + ' of Intelligence'; X cost := cost + p1*500; X end; X 2 : begin X p1 := randint(2); X flags := uor(%X'00000010',flags); X name := name + ' of Wisdom'; X cost := cost + p1*500; X end; X 3 : begin X p1 := 1 + randint(4); X flags := uor(%X'40000000',flags); X name := name + ' of Infra-Vision'; X cost := cost + p1*250; X end; X end; X 6,7,8 : case randint(6) of X 1 : begin X p1 := randint(3); X flags := uor(%X'00800007',flags); X name := name + ' of Might'; X cost := cost + 1000 + p1*500; X end; X 2 : begin X p1 := randint(3); X flags := uor(%X'00000030',flags); X name := name + ' of Lordliness'; X cost := cost + 1000 + p1*500; X end; X 3 : begin X p1 := randint(3); X flags := uor(%X'01380008',flags); X name := name + ' of the Magi'; X cost := cost + 3000 + p1*500; X end; X 4 : begin X p1 := randint(3); +-+-+-+-+-+-+-+- END OF PART 31 +-+-+-+-+-+-+-+-