-+-+-+-+-+-+-+-+ START OF PART 80 -+-+-+-+-+-+-+-+ X f_b_ht : wordint; `7B base height females `7D X f_m_ht : wordint; `7B mod height for females `7D X f_b_wt : wordint; `7B base weight for female `7D X f_m_wt : wordint; `7B mod weight for females `7D X b_exp : real; `7B Base experience factor `7D X b_dis : bytlint; `7B base chance to disarm `7D X bsrh : bytlint; `7B base chance for search `7D X bstl : bytlint; `7B Stealth of character `7D X bperc : bytlint; `7B frequency of auto search `7D X bbth : bytlint; `7B adj base chance to hit `7D X bbthb : bytlint; `7B adj base to hit with bows `7D X`09`09bwierd : bytlint; `7B Race base for wierd device `7D X bsav : bytlint; `7B Race base for saving throw `7D X bhitdie : bytlint; `7B Base hit points for race `7D X binfra : bytlint; `7B See infra-red `7D X tclass : unsigned; `7B Bit field for class types `7D X end; X class_type = record X title : vtype; `7B type of class `7D X m_exp : real; `7B Class experience factor `7D X adj_hd : bytlint;`7B Adjust hit points `7D X mdis : bytlint;`7B mod disarming traps `7D X msrh : bytlint;`7B modifier to searching `7D X mstl : bytlint;`7B modifier to stealth `7D X mperc : bytlint;`7B modifier to freq-of-search `7D X mbth : bytlint;`7B modifier to base to hit `7D X mbthb : bytlint;`7B modifier to base to hit - bows`7D X`09`09mwierd : bytlint;`7B Class modifier for wierd devices`7D X msav : bytlint;`7B Class modifier to save `7D X madj_str: bytlint;`7B Class modifier for strength`7D X madj_int: bytlint;`7B Class modifier for intelligence`7D X madj_wis: bytlint;`7B Class modifier for wisdom `7D X madj_dex: bytlint;`7B Class modifier for dexterity`7D X madj_con: bytlint;`7B Class modifier for constitution`7D X madj_chr: bytlint;`7B Class modifier for charisma`7D X`09`09skill_no: byteint;`7B Class Skill Number. 0=none`7D X`09`09`09`09 `7B 1=sci, 2=sold, 3=guru, 4=wanderer, `7D X`09`09`09`09 `7B 5=con-artist, 6=thief`7D X end; X background_type = record X info : vtype; `7B History information `7D X roll : byteint;`7B Die roll needed for history`7D X chart : byteint;`7B Table number `7D X next : bytlint;`7B Pointer to next table `7D X bonus : bytlint;`7B Bonus to the Social Class `7D X end; X floor_type = record X ftval : `5Bbit(7),pos(0)`5D 0..15; X ftopen : `5Bbit(1),pos(7)`5D boolean; X end; X cave_type = record X cptr : byteint; X tptr : byteint; X fval : `5Bbit(4),pos(16)`5D 0..15; X fopen : `5Bbit(1),pos(20)`5D boolean; X fm : `5Bbit(1),pos(21)`5D boolean; X pl : `5Bbit(1),pos(22)`5D boolean; X tl : `5Bbit(1),pos(23)`5D boolean; X end; X row_floor = array `5B1..max_width`5D of cave_type; X owner_type = record X owner_name : vtype; X beg_effect : byteint; X buy_inflate : real; X sell_deflate : real; X owner_class : byteint; X end; X inven_record = record X scost : integer; X sitem : treasure_type; X end; X store_type = record X store_open : worlint; X owner : byteint; `7Bnow just a dummy variable`7D X insult_cur : bytlint; X store_ctr : byteint; X store_inven : array `5B1..store_inven_max`5D of inven_re Vcord; X end; X town_type = record X`09`09town_name`09: atype; X`09`09max_depth`09: integer; X`09`09lev_plus`09: byteint; X end; X X $ CALL UNPACK [.INC]TYPES.INC;1 1969868556 $ create 'f' X value X`20 X wizard := false; X used_line := (22 of false); X death := false; X`09more_flag := true; X stat_column := 1; X day := 1;`09 X`09total_winner_num := 0; X`09is_boss_dead := false; X`09defeated_badguy := false; X`09out_of_time := false; X`09town_num := 1; X`09wall_flag := true; X pclass := 0; X print_stat := 0; X`09act_bal := 0;`09principal := 0; payment_count := 0; X`09iod_val := 0;`09iol_val := 0;`09danny_cut := 0; X`7B For the testing of bits `7D X bit_array := ( X`7B Bit #1 `7D %X'00000001',`7B Bit #2 `7D %X'00000002', X`7B Bit #3 `7D %X'00000004',`7B Bit #4 `7D %X'00000008', X`7B Bit #5 `7D %X'00000010',`7B Bit #6 `7D %X'00000020', X`7B Bit #7 `7D %X'00000040',`7B Bit #8 `7D %X'00000080', X`7B Bit #9 `7D %X'00000100',`7B Bit #10 `7D %X'00000200', X`7B Bit #11 `7D %X'00000400',`7B Bit #12 `7D %X'00000800', X`7B Bit #13 `7D %X'00001000',`7B Bit #14 `7D %X'00002000', X`7B Bit #15 `7D %X'00004000',`7B Bit #16 `7D %X'00008000', X`7B Bit #17 `7D %X'00010000',`7B Bit #18 `7D %X'00020000', X`7B Bit #19 `7D %X'00040000',`7B Bit #20 `7D %X'00080000', X`7B Bit #21 `7D %X'00100000',`7B Bit #22 `7D %X'00200000', X`7B Bit #23 `7D %X'00400000',`7B Bit #24 `7D %X'00800000', X`7B Bit #25 `7D %X'01000000',`7B Bit #26 `7D %X'02000000', X`7B Bit #27 `7D %X'04000000',`7B Bit #28 `7D %X'08000000', X`7B Bit #29 `7D %X'10000000',`7B Bit #30 `7D %X'20000000', X`7B Bit #31 `7D %X'40000000',`7B Bit #32 `7D %X'80000000'); X`20 X `7B Operating hours for Moria X X = Open; . = Closed `7D X days :=( X 'SUN:........................`7C', X 'MON:........................`7C', X 'TUE:........................`7C', X 'WED:........................`7C', X 'THU:........................`7C', X 'FRI:........................`7C', X 'SAT:........................`7C'); X`20 X closing_flag := 0; X`20 X `7B VALUES FOR FLOOR TYPES `7D X blank_floor:= (0,0,0,false,false,false,false); X dopen_floor := ( 1,true ); `7B Dark open floor `7D `7BDO NOT CH VANGE!`7D X lopen_floor := ( 2,true ); `7B Light open floor `7D X corr_floor1 := ( 4,true ); `7B Corridor open floor `7D X corr_floor2 := ( 5,true ); `7B Room junction marker `7D X corr_floor3 := ( 6,true ); `7B Door type floor `7D X corr_floor4 := ( 7,false); `7B Secret door type floor X FLOOR VALUES 8 AND 9 ARE USED IN GENERATE `7D X rock_wall1 := ( 10,false); `7B Granite rock wall `7D X rock_wall2 := ( 11,false); `7B Magma rock wall `7D X rock_wall3 := ( 12,false); `7B Quartz rock wall `7D X boundry_wall := ( 15,false); `7B Indestructable wall `7D X`20 X `7B PLAYER RECORD IS SPECIAL `7D X py := ( X (' ',' ',' ',' ',' ', X 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,0,0 V, X ('','','','','')),(0,0,0,0,0,0,0,0,0,0,0,0), X (0,0,0,0,0,5000,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, X false,false,false,false,false,false,false,false,false, X false,false,false,false,false,false,false,false,false)); X`20 X bare_hands := '1d2'; X acc_exp := 0.0; X X X `7B For Create Food spell use... `7D Xmush := ('& Can`7E of Beans and Weenies' ,80,',',%X'00000000', X2400, 0, 308, 1, 1,0, 0, 0, 0, '0d0' , 1); X`20 X char_row := 0; X char_col := 0; X`20 X `7B Initialize player generation variables `7D X sex_type := 'FemaleMale '; X`20 X `7BRace STR,INT,WIS,DEX,CON,CHR, X Ages, heights, and weights, X Racial Bases for: bdis,bsrh,bstl,bperc,bbth,bbthb,bdev,bsav, X`09`09bhitdie,binfra, choice-classes `7D X`7B Class choice bit string goes (from MSB to LSB): Thief, Con-Artist, X Wanderer, Soldier, Ninja, Guru, Scientist, Wrestler `7D X`20 X race := ( X ('Elite',1,1,1,1,1,1,20,30,72,6,180,25,66,4,120,20,1.40, X 15,10, 3,10,15,15,10,5,6,0,%B'11111111'), X ('Hefty',5,0,0,0,1,0,19,30,72,6,210,25,66,4,150,20,1.30, X 5, 5, 2, 5,20,-5,10,10,5,0,%B'11111111'), X ('Mad',0,5,0,1,0,0,25,45,60,6,150,25,54,4,100,20,1.00, X 5, 5, 2, 5,-5, 5,20,5,2,0,%B'11111111'), X ('Wise',0,1,5,0,0,0,35,50,70,6,150,25,66,4,100,20,1.20, X 5,15, 2, 5,-5, 5,10,5,4,0,%B'11111111'), X ('Lucky',0,0,1,5,0,0,18,30,72,6,150,25,66,4,100,20,1.40, X 20,10, 2,15, 5,20,10,15,6,0,%B'11111111'), X ('Healthy',1,0,0,0,5,0,20,30,72,6,150,25,66,4,100,20,1.60, X 5, 5, 2,10,10, 5,10,5,8,0,%B'11111111'), X ('Sexy',0,0,0,1,0,5,17,25,72,6,150,25,66,4,100,20,1.40, X 5, 5, 2, 5, 5, 5,10,20,6,0,%B'11111111'), X ('Alien',3,3,-3,3,3,-3,100,1000,72,6,150,25,66,4,100,20,1.40, X 5, 5, 3,10,15,10,30,10,6,8,%B'10111011')); X`20 X`7B Buying and selling adjustments for character race VS store owner race `7 VD X`20 X rgold_adj := ( `7BCharacter Class:`7D X X`7BStoreOwner:`7D `7B Wrs, Sci, Gru, Nnj, Sol, Wnd, Con, Thf Test` V7D X X`7BWrestler `7D (-0.08, 0.06, 0.02,-0.04,-0.02, 0.02,-0.10, 0.00, 0.00), X`7BScientist `7D ( 0.04,-0.08, 0.06, 0.02, 0.00, 0.04,-0.04,-0.04, 0.00), X`7BGuru `7D ( 0.00, 0.02,-0.04, 0.02, 0.04,-0.06, 0.00,-0.04, 0.00), X`7BNinja `7D (-0.02, 0.00,-0.02,-0.06,-0.04, 0.00,-0.02, 0.00, 0.00), X`7BSoldier `7D (-0.02, 0.00, 0.04,-0.02,-0.08, 0.02,-0.04, 0.00, 0.00), X`7BWanderer `7D ( 0.02, 0.04,-0.08,-0.04, 0.00,-0.08,-0.04,-0.04, 0.00), X`7BCon-Artist `7D ( 0.10, 0.08, 0.00, 0.08, 0.08, 0.08, 0.00, 0.06, 0.08), X`7BThief `7D ( 0.06, 0.06, 0.00, 0.06, 0.06, 0.06,-0.02, 0.00, 0.06), X`7BTest `7D ( 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00)); X`20 X X`7B Classes...`7D X class := ( X X`7B Class`09 Exp HD Dis Src Stl Per Bth Bhb Wrd Sav S I W D C V C sk#`7D X('Wrestler' ,0.10, 15, 10, 10, 0, 5, 45, 10, -5, 20, 4,-1,-1, 1, 3,-1, V 0), X('Scientist' ,0.50, 2, 10, 10, 2, 10, 15, 20, 10, 20,-3, 3, 1, 1, 0, 0, V 1), X('Guru' ,0.30, 4, 8, 10, 2, 30, 30, 10, 5, 25,-1,-1, 3,-1, 2, 2, V 3), X('Ninja' ,0.10, 10, 15, 22, 4, 25, 40, 45, 0, 40, 2, 1, 2, 3, 0,-1, V 0), X('Soldier' ,0.30, 8, 10, 15, 3, 20, 35, 50, 5, 25, 2, 2, 1, 2, 1, 1, V 2), X('Wanderer' ,0.10, 8, 8, 10, 2, 15, 45, 35, 0, 20, 1,-1, 2, 1, 1, 1, V 4), X('Con-Artist' ,0.50, 6, 13, 10, 2, 15, 30, 30, 0, 25, 2, 0, 0, 2, 1, 3, V 5), X('Thief' ,0.30, 8, 15, 15, 3, 15, 30, 30, 0, 25, 3, 0, 0, 2, 2, 1, V 6), X('Journalist' ,0.20, 6, 10, 10, 3, 20, 20, 30, 0, 25, 0, 3, 0, 2, 0, 0, V 7) X); X`20 X`7B Class titles for different levels `7D X player_title := ( X X`7B Wrestler `7D X('Jock Strap','Jock Strap', X'Trainee','Trainee','Trainee','Trainee','Trainee','Trainee', X'Athlete','Athlete','Athlete','Athlete','Athlete','Athlete', X'Jock','Jock','Jock','Jock','Jock','Jock', X'Hunk','Hunk','Hunk','Hunk','Hunk','Hunk', X'Stud','Stud','Stud','Stud','Stud','Stud', X'Champ','Champ','Champ','Champ', X'Pro','Pro','Pro','Pro','Hulk','Hulk'), X`09 X`7B Scientist `7D X('In the dark','In the dark','Sees the Light','Beginner', X'Beginner','Student','Student','Novice','Novice','Hobbiest', X'Hobbiest','Tinkerer','Tinkerer','Frosh','Frosh','Sophomore','Sophomore', X'Junior','Junior','Lab Tech','Lab Tech','Senior','Senior','Baccalauriate', X'Graduate','Grad. Student','Grad. Student','Doctor','Doctor','Professor', X'Professor','Ph.D.','Researcher','Researcher','Genius','Genius', X'Nobel Winner','Nobel Winner','Galileo','Newton','Fermi','Einstein'), X X`7B Guru `7D X('Believer','Acolyte','Acolyte','Acolyte','Adept','Adept','Adept','Priest', X'Priest','Priest','Priest','Priest','Priest','Priest','Priest', X'Priest','Curate','Curate','Curate','Curate','Curate','Curate','Curate', X'Curate','Curate','Canon','Canon','Canon','Canon','Canon', X'Low Lama','Lama','Lama','Lama','High Lama','Great Lama','Patriarch', X'High Priest','Great Priest','Noble Priest','Grand Poobah','Buddah'), X X`7B Ninja `7D X('Apprentice','Apprentice','Apprentice','Apprentice', X'Warrior','Warrior','Warrior','Warrior','Warrior','Warrior', X'Swordsman','Swordsman','Swordsman','Swordsman','Swordsman','Swordsman', X'Defender','Defender','Defender','Defender','Defender','Defender', X'Guardian','Guardian','Guardian','Guardian','Guardian','Guardian', X'Noble','Noble','Noble','Noble','Noble','Noble', X'Samuri','Samuri','Samuri','Samuri','Samuri','Samuri', X'Samuri Lord','Samuri Lord'), X X`7B Soldier `7D X('Street Punk','Street Punk','Recruit','Recruit','Trainee','Trainee', X'Cadet','Cadet','Private','Private','Prv. 1st Class','Prv. 1st Class', X'Corporal','Corporal','Sargeant','Sargeant','Sargeant','Sargeant', X'Master Sarg.','Master Srg.','2nd Lieut.','2nd Lieut.','1st Lieut.', X'1st Lieut.','Captain','Captain','Captian','Captain','Major','Major', X'Major','Major','Lt. Col.','Lt. Col.','Lt. Col','Lt. Col.','Colonel', X'Colonel','Colonel','Colonel','Hero','Hero'), X X`7B Wanderer `7D X('Gallant','Keeper','Keeper','Keeper','Keeper','Keeper','Keeper','Keeper', X'Keeper','Keeper','Protector','Protector','Protector','Protector','Protector V', X'Protector','Protector','Protector','Defender','Defender','Defender', X'Defender','Defender','Defender','Defender','Defender','Warder','Warder', X'Warder','Warder','Warder','Warder','Warder','Warder','Warder','Gauardian', X'Chevalier','Justiciar','Paladin','High Lord','High Lord','High Lord'), X X`7B Con-Artist `7D X('Street Scum','Street Scum','Street Scum','Street Scum', X'Fingers','Fingers','Fingers','Fingers','Fingers','Fingers', X'Thief','Thief','Thief','Thief','Thief','Thief', +-+-+-+-+-+-+-+- END OF PART 80 +-+-+-+-+-+-+-+-