-+-+-+-+-+-+-+-+ START OF PART 83 -+-+-+-+-+-+-+-+ X randes_seed : `5Bpsect(setup$data)`5D unsigned; `7B For encoding colors V `7D X town_seed : `5Bpsect(generate$data)`5D unsigned; `7B Seed for town gener Va`7D X channel : `5Bpsect(io$data),global`5D integer; `7B I/O channel # `7D X io$bin_pause : `5Bpsect(io$data)`5D quad_type; `7B I/O pause time `7 VD X cur_height,cur_width : `5Bpsect(player$data)`5D integer; `7B Cur dungeo Vn size`7D X dun_level : `5Bpsect(player$data)`5D integer; `7B Cur dungeon level ` V7D X dun_power : `5Bpsect(player$data)`5D integer; `7B Cur power of dun leve Vl`7D X town_num : `5Bpsect(player$data)`5D integer; `7B Cur town player is in V -RLG`7D X missle_ctr : `5Bpsect(player$data)`5D integer; `7B Counter for missles V `7D X msg_line : `5Bpsect(player$data)`5D integer; `7B Contains message txt`7 VD X msg_flag : `5Bpsect(player$data)`5D boolean; `7B Set with first msg `7 VD X more_flag: `5Bpsect(player$data)`5D boolean; `7B Question -more- on/off V -jeb`7D X wall_flag: `5Bpsect(player$data)`5D boolean; `7B Toggle Neat Wall Pater Vns. -RLG`7D X old_msg : `5Bpsect(player$data)`5D vtype; `7B Last message `7D X generate : `5Bpsect(setup$data)`5D boolean; `7B Generate next level `7D X death : `5Bpsect(player$data)`5D boolean; `7B True if died `7D X died_from : `5Bpsect(player$data)`5D vtype; `7B What killed him `7D X find_flag : `5Bpsect(player$data)`5D boolean; `7B Used in MORIA `7D X reset_flag : `5Bpsect(player$data)`5D boolean; `7B Used in MORIA `7D X cave_flag : `5Bpsect(player$data)`5D boolean; `7B Used in GET_PANEL ` V7D X light_flag : `5Bpsect(player$data)`5D boolean; `7B Used in MOVE_LIGHT V `7D X redraw : `5Bpsect(player$data)`5D boolean; `7B For redraw screen `7D X stat_column : `5Bpsect(player$data)`5D integer; `7B Column for stats V `7D X print_stat : `5Bpsect(player$data)`5D unsigned; `7B Flag for stats `7D X turn : `5Bpsect(player$data)`5D integer; `7B Cur turn of game `7D X day : `5Bpsect(player$data)`5D integer; `7B day counter -RLG `7D X wizard : `5Bpsect(player$data)`5D boolean; `7B Wizard flag `7D X used_line : `5Bpsect(player$data)`5D array `5B2..23`5D of boolean; X password1 : `5Bpsect(setup$data)`5D usernam_type; X password2 : `5Bpsect(setup$data)`5D usernam_type; X days : `5Bpsect(setup$data)`5D array `5B1..7`5D of vtype; X closing_flag : `5Bpsect(player$data)`5D integer; `7B Used for closing V `7D X X `7BBank Stuff`7D`20 X act_bal : `5Bpsect(store$data)`5D integer; X principal : `5Bpsect(store$data)`5D integer; X payment_count : `5Bpsect(store$data)`5D integer; X iod_val, iol_val, danny_cut : `5Bpsect(store$data)`5D real; X `20 X `7B Bit testing array `7D X bit_array : `5Bpsect(player$data)`5D array `5B1..32`5D of unsigned; X`20 X `7B External file names; are all located in directory with image `7D X BOSS_HOU,BOSS_MOR : `5Bpsect(setup$data)`5D vtype; X BOSS_MAS,BOSS_TOP : `5Bpsect(setup$data)`5D vtype; `20 X BOSS_HLP,BOSS_MON : `5Bpsect(setup$data)`5D vtype; X BOSS_OBJ,BOSS_LOS : `5Bpsect(setup$data)`5D vtype; X BOSS_WIZ,BOSS_ANNOY : `5Bpsect(setup$data)`5D vtype; X BUS_PIC ,QUOTES : `5Bpsect(setup$data)`5D vtype; X BOSS_INV,SKILLS : `5Bpsect(setup$data)`5D vtype; X `20 X `7B Following are calculated from max dungeon sizes `7D X max_panel_rows,max_panel_cols : `5Bpsect(player$data)`5D integer; X quart_height,quart_width : `5Bpsect(player$data)`5D integer; X panel_row,panel_col : `5Bpsect(player$data)`5D integer; X panel_row_min,panel_row_max : `5Bpsect(player$data)`5D integer; X panel_col_min,panel_col_max : `5Bpsect(player$data)`5D integer; X panel_col_prt,panel_row_prt : `5Bpsect(player$data)`5D integer; X`20 X `7B Following are all floor definitions `7D X cave : `5Bpsect(moria$data)`5D array `5B1..max_height`5D of row_floor; X blank_floor : `5Bpsect(generate$data)`5D cave_type; X dopen_floor : `5Bpsect(generate$data)`5D floor_type; X lopen_floor : `5Bpsect(generate$data)`5D floor_type; X corr_floor1, corr_floor2 : `5Bpsect(generate$data)`5D floor_type; X corr_floor3, corr_floor4 : `5Bpsect(generate$data)`5D floor_type; X rock_wall1, rock_wall2 : `5Bpsect(generate$data)`5D floor_type; X rock_wall3, boundry_wall : `5Bpsect(generate$data)`5D floor_type; X`20 X `7B Following are set definitions `7D X floor_set, wall_set : `5Bpsect(moria$data)`5D obj_set; X pwall_set, corr_set : `5Bpsect(moria$data)`5D obj_set; X trap_set, light_set : `5Bpsect(moria$data)`5D obj_set; X alpha_set : `5Bpsect(moria$data)`5D etype; X open_cave_set : `5Bpsect(moria$data)`5D obj_set; X circle : `5Bpsect(generate$data)`5D array `5B1..9`5D of integer; `7BC Vircle Room`7D X `7B Following are player variables `7D X py : `5Bpsect(player$data)`5D player_type; X player_title : `5Bpsect(player$data)`5D X`09 array `5B1..max_class`5D of array `5B1..max_player_level`5D of btype; X player_exp : `5Bpsect(player$data)`5D array `5B1..max_player_level`5D of V integer; X acc_exp : `5Bpsect(player$data)`5D real; `7B Accumulator for fractional V exp`7D X bare_hands : `5Bpsect(player$data)`5D dtype; X char_row : `5Bpsect(player$data)`5D integer; X char_col : `5Bpsect(player$data)`5D integer; X com_val : `5Bpsect(player$data)`5D integer; X pclass : `5Bpsect(player$data)`5D integer; X sex_type : `5Bpsect(player$data)`5D vtype; X race : `5Bpsect(create$data)`5D array `5B1..max_races`5D of race_type; X background : `5Bpsect(create$data)`5D array `5B1..max_background`5D of b Vackground_type; X rgold_adj : `5Bpsect(store$data)`5D array `5B1..max_class`5D of array `5 VB1..max_class`5D of real; X class : `5Bpsect(create$data)`5D array `5B1..max_class`5D of class_type; X X skill_list : `5Bpsect(player$data)`5D array `5B1..max_skills`5D of skill V_type; X X mush : `5Bpsect(setup$data)`5D treasure_type; X player_init : `5Bpsect(create$data)`5D`20 X array `5B1..max_class`5D of array `5B1..8`5D of byteint V; X berz_y : `5Bpsect(moria$data)`5D array `5B1..8`5D of integer; X berz_x : `5Bpsect(moria$data)`5D array `5B1..8`5D of integer; X `7B Following are store definitions `7D X office_char_row : `5Bpsect(generate$data)`5D integer; X office_char_col : `5Bpsect(generate$data)`5D integer; X exited_office : `5Bpsect(generate$data)`5D boolean; X owners : `5Bpsect(store$data)`5D array `5B1..max_stores`5D of X`09`09`09`09 array `5B1..max_towns`5D of owner_type; X store : `5Bpsect(store$data)`5D array `5B1..max_stores`5D of store_type; X store_door : `5Bpsect(generate$data)`5D array `5B1..max_doors`5D of trea Vsure_type; X building_door : `5Bpsect(generate$data)`5D array`20 X`09`09`09`09`09 `5B1..max_bdoors`5D of treasure_type; X store_choice : `5Bpsect(store$data)`5D array `5B1..max_stores`5D of arra Vy`20 X`5B1..store$choices`5D of integer; X store_buy : `5Bpsect(store$data)`5D array `5B1..max_stores`5D of obj_set V; X joblist :`09`5Bpsect(store$data)`5D array `5B1..9`5D of ctype; X jobwage :`09`5Bpsect(store$data)`5D array `5B1..9`5D of byteint; X townlist : `5Bpsect(towns$data)`5D array `5B1..max_towns`5D of town_typ Ve; X X `7B Following are treasure arrays and variables `7D X object_list : `5Bpsect(moria$data)`5D array `5B1..450`5D of treasure_typ Ve; X object_ident : `5Bpsect(moria$data)`5D array `5B1..450`5D of boolean; X t_level : `5Bpsect(moria$data)`5D array `5B0..max_obj_level`5D of intege Vr; X gold_list : `5Bpsect(moria$data)`5D array `5B1..max_gold`5D of treasure_ Vtype; X t_list : `5Bpsect(moria$data)`5D array `5B1..max_talloc`5D of treasure_t Vype; X inventory : `5Bpsect(player$data)`5D array `5B1..inven_max`5D of treasur Ve_type; X equipment : `5Bpsect(player$data)`5D array `5B23..equip_max`5D of treasu Vre_type; X temporary_slot : `5Bpsect(player$data)`5D treasure_type; X inventory_init : `5Bpsect(setup$data)`5D array `5B1..300`5D of treasure_ Vtype; X blank_treasure : `5Bpsect(moria$data)`5D treasure_type; X inven_ctr : `5Bpsect(player$data)`5D integer; `7B Total different obj's V `7D X inven_weight : `5Bpsect(player$data)`5D integer; `7B Cur carried weight V `7D X equip_ctr : `5Bpsect(player$data)`5D integer; `7B Cur equipment ctr `7D X tcptr : `5Bpsect(moria$data)`5D integer; `7B Cur treasure heap ptr `7D X`20 X `7B Following are feature objects defined for dungeon `7D X trap_lista : `5Bpsect(generate$data)`5D array `5B1..max_trapa`5D of trea Vsure_type; X trap_listb : `5Bpsect(generate$data)`5D array `5B1..max_trapb`5D of trea Vsure_type; X blk_mkt_trap : `5Bpsect(generate$data)`5D treasure_type; `7BBlack Market V trap`7D X scare_monster : `5Bpsect(generate$data)`5D treasure_type; `7BSpecial tra Vp`7D X rubble : `5Bpsect(generate$data)`5D treasure_type; X door_list : `5Bpsect(generate$data)`5D array `5B1..3`5D of treasure_type V; X up_stair : `5Bpsect(generate$data)`5D array `5B1..max_stair`5D of treasu Vre_type; X down_stair : `5Bpsect(generate$data)`5D array `5B1..max_stair`5D of trea Vsure_type;`20 X`20 X `7B Following are creature arrays and variables `7D X c_list : `5Bpsect(moria$data)`5D array `5B1..400`5D of creature_type; X m_list : `5Bpsect(moria$data)`5D array `5B1..max_malloc`5D of monster_ty Vpe; X m_level : `5Bpsect(generate$data)`5D array `5B0..max_mons_level`5D of in Vteger; X blank_monster : `5Bpsect(generate$data)`5D monster_type; `7BBlank monste Vr values`7D X muptr : `5Bpsect(generate$data)`5D integer; `7B Cur used monster ptr ` V7D X mfptr : `5Bpsect(generate$data)`5D integer; `7B Cur free monster ptr ` V7D X mon_tot_mult : `5Bpsect(moria$data)`5D integer; `7B # of repro's of cre Vature `7D X attack_desc : `5Bpsect(creature$data)`5D array `5B1..max_attack_desc`5D V of etype; X hit_desc : `5Bpsect(creature$data)`5D array `5B1..max_hit_desc`5D of bty Vpe; X kill_list: `5Bpsect(creature$data)`5D array `5B1..400`5D of integer; X X `7B Following are arrays for descriptive pieces `7D X colors : `5Bpsect(setup$data)`5D array `5B1..max_colors`5D of atype; X mushrooms : `5Bpsect(setup$data)`5D array `5B1..max_mush`5D of atype; X woods : `5Bpsect(setup$data)`5D array `5B1..max_woods`5D of atype; X metals : `5Bpsect(setup$data)`5D array `5B1..max_metals`5D of atype; X rocks : `5Bpsect(setup$data)`5D array `5B1..max_rocks`5D of atype; X amulets : `5Bpsect(setup$data)`5D array `5B1..max_amulets`5D of atype; X syllables : `5Bpsect(setup$data)`5D array `5B1..max_syllables`5D of tent Vype; X vowel_set : `5Bpsect(moria$data)`5D char_set; X`20 X `7B Following are variables for the Save Character Routines `7D X finam : `5Bpsect(save$data)`5D vtype; X data_corrupt: `5Bpsect(save$data)`5D boolean; X key_rec : `5Bpsect(save$data)`5D key_type; X`20 X `7B Cursor variables, used for cursor positioning `7D X cursor_r : `5Bpsect(io$data),global`5D array `5B1..24`5D of varying`5B10 V`5D of char; X curlen_r : `5Bpsect(io$data),global`5D integer; X cursor_c : `5Bpsect(io$data),global`5D array `5B1..80`5D of varying`5B10 V`5D of char; X curlen_c : `5Bpsect(io$data),global`5D integer; X cursor_l : `5Bpsect(io$data),global`5D integer; X row_first : `5Bpsect(io$data),global`5D boolean; X cursor_erl : `5Bpsect(io$data),global`5D varying`5B10`5D of char; X cursor_erp : `5Bpsect(io$data),global`5D varying`5B10`5D of char; X raoul : `5Bpsect(screen$data)`5D array `5B0..3`5D of char; X wall_chr : `5Bpsect(screen$data)`5D tentype; X username : usernam_type; `7Bduh...`7D X wierd_chance : integer; $ CALL UNPACK [.INC]VARIABLES.INC;1 1327284724 $ create 'f' X`5Bpsect(wierd$code)`5D function query_max_wierd : integer; X Begin X query_max_wierd := 18; X End; X X X`5Bpsect(wierd$code)`5D procedure random_wierdness(wierd_type : integer; X`09`09`09`09`09`09force_wierd: boolean); X const X max_wierd = 18; X var X i1,i2,i3, y,x : integer; X centerx,centery: integer; X r,theta`09 : real; X scramble : array`5B1..6`5D of integer; X was_wierd : boolean; X jstr`09 : vtype; XBEGIN X Xif (putzuser) then mess_with_mind; Xrepeat X was_wierd := true; X if (wierd_type = 0) then wierd_type := randint(max_wierd); X case wierd_type of X X 1,2,3: read_text_data(0,QUOTES); X X 4: if ((randint(1000) > 1) and (is_boss_dead = false)) then X`09 was_wierd := false X`09else X begin X msg_print('Extra! Extra! Read all about it!'); X msg_print('The BOSS has learned of your attempts to defeat him.' V); X msg_print('Due to the stress this causes him, he has had'); X msg_print('a cardiac arrest and has died. You are a...'); X msg_print('***TOTAL WINNER***'); X total_winner_num := total_winner_num + 1; X`09 prt_winner; X`09 msg_print(''); X if (randint(3) = 3) then `20 X`09 is_boss_dead := true X`09 else X begin `7Bgee, that was fun. --jeb`7D X `09 total_winner_num := total_winner_num - 1; X msg_print('Just kidding!!!'); X msg_print('Psych!!!'); X msg_print('The BOSS lives!'); X`09`09msg_print(''); X`09`09draw_cave; X end; X end; X 5: begin X msg_print(' '); X`09 i1 := wierd_chance*max_wierd*3000; X`09 writev(jstr,'You know, there''s a random one in ',i1:1); X msg_print(jstr); X`09 msg_print('chance that you will just spontaneously win the game.'); X msg_print(' '); X msg_print('No, really. It''s true.'); X end; X 6: begin X msg_print('Just because you''re not paranoid,'); X msg_print('doesn''t mean that they''re not out to get you!'); X msg_print('In fact, we can assure you that they *are* out'); X msg_print('to get you.'); X`09 for i1 := 1 to 3 do X`09 begin X`09 y := char_row; X`09 x := char_col; X summon_monster(y,x,false); X`09 end; X`09 creatures(false); X`09 prt_chp; X end; X 7: begin X msg_print('Suddenly, Dirty Harry pops out from out of nowhere'); X`09 msg_print('He says, "Tag! you''re it!". You say "ouch."'); X if ((randint(2) = 1) and (dun_level <> 0)) then +-+-+-+-+-+-+-+- END OF PART 83 +-+-+-+-+-+-+-+-