-+-+-+-+-+-+-+-+ START OF PART 76 -+-+-+-+-+-+-+-+ X x,stand_dev : integer; X begin X stand_dev := trunc(obj_std_adj*power) + obj_std_min; 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 if (power = 999) then `7Bblack market stuff`7D X begin X`09 chance := 100; X`09 special := 70; X`09 unique := 0; X`09 cursed := 0; X`09 power := 40; X`09end`20 X else if (power = 777) then `7Bbeginning character inventory`7D X begin X`09 chance := 50; X`09 special := 10; X`09 unique := 0; X`09 cursed := 0; X`09 power := 5; X`09end`20 X else X begin X`09 chance := obj_base_magic + power; X`09 if (chance > obj_base_max) then chance := obj_base_max; X`09 special := trunc(chance/obj_div_special); X`09 unique := trunc(chance/obj_div_unique); X`09 cursed := trunc(chance/obj_div_cursed); X`09end; X with item 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 := toac + m_bonus(1,30,power); X if (magik(special)) then X case randint(12) of X 1 : begin X flags := uor(flags,%X'023C0000'); X name := name + ' (Resist)'; X toac := toac + 5; X cost := cost + 3500; X end; X 2 : begin`20 X flags := uor(flags,%X'00100000'); X name := name + ' (RA)'; X cost := cost + 1000; X end; X 3,4 : begin`20 X flags := uor(flags,%X'00080000'); X name := name + ' (RF)'; X cost := cost + 600; X end; X 5,6 : begin X flags := uor(flags,%X'00200000'); X name := name + ' (RC)'; X cost := cost + 600; X end; X 7 : begin`20 X flags := uor(flags,%X'02000000'); X name := name + ' (RL)'; X cost := cost + 500; X end; X 8 : begin`20 X flags := uor(flags,%X'00040000'); X name := name + ' (RG)'; X cost := cost + 1000; X end; X 9 : begin`20 X toac := toac + 15; X name := name + ' (P)'; X`09`09`09`09 weight := trunc(weight*1.50); X end; X 10 : begin`20 X`09`09`09`09 tohit := tohit + m_bonus(1,40,power); X name := name + ' (%P2) (CR)'; X`09`09`09`09 weight := trunc(weight*0.75); X end; X 11,12 : begin`20 X name := name + ' (W)'; X`09`09`09`09 cost := cost + weight*20; X`09`09`09`09 weight := 1; X end; X end X`09`09`09else if (magik(unique)) then X`09`09`09 case randint(4) of X`09`09`09 1 : begin X`09`09`09 name := name + ' (Qwethleg)'; X`09`09`09`09 ac := ac + 10; X`09`09`09`09 toac := toac + 10; X`09`09`09`09 tohit := tohit + m_bonus(5,40,power); X`09`09`09`09 cost := cost + 1000 + tohit*100; X`09`09`09`09end; X`09`09`09 2 : begin X`09`09`09 name := name + ' (Fi-Yoh)'; X`09`09`09`09 toac := toac + m_bonus(2,40,power); X`09`09`09`09 p1 := p1 + m_bonus(1,30,power); X`09`09`09`09 `7BWisdom and Regeneration`7D X`09`09`09`09 flags := uor(flags,%X'00000810'); X`09`09`09`09 cost := cost + 2000 + p1*200; X`09`09`09`09end; X`09`09`09 3 : begin X`09`09`09 name := name + ' (Jarth)'; X`09`09`09`09 toac := toac + m_bonus(2,40,power); X`09`09`09`09 p1 := p1 + m_bonus(1,30,power); X`09`09`09`09 `7BDexterity and Resistance`7D X`09`09`09`09 flags := uor(flags,%X'02380002'); X`09`09`09 `09 cost := cost + 2500 + p1*200; X`09`09`09`09end; X`09`09`09`09 X`09`09`09 4 : begin X`09`09`09 name := name + ' (?????)'; X`09`09`09`09 cost := cost*10; X`09`09`09`09end; X`09`09`09 end; X end X else if (magik(cursed)) then X begin X toac := -m_bonus(1,40,power); X cost := 0; X flags := uor(%X'80000000',flags); X end X end; X 21,23: begin `7B Weapons `7D X if (magik(chance)) then X begin X tohit := tohit + m_bonus(0,40,power); X todam := todam + m_bonus(0,40,power); X if (magik(special)) then X case randint(18) of X`09`09`09 1 : begin `20 X`09`09`09 `7B Str,KS,KM,See-Invis`7D X flags := uor(flags,%X'01018001'); X tohit := tohit + 5; X todam := todam + 5; X toac := toac + randint(4); X p1 := 1 + randint(4); X name := name + ' (%P1) (HA)'; X cost := cost + p1*500; X cost := cost + 10000; X end; X`09`09`09 2 : begin `20 X`09`09`09 `7BStl,Regen,See-Invis,FeatherFall`7D X flags := uor(flags,%X'05000900'); X tohit := tohit + 3; X todam := todam + 3; X toac := toac + 5 + randint(5); X name := name + ' `5B%P4`5D (DF)'; X p1 := randint(3); X`09`09`09`09 weight := trunc(weight*1.25); X cost := cost + p1*500; X cost := cost + 7000; X end; X 3,4 : begin `20 X flags := uor(flags,%X'00004000'); X tohit := tohit + 3; X todam := todam + 3; X name := name + ' (KC)'; X cost := cost + 5000; X end; X 5,6 : begin `20 X flags := uor(flags,%X'00002000'); X tohit := tohit + 3; X todam := todam + 3; X name := name + ' (KA)'; X cost := cost + 4000; X end; X 7,8 : begin `20 X flags := uor(flags,%X'00008000'); X tohit := tohit + 3; X todam := todam + 3; X name := name + ' (KS)'; X cost := cost + 4000; X end; X 9,10 : begin `20 X flags := uor(flags,%X'00010000'); X tohit := tohit + 2; X todam := todam + 2; X name := name + ' (KM)'; X cost := cost + 3000; X end; X 11,12 : begin `20 X flags := uor(flags,%X'00080000'); X tohit := tohit + 1; X todam := todam + 3; X name := name + ' (KR)'; X cost := cost + 3500; X end; X 13,14 : begin 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 15,16 : begin `20 X flags := uor(flags,%X'00020000'); X tohit := tohit + 1; X todam := todam + 3; X name := name + ' (FB)'; X cost := cost + 2000; X end; X 17 : begin X todam := todam + 20; X name := name + ' (DST)'; X cost := cost + 5000; X`09`09`09`09 weight := trunc(weight*1.5); X end; X`09`09`09 18 : begin X`09`09`09 `7BSee-Invis`7D X`09`09`09`09 flags := uor(flags,%X'01000000'); X`09`09`09 name := name + ' :)'; X`09`09`09`09 cost := cost*2; X`09`09`09`09end; X end X`09`09`09else if (magik(unique)) then X`09`09`09 case randint(3) of X`09`09`091,2 : begin X`09`09`09`09 inc_damage(damage,2); X`09`09`09`09 name := name + ' (Slicer)'; X`09`09`09`09 cost := cost*2; X`09`09`09 end; X`09`09`09 3 : begin X`09`09`09`09 inc_damage(damage,4); X`09`09`09`09 name := name + ' (Razor)'; X`09`09`09`09 cost := cost*4; X`09`09`09`09end; X`09`09`09 end; X end X else if (magik(cursed)) then X begin X tohit := -m_bonus(1,55,power); X todam := -m_bonus(1,55,power); X flags := uor(%X'80000000',flags); X cost := 0; X end X end; X 19,20 : begin `7B Guns, Automatic Guns `7D X if (magik(chance)) then X tohit := tohit + m_bonus(1,30,power) X else if (magik(cursed)) then X begin X tohit := -m_bonus(1,50,power); X flags := uor(%X'80000000',flags); X cost := 0; X end; X end; X 82 : begin `7B Thrown `7D X`09`09 number := randint(4)+1; X if (magik(chance)) then X`09`09 begin X `09tohit := tohit + m_bonus(1,30,power); X `09todam := todam + m_bonus(1,30,power); X`09`09 end X else if (magik(cursed)) then X begin X tohit := -m_bonus(1,50,power); X flags := uor(%X'80000000',flags); X cost := 0; X end; X end; X 84 : begin `7B Grenades `7D X if (magik(chance)) then X todam := todam + m_bonus(1,30,power); X number := 0; X for i1 := 1 to 3 do number := number + randint(2); 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,power); X cost := cost + p1*100; X end; X 3 : begin X p1 := -m_bonus(1,30,power); 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 := toac + m_bonus(1,20,power); X if (magik(special)) then X case randint(4) of X 1,2 :begin X tohit := tohit + 1 + randint(3); X todam := todam + 1 + randint(3); X name := name + ' of Slaying'; X end; X 3 :begin X flags := uor(%X'00800000',flags); X name := name + ' of Free Action'; X cost := cost + 1000; X end; X 4 :begin X`09`09`09 `7BDex,Stealth`7D X flags := uor(%X'00000102',flags); X`09`09`09 p1 := m_bonus(1,30,power); X name := name + ' of Thievery'; X cost := cost + p1*500; 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; +-+-+-+-+-+-+-+- END OF PART 76 +-+-+-+-+-+-+-+-