-+-+-+-+-+-+-+-+ START OF PART 69 -+-+-+-+-+-+-+-+ X('Grave Wight' ,%X'0F02000A',%X'0000190A',%X'512E', 300, 325, X 20, 35, 1, 'W', '12d8' , '1 1 1d7`7C1 1 1d7`7C19 5 20d8' , 30), X('Killer Slicer Beetle' ,%X'0000000A',%X'00000000',%X'0012', 300, 200, X 14, 55, 1, 'K', '22d8' , '1 2 5d8' , 30), X('Giant White Ant Lion' ,%X'0008000A',%X'00000000',%X'0022', 400, 175, X 12, 45, 1, 'A', '20d8' , '7 2 3d10' , 30), X('Ghost' ,%X'1715000A',%X'0001002F',%X'500C', 100, 350, X 20, 30, 2, 'G', '13d8' , '4 7 0d0`7C19 5 22d8`7C17 3 1d10' , 31), X('Giant Black Ant Lion' ,%X'0008000A',%X'00000000',%X'0032', 400, 170, X 14, 45, 1, 'A', '23d8' , '1 2 2d12`7C6 9 3d6' , 31), X('Death Watch Beetle' ,%X'0000000A',%X'00000000',%X'0012', 300, 190, X 16, 60, 1, 'K', '25d8' , '1 2 5d4`7C1 10 5d6' , 31), X('Ogre Magi' ,%X'07020002',%X'0000A356',%X'403C', 300, 250, X 20, 42, 1, 'o', '14d8' , '1 1 3d6' , 31), X('Crystal Ooze' ,%X'07390009',%X'00000000',%X'0092', 600, 8, X 5, 30,-1, 'O', '12d8' , '7 5 4d4' , 31), X('Two-Headed Troll' ,%X'0F020002',%X'00000000',%X'6026', 500, 275, X 20, 48, 1, 'T', '14d8' , '1 1 1d8`7C1 1 1d8`7C1 2 1d6`7C1 2 1d6', 32), X('Invisible Stalker' ,%X'00030022',%X'00000000',%X'0000', 200, 200, X 20, 46, 3, 'E', '19d8' , '1 1 1d6' , 32), X('Giant Hunter Ant' ,%X'00000002',%X'00000000',%X'0002', 10, 150, X 16, 40, 1, 'a', '12d8' , '1 2 4d8' , 32), X('Ninja' ,%X'0F020002',%X'00000000',%X'6030', 100, 300, X 20, 65, 1, 'p', '15d8' , '14 1 3d4`7C2 1 3d4' , 32), X('Barrow Wight' ,%X'0F02000A',%X'00001308',%X'512E', 100, 375, X 20, 40, 1, 'W', '13d8' , '1 1 1d8`7C1 1 1d8`7C19 5 26d8' , 33), X('Skeleton 2-Headed Troll' ,%X'00020002',%X'00000000',%X'500C', 200, 325, X 20, 48, 1, 's', '20d8' , '1 1 1d9`7C1 1 1d9`7C1 2 1d5`7C1 2 1d5', 33), X('Water Elemental' ,%X'0000000A',%X'00000000',%X'0020', 500, 325, X 12, 36, 1, 'E', '25d8' , '1 1 1d10`7C1 1 1d10' , 33), X('Fire Elemental' ,%X'000A0012',%X'00000000',%X'2010', 700, 350, X 16, 40, 0, 'E', '25d8' , '5 1 4d6' , 33), X('Lich' ,%X'1F020002',%X'00019F75',%X'500C', 600, 750, X 20, 50, 1, 'L', '25d8' , '15 5 2d8`7C19 5 30d8`7C24 5 0d0' , 34), X('Master Vampire' ,%X'17000002',%X'00001307',%X'512E', 100, 700, X 20, 55, 1, 'V', '23d8' , '1 1 1d6`7C1 1 1d6`7C19 5 32d8' , 34), X('Spirit Troll' ,%X'00040002',%X'00000000',%X'402E', 100, 425, X 20, 56, 1, 'T', '15d8' , '1 3 1d5`7C1 3 1d5`7C1 2 1d6' , 34), X('Giant Red Scorpion' ,%X'0000000A',%X'00000000',%X'0002', 400, 275, X 12, 50, 2, 'S', '18d8' , '1 2 1d6`7C14 4 1d4' , 34), X('Earth Elemental' ,%X'001A0002',%X'00000000',%X'0200', 900, 375, X 10, 60, 0, 'E', '30d8' , '1 1 4d6`7C1 1 4d6' , 34), X('Young Black Dragon' ,%X'1F00000A',%X'0020100B',%X'6005', 500, 600, X 20, 55, 1, 'd', '32d8' , '1 3 1d5`7C1 3 1d5`7C1 2 1d6' , 35), X('Young Red Dragon' ,%X'1F00000A',%X'0080100A',%X'6015', 500, 650, X 20, 60, 1, 'd', '36d8' , '1 3 1d8`7C1 3 1d8`7C1 2 2d8' , 35), X('Necromancer' ,%X'13020002',%X'00005762',%X'6030', 100, 600, X 20, 40, 1, 'p', '17d8' , '1 1 2d6' , 35), X('Mummified Troll' ,%X'0F020002',%X'00000000',%X'502C', 500, 400, X 20, 38, 1, 'M', '18d8' , '1 1 2d6`7C1 1 2d6' , 35), X('Giant Red Ant Lion' ,%X'00080009',%X'00000000',%X'0032', 400, 350, X 14, 48, 1, 'A', '23d8' , '5 2 3d12' , 35), X('Mature White Dragon' ,%X'2F00000A',%X'0040100A',%X'4005', 700, 1000, X 20, 65, 1, 'd', '48d8' , '1 3 1d8`7C1 3 1d8`7C1 2 2d8' , 35), X('Xorn' ,%X'00160002',%X'00000000',%X'4200', 100, 650, X 20, 80, 1, 'X', '20d8' , '1 1 1d6`7C1 1 1d6`7C1 1 1d6' , 36), X('Giant Mottled Ant Lion' ,%X'0008000A',%X'00000000',%X'0032', 400, 350, X 14, 50, 2, 'A', '24d8 ' , '1 2 2d10' , 36), X('Grey Wraith' ,%X'0F02000A',%X'00011308',%X'512E', 100, 700, X 20, 50, 1, 'W', '23d8' , '1 1 1d10`7C1 1 1d10`7C19 5 34d8' , 36), X('Young Multi-Hued Dragon' ,%X'7F00000A',%X'00F81005',%X'6005', 500, 1250, X 20, 55, 1, 'd', '40d8' , '1 3 1d9`7C1 3 1d9`7C1 2 2d10' , 36), X('Mature Blue Dragon' ,%X'2F00000A',%X'00081009',%X'6005', 400, 1200, X 20, 75, 1, 'd', '48d8' , '1 3 1d8`7C1 3 1d8`7C1 2 2d10' , 36), X('Mature Green Dragon' ,%X'1F00000A',%X'0010100A',%X'6005', 700, 1100, X 20, 70, 1, 'd', '48d8' , '1 3 1d4`7C1 3 1d4`7C1 2 1d6' , 36), X('Iridescent Beetle' ,%X'0000000A',%X'00000000',%X'0012', 300, 850, X 16, 60, 1, 'K', '32d8' , '1 2 4d6`7C1 1 1d12`7C11 7 0d0' , 37), X('King Vampire' ,%X'17000002',%X'00001307',%X'512E', 100, 1000, X 20, 65, 1, 'V', '38d8' , '1 1 1d6`7C1 1 1d6`7C19 5 38d8' , 37), X('King Lich' ,%X'1F020002',%X'00019F73',%X'500C', 500, 1400, X 20, 65, 1, 'L', '52d8' , '15 5 2d10`7C19 5 36d8`7C24 5 0d0' , 37), X('Mature Red Dragon' ,%X'2F00000A',%X'00801808',%X'6015', 300, 1400, X 20, 80, 1, 'd', '60d8' , '1 3 1d10`7C1 3 1d10`7C1 2 2d12' , 37), X('Mature Black Dragon' ,%X'2F00000A',%X'00201009',%X'6005', 700, 1350, X 20, 55, 1, 'd', '58d8' , '1 3 1d8`7C1 3 1d8`7C1 2 2d10' , 37), X('Mature Multi-Hued Dragon' ,%X'7F00000A',%X'00F81A05',%X'6005', 500, 1650, X 20, 65, 1, 'd', '80d8' , '1 3 1d10`7C1 3 1d10`7C1 2 2d12' , 38), X('Ancient White Dragon' ,%X'4F000002',%X'00401A08',%X'4005', 800, 1500, X 20, 80, 2, 'D', '88d8' , '1 3 1d8`7C1 3 1d8`7C1 2 2d8' , 38), X('Emperor Wight' ,%X'1B02000A',%X'00001306',%X'512E', 100, 1600, X 20, 40, 2, 'W', '48d8' , '1 1 1d12`7C1 1 1d12`7C19 5 42d8' , 38), X('Black Wraith' ,%X'1F02000A',%X'00001307',%X'512E', 100, 1700, X 20, 55, 1, 'W', '50d8' , '1 1 1d12`7C1 1 1d12`7C19 5 44d8' , 38), X('Nether Wraith' ,%X'1F07000A',%X'00005316',%X'512E', 100, 2100, X 20, 55, 1, 'W', '58d8' , '1 1 1d12`7C1 1 1d12`7C19 5 52d8' , 39), X('Sorcerer' ,%X'13020002',%X'0000FF73',%X'6030', 100, 2150, X 20, 50, 2, 'p', '30d8' , '1 1 2d8' , 39), X('Ancient Blue Dragon' ,%X'4F000002',%X'00081A08',%X'6005', 800, 2500, X 20, 90, 2, 'D', '87d8' , '1 3 1d9`7C1 3 1d9`7C1 2 2d12' , 39), X('Ancient Green Dragon' ,%X'4F000002',%X'00101A09',%X'6005', 700, 2400, X 20, 85, 2, 'D', '90d8' , '1 3 1d8`7C1 3 1d8`7C1 2 2d10' , 39), X('Ancient Black Dragon' ,%X'4F000002',%X'00201A07',%X'6005', 700, 2500, X 20, 90, 2, 'D', '90d8' , '1 3 1d9`7C1 3 1d9`7C1 2 2d10' , 39), X('Disenchanter Worms' ,%X'00200022',%X'00000000',%X'01B0', 100, 30, X 5, 5, 0, 'w', '10d8' , '21 12 1d4' , 40), X('Rotting Quylthulg' ,%X'00010000',%X'00004010',%X'5000', 0, 1000, X 20, 1, 2, 'Q', '12d8' , '0 0 0d0' , 40), X('Ancient Red Dragon' ,%X'7F000002',%X'00801E06',%X'6015', 500, 2750, X 20, 100, 2, 'D', '105d8' , '1 3 1d10`7C1 3 1d10`7C1 2 2d14' , 40), X('Death Quasit' ,%X'1103000A',%X'000010FA',%X'0004', 0, 1000, X 20, 80, 3, 'q', '55d8' , '15 2 3d6`7C1 3 3d3`7C1 3 3d3' , 40), X('Emperor Lich' ,%X'2F020002',%X'00019F72',%X'500C', 500,10000, X 20, 75, 2, 'L', '190d8' , '15 5 2d12`7C19 5 46d8`7C24 5 0d0' , 40), X('Ancient Multi-Hued Dragon',%X'7F000002',%X'00F89E05',%X'6005', 500,12000, X 20, 100, 2, 'D', '260d8' , '1 3 1d12`7C1 3 1d12`7C1 2 3d12' , 40), X`09`7B Winning creatures should follow here. `7D X`09`7B Winning creatures are denoted by the 32 bit in CMOVE `7D X`09`7B Iggy is not a win creature, just a royal pain in the ass... `7D X('Evil Iggy' ,%X'7F130002',%X'0001D713',%X'5004', 0,18000, X 20, 80, 2, 'p', '300d8' , '2 1 4d6`7C13 19 0d0' , 50), X`09`7B Here is the only actual win creature... `7D X('Balrog' ,%X'FF1F0002',%X'0081C743',%X'5004', 0,55000, X 20, 125, 3, 'B', '375d8' , '5 1 10d12`7C1 17 8d12`7C24 5 0d0' , 100) X`09`09`09`09); X X`09blank_monster`09:= (0,0,0,0,0,0,0,0,0,false,false); $ CALL UNPACK [.SOURCE.INCLUDE]VALUES.INC;1 1232253411 $ create 'f' Xvar X`09player_max_exp`09`09`09: `5Bpsect(player$data)`5D X`09`09`09`09`09 integer;`09`7B Max exp possible `7D X`09seed`09`09`09`09: `5Bpsect(player$data),global`5D X`09`09`09`09`09 unsigned;`09`7B Contains seed # `7D X`09randes_seed`09`09`09: `5Bpsect(setup$data)`5D X`09`09`09`09`09 unsigned;`09`7B For encoding colors `7D X`09town_seed`09`09`09: `5Bpsect(generate$data)`5D X`09`09`09`09`09 unsigned;`09`7B Seed for town genera`7D X`09channel`09`09`09`09: `5Bpsect(io$data),global`5D X`09`09`09`09`09 integer;`09`7B I/O channel # `7D X`09io$bin_pause`09`09`09: `5Bpsect(io$data)`5D X`09`09`09`09`09 quad_type;`09`7B I/O pause time `7D X`09cur_height,cur_width`09`09: `5Bpsect(player$data)`5D X`09`09`09`09`09 integer;`09`7B Cur dungeon size `7D X`09dun_level`09`09`09: `5Bpsect(player$data)`5D X`09`09`09`09`09 integer;`09`7B Cur dungeon level `7D X`09missle_ctr`09`09`09: `5Bpsect(player$data)`5D X`09`09`09`09`09 integer;`09`7B Counter for missles `7D X`09msg_line`09`09`09: `5Bpsect(player$data)`5D X`09`09`09`09`09 integer;`09`7B Contains message txt`7D X`09msg_flag`09`09`09: `5Bpsect(player$data)`5D X`09`09`09`09`09 boolean;`09`7B Set with first msg `7D X`09old_msg`09`09`09`09: `5Bpsect(player$data)`5D X`09`09`09`09`09 vtype;`09`7B Last message`09 `7D X`09generate`09`09`09: `5Bpsect(setup$data)`5D X`09`09`09`09`09 boolean;`09`7B Generate next level `7D X`09death`09`09`09`09: `5Bpsect(player$data)`5D X`09`09`09`09`09 boolean;`09`7B True if died`09 `7D X`09died_from`09`09`09: `5Bpsect(player$data)`5D X`09`09`09`09`09 vtype;`09`7B What killed him `7D X`09find_flag`09`09`09: `5Bpsect(player$data)`5D X`09`09`09`09`09 boolean;`09`7B Used in MORIA`09 `7D X`09reset_flag`09`09`09: `5Bpsect(player$data)`5D X`09`09`09`09`09 boolean;`09`7B Used in MORIA`09 `7D X`09cave_flag`09`09`09: `5Bpsect(player$data)`5D X`09`09`09`09`09 boolean;`09`7B Used in GET_PANEL `7D X`09light_flag`09`09`09: `5Bpsect(player$data)`5D X`09`09`09`09`09 boolean;`09`7B Used in MOVE_LIGHT `7D X`09redraw`09`09`09`09: `5Bpsect(player$data)`5D X`09`09`09`09`09 boolean;`09`7B For redraw screen `7D X`09stat_column`09`09`09: `5Bpsect(player$data)`5D X`09`09`09`09`09 integer;`09`7B Column for stats `7D X`09print_stat`09`09`09: `5Bpsect(player$data)`5D X`09`09`09`09`09 unsigned;`09`7B Flag for stats `7D X`09turn`09`09`09`09: `5Bpsect(player$data)`5D X`09`09`09`09`09 integer;`09`7B Cur trun of game `7D X`09wizard1`09`09`09`09: `5Bpsect(player$data)`5D X`09`09`09`09`09 boolean;`09`7B Wizard flag`09 `7D X`09wizard2`09`09`09`09: `5Bpsect(player$data)`5D X`09`09`09`09`09 boolean;`09`7B Wizard flag`09 `7D X`09used_line`09`09`09: `5Bpsect(player$data)`5D X`09`09`09`09`09 array `5B2..23`5D of boolean; X`09password1`09`09`09: `5Bpsect(setup$data)`5D X`09`09`09`09`09 packed array `5B1..12`5D of char; X`09password2`09`09`09: `5Bpsect(setup$data)`5D X`09`09`09`09`09 packed array `5B1..12`5D of char; X`09wdata`09`09`09`09: `5Bpsect(setup$data)`5D X`09`09`09`09`09 array `5B1..2,0..12`5D of unsigned; X`09days`09`09`09`09: `5Bpsect(setup$data)`5D X`09`09`09`09`09 array `5B1..7`5D of vtype; X`09closing_flag`09`09`09: `5Bpsect(player$data)`5D X`09`09`09`09`09 integer;`09`7B Used for closing `7D X X`09`7B Bit testing array`09`09`09`09`09`09`7D X`09bit_array`09`09`09: `5Bpsect(player$data)`5D X`09`09`09`09`09 array `5B1..32`5D of unsigned; X X`09`7B External file names; are all located in directory with image`09`7D X`09MORIA_HOU`09`09`09: `5Bpsect(setup$data)`5D vtype; X`09MORIA_MOR`09`09`09: `5Bpsect(setup$data)`5D vtype; X`09MORIA_MAS`09`09`09: `5Bpsect(setup$data)`5D vtype; X`09MORIA_TOP`09`09`09: `5Bpsect(setup$data)`5D vtype; X`09MORIA_HLP`09`09`09: `5Bpsect(setup$data)`5D vtype; X X`09`7B Following are calculated from max dungeon sizes`09`09`7D X`09max_panel_rows,max_panel_cols`09: `5Bpsect(player$data)`5D integer; X`09quart_height,quart_width`09: `5Bpsect(player$data)`5D integer; X`09panel_row,panel_col`09`09: `5Bpsect(player$data)`5D integer; X`09panel_row_min,panel_row_max`09: `5Bpsect(player$data)`5D integer; X`09panel_col_min,panel_col_max`09: `5Bpsect(player$data)`5D integer; X`09panel_col_prt,panel_row_prt`09: `5Bpsect(player$data)`5D integer; X X`09`7B Following are all floor definitions`09`09`09`09`7D X`09cave`09`09`09`09: `5Bpsect(moria$data)`5D X`09`09`09`09`09 array `5B1..max_height`5D of row_floor; X`09blank_floor`09`09`09: `5Bpsect(generate$data)`5D cave_type; X`09dopen_floor`09`09`09: `5Bpsect(generate$data)`5D floor_type; X`09lopen_floor`09`09`09: `5Bpsect(generate$data)`5D floor_type; X`09corr_floor1`09`09`09: `5Bpsect(generate$data)`5D floor_type; X`09corr_floor2`09`09`09: `5Bpsect(generate$data)`5D floor_type; X`09corr_floor3`09`09`09: `5Bpsect(generate$data)`5D floor_type; X`09corr_floor4`09`09`09: `5Bpsect(generate$data)`5D floor_type; X`09rock_wall1`09`09`09: `5Bpsect(generate$data)`5D floor_type; X`09rock_wall2`09`09`09: `5Bpsect(generate$data)`5D floor_type; X`09rock_wall3`09`09`09: `5Bpsect(generate$data)`5D floor_type; X`09boundry_wall`09`09`09: `5Bpsect(generate$data)`5D floor_type; X X`09`7B Following are set definitions`09`09`09`09`7D X`09floor_set`09`09`09: `5Bpsect(moria$data)`5D obj_set; X`09wall_set`09`09`09: `5Bpsect(moria$data)`5D obj_set; X`09pwall_set`09`09`09: `5Bpsect(moria$data)`5D obj_set; X`09corr_set`09`09`09: `5Bpsect(moria$data)`5D obj_set; X`09trap_set`09`09`09: `5Bpsect(moria$data)`5D obj_set; X`09light_set`09`09`09: `5Bpsect(moria$data)`5D obj_set; X X`09`7B Following are player variables`09`09`09`09`7D X`09py`09`09`09: `5Bpsect(player$data)`5D player_type; X`09player_title`09`09: `5Bpsect(player$data)`5D X`09`09`09`09 array `5B1..max_class`5D of X`09`09`09`09 array `5B1..max_player_level`5D of btype; X`09player_exp`09`09: `5Bpsect(player$data)`5D +-+-+-+-+-+-+-+- END OF PART 69 +-+-+-+-+-+-+-+-