-+-+-+-+-+-+-+-+ START OF PART 57 -+-+-+-+-+-+-+-+ X`09`09tval`09: byteint;`09`7B Catagory number`09`7D X`09`09tchar`09: char;`09`09`7B Character representation`7D X`09`09flags`09: unsigned;`09`7B Special flags`09`09`7D X`09`09p1`09: integer;`09`7B Misc. use variable`09`7D X`09`09cost`09: integer;`09`7B Cost of item`09`09`7D X`09`09subval`09: integer;`09`7B Sub-catagory number`09`7D X`09`09weight`09: wordint;`09`7B Weight`09`09`7D X`09`09number`09: wordint;`09`7B Number of items`09`7D X`09`09tohit`09: worlint;`09`7B Pluses to hit`09`09`7D X`09`09todam`09: worlint;`09`7B Pluses to damage`09`7D X`09`09ac`09: worlint;`09`7B Normal AC`09`09`7D X`09`09toac`09: worlint;`09`7B Pluses to AC`09`09`7D X`09`09damage`09: dtype;`09`7B Damage when hits`09`7D X`09`09level`09: bytlint;`09`7B Level item found`09`7D X`09end; X`09player_type = record X`09`09misc : record X`09`09`09name`09: vtype;`09`7B Name of character`09`7D X`09`09`09race`09: vtype;`09`7B Race of character`09`7D X`09`09`09sex`09: vtype;`09`7B Sex of character`09`7D X`09`09`09title`09: vtype;`09`7B Character's title`09`7D X`09`09`09tclass`09: vtype;`09`7B Character's class`09`7D X`09`09`09max_exp : integer;`09`7B Max experience`7D X`09`09`09exp`09: integer;`09`7B Cur experienc`09`7D X`09`09`09au`09: integer;`09`7B Gold`09`09`7D X`09`09`09age`09: wordint;`09`7B Characters age`7D X`09`09`09ht`09: wordint;`09`7B Height`09`7D X`09`09`09wt`09: wordint;`09`7B Weight`09`7D X`09`09`09lev`09: wordint;`09`7B Level`09`09`7D X`09`09`09max_lev`09: wordint;`09`7B Max level explored`7D X`09`09`09srh`09: worlint;`09`7B Chance in search`7D X`09`09`09fos`09: worlint;`09`7B Frenq of search`7D X`09`09`09bth`09: worlint;`09`7B Base to hit`09`7D X`09`09`09bthb`09: worlint;`09`7B BTH with bows`09`7D X`09`09`09mana`09: worlint;`09`7B Mana points`09`7D X`09`09`09mhp`09: worlint;`09`7B Max hit pts`09`7D X`09`09`09ptohit`09: worlint;`09`7B Pluses to hit`09`7D X`09`09`09ptodam`09: worlint;`09`7B Pluses to dam`09`7D X`09`09`09pac`09: worlint;`09`7B Total AC`09`7D X`09`09`09ptoac`09: worlint;`09`7B Magical AC`09`7D X`09`09`09dis_th`09: worlint;`09`7B Display +ToHit`7D X`09`09`09dis_td`09: worlint;`09`7B Display +ToDam`7D X`09`09`09dis_ac`09: worlint;`09`7B Display +ToAC `7D X`09`09`09dis_tac`09: worlint;`09`7B Display +ToTAC`7D X`09`09`09disarm : worlint;`09`7B % to Disarm`09`7D X`09`09`09save`09: worlint;`09`7B Saving throw`09`7D X`09`09`09sc`09: worlint;`09`7B Social Class`09`7D X`09`09`09pclass`09: byteint;`09`7B # of class`09`09`7D X`09`09`09prace`09: byteint;`09`7B # of race`09`09`7D X`09`09`09hitdie`09: byteint;`09`7B Char hit die`09`7D X`09`09`09stl`09: bytlint;`09`7B Stealth factor`7D X`09`09`09expfact`09: real;`09`09`7B Experience factor`7D X`09`09`09cmana`09: real;`09`09`7B Cur mana pts `7D X`09`09`09chp`09: real;`09`09`7B Cur hit pts`09`7D X`09`09`09history : array `5B1..5`5D of vtype;`7B History record`7D X`09`09end; X`09`09stat : record X`09`09`09str`09: byteint;`09`7B Max strength`09 `7D X`09`09`09cstr`09: byteint;`09`7B Current strength `7D X`09`09`09dex`09: byteint;`09`7B Max dexterity`09 `7D X`09`09`09cdex`09: byteint;`09`7B Current dexterity `7D X`09`09`09con`09: byteint;`09`7B Max constitution `7D X`09`09`09ccon`09: byteint;`09`7B Current constitution`7D X`09`09`09int`09: byteint;`09`7B Max intelligence `7D X`09`09`09cint`09: byteint;`09`7B Current intelligence`7D X`09`09`09wis`09: byteint;`09`7B Max wisdom`09 `7D X`09`09`09cwis`09: byteint;`09`7B Current wisdom `7D X`09`09`09chr`09: byteint;`09`7B Max charisma`09 `7D X`09`09`09cchr`09: byteint;`09`7B Current charisma `7D X`09`09end; X`09`09flags : record X`09`09`09status`09`09: unsigned;`09`7B Status of player `7D X`09`09`09rest`09`09: integer;`09`7B Rest counter`09 `7D X`09`09`09blind`09`09: integer;`09`7B Blindness counter `7D X`09`09`09paralysis`09: integer;`09`7B Paralysis counter `7D X`09`09`09confused`09: integer;`09`7B Confusion counter `7D X`09`09`09food`09`09: integer;`09`7B Food counter `7D X`09`09`09food_digested`09: integer;`09`7B Food per round `7D X`09`09`09protection`09: integer;`09`7B Protection fr. evil `7D X`09`09`09speed`09`09: integer;`09`7B Cur speed adjust `7D X`09`09`09fast`09`09: integer;`09`7B Temp speed change `7D X`09`09`09slow`09`09: integer;`09`7B Temp speed change `7D X`09`09`09afraid`09`09: integer;`09`7B Fear `7D X`09`09`09poisoned`09: integer;`09`7B Poisoned `7D X`09`09`09image`09`09: integer;`09`7B Halucinate `7D X`09`09`09protevil`09: integer;`09`7B Protect VS evil `7D X`09`09`09invuln`09`09: integer;`09`7B Increases AC `7D X`09`09`09hero`09`09: integer;`09`7B Heroism`09 `7D X`09`09`09shero`09`09: integer;`09`7B Super Heroism`09 `7D X`09`09`09blessed`09`09: integer;`09`7B Blessed`09 `7D X`09`09`09resist_heat`09: integer;`09`7B Timed heat resist `7D X`09`09`09resist_cold`09: integer;`09`7B Timed cold resist `7D X`09`09`09detect_inv`09: integer;`09`7B Timed see invisible `7D X`09`09`09word_recall`09: integer;`09`7B Timed teleport level`7D X`09`09`09see_infra`09: integer;`09`7B See warm creatures `7D X`09`09`09tim_infra`09: integer;`09`7B Timed infra vision `7D X`09`09`09see_inv`09`09: boolean;`09`7B Can see invisible `7D X`09`09`09teleport`09: boolean;`09`7B Random teleportation`7D X`09`09`09free_act`09: boolean;`09`7B Never paralyzed `7D X`09`09`09slow_digest`09: boolean;`09`7B Lower food needs `7D X`09`09`09aggravate`09: boolean;`09`7B Agravate monsters `7D X`09`09`09fire_resist`09: boolean;`09`7B Resistance to fire `7D X`09`09`09cold_resist`09: boolean;`09`7B Resistance to cold `7D X`09`09`09acid_resist`09: boolean;`09`7B Resistance to acid `7D X`09`09`09regenerate`09: boolean;`09`7B Regenerate hit pts `7D X`09`09`09lght_resist`09: boolean;`09`7B Resistance to light `7D X`09`09`09ffall`09`09: boolean;`09`7B No damage falling `7D X`09`09`09sustain_str`09: boolean;`09`7B Keep strength `7D X`09`09`09sustain_int`09: boolean;`09`7B Keep intelligence `7D X`09`09`09sustain_wis`09: boolean;`09`7B Keep wisdom `7D X`09`09`09sustain_con`09: boolean;`09`7B Keep constitution `7D X`09`09`09sustain_dex`09: boolean;`09`7B Keep dexterity `7D X`09`09`09sustain_chr`09: boolean;`09`7B Keep charisma `7D X`09`09`09confuse_monster : boolean;`09`7B Glowing hands... `7D X`09`09end; X`09end; X`09spell_type = record X`09`09sname`09: ctype; X`09`09slevel`09: byteint; X`09`09smana`09: byteint; X`09`09sexp`09: wordint; X`09`09sfail`09: byteint; X`09`09learned : boolean; X`09end; X`09spl_rec = record X`09`09splnum`09: integer; X`09`09splchn`09: integer; X`09end; X`09spl_type = array `5B1..22`5D of spl_rec; X`09race_type = packed record X`09`09trace`09: vtype;`09`09`7B Type of race`09`09`7D X`09`09str_adj : bytlint;`09`7B adjustments`09`09`7D X`09`09int_adj : bytlint; X`09`09wis_adj : bytlint; X`09`09dex_adj : bytlint; X`09`09con_adj : bytlint; X`09`09chr_adj : bytlint; X`09`09b_age`09: wordint; `7B Base age of character`09`7D X`09`09m_age`09: wordint; `7B Maximum age of character`09`7D X`09`09m_b_ht`09: wordint; `7B base height for males`09`7D X`09`09m_m_ht`09: wordint; `7B mod height for males`09`7D X`09`09m_b_wt`09: wordint; `7B base weight for males`09`7D X`09`09m_m_wt`09: wordint; `7B mod weight for males`09`7D X`09`09f_b_ht`09: wordint; `7B base height females`09`7D X`09`09f_m_ht`09: wordint; `7B mod height for females`09`7D X`09`09f_b_wt`09: wordint; `7B base weight for female`09`7D X`09`09f_m_wt`09: wordint; `7B mod weight for females`09`7D X`09`09b_exp`09: real;`09 `7B Base experience factor`09`7D X`09`09b_dis`09: bytlint; `7B base chance to disarm`09`7D X`09`09srh`09: bytlint; `7B base chance for search`09`7D X`09`09stl`09: bytlint; `7B Stealth of character`09`7D X`09`09fos`09: bytlint; `7B frequency of auto search`09`7D X`09`09bth`09: bytlint; `7B adj base chance to hit`09`7D X`09`09bthb`09: bytlint; `7B adj base to hit with bows`09`7D X`09`09bsav`09: bytlint; `7B Race base for saving throw`09`7D X`09`09bhitdie`09: bytlint; `7B Base hit points for race`09`7D X`09`09infra`09: bytlint; `7B See infra-red`09`09`7D X`09`09tclass`09: unsigned; `7B Bit field for class types`09`7D X`09end; X`09class_type = record X`09`09title`09: vtype;`09 `7B type of class`09`09`7D X`09`09m_exp`09: real;`09`09 `7B Class experience factor`09`7D X`09`09adj_hd`09: bytlint;`7B Adjust hit points`09`09`7D X`09`09mdis`09: bytlint;`7B mod disarming traps`09`7D X`09`09msrh`09: bytlint;`7B modifier to searching`09`7D X`09`09mstl`09: bytlint;`7B modifier to stealth`09`7D X`09`09mfos`09: bytlint;`7B modifier to freq-of-search`09`7D X`09`09mbth`09: bytlint;`7B modifier to base to hit`09`7D X`09`09mbthb`09: bytlint;`7B modifier to base to hit - bows`7D X`09`09msav`09: bytlint;`7B Class modifier to save`09`7D X`09`09madj_str: bytlint;`7B Class modifier for strength`7D X`09`09madj_int: bytlint;`7B Class modifier for intelligence`7D X`09`09madj_wis: bytlint;`7B Class modifier for wisdom`09`7D X`09`09madj_dex: bytlint;`7B Class modifier for dexterity`7D X`09`09madj_con: bytlint;`7B Class modifier for constitution`7D X`09`09madj_chr: bytlint;`7B Class modifier for charisma`7D X`09`09pspell`09: boolean;`09 `7B class use priest spells`09`7D X`09`09mspell`09: boolean;`09 `7B class use mage spells`09`7D X`09end; X`09background_type`09= record X`09`09info`09: vtype;`09 `7B History information`09`7D X`09`09roll`09: byteint; `7B Die roll needed for history`7D X`09`09chart`09: byteint; `7B Table number`09`09`7D X`09`09next`09: bytlint;`7B Pointer to next table`09`7D X`09`09bonus`09: bytlint;`7B Bonus to the Social Class`09`7D X`09end; X`09floor_type = record X`09`09ftval`09: `5Bbit(7),pos(0)`5D 0..15; X`09`09ftopen`09: `5Bbit(1),pos(7)`5D boolean; X`09end; X`09cave_type = record X`09`09cptr`09: byteint; X`09`09tptr`09: byteint; X`09`09fval`09: `5Bbit(4),pos(16)`5D 0..15; X`09`09fopen`09: `5Bbit(1),pos(20)`5D boolean; X`09`09fm`09: `5Bbit(1),pos(21)`5D boolean; X`09`09pl`09: `5Bbit(1),pos(22)`5D boolean; X`09`09tl`09: `5Bbit(1),pos(23)`5D boolean; X`09end; X`09row_floor = array `5B1..max_width`5D of cave_type; X`09owner_type = record X`09`09owner_name`09: vtype; X`09`09max_cost`09: worlint; X`09`09max_inflate`09: real; X`09`09min_inflate`09: real; X`09`09haggle_per`09: real; X`09`09owner_race`09: byteint; X`09`09insult_max`09: byteint; X`09end; X`09inven_record = record X`09`09scost`09`09: integer; X`09`09sitem`09`09: treasure_type; X`09end; X`09store_type = record X`09`09store_open`09: worlint; X`09`09owner`09`09: byteint; X`09`09insult_cur`09: bytlint; X`09`09store_ctr`09: byteint; X`09`09store_inven`09: array `5B1..store_inven_max`5D of inven_record; X`09end; $ CALL UNPACK [.SOURCE.INCLUDE]TYPES.INC;1 1696538244 $ create 'f' X value X X`09wizard1 `09:= false; X`09wizard2 := false; X`09`7B God and Wizard passwords: God is for debugging purposes only. `7D X`09wdata :=( X`09`09(011065,87,36,139,197,12,22,228,250,54,148,136,163), X`09`09(122565,181,170,214,182,212,8,195,173,86,76,252,124) X`09`09`09 ); X`09used_line := (22 of false); X`09death := false; X`09total_winner := false; X`09stat_column := 1; X`09turn := 0; X`09pclass := 0; X`09print_stat := 0; X X`09`7B For the testing of bits`09`09`09`09-RAK-`09`7D X`09bit_array := ( X`09`09%X'00000001', `7B Bit number 1 `7D X`09`09%X'00000002', `7B Bit number 2 `7D X`09`09%X'00000004', `7B Bit number 3 `7D X`09`09%X'00000008', `7B Bit number 4 `7D X`09`09%X'00000010', `7B Bit number 5 `7D X`09`09%X'00000020', `7B Bit number 6 `7D X`09`09%X'00000040', `7B Bit number 7 `7D X`09`09%X'00000080', `7B Bit number 8 `7D X`09`09%X'00000100', `7B Bit number 9 `7D X`09`09%X'00000200', `7B Bit number 10 `7D X`09`09%X'00000400', `7B Bit number 11 `7D X`09`09%X'00000800', `7B Bit number 12 `7D X`09`09%X'00001000', `7B Bit number 13 `7D X`09`09%X'00002000', `7B Bit number 14 `7D X`09`09%X'00004000', `7B Bit number 15 `7D X`09`09%X'00008000', `7B Bit number 16 `7D X`09`09%X'00010000', `7B Bit number 17 `7D X`09`09%X'00020000', `7B Bit number 18 `7D X`09`09%X'00040000', `7B Bit number 19 `7D X`09`09%X'00080000', `7B Bit number 20 `7D X`09`09%X'00100000', `7B Bit number 21 `7D X`09`09%X'00200000', `7B Bit number 22 `7D X`09`09%X'00400000', `7B Bit number 23 `7D X`09`09%X'00800000', `7B Bit number 24 `7D X`09`09%X'01000000', `7B Bit number 25 `7D X`09`09%X'02000000', `7B Bit number 26 `7D X`09`09%X'04000000', `7B Bit number 27 `7D X`09`09%X'08000000', `7B Bit number 28 `7D X`09`09%X'10000000', `7B Bit number 29 `7D X`09`09%X'20000000', `7B Bit number 30 `7D X`09`09%X'40000000', `7B Bit number 31 `7D X`09`09%X'80000000' `7B Bit number 32 `7D X`09`09`09); X X`09`7B Operating hours for Moria`09`09`09`09-RAK-`09`7D X`09`7B X = Open; . = Closed `7D X`09days :=( X`09`09'SUN:XXXXXXXXXXXXXXXXXXXXXXXX`7C', X`09`09'MON:XXXXXXXX.........XXXXXXX`7C', X`09`09'TUE:XXXXXXXX.........XXXXXXX`7C', X`09`09'WED:XXXXXXXX.........XXXXXXX`7C', X`09`09'THU:XXXXXXXX.........XXXXXXX`7C', X`09`09'FRI:XXXXXXXX.........XXXXXXX`7C', X`09`09'SAT:XXXXXXXXXXXXXXXXXXXXXXXX`7C' X`09`09 ); X X`09closing_flag := 0; X X`09`7B Values for floor types`09`09`09`09`09`7D X`09blank_floor:= (0,0,0,false,false,false,false); X`09dopen_floor := ( 1,true ); `7B Dark open floor `7D X`09lopen_floor := ( 2,true ); `7B Light open floor `7D X`09corr_floor1 := ( 4,true ); `7B Corridor open floor `7D X`09corr_floor2 := ( 5,true ); `7B Room junction marker `7D X`09corr_floor3 := ( 6,true ); `7B Door type floor `7D X`09corr_floor4 := ( 7,false); `7B Secret door type floor`7D X`09`7B Floor values 8 and 9 are used in generate `7D X`09rock_wall1 := ( 10,false); `7B Granite rock wall `7D X`09rock_wall2 := ( 11,false); `7B Magma rock wall `7D X`09rock_wall3 := ( 12,false); `7B Quartz rock wall `7D X`09boundry_wall := ( 15,false); `7B Indestructable wall `7D X X`09`7B Player record is special`09`09`09`09`09`7D X`09py := ( X`09(' ',' ',' ',' ',' ', X`09 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, X`09 ('','','','','')), X`09(0,0,0,0,0,0,0,0,0,0,0,0), X`09(0,0,0,0,0,7500,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, X`09 false,false,false,false,false,false,false,false,false, X`09 false,false,false,false,false,false,false,false,false) X`09`09`09`09); X X`09bare_hands`09:= '1d1'; X +-+-+-+-+-+-+-+- END OF PART 57 +-+-+-+-+-+-+-+-