-+-+-+-+-+-+-+-+ START OF PART 56 -+-+-+-+-+-+-+-+ X else if (ccon < 13) then con_adj := 0 X else if (ccon < 16) then con_adj := 1 X else if (ccon < 18) then con_adj := 2 X else if (ccon < 20) then con_adj := 3 X else if (ccon < 25) then con_adj := 4 X else if (ccon < 30) then con_adj := 5 X else if (ccon < 35) then con_adj := 6 X else if (ccon < 40) then con_adj := 7 X else if (ccon < 45) then con_adj := 8 X else if (ccon < 50) then con_adj := 9 X else con_adj := 10 X end; X`20 X`20 X`7B Calculates hit points for each level that is gained. `7D X`5Bpsect(misc2$code)`5D function get_hitdie : integer; X var X i1 : integer; X begin X get_hitdie := randint(py.misc.hitdie) + con_adj; X end; X`20 X`20 X`7B Prints title of character `7D X`5Bpsect(misc5$code)`5D procedure prt_title; X begin X prt_field(py.misc.title,5,stat_column); X end; X`20 X`20 X`7B Prints strength `7D X`5Bpsect(misc5$code)`5D procedure prt_strength; X begin X prt_stat('',py.stat.cstr,7,stat_column+6); X end; X`20 X`20 X`7B Prints intelligence `7D X`5Bpsect(misc5$code)`5D procedure prt_intelligence; X begin X prt_stat('',py.stat.cint,8,stat_column+6); X end; X`20 X`20 X`7B Prints wisdom `7D X`5Bpsect(misc5$code)`5D procedure prt_wisdom; X begin X prt_stat('',py.stat.cwis,9,stat_column+6); X end; X`20 X`20 X`7B Prints dexterity `7D X`5Bpsect(misc5$code)`5D procedure prt_dexterity; X begin X prt_stat('',py.stat.cdex,10,stat_column+6); X end; X`20 X`20 X`7B Prints constitution `7D X`5Bpsect(misc5$code)`5D procedure prt_constitution; X begin X prt_stat('',py.stat.ccon,11,stat_column+6); X end; X`20 X`20 X`7B Prints charisma `7D X`5Bpsect(misc5$code)`5D procedure prt_charisma; X begin X prt_stat('',py.stat.cchr,12,stat_column+6); X end; X`20 X`20 X`20 X`7B Prints level `7D X`5Bpsect(misc5$code)`5D procedure prt_level; X begin X prt_num( '',py.misc.lev,14,stat_column+6); X end; X`20 X`20 X`7B Prints players current (a real number...) and max mana points `7D X`5Bpsect(misc1$code)`5D procedure prt_mana; Xvar mwkdiv : real; X indx : integer; Xbegin X mwkdiv:=py.misc.cmana/10; X if (mwkdiv < 1) then X indx:=2 X else X if (mwkdiv < 10) then X indx:=3 X else X indx:=4; X prt_num( '',trunc(py.misc.cmana),18,stat_column+6); X prt_num( '/',py.misc.mana,18,stat_column+5+indx); Xend; X`20 X`20 X`7B Prints Max hit points `7D X`5Bpsect(misc5$code)`5D procedure prt_mhp; X begin X prt_num( '',py.misc.mhp,17,stat_column+6); X end; X`20 X`20 X`7B Prints players current hit points (a real number...) `7D X`5Bpsect(misc1$code)`5D procedure prt_chp; X begin X prt_num( '',trunc(py.misc.chp),16,stat_column+6); X end; X`20 X`20 X`7B prints current AC `7D X`5Bpsect(misc5$code)`5D procedure prt_pac; X begin X prt_num( '',py.misc.dis_ac,19,stat_column+6); X end; X`20 X`20 X`7B Prints current gold `7D X`5Bpsect(misc5$code)`5D procedure prt_gold; X begin X prt_num( '',py.misc.au,20,stat_column+6); X end; X`20 X`7B Prints current weight `7D X`5Bpsect(misc5$code)`5D procedure prt_cur_weight; X begin X prt_num( '',inven_weight,21,stat_column+6); X end; X`20 X`7B Prints weight capacity `7D X`5Bpsect(misc5$code)`5D procedure prt_max_weight; X begin X max_weight:=weight_limit; X prt_num( '',max_weight,22,stat_column+6); X end; X`20 X`7B Prints depth in stat area `7D X`5Bpsect(misc5$code)`5D procedure prt_depth; X var X depths : vtype; X depth : integer; X begin X if (dun_level = 0) then X`09 depths := townlist`5Btown_num`5D.town_name X`09else if (dun_level < 0) then X`09 depths := 'Office Building' X else X`09 begin X depth := dun_level*50; X writev(depths,'Depth: ',depth:1,' (meters)'); X`09 end; X prt(depths,24,60); X end; X`20 X`20 X`7B Prints status of hunger `7D X`5Bpsect(misc5$code)`5D procedure prt_hunger; X begin X if (uand(%X'000002',py.flags.status) <> 0) then X put_buffer('Weak ',24,1) X else if (uand(%X'000001',py.flags.status) <> 0) then X put_buffer('Hungry ',24,1) X else X put_buffer(' ',24,1); X end; X`20 X`20 X`7B Prints Blind status `7D X`5Bpsect(misc5$code)`5D procedure prt_blind; X begin X if (uand(%X'000004',py.flags.status) <> 0) then X put_buffer('Blind ',24,9) X else X put_buffer(' ',24,9); X end; X`20 X`20 X`7B Prints Confusion status `7D X`5Bpsect(misc5$code)`5D procedure prt_confused; X begin X if (uand(%X'000008',py.flags.status) <> 0) then X put_buffer('Confused ',24,16) X else X put_buffer(' ',24,16); X end; X`20 X`20 X`7B Prints Fear status `7D X`5Bpsect(misc5$code)`5D procedure prt_afraid; X begin X if (uand(%X'000010',py.flags.status) <> 0) then X put_buffer('Afraid ',24,26) X else X put_buffer(' ',24,26); X end; X`20 X`20 X`7B Prints Poisoned status `7D X`5Bpsect(misc5$code)`5D procedure prt_poisoned; X begin X if (uand(%X'000020',py.flags.status) <> 0) then X put_buffer('Poisoned ',24,34) X else X put_buffer(' ',24,34); X end; X`20 X`20 X`7B Prints Searching status `7D X`5Bpsect(misc5$code)`5D procedure prt_search; X begin X if (uand(%X'000100',py.flags.status) <> 0) then X put_buffer('Searching ',24,44) X else X put_buffer(' ',24,44); X end; X`20 X`20 X`7B Prints Resting status `7D X`5Bpsect(misc5$code)`5D procedure prt_rest; X begin X if (uand(%X'000200',py.flags.status) <> 0) then X put_buffer('Resting ',24,44) X else X put_buffer(' ',24,44); X end; X`20 X`20 X`7B Prints winner status on display `7D X`5Bpsect(misc5$code)`5D procedure prt_winner; X begin X put_buffer('*Winner*',23,1); X end; X`20 X`20 X`7B Increases a stat by one randomized level `7D X`5Bpsect(misc2$code)`5D function in_statp(stat : byteint) : byteint; X begin X if (stat < 35) then X stat := stat + 1 X else if (stat < 50) then X stat := stat + randint(2) - 1; X in_statp := stat; X end; X`20 X`7B Decreases a stat by one randomized level `7D X`5Bpsect(misc2$code)`5D function de_statp(stat : byteint) : byteint; X begin X if (stat > 34) then X begin X stat := stat - 1; X`09 if (randint(5)=1) then `7BHose the sucker...!`7D X`09 stat := stat -1; `20 X`09end X else if (stat > 3) then X stat := stat - 1; X de_statp := stat; X end; X`20 X`7B Increases a stat by one true level `7D X`5Bpsect(misc2$code)`5D function in_statt(stat : byteint) : byteint; X begin X if (stat < 50) then X stat := stat + 1; X in_statt := stat; X end; X`20 X`20 X`7B Decreases a stat by true level `7D X`5Bpsect(misc2$code)`5D function de_statt(stat : byteint) : byteint; X begin X if (stat > 3) then X stat := stat - 1; X de_statt := stat; X end; X`20 X`20 X`7B Returns a character's adjustment to hit. `7D X`5Bpsect(misc2$code)`5D function tohit_adj : integer; X var X total : integer; X begin X with py.stat do X begin X if (cdex < 4) then total := -3 X else if (cdex < 6) then total := -2 X else if (cdex < 8) then total := -1 X else if (cdex < 16) then total := 0 X else if (cdex < 17) then total := 1 X else if (cdex < 18) then total := 2 X else if (cdex < 20) then total := 3 X else if (cdex < 30) then total := 4 X else if (cdex < 40) then total := 5 X else if (cdex < 50) then total := 6 X else total := 7; X if (cstr < 4) then total := total - 3 X else if (cstr < 5) then total := total - 2 X else if (cstr < 7) then total := total - 1 X else if (cstr < 18) then total := total + 0 X else if (cstr < 25) then total := total + 1 X else if (cstr < 30) then total := total + 2 X else if (cstr < 40) then total := total + 3 X else if (cstr < 50) then total := total + 4 X else total := total + 5; X end; X tohit_adj := total; X end; X`20 X`20 X`7B Returns a character's adjustment to armor class `7D X`5Bpsect(misc2$code)`5D function toac_adj : integer; X begin X with py.stat do X if (cdex < 4) then toac_adj := -4 X else if (cdex < 6) then toac_adj := -3 X else if (cdex < 9) then toac_adj := -2 X else if (cdex < 13) then toac_adj := -1 X else if (cdex < 16) then toac_adj := 0 X else if (cdex < 18) then toac_adj := 1 X else if (cdex < 20) then toac_adj := 2 X else if (cdex < 25) then toac_adj := 3 X else if (cdex < 30) then toac_adj := 4 X else if (cdex < 35) then toac_adj := 5 X else if (cdex < 40) then toac_adj := 6 X else if (cdex < 50) then toac_adj := 7 X else toac_adj := 8 X end; X`20 X`20 X`7B Returns a character's adjustment to disarm `7D X`5Bpsect(misc2$code)`5D function todis_adj : integer; X begin X with py.stat do X if (cdex < 4) then todis_adj := -8 X else if (cdex < 6) then todis_adj := -6 X else if (cdex < 9) then todis_adj := -4 X else if (cdex < 13) then todis_adj := -2 X else if (cdex < 16) then todis_adj := 0 X else if (cdex < 18) then todis_adj := 1 X else if (cdex < 20) then todis_adj := 2 X else if (cdex < 25) then todis_adj := 3 X else if (cdex < 30) then todis_adj := 4 X else if (cdex < 35) then todis_adj := 5 X else if (cdex < 40) then todis_adj := 6 X else if (cdex < 45) then todis_adj := 7 X else if (cdex < 50) then todis_adj := 8 X else todis_adj := 9 X end; X`20 X`20 X`7B Returns a character's adjustment to damage `7D X`5Bpsect(misc2$code)`5D function todam_adj : integer; X begin X with py.stat do X if (cstr < 4) then todam_adj := -2 X else if (cstr < 6) then todam_adj := -1 X else if (cstr < 9) then todam_adj := 0 X else if (cstr < 13) then todam_adj := 1 X else if (cstr < 16) then todam_adj := 2 X else if (cstr < 18) then todam_adj := 3 X else if (cstr < 20) then todam_adj := 4 X else if (cstr < 25) then todam_adj := 5 X else if (cstr < 30) then todam_adj := 6 X else if (cstr < 35) then todam_adj := 7 X else if (cstr < 40) then todam_adj := 8 X else if (cstr < 50) then todam_adj := 9 X else todam_adj := 10; X end; X`20 X`20 X`7B Pre-declaration of PRT_EXPERIENCE `7D X`5Bpsect(misc5$code)`5D procedure prt_experience; X forward; X`20 X`20 X`7B Prints character-screen info `7D X`5Bpsect(misc5$code)`5D procedure prt_stat_block; X VAR X indx : integer; X mwkdiv : real; X begin X prt_field(py.misc.race, 3,stat_column); X prt_field(py.misc.tclass, 4,stat_column); X prt_field(py.misc.title, 5,stat_column); X prt_stat('STR : ',py.stat.cstr, 7,stat_column); X prt_stat('INT : ',py.stat.cint, 8,stat_column); X prt_stat('WIS : ',py.stat.cwis, 9,stat_column); X prt_stat('DEX : ',py.stat.cdex, 10,stat_column); X prt_stat('CON : ',py.stat.ccon, 11,stat_column); X prt_stat('CHR : ',py.stat.cchr, 12,stat_column); X prt_num( 'LEV : ',py.misc.lev, 14,stat_column); X prt_num( 'EXP : ',py.misc.exp, 15,stat_column); X prt_num( 'CHP : ',trunc(py.misc.chp), 16,stat_column); X prt_num( 'MHP : ',py.misc.mhp, 17,stat_column); X if ((py.misc.tclass <> 'Ninja') and (py.misc.tclass <> 'Wrestler')) then X BEGIN X mwkdiv:=py.misc.cmana/10; X if (mwkdiv < 1) then X indx:=2 X else X if (mwkdiv < 10) then X indx:=3 X else X indx:=4; X prt_num( 'RSRC: ',trunc(py.misc.cmana),18,stat_column); X prt_num( '/',py.misc.mana,18,stat_column+5+indx); X END; X prt_num( 'AC : ',py.misc.dis_ac, 19,stat_column); X prt_num( 'CASH: ',py.misc.au, 20,stat_column); X prt_num( 'WGHT: ',inven_weight, 21,stat_column); X max_weight := weight_limit; X prt_num( 'MXWT: ',max_weight, 22,stat_column); X prt_time; X if (total_winner_num > 0) then prt_winner; X if (uand(%X'000003',py.flags.status) <> 0) then X prt_hunger; X if (uand(%X'000004',py.flags.status) <> 0) then X prt_blind; X if (uand(%X'000008',py.flags.status) <> 0) then X prt_confused; X if (uand(%X'000010',py.flags.status) <> 0) then X prt_afraid; X if (uand(%X'000020',py.flags.status) <> 0) then X prt_poisoned; X if (uand(%X'000100',py.flags.status) <> 0) then X prt_search; X if (uand(%X'000200',py.flags.status) <> 0) then X prt_rest; X end; X`20 X`20 X`7B Draws entire screen `7D X`5Bpsect(misc5$code)`5D procedure draw_cave; X begin X clear(1,1); X prt_stat_block; X prt_map; X prt_depth; X end; X`7B`20 X`5Bexternal`5D procedure cdclra( minlin,mincol,maxlin,maxcol : integer ); X external; X X`5Bpsect(misc5$code)`5D procedure clear_area(row1,col1,row2,col2 : integer ) V; X begin X`09cdclra( row1, col1, row2, col2 ); X end; X X X`5Bexternal`5D procedure cdbox( lin1, col1, lin2, col2 : integer ); X external; X X`5Bpsect(misc5$code)`5D procedure draw_box( r1, c1, r2, c2 : integer ); X begin X`09cdbox( r1, c1, r2, c2 ); X end; X`7D X X`7B Prints the following information on the screen. `7D X`5Bpsect(create$code)`5D procedure put_character; X begin X clear(1,1); X with py.misc do X begin X prt('Name : ' + name,3,3); X prt('Qual : ' + race,4,3); X prt('Sex : ' + sex,5,3); X prt('Class : ' + tclass,6,3) +-+-+-+-+-+-+-+- END OF PART 56 +-+-+-+-+-+-+-+-