-+-+-+-+-+-+-+-+ START OF PART 25 -+-+-+-+-+-+-+-+ X`09 and xval=(x-1)*16+8 for 4 stores in the row. `7D X`09x_adjst := 6 - (num_in_row - 3)*3; X y_height := yval - randint(3); X y_depth := yval + randint(4); X x_left := xval + 1 - randint(x_adjst); X x_right := xval + 1 + randint(x_adjst); X for i1 := y_height to y_depth do X for i2 := x_left to x_right do X BEGIN X cave`5Bi1,i2`5D.fval := boundry_wall.ftval; X cave`5Bi1,i2`5D.fopen := boundry_wall.ftopen; X END; X CASE randint(4) of `7B determines which wall and where to put the do Vor `7D X 1 : BEGIN X i1 := randint(y_depth-y_height) + y_height - 1; X i2 := x_left; X END; X 2 : BEGIN X i1 := randint(y_depth-y_height) + y_height - 1; X i2 := x_right; X END; X 3 : BEGIN X i1 := y_depth; X i2 := randint(x_right-x_left) + x_left - 1; X END; X 4 : BEGIN X i1 := y_height; X i2 := randint(x_right-x_left) + x_left - 1; X END; X END; X with cave`5Bi1,i2`5D do X BEGIN X fval := corr_floor3.ftval; X fopen := corr_floor3.ftopen; X popt(cur_pos); X tptr := cur_pos; X t_list`5Bcur_pos`5D := store_door`5Bstore_num`5D; X END; X END; X`20 X`20 X`7B Town logic flow for generation of new town `7D X procedure town_gen; X type X room_type = array `5B1..2,1..4`5D of boolean; X var X y,x,i1,i2,i3,i4,i5 : integer; X rooms : array `5B1..8`5D of integer; X`20 X BEGIN X seed := town_seed; X for i1 := 1 to 8 do rooms`5Bi1`5D := i1; X i4 := 6; X for i1 := 1 to 2 do X for i2 := 1 to 3 do X BEGIN X i3 := randint(i4); X`09 build_store(rooms`5Bi3`5D,i1,i2,5-i1); X`09 `7B the "5-i1" is how many stores will appear in that row `7D X for i5 := i3 to i4-1 do rooms`5Bi5`5D := rooms`5Bi5+1`5D; X i4 := i4 - 1; X END;`20 X`09 build_store(rooms`5B7`5D,1,4,4); X fill_cave(dopen_floor); X place_boundry; X if (odd(turn mod 5000)) then X BEGIN `7B Night `7D X for i1 := 1 to cur_height do X for i2 := 1 to cur_width do X if (cave`5Bi1,i2`5D.fval <> dopen_floor.ftval) then X cave`5Bi1,i2`5D.pl := true; X place_stairs(2,1,0); X seed := get_seed; X alloc_monster(`5B1,2`5D,min_malloc_tn,3,true); X store_maint; X END X else X BEGIN `7B Day `7D X for i1 := 1 to cur_height do X for i2 := 1 to cur_width do X cave`5Bi1,i2`5D.pl := true; X place_stairs(2,1,0); X seed := get_seed; X alloc_monster(`5B1,2`5D,min_malloc_td,3,true); X store_maint; X END; X END; X`20 X`20 X BEGIN X panel_row_min := 0; X panel_row_max := 0; X panel_col_min := 0; X panel_col_max := 0; X char_row := -1; X char_col := -1; X`20 X tlink; X mlink; X blank_cave; X`20 X if (dun_level = 0) then X BEGIN X cur_height := screen_height; X cur_width := screen_width; X max_panel_rows := trunc(cur_height/screen_height)*2 - 2; X max_panel_cols := trunc(cur_width /screen_width )*2 - 2; X panel_row := max_panel_rows; X panel_col := max_panel_cols; X town_gen; X END X else X BEGIN X cur_height := max_height; X cur_width := max_width; X max_panel_rows := trunc(cur_height/screen_height)*2 - 2; X max_panel_cols := trunc(cur_width /screen_width )*2 - 2; X panel_row := max_panel_rows; X panel_col := max_panel_cols; X cave_gen; X END; X END; X `20 $ CALL UNPACK [.SOURCE.INCLUDE]GENERATE.INC;1 1249545807 $ create 'f' X`5Bpsect(misc2$code)`5D procedure ident_char; X var X command : char; X begin X if (get_com('Enter character to be identified :',command)) then X case command of X ' ' : prt(' - An open pit.',1,1); X '!' : prt('! - A potion.',1,1); X '"' : prt('" - An amulet, periapt, or necklace.',1,1); X '#' : prt('# - A stone wall.',1,1); X '$' : prt('$ - Treasure.',1,1); X `7B'%' : prt('% - Not used.',1,1);`7D X '&' : prt('& - Treasure chest.',1,1); X '''': prt(''' - An open door.',1,1); X '(' : prt('( - Soft armor.',1,1); X ')' : prt(') - A shield.',1,1); X '*' : prt('* - Gems.',1,1);`20 X '+' : prt('+ - A closed door.',1,1); X ',' : prt(', - Food.',1,1); X '-' : prt('- - A wand',1,1); X '.' : prt('. - Floor.',1,1); X '/' : prt('/ - A pole weapon.',1,1); X `7B'0' : prt('0 - Not used.',1,1);`7D X '1' : prt('1 - Entrance to General Store.',1,1); X '2' : prt('2 - Entrance to Armory.',1,1); X '3' : prt('3 - Entrance to Weaponsmith.',1,1); X '4' : prt('4 - Entrance to Temple.',1,1); X '5' : prt('5 - Entrance to Alchemy shop.',1,1); X '6' : prt('6 - Entrance to Magic-Users store.',1,1); X '7' : prt('7 - Entrance to Black Market.',1,1); X `7B'8' : prt('8 - Not used.',1,1);`7D X `7B'9' : prt('9 - Not used.',1,1);`7D X ':' : prt(': - Rubble.',1,1); X ';' : prt('; - A loose rock.',1,1); X '<' : prt('< - An up staircase.',1,1); X '=' : prt('= - A ring.',1,1); X '>' : prt('> - A down staircase.',1,1); X '?' : prt('? - A scroll.',1,1); X '@' : prt(py.misc.name,1,1); X 'A' : prt('A - Ant Lion.',1,1); X 'B' : prt('B - Beetle.',1,1); X 'C' : prt('C - Gelatanious Cube.',1,1); X 'D' : prt('D - The Balrog (a Demon).',1,1); X 'E' : prt('E - Elemental.',1,1); X 'F' : prt('F - Mind Flayer or Fly.',1,1); X 'G' : prt('G - Ghost.',1,1); X 'H' : prt('H - Hell Hound or Hell Horse.',1,1); X 'I' : prt('I - Invisible Stalker.',1,1); X 'J' : prt('J - Jelly.',1,1); X `7B'K' : prt('K - Not used.',1,1);`7D X 'L' : prt('L - Lamia or Lich.',1,1); X 'M' : prt('M - Manticore, Minotaur, or Mummy.',1,1); X `7B'N' : prt('N - Not used.',1,1);`7D X 'O' : prt('O - Ooze.',1,1); X 'P' : prt('P - Giant humanoid.',1,1); X `7B'Q' : prt('Q - Not used.',1,1);`7D X 'R' : prt('R - Roper or Reptile.',1,1); X 'S' : prt('S - Giant Scorpion.',1,1); X 'T' : prt('T - Troll.',1,1); X 'U' : prt('U - Umber Hulk.',1,1); X 'V' : prt('V - Vampire.',1,1); X 'W' : prt('W - Wight or Wraith.',1,1); X 'X' : prt('X - Xorn.',1,1); X 'Y' : prt('Y - Yeth Hound.',1,1); X `7B'Z' : prt('Z - Not used.',1,1);`7D X '`5B' : prt('`5B - Hard armor.',1,1); X '\' : prt('\ - A hafted weapon.',1,1); X '`5D' : prt('`5D - Misc. armor.',1,1); X '`5E' : prt('`5E - A trap.',1,1); X '_' : prt('_ - A staff.',1,1); X `7B'`60' : prt('`60 - Not used.',1,1);`7D X 'a' : prt('a - Ant.',1,1); X 'b' : prt('b - Bat or Cockatrice.',1,1); X 'c' : prt('c - Centipede.',1,1); X 'd' : prt('d - Dragon.',1,1); X 'e' : prt('e - Floating Eye.',1,1); X 'f' : prt('f - Frog',1,1); X 'g' : prt('g - Gargoyle or Golem.',1,1); X 'h' : prt('h - Harpy.',1,1); X 'i' : prt('i - Icky Thing.',1,1); X 'j' : prt('j - Jackal.',1,1); X 'k' : prt('k - Kobold.',1,1); X 'l' : prt('l - Lice.',1,1); X 'm' : prt('m - Mold or Mushroom.',1,1); X 'n' : prt('n - Naga.',1,1); X 'o' : prt('o - Orc, Ogre, or Hobgoblin.',1,1); X 'p' : prt('p - Person (Humanoid).',1,1); X 'q' : prt('q - Quasit.',1,1); X 'r' : prt('r - Rodent.',1,1); X 's' : prt('s - Skeleton.',1,1); X 't' : prt('t - Tick.',1,1); X `7B'u' : prt('u - Not used.',1,1);`7D X 'v' : prt('v - Vargouille.',1,1); X 'w' : prt('w - Worm(s).',1,1); X `7B'x' : prt('x - Not used.',1,1);`7D X 'y' : prt('y - Yeek.',1,1); X 'z' : prt('z - Zombie.',1,1); X '`7B' : prt('`7B - Arrow, bolt, or bullet.',1,1); X '`7C' : prt('`7C - A sword or dagger.',1,1); X '`7D' : prt('`7D - Bow, crossbow, or sling.',1,1); X '`7E' : prt('`7E - Miscellaneous item.',1,1); X otherwise prt('Not Used.',1,1); X end X end; X`20 X`20 X `7B Help for available commands `7 VD X`5Bpsect(misc2$code)`5D procedure help; X begin X clear(1,1); Xprt('B