-+-+-+-+-+-+-+-+ START OF PART 103 -+-+-+-+-+-+-+-+ X`09`0915`09You've been slimed. X`09`0916`09crushes you. X`09`0917`09tramples you. X`09`0918`09drools on you. X`09`0919`09insults you. X`09`0923`09plays a song. X`09`0924`09kisses you. X`09`0925`09gores you. X`09`0926`09"bovine"s you. X`09`0927`09electrocutes you. X`09`0928`09inks you. X`09`0929`09entangles you. X`09`0930`09blood sucks you. X`09`0931`09goes for your throat. X`09`0932`09blows bubbles at you. X`09`0933`09squawks at you. X`09`0934`09pecks at you. X`09`0935`09barks at you. X`09`0936`09rubs against your leg. X`09`0999`09is repelled. X X`20 X`09Example: For a creature which claws twice for 1d6, then stings for X`09`09 2d4 and loss of dex you would use: X`09`09`09'1 3 2-1d6`7C15 4 2d4' X X`09Level`09: Base level the creature is found on. X X`09moo.monst in dua2:`5Bsa65`5D has bovine monsters `7D X X`09blank_monster`09:= (0,0,0,0,0,0,0,0,0,false,false,false);`20 X X X X X X X X X X X X X X X X X $ CALL UNPACK VALUES.INC;1 926580519 $ create 'f' Xvar X X`09cur_inven`09`09`09: `5Bpsect(inven$data)`5D X`09`09`09`09`09 treas_ptr;`09`7B Current inven page `7D X`09is_magii`09`09`09: `5Bpsect(player$data)`5D X`09`09`09`09`09 boolean;`09`7B True if has mana `7D X`09start_time`09`09`09: `5Bpsect(setup$data)`5D X`09`09`09`09`09 quad_type;`09`7B Time started playing`7D X`09is_from_file`09`09`09: `5Bpsect(player$data)`5D X`09`09`09`09`09 boolean;`09`7B True if restored `7D X`09bank`09`09`09`09: `5Bpsect(player$data)`5D X`09`09`09`09`09 money_type;`09`7B Bank's money`09 `7D X`09coin$value`09`09`09: `5Bpsect(player$data)`5D X`09`09`09`09`09 money_type;`09`7B Copy of money values`7D 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`09pasteb`09`09`09`09: `5Bpsect(io$data),global`5D X`09`09`09`09`09 unsigned;`09`7B Pasteboard id `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`09msg_prev`09`09`09: `5Bpsect(io$data)`5D `7Bprevious messages`7D X`09`09`09`09`09 array`5B1..max_messages`5D of vtype; X`09quest`09`09`09`09: `5Bpsect(quest$data)`5D `7Bquest data`7D X`09`09`09`09`09 array`5B1..num_quests`5D of integer; 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`09want_trap`09`09`09: `5Bpsect(player$data)`5D X`09`09`09`09`09 boolean;`09`7B True = trap messages`7D X`09want_warn`09`09`09: `5Bpsect(player$data)`5D X`09`09`09`09`09 boolean;`09`7B True = water warning`7D X`09caught_message`09`09`09: `5Bpsect(player$data)`5D X`09`09`09`09`09 message_ptr;`09`7B Message from other `7D X`09old_message`09`09`09: `5Bpsect(player$data)`5D X`09`09`09`09`09 message_ptr;`09`7B Past messages`09 `7D X`09old_mess_count`09`09`09: `5Bpsect(player$data)`5D X`09`09`09`09`09 integer;`09`7B Count of old mess's `7D X`09max_mess_keep`09`09`09: `5Bpsect(player$data)`5D X`09`09`09`09`09 integer;`09`7B Max old to keep `7D X`09cur_message`09`09`09: `5Bpsect(player$data)`5D X`09`09`09`09`09 message_ptr;`09`7B Pointer to add mess `7D X`09message_cursor`09`09`09: `5Bpsect(player$data)`5D X`09`09`09`09`09 message_ptr;`09`7B Pointer to read mess`7D X`09caught_count`09`09`09: `5Bpsect(player$data)`5D X`09`09`09`09`09 integer;`09`7B # of mesgs waiting `7D X`09max_score`09`09`09: `5Bpsect(player$data)`5D X`09`09`09`09`09 integer;`09`7B # of scores to list `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`09turn_counter`09`09`09: `5Bpsect(dungeon$data)`5D`20 X`09`09`09`09`09 integer;`09`7B Turns ellapsed `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`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`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`09uw$id`09`09`09`09: `5Bpsect(setup$data)`5D X`09`09`09`09`09 boolean;`09`7B Is this a UW node? `7D X`7Bneatness arrays`7D X`09key_of`09`09: `5Bpsect(player$data)`5D array `5B0..8`5D of byteint; X`09oct_of`09`09: `5Bpsect(player$data)`5D array `5B1..9`5D of byteint; X`09dx_of`09`09: `5Bpsect(player$data)`5D array `5B1..9`5D of bytlint; X`09dy_of`09`09: `5Bpsect(player$data)`5D array `5B1..9`5D of bytlint; 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_TRD`09`09`09: `5Bpsect(setup$data)`5D vtype; X`09MORIA_HLP`09`09`09: `5Bpsect(setup$data)`5D vtype; X`09MORIA_LCK`09`09`09: `5Bpsect(setup$data)`5D vtype; X`09MORIA_DTH`09`09`09: `5Bpsect(setup$data)`5D vtype; X`09MORIA_MON`09`09`09: `5Bpsect(setup$data)`5D vtype; X`09MORIA_CST`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`09water1`09`09`09`09: `5Bpsect(generate$data)`5D floor_type; X`09water2`09`09`09`09: `5Bpsect(generate$data)`5D floor_type; X`09water3`09`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`09water_set`09`09`09: `5Bpsect(moria$data)`5D obj_set; X`09earth_set`09`09`09: `5Bpsect(moria$data)`5D obj_set; X`09float_set`09`09`09: `5Bpsect(moria$data)`5D obj_set; X`09slow_set`09`09`09: `5Bpsect(moria$data)`5D obj_set; X`09stable_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 X`09`09`09`09 array `5B1..max_player_level`5D of integer; X`09acc_exp`09`09`09: `5Bpsect(player$data)`5D X`09`09`09`09 real;`09`7B Accumulator for fractional exp`7D X`09bare_hands`09`09: `5Bpsect(player$data)`5D X`09`09`09`09 dtype; X`09msg_terse`09`09: `5Bpsect(io$data)`5D boolean; X`09record_ctr`09`09: `5Bpsect(io$data)`5D byteint; X`09char_row`09`09: `5Bpsect(player$data)`5D integer; X`09char_col`09`09: `5Bpsect(player$data)`5D integer; X`09com_val`09`09`09: `5Bpsect(player$data)`5D integer; X`09pclass`09`09`09: `5Bpsect(player$data)`5D integer; X`09sex_type`09`09: `5Bpsect(player$data)`5D vtype; X`09race`09`09`09: `5Bpsect(create$data)`5D X`09`09`09`09 array `5B1..max_races`5D of race_type; X`09background`09`09: `5Bpsect(create$data)`5D X`09`09`09`09 array `5B1..max_background`5D of background_type; X`09rgold_adj`09`09: `5Bpsect(store$data)`5D X`09`09`09`09 array `5B1..max_races`5D of X`09`09`09`09 array `5B1..max_races`5D of real; X`09class`09`09`09: `5Bpsect(create$data)`5D X`09`09`09`09 array `5B1..max_class`5D of class_type; X`09magic_spell`09`09: `5Bpsect(player$data)`5D X`09`09`09`09 array `5B1..max_class`5D of`20 X`09`09`09`09 array `5B1..max_spells`5D of spell_type; X`09yums`09`09`09: `5Bpsect(setup$data)`5D`20 X`09`09`09`09 array `5B1..num_yum`5D of treasure_type; X`09monk_book`09`09: `5Bpsect(setup$data)`5D treasure_type; X`09player_init`09`09: `5Bpsect(create$data)`5D X`09`09`09`09 array `5B1..max_class`5D of X`09`09`09`09 array `5B1..5`5D of byteint; X`09total_winner`09`09: `5Bpsect(setup$data)`5D boolean; X X`09`7B Following are store definitions`09`09`09`09`7D X`09owners`09`09`09: `5Bpsect(store$data)`5D X`09`09`09`09 array `5B1..max_owners`5D of owner_type; X`09store`09`09`09: `5Bpsect(store$data)`5D X`09`09`09`09 array `5B1..max_stores`5D of store_type; X`09store_door`09`09: `5Bpsect(generate$data)`5D X`09`09`09`09 array `5B1..max_stores+max_unnamed+5`5D of X`09`09`09`09 treasure_type; X`09store_choice`09`09: `5Bpsect(store$data)`5D X`09`09`09`09 array `5B1..max_stores`5D of`20 X`09`09`09`09 array `5B1..store$choices`5D of integer; X`09store_buy`09`09: `5Bpsect(store$data)`5D X`09`09`09`09 array `5B1..max_stores`5D of obj_set; X`09store_hours`09`09: `5Bpsect(store$data)`5D X`09`09`09`09 array `5B1..max_stores+max_unnamed`5D of X`09`09`09`09 array `5B1..7`5D of htype; X`09store_bribe`09`09: `5Bpsect(store$data)`5D X`09`09`09`09 array `5B1..max_stores+max_unnamed`5D of integer; X`09mugging_chance`09`09: `5Bpsect(store$data)`5D`09`7B Chance page gets `7D X`09`09`09`09 integer;`09`09`7B mugged`09 `7D X X`09`7B Following are treasure arrays`09and variables`09`09`09`7D X`09object_list`09`09: `5Bpsect(moria$data)`5D`20 X`09`09`09`09 array `5B1..max_objects`5D of treasure_type; X`09object_ident`09`09: `5Bpsect(moria$data)`5D`20 X`09`09`09`09 array `5B1..max_objects`5D of boolean; X`09t_level`09`09`09: `5Bpsect(moria$data)`5D`20 X`09`09`09`09 array `5B0..max_obj_level`5D of integer; X`09gold_list`09`09: `5Bpsect(moria$data)`5D`20 X`09`09`09`09 array `5B1..max_gold`5D of treasure_type; X`09t_list`09`09`09: `5Bpsect(moria$data)`5D`20 X`09`09`09`09 array `5B1..max_talloc`5D of treasure_type; X`09equipment`09`09: `5Bpsect(player$data)`5D`20 X`09`09`09`09 array `5B1..equip_max`5D`09 of treasure_type; X`09inventory_list`09`09: `5Bpsect(player$data)`5D treas_ptr; X`09inven_temp`09`09: `5Bpsect(player$data)`5D treas_ptr; X`09inventory_init`09`09: `5Bpsect(setup$data)`5D`20 X`09`09`09`09 array `5B1..inven_init_max`5D of treasure_type; X`09blank_treasure`09`09: `5Bpsect(moria$data)`5D treasure_type; X`09inven_ctr`09`09: `5Bpsect(player$data)`5D X`09`09`09`09 integer;`09`7B Total different obj's`09`7D X`09inven_weight`09`09: `5Bpsect(player$data)`5D X`09`09`09`09 integer;`09`7B Cur carried weight`09`7D X`09equip_ctr`09`09: `5Bpsect(player$data)`5D X`09`09`09`09 integer;`09`7B Cur equipment ctr`09`7D X`09tcptr`09`09`09: `5Bpsect(moria$data)`5D X`09`09`09`09 integer;`09`7B Cur treasure heap ptr`09`7D X X`09`7B Following are variables that change with level of difficulty`09`7D X`09`7B 1/x chance of treasure per magma`09`09`7D X`09dun_str_mc`09`09: `5Bpsect(generate$data)`5D integer; X`09`7B 1/x chance of treasure per quartz`09`09`7D X`09dun_str_qc`09`09: `5Bpsect(generate$data)`5D integer; X`09`7B Level/x chance of unusual room`09`09`7D X`09dun_unusual`09`09: `5Bpsect(generate$data)`5D integer; X`09`7B Amount of objects for rooms`09`09`09`7D X`09treas_room_alloc`09: `5Bpsect(generate$data)`5D integer; X`09`7B Amount of objects for corridors`09`09`7D +-+-+-+-+-+-+-+- END OF PART 103 +-+-+-+-+-+-+-+-