-+-+-+-+-+-+-+-+ START OF PART 88 -+-+-+-+-+-+-+-+ X`09`09fx`09: byteint;`09`7B X Pointer into map`09`7D X X`09`09stunned`09: `5Bbit(6),pos(104)`5D -32..31; `7B Rounds stunned`7D X`09`09ml`09: `5Bbit(1),pos(110)`5D boolean; `7B On if shown `7D X`09`09confused: `5Bbit(1),pos(111)`5D boolean; `7B On if confused`7D X`09`09moved`09: `5Bbit(1),pos(112)`5D boolean; `7B On if water-moved`7D X`09end; X`09treasure_type = record X`09`09name`09: ttype;`09`7B Object name`09`09`7D X`09`09tval`09: byteint;`09`7B Catagory number`09`7D X`09`09tchar`09: char;`09`09`7B Character representation`7D X`09`09flags2`09: unsigned;`09`7B MORE Special flags`09`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 in gp's`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`09treas_rec = record X`09`09data`09: treasure_type; X`09`09ok`09: boolean; X`09`09insides`09: wordint; X`09`09is_in`09: boolean; X`09`09next`09: `5Etreas_rec; X`09end; X`09treas_ptr = `5Etreas_rec; X`09player_type = record X`09`09misc : record X`09`09`09xtr_wgt : integer;`09`7B Extra weight limit`09`7D X`09`09`09account`09: integer;`09`7B Money in the bank`09`7D X`09`09`09money`09: money_type;`09`7B Money on person`09`7D X`09`09`09birth`09: game_time_type;`7BDate of char's birth`09`7D X`09`09`09cur_age`09: game_time_type;`7BCurrent game date`09`7D X`09`09`09play_tm`09: time_type;`09`7B Time spent in game`09`7D X`09`09`09diffic`09: byteint;`09`7B Difficulty of game`09`7D X`09`09`09ssn`09: ssn_type;`09`7B Social Security Number`7D 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`09rep`09: integer;`09`7B XP from good creatures `7D X`09`09`09deaths`09: integer;`09`7B Number of insured restores`7D X`09`09`09premium`09: integer;`09`7B Base cost to restore`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`7D X`09`09`09prace`09: byteint;`09`7B # of race`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`09`09cheated : boolean;`09`7B gone into wizard or god mode`7D X`09`09`09mr`09: integer;`09`7B mag.res.lev.delta `7D X`7BFUBAR`7D`09`09`09quests`09: byteint;`09`7B # completed `7D X`7BFUBAR`7D`09`09`09cur_quest : wordint; `7B creature # of quest `7D X `09`09end; X`09`09stat : record X`09`09`09p : array`5Bstat_set`5D of byteint;`7Bpermanent`7D X`09`09`09c : array`5Bstat_set`5D of byteint;`7Bcurrent=p-l+m*10`7D X`09`09`09m : array`5Bstat_set`5D of bytlint;`7Bnet magical adj`7D X`09`09`09l : array`5Bstat_set`5D of byteint;`7Bamt lost`7D X`09`09end; X`09`09flags : record X`09`09`09insured`09`09: boolean;`09`7B Character insured `7D X`09`09`09dead`09`09: boolean;`09`7B Currently restored `7D 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`09speed_paral`09: integer;`09`7B Slow speed adjust `7D X`09`09`09speed_flag`09: boolean;`09`7B On if reset speed `7D X`09`09`09paral_init`09: integer;`09`7B Init val for slow `7D X`09`09`09move_rate`09: integer;`09`7B move_rate`09 `7D X`09`09`09swim`09`09: integer;`09`7B Cur swim 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`09petrification`09: integer;`09`7B Amount Petrified `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 Hallucinate `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`09hunger_item`09: boolean;`09`7B Resets food counter `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`09`09`09`09 `7B keep characteristic `7D X`09`09`09sustain`09`09: array `5B0..5`5D of boolean; X`09`09`09confuse_monster : boolean;`09`7B Glowing hands... `7D X`09`09`09resist_lght`09: integer;`09`7B Timed lighting rst `7D X`09`09`09free_time`09: integer;`09`7B Timed free action `7D X`09`09`09ring_fire`09: integer;`09`7B Timed fire spell `7D X`09`09`09protmon`09`09: integer;`09`7B Timed monst prot `7D X`09`09`09hoarse`09`09: integer;`09`7B Timed no-bard spells`7D X`09`09`09magic_prot`09: integer;`09`7B Timed magic prot `7D X`09`09`09ring_ice`09: integer;`09`7B Timed cold spell `7D X`09`09`09temp_stealth`09: integer;`09`7B Timed stealth `7D X`09`09`09resist_petri`09: integer;`09`7B Timed resist petrify`7D X`09`09`09blade_ring`09: integer;`09`7B Timed blade spell `7D X`09`09`09petri_resist : boolean;`09`7B Resist Petrification`7D X`7BFUBAR`7D`09`09`09quested`09`09: boolean;`09`7B Performing a Quest `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..max_spells`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`09adj`09: array `5Bstat_set`5D of 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`09swim`09: bytlint; `7B Race base for swim speed`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/2 levels `7D X`09`09mbthb`09: bytlint;`7B modifier to base to hit - bows/2 levels `7D X`09`09msav`09: bytlint;`7B Class modifier to save`09`7D X`09`09madj`09: array`5Bstat_set`5D of bytlint; 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`09`09dspell : boolean;`09 `7B class use druid spells`09`7D X`09`09bspell`09: boolean;`09 `7B class use bardic spells`09`7D X`09`09mental : boolean;`09 `7B class use Monk disciplines `7D X`09`09mr`09: integer;`09 `7B mag.res.class.delta `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..127; 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(7),pos(16)`5D 0..127; X`09`09fopen`09: `5Bbit(1),pos(23)`5D boolean; X`09`09fm`09: `5Bbit(1),pos(24)`5D boolean; X`09`09pl`09: `5Bbit(1),pos(25)`5D boolean; X`09`09tl`09: `5Bbit(1),pos(26)`5D boolean; X`09`09moved`09: `5Bbit(1),pos(27)`5D boolean; X`09`09oct`09: `5Bbit(3),pos(28)`5D 0..7; `7B octant direction `7D X`09`09h2o`09: `5Bbit(4),pos(31)`5D 0..15; 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: game_time_type; 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; X`09message_record = RECORD X`09`09data`09`09: string; X`09`09next`09`09: `5Emessage_record; X`09end; X`09message_ptr = `5Emessage_record; X X X X X X X X X X X X X X X X X X X X X X X X X $ CALL UNPACK TYPES.INC;1 256429963 $ create 'f' X`09.Title`09Users X X .entry users, `5EM<> X movzwl g`5Esys$gw_ijobcnt, r0 X ret X X`09.entry`09max_users, `5EM<> X movzwl g`5Esys$gw_ijoblim, r0 X`09ret X .end ; remember to link with SYS$SYSTEM:SYS.STB/SELECTIVE $ CALL UNPACK USERS.MAR;1 1063354017 $ create 'f' X`09logical function uw_id X X`09implicit integer (a-z) X X`09integer`09`09name_code*2, X`091`09`09name_length*2, X`091`09`09name_addr*4, X`091`09`09ret_addr*4, X`091`09`09end_list*2`09/ 0 / X`09common`09/get_lnm_list/ X`091`09`09name_length, X`091`09`09name_code, X`091`09`09name_addr, X`091`09`09ret_addr, X`091`09`09end_list X`09common`09/net_trade/`09remote X`09logical*1`09`09remote X X`09character*10`09trans X`09integer`09`09length X X`09include '($lnmdef)' X X`09name_code = lnm$_string X`09name_addr = %loc(trans) X`09name_length = len(trans) X`09ret_addr = %loc(length) X`09status = sys$trnlnm( lnm$m_case_blind, X`091`09`09`09'LNM$FILE_DEV', X`091`09`09`09'UW$ID',, X`091`09`09`09name_length ) X X`09if( .not. status ) then X`09`09uw_id = .false. X`09else X`09`09uw_id = .true. X`09`09remote = trans(2:4) .ne. 'MAX' X`09end if X X`09status = sys$trnlnm( lnm$m_case_blind, X`091`09`09`09'LNM$FILE_DEV', X`091`09`09`09'SYS$NODE',, X`091`09`09`09name_length ) +-+-+-+-+-+-+-+- END OF PART 88 +-+-+-+-+-+-+-+-