-+-+-+-+-+-+-+-+ START OF PART 84 -+-+-+-+-+-+-+-+ X msg_print('He says, "I''ll see you back in town..."') X else X msg_print('Better watch your back...'); X msg_print('You feel somewhat damaged.'); X begin X take_hit(damroll('1d10'),'Dirty Harry'); X prt_chp X end; X end; X 8: begin X msg_print('You are hit on the noggin by a falling chunk of stone.' V); X`09 if (randint(2) = 1) then X`09 begin X i1 := randint(max_skills); X skill_list`5Bi1`5D.learned := false; X msg_print('Your head hurts. You feel like you may have forgot Vten something.'); X msg_print('A voice says "Psst, hey you... Check your books."') V; X`09 end X`09 else X`09 take_hit(damroll('1d15'),'a falling rock'); X end; X 9: begin X msg_print('You feel your soul plummet to the depths of hell.'); X py.misc.max_lev := py.misc.max_lev + randint(py.misc.lev); X`09 if (py.misc.max_lev > townlist`5Btown_num`5D.max_depth) then X`09 py.misc.max_lev := townlist`5Btown_num`5D.max_depth; X end; X 10: begin X msg_print(' '); X msg_print('Something strange just happened.'); X msg_print('But we''re not telling...'); X if (py.misc.sex = 'Female') then X`09 Begin X`09 py.misc.sex := 'Male'; X case randint(7) of X 1: py.misc.name := 'Herve Villichez'; X`09`092: py.misc.name := 'The Third Amigo'; X`09`093: py.misc.name := 'Rasputin'; X`09`094: py.misc.name := 'Rassilon'; X`09`095: py.misc.name := 'Dent Arthur Dent'; X`09`096: py.misc.name := 'Ford Prefect'; X`09`097: py.misc.name := 'Slartibartfast'; X end; X`09 End X else X`09 Begin X`09 py.misc.sex := 'Female'; X case randint(7) of X`09`091: py.misc.name := 'Elena Redlips'; X`09`092: py.misc.name := 'Tricia McMillan'; X`09`093: py.misc.name := 'Ginger Rogers'; X`09`094: py.misc.name := 'Barbarella'; X`09`095: py.misc.name := 'Dale Arden'; X`09`096: py.misc.name := 'Elvira, Mistress of the dark'; X`09`097: py.misc.name := 'Misery Chastain'; X end; X`09 End; X END; X X 11: if (randint(100) > 20) then X was_wierd := false X`09else X`09 BEGIN X`09 msg_print('Suddenly and without warning, you are enveloped in an'); X`09 msg_print('Energy Vortex!!!!!'); X`09 with py.stat do X`09 Begin X`09`09scramble`5B1`5D := str;`09`7Bscramble the player's stats. `7D X`09 `09scramble`5B2`5D := dex;`09`7Bbut reset the new currents to`7D X`09`09scramble`5B3`5D := con;`09`7Bbe restored. --jeb`7D X`09`09scramble`5B4`5D := int; X`09`09scramble`5B5`5D := wis; scramble`5B6`5D := chr; X`09`09for i1 := 1 to 6 do X`09`09 begin X`09`09 i2 := randint(6); X`09`09 i3 := scramble`5Bi1`5D; X`09`09 scramble`5Bi1`5D := scramble`5Bi2`5D; X`09`09 scramble`5Bi2`5D := i3; X`09`09 end;`09`20 X`09 str := scramble`5B1`5D; int := scramble`5B2`5D; X`09 wis := scramble`5B3`5D; dex := scramble`5B4`5D; X`09 con := scramble`5B5`5D; chr := scramble`5B6`5D; X`09`09cstr := str;`09`09 cdex := dex; X`09`09ccon := con;`09`09 cint := int; X`09`09cwis := wis;`09`09 cchr := chr; X End; X`09 prt_stat_block; X`09 END; X 12: Begin X`09 msg_print('You go momentarily insane.'); X`09 for i1 := 1 to 15 do X`09 begin X`09 move_char(8);`09`7Bmake the player run in circles.`7D X`09 move_char(8);`09`7Bhee hee hee... --jeb `7D X`09 move_char(9); move_char(3); move_char(2); X`09 move_char(2); move_char(1); move_char(1); X`09 move_char(randint(9)); X`09 end; `09 X`09End;`09`09 X 13: Begin`20 X`09 msg_print('You completely lose your grip on reality.');`20 X`09 msg_print(''); X`09 i3 := py.misc.lev; X`09 with py.flags do X`09 begin X `09 image := i3+100; X`09 fast := i3+50; X`09 confused := i3+10; X`09 afraid := i3+8; X`09 blind := i3+6; X`09 poisoned := i3+4; X`09 paralysis := i3; X`09 end; `20 X`09End; X 14: Begin X msg_print('You suddenly remember your old nickname!'); X`09 msg_print(''); X`09 with py.misc do X`09 case randint(16) of X`09 1: race := 'Greedy'; X`09 2: race := 'Boring'; X`09 3: race := 'Wild'; X`09 4: race := 'Friendly'; X`09 5: race := 'Sleazy'; X`09 6: race := 'Lucky'; X`09 7: race := 'Muffin'; X`09 8: race := 'Foolish'; X`09 9: if (py.misc.sex = 'Female') then X`09`09 race := 'Gorgeous' X`09`09 else X`09`09 race := 'Studly'; X`09 10: race := 'Potato-Head'; X`09 11: race := 'Dizzy'; X`09 12: race := 'Unbearable'; X`09 13: race := 'Pond Scum'; X`09 14: race := 'Pizza-Face'; X`09 15: race := 'Party-Animal'; X`09 16: BEGIN X`09 race := 'Weiner'; X`09`09 msg_print('Oh I wish I was an Oscar Meyer Weiner...'); X`09`09 END; X`09 end;`09 X`09End; X 15: Begin X`09 msg_print('Nickels from heaven!'); X`09 for i1 := 1 to (100*py.misc.lev) do X`09 begin X`09 py.misc.au := py.misc.au + randint(3); X`09 prt_gold; X`09 end; X`09 End; X 16: Begin `7Bdanny's goons`7D X if (payment_count < 10) then X`09 was_wierd := false X`09 else X`09 begin X clear(1,1); X prt('Suddenly, from behind, a big pair of Danny Dollar''s thugs',1,1); X prt('jump you! "Danny says yer behind on yer payments," the first',2,1) V; X prt('thug says. "Danny don''t like late payments," his buddy says.',3,1 V); X prt('Then, the first thug pins your arms from behind, and blows',4,1); X prt('cigar smoke in your ear while the other slugs you in the gut',5,1); X prt('*really* hard, a lot of times. They take all your money, and',6,1) V; X prt('leave you puking your guts out on the ground.',7,1); X principal := principal - (py.misc.au div 2); X`09 if (principal < 0) then principal := 0; X`09 if (principal = 0) then payment_count := 0; X py.misc.au := 0; X`09 py.misc.chp := py.misc.chp/2; X`09 de_statp(py.stat.con); X`09 if (py.stat.ccon > py.stat.con) then py.stat.ccon := X`09 py.stat.con; X`09 py.flags.paralysis := 15; X`09 py.flags.food := 250; X`09 pause(24); X`09 draw_cave; X`09 end; X`09 End; `20 X 17: if (dun_level < 1) then X`09 was_wierd := false X`09 else X`09 begin X msg_print('Suddenly, the earth rumbles...'); X`09 msg_print('A giant hole opens underneath you!'); X`09 make_light(char_row,char_col,5,false); `7Bbig dark hole around player` V7D X`09 msg_print('It''s a SINKHOLE!!!'); X`09 msg_print('You are swirling around in the mud!'); X`09 centery := char_row - panel_row_prt; X`09 centerx := char_col - panel_col_prt; X`09 y := centery; X`09 x := centerx; X`09 for i1 := 1 to 360 do X`09 begin X`09 put_buffer(' ',y,x); `09`09 `7Berase @ from the screen `7D X`09 r := 5.0 - (1.0*i1) / 72.0; `7Bradius goes from 5 to 0 ` V7D X`09 theta := (5.0*i1)/57.2957795; `7B5 degree increments ` V7D X`09 y := centery + trunc(r*sin(theta)); `7Bsome basic trig calcs. ` V7D X`09 x := centerx + trunc(1.4*r*cos(theta)); X`09 sleep(0); X`09 put_buffer('@',y,x); `09`09 `7Bput @ at new place `7D X`09 sleep(0); X`09 end; X put_buffer(' ',y,x);`20 X`09 dun_level := dun_level + randint(5); X`09 if (dun_level > townlist`5Btown_num`5D.max_depth) then X`09 dun_level := townlist`5Btown_num`5D.max_depth; X`09 moria_flag := true; `09`09 `09 `7Bgenerate new level`7D X`09 msg_print('You land with a really hard thud.'); X`09 take_hit(damroll('5d10'),'a sinkhole'); X`09 end; X 18: begin X msg_print(' '); X msg_print('You trip over a small rock, and discover'); X msg_print('some money lying underneath.'); X`09 msg_print(' '); X if (randint(100) > 5) then X i1 := py.misc.lev * 5 X else X i1 := 1000+randint(1000); X py.misc.au := py.misc.au + i1; X`09 msg_print('');`09 `09 `20 X`09 prt_num('It''s worth $',i1,1,1); X prt_gold; X end; X X`7B : if (unleashed_doom) then (Unleash doom code is still buggy -RLG) X was_wierd := false X `09else X`09 begin X`09 unleashed_doom := true; X`09 msg_print(''); X`09 msg_print('You hear a loud clap of thunder'); X`09 msg_print('and a sickening feeling grows in your stomach.'); X`09 end; `7D X X otherwise ; X end; X wierd_type := 0; Xuntil((not force_wierd) or was_wierd); X if (not was_wierd) then X case randint(3) of`20 X 1: msg_print('You just avoided something strange.'); X 2: msg_print('That was a close call!'); X 3: msg_print('You are _sooo_ lucky!'); X end;`09 XEND; $ CALL UNPACK [.INC]WIERD.INC;1 879156824 $ create 'f' X `7B Print Moria credits `7D X`5Bpsect(misc1$code)`5D procedure game_version; XBEGIN Xclear(1,1); Xprt(' BOSS : Beyond Moria',1,1); Xprt('Version 0.1 : 11/13/90',2,1); Xprt('Version 1.0 : 05/01/91',3,1); Xprt('Version 2.0 : 03/01/92',4,1); Xprt('Robert L. Gulledge Jason E. Black',5,1); Xprt('raoul@u.washington.edu cloister@u.washington.edu',6,1); Xprt('Univ. of Washington Univ. of Washington',7,1); Xprt('Moria Modules :',8,1); Xprt(' V1.0 Dungeon Generator - RAK',9,1); Xprt(' Character Generator - RAK & JWT',10,1); Xprt(' Moria Module - RAK',11,1); Xprt(' Miscellaneous - RAK & JWT',12,1); Xprt(' V2.0 Town Level & Misc - RAK',13,1); Xprt(' V3.0 Internal Help & Misc - RAK',14,1); Xprt(' V4.0 Source Release Version - RAK',15,1); Xprt('Robert Alan Koeneke Jimmey Wayne Todd Jr.',17,1); Xprt('Student/University of Oklahoma Student/University of Oklahoma',18,1) V; Xprt('119 Crystal Bend 1912 Tiffany Dr.',19,1); Xprt('Norman, OK 73069 Norman, OK 73071',20,1); Xprt('(405)-321-2925 (405) 360-6792',21,1); X pause(24); X draw_cave; X end; X`20 X`20 X `7B Light up the dungeon -RAK- `7 VD X`5Bpsect(wizard$code)`5D procedure wizard_light; X var X i1,i2,i3,i4 : integer; X flag : boolean; X begin X if (cave`5Bchar_row,char_col`5D.pl) then X flag := false X else X flag := true; X for i1 := 1 to cur_height do X for i2 := 1 to cur_width do X if (cave`5Bi1,i2`5D.fval in floor_set) then X for i3 := i1-1 to i1+1 do X for i4 := i2-1 to i2+1 do X with cave`5Bi3,i4`5D do X begin X pl := flag; X if (not(flag)) then X fm := false; X end; X prt_map; X end; X`20 X`7BActivates either print_monsters or print_objects`7D X`5Bpsect(wizard$code)`5D procedure print_stuff_to_file; X X BEGIN X If (get_com('Print to File: (M)onsters or (O)bjects ?',command)) then X case command of X 'o','O' : print_objects; X 'm','M' : print_monsters; X otherwise; X end;`09 X END; X`20 X`20 X`7B Wizard routine for gaining on stats `7D X`5Bpsect(wizard$code)`5D procedure change_character; X var X tmp_val : integer; X tmp_str : vtype; X begin X with py.stat do X begin X prt('(3 - 50) Strength = ',1,1); X get_string(tmp_str,1,26,10); X tmp_val := -999; X readv(tmp_str,tmp_val,error:=continue); X if ((tmp_val > 2) and (tmp_val < 51)) then X begin X str := tmp_val; X cstr := tmp_val; X prt_strength; X prt_max_weight; X end; X prt('(3 - 50) Intelligence = ',1,1); X get_string(tmp_str,1,26,10); X tmp_val := -999; X readv(tmp_str,tmp_val,error:=continue); X if ((tmp_val > 2) and (tmp_val < 51)) then X begin X int := tmp_val; X cint := tmp_val; X prt_intelligence; X end; X prt('(3 - 50) Wisdom = ',1,1); X get_string(tmp_str,1,26,10); X tmp_val := -999; X readv(tmp_str,tmp_val,error:=continue); X if ((tmp_val > 2) and (tmp_val < 51)) then X begin X wis := tmp_val; X cwis := tmp_val; X prt_wisdom; X end; X prt('(3 - 50) Dexterity = ',1,1); X get_string(tmp_str,1,26,10); X tmp_val := -999; X readv(tmp_str,tmp_val,error:=continue); X if ((tmp_val > 2) and (tmp_val < 51)) then X begin X dex := tmp_val; X cdex := tmp_val; X prt_dexterity; X end; X prt('(3 - 50) Constitution = ',1,1); X get_string(tmp_str,1,26,10); X tmp_val := -999; X readv(tmp_str,tmp_val,error:=continue); X if ((tmp_val > 2) and (tmp_val < 51)) then X begin X con := tmp_val; X ccon := tmp_val; X prt_constitution; X end; X prt('(3 - 50) Charisma = ',1,1); X get_string(tmp_str,1,26,10); X tmp_val := -999; X readv(tmp_str,tmp_val,error:=continue); X if ((tmp_val > 2) and (tmp_val < 51)) then X begin X chr := tmp_val; X cchr := tmp_val; X prt_charisma; X end; X end; X with py.misc do X begin X prt('(1 - 32767) Hit points = ',1,1); X get_string(tmp_str,1,26,10); X tmp_val := -1; X readv(tmp_str,tmp_val,error:=continue); X if ((tmp_val > 0) and (tmp_val < 32768)) then X begin X mhp := tmp_val; X chp := tmp_val; X prt_mhp; X prt_chp; X end; X if ( (py.misc.tclass <> 'Ninja') and X (py.misc.tclass <> 'Wrestler') ) then X begin +-+-+-+-+-+-+-+- END OF PART 84 +-+-+-+-+-+-+-+-